This commit is contained in:
dzc committed 2025-03-18 15:35:15 +08:00
commit 5ac930cd40
6 files changed
+61 -11

No files matched your search

@@ -15,7 +15,8 @@ import java.util.List;
public enum OrderTypeEnum {
RK("1", "入库"),
CK("2", "出库")
CK("2", "出库"),
No("0", "无盈亏")
;
private final String type;
private final String description;
@@ -165,6 +165,12 @@ public class SmErpInventoryRecordsEntity extends Model<SmErpInventoryRecordsEnti
@Schema(description="设备类型")
private Integer deviceType;
@Schema(description="流程实例id")
private String processInstanceId;
@Schema(description="审核原因")
private String checkReason;
@Schema(description="商品名称")
@TableField(exist = false)
private String productName;
@@ -204,7 +204,7 @@ public class SmErpCgDdController {
//只查询未关联的
wrapper.eq(SmErpCgPlanEntity::getLinkStatus,"0");
//todo 审核成功条件
wrapper.eq(SmErpCgPlanEntity::getCheckStatus, TaskCheckStatusEnum.RESULT);
wrapper.eq(SmErpCgPlanEntity::getCheckStatus, TaskCheckStatusEnum.RESULT.getCode());
return R.ok(smErpCgPlanService.pageCgsqScope(page, wrapper));
}
@@ -4,12 +4,17 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.BeanUtils;
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.dto.ProcessNodeRecordParamDto;
import com.bsd.pjcloud.flow.task.utils.GetCheckReasonUtils;
import com.bsd.pjcloud.flow.task.vo.CheckStatusAndReasonVo;
import com.bsd.pjcloud.supermarket.dto.cgdd.CGPlanLinkQueryDTO;
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.*;
@@ -27,6 +32,7 @@ import org.springframework.http.HttpHeaders;
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.web.bind.annotation.*;
import java.util.List;
@@ -100,6 +106,22 @@ public class SmErpInventoryRecordsController {
return R.ok(smErpInventoryRecordsService.saveInventoryRecord(inventoryRecordSaveDTO));
}
@Operation(summary = "回调" , description = "回调" )
@SysLog("采购订单回调" )
@PostMapping("/flow-callback")
@Inner(value = false)
@Transactional
public R supermarketFlowCallback(@RequestBody ProcessNodeRecordParamDto processNodeRecordParamDto) {
String processInstanceId = processNodeRecordParamDto.getProcessInstanceId();
CheckStatusAndReasonVo checkReason = GetCheckReasonUtils.getCheckReason(processNodeRecordParamDto);
smErpInventoryRecordsService.update(
new LambdaUpdateWrapper<SmErpInventoryRecordsEntity>()
.eq(SmErpInventoryRecordsEntity::getProcessInstanceId, processInstanceId)
.set(SmErpInventoryRecordsEntity::getCheckStatus, checkReason.getCheckStatus())
.set(SmErpInventoryRecordsEntity::getCheckReason, checkReason.getCheckReason())
);
return R.ok();
}
/**
* 修改出入库记录表
* @param inventoryRecordEditDTO 出入库记录表
@@ -10,7 +10,12 @@ 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.security.util.SecurityUtils;
import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService;
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto;
import com.bsd.pjcloud.flow.task.entity.Process;
import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum;
import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant;
import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO;
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.*;
import com.bsd.pjcloud.supermarket.entity.*;
@@ -53,6 +58,8 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
private final RemoteUserService remoteUserService;
private final SmErpSupplierMapper smErpSupplierMapper;
private final RemoteFlowApiFlowService remoteFlowApiFlowService;
@Override
@Transactional
public Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO) {
@@ -67,6 +74,17 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
//计算主表总金额
int sum = items.stream().mapToInt(InventoryRecordSaveItemDTO::getTotalAmount).sum();
smErpCgDdEntity.setTotalAmount(sum);
//发起流程
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_BHSQ_FLOW);
String flowId = processR.getData().getFlowId();
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
processInstanceParamDto.setFlowId(flowId);
R<String> stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto);
String processInstanceId = stringR.getData();
smErpCgDdEntity.setProcessInstanceId(processInstanceId);
smErpCgDdEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
int insert = baseMapper.insert(smErpCgDdEntity);
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
@@ -85,19 +103,21 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
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);
}
smErpInventoryRecordsItemMapper.insert(cgPlanItemEntities);
//todo 实际上应该审批后才会入库
//更新库存
smErpStockService.updateStock(updateStockDTOS);
if (!CollectionUtils.isEmpty(updateStockDTOS)){
smErpStockService.updateStock(updateStockDTOS);
}
//更新已关联的采购,标记为已使用
LambdaQueryWrapper<SmErpCgDdEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SmErpCgDdEntity::getCode, inventoryRecordSaveDTO.getInventoryCode());
@@ -466,10 +486,12 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Double profit = item.getProfit();
updateStockDTO.setIncrCount(profit);
smErpInventoryRecordsItemEntity.setQuantity(profit);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
}else if (orderType.equals(OrderTypeEnum.CK.getType())) {
Double loss = item.getLoss();
updateStockDTO.setIncrCount(loss);
smErpInventoryRecordsItemEntity.setQuantity(loss);
}else if (orderType.equals(OrderTypeEnum.No.getType())){
//无需更新库存
}else {
throw new RuntimeException("订单类型错误");
}
@@ -540,10 +562,13 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Double profit = item.getProfit();
updateStockDTO.setIncrCount(profit);
smErpInventoryRecordsItemEntity.setQuantity(profit);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
}else if (orderType.equals(OrderTypeEnum.CK.getType())) {
Double loss = item.getLoss();
updateStockDTO.setIncrCount(loss);
smErpInventoryRecordsItemEntity.setQuantity(loss);
} else if (orderType.equals(OrderTypeEnum.No.getType())){
//无需更新库存
}else {
throw new RuntimeException("订单类型错误");
}
@@ -131,8 +131,6 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
if (CollectionUtils.isNotEmpty(smErpAuxiliaryCodeEntityList)) {
smErpAuxiliaryCodeEntityList.forEach(supermarketAuxiliaryCodeEntity -> supermarketAuxiliaryCodeEntity.setSpuId(supermarketSpu.getId()));
smErpAuxiliaryCodeService.saveBatch(smErpAuxiliaryCodeEntityList);
} else {
return R.failed("辅助条码不能为空");
}
return R.ok();
@@ -258,8 +256,6 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
if (!toDeleteCodeIds.isEmpty()) {
smErpAuxiliaryCodeService.removeByIds(toDeleteCodeIds);
}
} else {
return R.failed("辅助条码不能为空");
}
return R.ok();