修改超市入库

This commit is contained in:
zjf committed 2025-04-25 14:56:52 +08:00
1 parent c067a48980
commit 5138684ba1
1 file changed
+60 -38
@@ -80,59 +80,60 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
smErpCgDdEntity.setTotalAmount(sum);
//发起流程
String inventoryType = inventoryRecordSaveDTO.getInventoryType();
String processKey = getProcessKey(inventoryType);
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(processKey);
if (!processR.isOk() || processR.getData() == null) {
throw new ServiceException("流程配置获取失败: " + processR.getMsg());
}
String flowId = processR.getData().getFlowId();
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
processInstanceParamDto.setFlowId(flowId);
Map<String,Object> params = new HashMap<>();
params.put("inventoryType",inventoryType);
processInstanceParamDto.setParamMap(params);
R<String> stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto);
if (!stringR.isOk() || stringR.getData() == null) {
throw new ServiceException("流程实例启动失败: " + stringR.getMsg());
}
String processInstanceId = stringR.getData();
smErpCgDdEntity.setProcessInstanceId(processInstanceId);
smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
// String inventoryType = inventoryRecordSaveDTO.getInventoryType();
// String processKey = getProcessKey(inventoryType);
// R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(processKey);
// if (!processR.isOk() || processR.getData() == null) {
// throw new ServiceException("流程配置获取失败: " + processR.getMsg());
// }
// String flowId = processR.getData().getFlowId();
// ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
// processInstanceParamDto.setFlowId(flowId);
// Map<String,Object> params = new HashMap<>();
// params.put("inventoryType",inventoryType);
// processInstanceParamDto.setParamMap(params);
// R<String> stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto);
// if (!stringR.isOk() || stringR.getData() == null) {
// throw new ServiceException("流程实例启动失败: " + stringR.getMsg());
// }
// String processInstanceId = stringR.getData();
// smErpCgDdEntity.setProcessInstanceId(processInstanceId);
// smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.RESULT.getCode());
int insert = baseMapper.insert(smErpCgDdEntity);
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
// int sum1 = cgPlanItemEntities.stream().mapToInt(SmErpInventoryRecordsItemEntity::getTotalAmount).sum();
// List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
for (SmErpInventoryRecordsItemEntity cgPlanItemEntity : cgPlanItemEntities) {
cgPlanItemEntity.setInventoryId(smErpCgDdEntity.getId());
cgPlanItemEntity.setDeptId(deptId);
// UpdateStockDTO updateStockDTO = new UpdateStockDTO();
// updateStockDTO.setId(cgPlanItemEntity.getErpSpuId());
// Double quantity = cgPlanItemEntity.getQuantity();
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
updateStockDTO.setId(cgPlanItemEntity.getErpSpuId());
Double quantity = cgPlanItemEntity.getQuantity();
String orderType = smErpCgDdEntity.getOrderType();
cgPlanItemEntity.setOrderType(orderType);
// if (orderType.equals(OrderTypeEnum.RK.getType())){
// updateStockDTO.setIncrCount(quantity);
// }else if (orderType.equals(OrderTypeEnum.CK.getType())){
// updateStockDTO.setIncrCount(-quantity);
// }else if (orderType.equals(OrderTypeEnum.No.getType())){
// //无需更新库存
// }else {
// throw new RuntimeException("订单类型错误");
// }
if (orderType.equals(OrderTypeEnum.RK.getType())){
updateStockDTO.setIncrCount(quantity);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
updateStockDTO.setIncrCount(-quantity);
}else if (orderType.equals(OrderTypeEnum.No.getType())){
//无需更新库存
}else {
throw new RuntimeException("订单类型错误");
}
// updateStockDTOS.add(updateStockDTO);
updateStockDTOS.add(updateStockDTO);
}
smErpInventoryRecordsItemMapper.insert(cgPlanItemEntities);
// //todo 实际上应该审批后才会入库
// //更新库存
// if (!CollectionUtils.isEmpty(updateStockDTOS)){
// smErpStockService.updateStock(updateStockDTOS);
// }
// //todo 实际上应该审批后才会入库,这里已经写完了,因为说要直接入库不审核,又改回去了
//更新库存
if (!CollectionUtils.isEmpty(updateStockDTOS)){
smErpStockService.updateStock(updateStockDTOS);
}
//更新已关联的采购,标记为已使用
LambdaQueryWrapper<SmErpCgDdEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SmErpCgDdEntity::getCode, inventoryRecordSaveDTO.getInventoryCode());
@@ -487,6 +488,7 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
}
@Override
@Transactional
public Object removeBatch(ArrayList<Long> list) {
//首先先查询是否有当前数据权限
LambdaQueryWrapper<SmErpInventoryRecordsEntity> eq = new LambdaQueryWrapper<SmErpInventoryRecordsEntity>().in(SmErpInventoryRecordsEntity::getId, list);
@@ -495,6 +497,8 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
LambdaQueryWrapper<SmErpInventoryRecordsItemEntity> itemEntityLambdaQueryWrapper = new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>()
.in(SmErpInventoryRecordsItemEntity::getInventoryId, delIds);
//要删除的item
List<SmErpInventoryRecordsItemEntity> items = smErpInventoryRecordsItemMapper.selectList(itemEntityLambdaQueryWrapper);
smErpInventoryRecordsItemMapper.delete(itemEntityLambdaQueryWrapper);
baseMapper.deleteByIds(delIds);
List<Long> toDeleteIds = delIds.stream()
@@ -503,6 +507,24 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
if (!CollectionUtils.isEmpty(toDeleteIds)){
return R.failed("越权删除!");
}
//删除之前入库的库存
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
for (SmErpInventoryRecordsItemEntity item : items){
//库存更新对象
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
updateStockDTO.setId(item.getErpSpuId());
Double quantity = item.getQuantity();
String orderType = item.getOrderType();
if (orderType.equals(OrderTypeEnum.RK.getType())){
updateStockDTO.setIncrCount(quantity);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
updateStockDTO.setIncrCount(-quantity);
}else {
throw new RuntimeException("订单类型错误");
}
updateStockDTOS.add(updateStockDTO);
}
smErpStockService.updateStock(updateStockDTOS);
return R.ok();
}