完善超市审批流
This commit is contained in:
1 parent
b134029e39
commit
48197ac8e2
4 files changed
+101
-22
No files matched your search
+6
@@ -28,5 +28,11 @@ public final class SupermarketFlowConstant {
|
||||
public static final String SUPERMARKET_CGTH_FLOW= "SUPERMARKET_CGTH_FLOW";
|
||||
|
||||
|
||||
public static final String SUPERMARKET_LSTH_FLOW= "SUPERMARKET_LSTH_FLOW";
|
||||
|
||||
|
||||
public static final String SUPERMARKET_LSCK_FLOW= "SUPERMARKET_LSCK_FLOW";
|
||||
|
||||
|
||||
|
||||
}
|
||||
+1
@@ -80,6 +80,7 @@ public class InventoryRecordSaveDTO {
|
||||
* 单据类型(字典inventory_type)采购入库、采购退货、盘点入库等
|
||||
*/
|
||||
@Schema(description="单据类型(字典inventory_type)采购入库、采购退货、盘点入库等")
|
||||
@NotNull
|
||||
private String inventoryType;
|
||||
|
||||
|
||||
|
||||
+54
-2
@@ -3,6 +3,9 @@ package com.bsd.pjcloud.supermarket.controller;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.log.Log;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -12,9 +15,12 @@ import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
|
||||
import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordParamDto;
|
||||
import com.bsd.pjcloud.flow.task.utils.GetCheckReasonUtils;
|
||||
import com.bsd.pjcloud.flow.task.vo.CheckStatusAndReasonVo;
|
||||
import com.bsd.pjcloud.supermarket.constant.InventoryTypeEnum;
|
||||
import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgdd.CGPlanLinkQueryDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.*;
|
||||
@@ -33,8 +39,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -58,6 +66,7 @@ public class SmErpInventoryRecordsController {
|
||||
private final SmErpSpuService smErpSpuService;
|
||||
private final SmErpUnitService smErpUnitService;
|
||||
private final SmErpCgDdService smErpCgDdService;
|
||||
private final SmErpStockService smErpStockService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
@@ -107,19 +116,62 @@ public class SmErpInventoryRecordsController {
|
||||
}
|
||||
|
||||
@Operation(summary = "回调" , description = "回调" )
|
||||
@SysLog("采购订单回调" )
|
||||
@SysLog("订单回调" )
|
||||
@PostMapping("/flow-callback")
|
||||
@Inner(value = false)
|
||||
@Transactional
|
||||
public R supermarketFlowCallback(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) {
|
||||
String data = processNodeRecordParamDto.getData();
|
||||
System.out.println(data);
|
||||
JSONObject jsonObject = JSON.parseObject(data);
|
||||
String inventoryType = jsonObject.getString("inventoryType");
|
||||
if (StringUtils.isBlank(inventoryType)){
|
||||
return R.failed("缺失参数!");
|
||||
}
|
||||
String processInstanceId = processNodeRecordParamDto.getProcessInstanceId();
|
||||
CheckStatusAndReasonVo checkReason = GetCheckReasonUtils.getCheckReason(processNodeRecordParamDto);
|
||||
String checkStatus = checkReason.getCheckStatus();
|
||||
|
||||
if (checkStatus.equals(TaskCheckStatusEnum.RESULT.getCode())){
|
||||
//库存的入库出库操作
|
||||
SmErpInventoryRecordsEntity one = smErpInventoryRecordsService.getOne(new LambdaQueryWrapper<SmErpInventoryRecordsEntity>()
|
||||
.eq(SmErpInventoryRecordsEntity::getProcessInstanceId, processInstanceId));
|
||||
|
||||
Long id = one.getId();
|
||||
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = smErpInventoryRecordsItemService.list(new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>()
|
||||
.eq(SmErpInventoryRecordsItemEntity::getInventoryId, id));
|
||||
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
|
||||
for (SmErpInventoryRecordsItemEntity cgPlanItemEntity : cgPlanItemEntities) {
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
|
||||
updateStockDTO.setId(cgPlanItemEntity.getErpSpuId());
|
||||
Double quantity = cgPlanItemEntity.getQuantity();
|
||||
String orderType = one.getOrderType();
|
||||
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);
|
||||
}
|
||||
//审批入库
|
||||
//更新库存
|
||||
if (!CollectionUtils.isEmpty(updateStockDTOS)){
|
||||
smErpStockService.updateStock(updateStockDTOS);
|
||||
}
|
||||
}
|
||||
|
||||
//更新库存记录审批结果
|
||||
smErpInventoryRecordsService.update(
|
||||
new LambdaUpdateWrapper<SmErpInventoryRecordsEntity>()
|
||||
.eq(SmErpInventoryRecordsEntity::getProcessInstanceId, processInstanceId)
|
||||
.set(SmErpInventoryRecordsEntity::getCheckStatus, checkReason.getCheckStatus())
|
||||
.set(SmErpInventoryRecordsEntity::getCheckStatus, checkStatus)
|
||||
.set(SmErpInventoryRecordsEntity::getCheckReason, checkReason.getCheckReason())
|
||||
);
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
/**
|
||||
|
||||
+40
-20
@@ -27,6 +27,7 @@ import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanItemVo;
|
||||
import com.bsd.pjcloud.supermarket.vo.cgplan.SmErpCgPlanVo;
|
||||
import com.bsd.pjcloud.supermarket.vo.inventoryrecord.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -76,10 +77,15 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
smErpCgDdEntity.setTotalAmount(sum);
|
||||
|
||||
//发起流程
|
||||
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_BHSQ_FLOW);
|
||||
String inventoryType = inventoryRecordSaveDTO.getInventoryType();
|
||||
String processKey = getProcessKey(inventoryType);
|
||||
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(processKey);
|
||||
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);
|
||||
String processInstanceId = stringR.getData();
|
||||
smErpCgDdEntity.setProcessInstanceId(processInstanceId);
|
||||
@@ -90,34 +96,34 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
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());
|
||||
@@ -127,6 +133,20 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
return insert;
|
||||
}
|
||||
|
||||
private String getProcessKey(String inventoryType) {
|
||||
switch (inventoryType) {
|
||||
case "3":
|
||||
return SupermarketFlowConstant.SUPERMARKET_CGRK_FLOW;
|
||||
case "4":
|
||||
return SupermarketFlowConstant.SUPERMARKET_CGTH_FLOW;
|
||||
case "5":
|
||||
return SupermarketFlowConstant.SUPERMARKET_LSCK_FLOW;
|
||||
case "6":
|
||||
return SupermarketFlowConstant.SUPERMARKET_LSTH_FLOW;
|
||||
default:
|
||||
throw new RuntimeException("未知的库存类型");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Object pageScope(Page page, LambdaQueryWrapper<SmErpInventoryRecordsEntity> wrapper) {
|
||||
Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
|
||||
|
||||
Reference in new issue
Block a user