This commit is contained in:
dzc committed 2025-02-27 19:14:44 +08:00
commit 3f41fbf1fa
13 files changed
+162 -22

No files matched your search

@@ -10,21 +10,21 @@ import lombok.Getter;
@Getter
public enum InventoryTypeEnum {
CGRK(1, "CGSQ"),
CKDD(2, "CGDD"),
CKRK(3, "CGRK"),
CKTH(4, "CGTH"),
LSCK(5, "LSCK"),
LSTH(6, "LSTH")
CGRK("1", "CGSQ"),
CKDD("2", "CGDD"),
CKRK("3", "CGRK"),
CKTH("4", "CGTH"),
LSCK("5", "LSCK"),
LSTH("6", "LSTH")
;
private final Integer type;
private final String type;
private final String value;
// 根据数字返回对应的值
public static String getValueByType(int type) {
public static String getValueByType(String type) {
for (InventoryTypeEnum v : InventoryTypeEnum.values()) {
if (v.type == type) {
if (v.type.equals(type)) {
return v.value;
}
}
@@ -1,5 +1,6 @@
package com.bsd.pjcloud.supermarket.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -24,6 +25,10 @@ public class SupermarketSpuUpdateStockReqDTO {
@NotNull(message = "商品 SPU 不能为空")
private List<Item> items;
@Schema(description = "下单设备类型,0默认安卓机,1移动端")
private int deviceType;
@Data
public static class Item {
@@ -0,0 +1,62 @@
package com.bsd.pjcloud.supermarket.dto.supplier;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class SmErpSupplierImportDto {
@ExcelProperty("货商编号")
private String supplierCode;
@ExcelProperty("货商名称")
private String supplierName;
@ExcelProperty("地址")
private String address;
@ExcelProperty("邮编")
private String postalCode;
@ExcelProperty("联系人")
private String linkName;
@ExcelProperty("联系电话")
private String phone;
@ExcelProperty("传真")
private String fax;
@ExcelProperty("税号")
private String taxNumber;
@ExcelProperty("开户行及帐号")
private String bankAccount;
@ExcelProperty("货商类别")
private String supplierCategory;
@ExcelProperty("货商地区")
private String supplierRegion;
@ExcelProperty("建档人")
private String creator;
@ExcelProperty("状态")
private String status;
@ExcelProperty("期初应付款")
private Double initialPayable;
@ExcelProperty("其它1")
private String other1;
@ExcelProperty("其它2")
private String other2;
@ExcelProperty("其它3")
private String other3;
@ExcelProperty("拼音简码")
private String pinyinCode;
}
@@ -82,4 +82,7 @@ public class SmErpAuxiliaryCodeEntity extends Model<SmErpAuxiliaryCodeEntity> {
*/
@Schema(description="租户编号")
private Long tenantId;
@Schema(description="包装单位id")
private Long unitId;
}
@@ -51,8 +51,8 @@ public class SmErpInventoryRecordsEntity extends Model<SmErpInventoryRecordsEnti
/**
* 来源ID(根据类型指向对应的表,如采购单ID、退货单ID等)
*/
@Schema(description="来源ID(根据类型指向对应的表,如采购单ID、退货单ID等)")
private Long sourceId;
@Schema(description="来源code")
private String linkCode;
/**
* 仓库id
@@ -162,7 +162,14 @@ public class SmErpInventoryRecordsEntity extends Model<SmErpInventoryRecordsEnti
@Schema(description="租户编号")
private Long tenantId;
@Schema(description="设备类型")
private Integer deviceType;
@Schema(description="商品名称")
@TableField(exist = false)
private String productName;
@Schema(description="经办人名称")
@TableField(exist = false)
private String handlerUserName;
}
@@ -145,5 +145,5 @@ public class SmErpUnitEntity extends Model<SmErpUnitEntity> {
@Schema(description = "是否是基础库存,默认0否,1是")
private String isBase;
private Boolean isBase;
}
@@ -39,6 +39,8 @@ public class InventoryRecordVo {
private Long handlerUserId;
@Schema(description="供应商id")
private Long supplierId;
/**
* 备注
*/
@@ -66,6 +68,9 @@ public class InventoryRecordVo {
private String checkStatus;
@Schema(description="关联码")
private String linkCode;
/**
* @link InventoryRecordItemVo
*/
@@ -41,7 +41,7 @@ public class SmErpCommonController {
*/
@Operation(summary = "获取业务流水编号" , description = "获取业务流水编号" )
@GetMapping("/getSequence")
public R getErpSpuPage(@RequestParam("type")Integer type) {
public R getErpSpuPage(@RequestParam("type")String type) {
String valueByType = InventoryTypeEnum.getValueByType(type);
String s = sequence.nextNo();
String result = valueByType + "-" + s;
@@ -111,10 +111,11 @@ public class SmErpSpuController {
//库存
LambdaQueryWrapper<SmErpStockEntity> smErpStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpStockEntityLambdaQueryWrapper.eq(SmErpStockEntity::getErpSpuId, id);
SmErpStockEntity smErpStockEntity = smErpStockService.list(smErpStockEntityLambdaQueryWrapper).get(0);
SmErpStockEntity smErpStockEntity = smErpStockService.getOne(smErpStockEntityLambdaQueryWrapper);
smErpSpuEntity.setStock(smErpStockEntity.getBaseStock());
smErpStockEntity.setInventoryLowerLimit(smErpStockEntity.getInventoryLowerLimit());
smErpStockEntity.setInventoryUpperLimit(smErpStockEntity.getInventoryUpperLimit());
smErpSpuEntity.setInventoryLowerLimit(smErpStockEntity.getInventoryLowerLimit());
smErpSpuEntity.setInventoryUpperLimit(smErpStockEntity.getInventoryUpperLimit());
List<SmErpUnitEntity> list = smErpUnitService.list(new LambdaQueryWrapper<SmErpUnitEntity>().eq(SmErpUnitEntity::getSpuId, id));
smErpSpuEntity.setSmErpUnitEntityList(list);
smErpSpuEntity.setSmErpAuxiliaryCodeEntityList(
@@ -3,6 +3,8 @@ package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.admin.api.entity.SysUser;
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
@@ -25,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* 出入库记录表
@@ -45,6 +48,8 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
private final SmErpSpuMapper smErpSpuMapper;
private final SmErpUnitMapper smErpUnitMapper;
private final RemoteUserService remoteUserService;
@Override
@Transactional
public Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO) {
@@ -54,8 +59,13 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
smErpCgDdEntity.setDeptId(deptId);
smErpCgDdEntity.setCheckStatus("0");
smErpCgDdEntity.setDeptId(deptId);
int insert = baseMapper.insert(smErpCgDdEntity);
List<InventoryRecordSaveItemDTO> items = inventoryRecordSaveDTO.getItems();
//计算主表总金额
int sum = items.stream().mapToInt(InventoryRecordSaveItemDTO::getTotalAmount).sum();
smErpCgDdEntity.setTotalAmount(sum);
int insert = baseMapper.insert(smErpCgDdEntity);
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
for (SmErpInventoryRecordsItemEntity cgPlanItemEntity : cgPlanItemEntities) {
@@ -96,6 +106,14 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Set<Long> planIds = records.stream()
.map(SmErpInventoryRecordsEntity::getId)
.collect(Collectors.toSet());
//收集userids
Set<Long> userIds = records.stream()
.map(SmErpInventoryRecordsEntity::getHandlerUserId)
.collect(Collectors.toSet());
//请求得到所有的userIds
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
LambdaQueryWrapper<SmErpInventoryRecordsItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpInventoryRecordsItemEntity::getInventoryId,planIds);
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = smErpInventoryRecordsItemMapper.selectList(smErpCgPlanItemEntityLambdaQueryWrapper);
@@ -116,6 +134,8 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
));
// 设置商品名称到主表实体
records.forEach(plan -> {
SysUser sysUser = userMap.getOrDefault(plan.getHandlerUserId(), new SysUser());
plan.setHandlerUserName(sysUser.getUsername());
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
plan.setProductName(String.join(", ", names));
});
@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.sequence.sequence.Sequence;
import com.bsd.pjcloud.supermarket.constant.InventoryTypeEnum;
import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuQueryDTO;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
@@ -30,11 +33,12 @@ import com.bsd.pjcloud.supermarket.vo.sm.smspu.SmErpPageScopeVo;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -57,10 +61,12 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
private final SmErpStockService smErpStockService;
@Autowired
private Sequence sequence;
@Override
@Transactional
public R saveSpu(SmErpSpuEntity supermarketSpu) {
baseMapper.insert(supermarketSpu);
//库存表
@@ -189,12 +195,41 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
updateStockDTOS.add(updateStockDTO);
}
smErpStockService.updateStock(updateStockDTOS);
//todo 生成出入库记录
// SmErpInventoryRecordsEntity smErpInventoryRecordsEntity = new SmErpInventoryRecordsEntity();
// String s = sequence.nextNo();
// String result = InventoryTypeEnum.LSCK.getValue() + "-" + s;
// smErpInventoryRecordsEntity.setInventoryCode(result);
// smErpInventoryRecordsEntity.setInventoryDate(LocalDate.now());
// smErpInventoryRecordsEntity.setInventoryType(InventoryTypeEnum.LSCK.getType());
// smErpInventoryRecordsEntity.setOrderType(OrderTypeEnum.CK.getType());
// smErpInventoryRecordsEntity.setDeviceType(updateStockReqDTO.getDeviceType());
return R.ok();
}
@Override
public Object pageScope(Page page, LambdaQueryWrapper<SmErpSpuEntity> wrapper) {
return baseMapper.selectPageByScope(page, wrapper, DataScope.of());
Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
//计算库存回显
List<SmErpSpuEntity> records = pageData.getRecords();
Set<Long> erpSpuIds = records.stream().map(smErpSpuEntity -> smErpSpuEntity.getId()).collect(Collectors.toSet());
// 批量查询库存信息
List<SmErpStockEntity> stocks = smErpStockMapper.selectList(
new LambdaQueryWrapper<SmErpStockEntity>()
.in(SmErpStockEntity::getErpSpuId, erpSpuIds));
// 建立SPU ID与库存的映射关系
Map<Long, SmErpStockEntity> stockMap = stocks.stream()
.collect(Collectors.toMap(SmErpStockEntity::getErpSpuId,smErpStockEntity -> smErpStockEntity));
records.forEach(spu ->
{
SmErpStockEntity smErpStockEntity = stockMap.get(spu.getId());
spu.setStock(smErpStockEntity != null ? smErpStockEntity.getCurrentStock() : 0);
});
return pageData;
}
@Override
@@ -13,5 +13,6 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="unitId" column="unit_id"/>
</resultMap>
</mapper>
@@ -8,7 +8,7 @@
<result property="inventoryCode" column="inventory_code"/>
<result property="inventoryDate" column="inventory_date"/>
<result property="inventoryType" column="inventory_type"/>
<result property="sourceId" column="source_id"/>
<result property="linkCode" column="link_code"/>
<result property="warehouseId" column="warehouse_id"/>
<result property="handlerUserId" column="handler_user_id"/>
<result property="checkStatus" column="check_status"/>
@@ -26,5 +26,6 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="deviceType" column="device_type"/>
</resultMap>
</mapper>