fix:修改超市

This commit is contained in:
zjf committed 2025-04-01 13:47:24 +08:00
1 parent 2a1790c5d5
commit d2295ef205
7 files changed
+118 -5

No files matched your search

@@ -0,0 +1,7 @@
package com.bsd.pjcloud.common.core.exception;
public class ServiceException extends RuntimeException {
public ServiceException(String message) {
super(message);
}
}
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 采购订单
@@ -175,4 +176,20 @@ public class SmErpCgDdEntity extends Model<SmErpCgDdEntity> {
@Schema(description="经办人名称")
@TableField(exist = false)
public String handlerUserName;
@Schema(description="任务id")
@TableField(exist = false)
public String taskId;
@Schema(description="实例id")
@TableField(exist = false)
private String flowId;
@Schema(description="参数")
@TableField(exist = false)
private Map<String, Object> paramMap;
@Schema(description="节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -163,5 +163,9 @@ public class SmErpCgPlanEntity extends Model<SmErpCgPlanEntity> {
@TableField(exist = false)
private Map<String, Object> paramMap;
@Schema(description="节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 出入库记录表
@@ -185,4 +186,20 @@ public class SmErpInventoryRecordsEntity extends Model<SmErpInventoryRecordsEnti
@Schema(description="货商名称")
@TableField(exist = false)
private String supplierName;
@Schema(description="任务id")
@TableField(exist = false)
public String taskId;
@Schema(description="实例id")
@TableField(exist = false)
private String flowId;
@Schema(description="参数")
@TableField(exist = false)
private Map<String, Object> paramMap;
@Schema(description="节点id")
@TableField(exist = false)
private String nodeId;
}
@@ -1,10 +1,12 @@
package com.bsd.pjcloud.supermarket.service.impl;
import cn.hutool.core.util.ObjectUtil;
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.exception.ServiceException;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
@@ -12,6 +14,8 @@ 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.dto.TaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto;
import com.bsd.pjcloud.flow.task.entity.Process;
import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant;
import com.bsd.pjcloud.supermarket.dto.cgdd.ErpCgDDEditDTO;
@@ -62,16 +66,21 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
SmErpCgDdEntity smErpCgDdEntity = BeanUtils.toBean(erpCgDDSaveDTO, SmErpCgDdEntity.class);
smErpCgDdEntity.setDeptId(deptId);
smErpCgDdEntity.setCheckStatus("0");
smErpCgDdEntity.setDeptId(deptId);
List<SmCgDDSaveItemDTO> items = erpCgDDSaveDTO.getItems();
List<SmErpCgDdItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpCgDdItemEntity.class);
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_CGDD_FLOW);
if (!processR.isOk() || processR.getData() == null) {
throw new ServiceException("流程配置获取失败: " + processR.getMsg());
}
String flowId = processR.getData().getFlowId();
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
processInstanceParamDto.setFlowId(flowId);
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());
@@ -232,6 +241,7 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
//请求得到所有的userIds
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
List<String> processInstanceIds= records.stream().map(SmErpCgDdEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList());
LambdaQueryWrapper<SmErpCgDdItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpCgDdItemEntity::getHId,planIds);
@@ -252,12 +262,34 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
)
));
//查询代办任务的task
TaskQueryParamDto taskQueryParamDto = new TaskQueryParamDto();
taskQueryParamDto.setProcessInstanceIds(processInstanceIds);
taskQueryParamDto.setCurrent(1);
taskQueryParamDto.setSize(processInstanceIds.size());
R<Page<TaskDto>> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto);
Page<TaskDto> data = pageR.getData();
// 直接通过条件判断初始化 final 变量
final Map<String, TaskDto> processInstanceIdMap = (data != null && !ObjectUtil.isEmpty(data.getRecords()))
? data.getRecords().stream()
.collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto))
: Collections.emptyMap();
// 设置商品名称到主表实体
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));
if (!processInstanceIdMap.isEmpty()) {
TaskDto taskDto = processInstanceIdMap.get(plan.getProcessInstanceId());
if (taskDto != null) {
plan.setTaskId(taskDto.getTaskId());
plan.setFlowId(taskDto.getFlowId());
plan.setParamMap(taskDto.getParamMap());
plan.setNodeId(taskDto.getNodeId());
}
}
});
return pageData;
@@ -6,6 +6,7 @@ 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.exception.ServiceException;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
@@ -65,15 +66,19 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
SmErpCgPlanEntity smErpCgPlanEntity = BeanUtils.toBean(erpCgPlanSaveDTO, SmErpCgPlanEntity.class);
smErpCgPlanEntity.setDeptId(deptId);
smErpCgPlanEntity.setCheckStatus("0");
smErpCgPlanEntity.setDeptId(deptId);
//发起流程
R<Process> processR = remoteFlowApiFlowService.getProcessByBusinessKey(SupermarketFlowConstant.SUPERMARKET_BHSQ_FLOW);
if (!processR.isOk() || processR.getData() == null) {
throw new ServiceException("流程配置获取失败: " + processR.getMsg());
}
String flowId = processR.getData().getFlowId();
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
processInstanceParamDto.setFlowId(flowId);
R<String> stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto);
if (!stringR.isOk() || stringR.getData() == null) {
throw new ServiceException("流程实例启动失败: " + stringR.getMsg());
}
String processInstanceId = stringR.getData();
smErpCgPlanEntity.setProcessInstanceId(processInstanceId);
smErpCgPlanEntity.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
@@ -289,6 +294,7 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
plan.setTaskId(taskDto.getTaskId());
plan.setFlowId(taskDto.getFlowId());
plan.setParamMap(taskDto.getParamMap());
plan.setNodeId(taskDto.getNodeId());
}
}
});
@@ -1,11 +1,13 @@
package com.bsd.pjcloud.supermarket.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.exception.ServiceException;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
@@ -13,6 +15,8 @@ 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.dto.TaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto;
import com.bsd.pjcloud.flow.task.entity.Process;
import com.bsd.pjcloud.supermarket.constant.OrderTypeEnum;
import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant;
@@ -69,7 +73,6 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
SmErpInventoryRecordsEntity smErpCgDdEntity = BeanUtils.toBean(inventoryRecordSaveDTO, SmErpInventoryRecordsEntity.class);
smErpCgDdEntity.setDeptId(deptId);
smErpCgDdEntity.setCheckStatus("0");
smErpCgDdEntity.setDeptId(deptId);
List<InventoryRecordSaveItemDTO> items = inventoryRecordSaveDTO.getItems();
//计算主表总金额
@@ -80,6 +83,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
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);
@@ -87,6 +93,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
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());
@@ -168,7 +177,7 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
.collect(Collectors.toSet());
//请求得到所有的userIds
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
List<String> processInstanceIds= records.stream().map(SmErpInventoryRecordsEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList());
LambdaQueryWrapper<SmErpInventoryRecordsItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpInventoryRecordsItemEntity::getInventoryId,planIds);
@@ -191,6 +200,18 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Collectors.toList()
)
));
//查询代办任务的task
TaskQueryParamDto taskQueryParamDto = new TaskQueryParamDto();
taskQueryParamDto.setProcessInstanceIds(processInstanceIds);
taskQueryParamDto.setCurrent(1);
taskQueryParamDto.setSize(processInstanceIds.size());
R<Page<TaskDto>> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto);
Page<TaskDto> data = pageR.getData();
final Map<String, TaskDto> processInstanceIdMap = (data != null && !ObjectUtil.isEmpty(data.getRecords()))
? data.getRecords().stream()
.collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto))
: Collections.emptyMap();
// 设置商品名称到主表实体
records.forEach(plan -> {
@@ -204,6 +225,15 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
String supplierName = supplierMap.getOrDefault(plan.getSupplierId(), new SmErpSupplierEntity()).getSupplierName();
plan.setSupplierName(supplierName);
if (!processInstanceIdMap.isEmpty()) {
TaskDto taskDto = processInstanceIdMap.get(plan.getProcessInstanceId());
if (taskDto != null) {
plan.setTaskId(taskDto.getTaskId());
plan.setFlowId(taskDto.getFlowId());
plan.setParamMap(taskDto.getParamMap());
plan.setNodeId(taskDto.getNodeId());
}
}
});
return pageData;
}