返工编制增加班组外协

liweidong
liweidong-hj 7 days ago
parent 43c7ae69ba
commit c06e7a1aa4
  1. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/TaskingMapper.xml
  2. 187
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java

@ -77,11 +77,6 @@
SELECT t.* SELECT t.*
FROM DS_TASKING t FROM DS_TASKING t
WHERE t.is_deleted = 0 WHERE t.is_deleted = 0
-- AND NOT EXISTS (
-- SELECT 1
-- FROM DS_PART_RELATION r
-- WHERE r.is_deleted = 0
-- AND r.CHILD_PART_CODE = t.PART_CODE)
<if test="dsTasking.taskStatus != null "> <if test="dsTasking.taskStatus != null ">
and TASK_STATUS = #{dsTasking.taskStatus} and TASK_STATUS = #{dsTasking.taskStatus}
</if> </if>

@ -59,6 +59,8 @@ import org.springblade.desk.order.pojo.entity.MoldDemand;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IMoldDemandService; import org.springblade.desk.order.service.IMoldDemandService;
import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO; import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO;
@ -80,6 +82,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.sql.Connection; import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDate; import java.time.LocalDate;
@ -191,6 +194,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
@Autowired @Autowired
IDsDispatchPointerService dsDispatchPointerService; IDsDispatchPointerService dsDispatchPointerService;
@Autowired
@Lazy
IPdaSaveService pdaSaveService;
@Override @Override
public IPage<DsTaskingVO> selectAssignList(IPage<DsTaskingVO> page, DsTaskingVO dsTasking) { public IPage<DsTaskingVO> selectAssignList(IPage<DsTaskingVO> page, DsTaskingVO dsTasking) {
List<DsTaskingVO> dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking); List<DsTaskingVO> dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking);
@ -1040,69 +1047,149 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
// 构建工序树 // 构建工序树
List<ProcessTreeVO> processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList, List<ProcessTreeVO> processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList,
processMeasuringToolEntityList, processMoldToolEntityList); processMeasuringToolEntityList, processMoldToolEntityList);
craftTree.setProcessList(processTree); craftTree.setProcessList(processTree);
} }
result.getCraftList().add(craftTree); result.getCraftList().add(craftTree);
}else{ }else{
// 没有返工工艺信息的情况
// 创建新的工艺实体并设置返工订单号
craft = new DsCraftEntity();
craft.setReworkOrder(dsTaskingEntity.getReworkOrder());
craft.setPartId(partEntity.getId());
craft.setPartCode(partEntity.getPartCode());
craft.setPartVersions(dsTaskingEntity.getBatchNo());
// 创建工艺节点并设置craftInfo
craftTree.setCraftInfo(JSONObject.from(craft));
craftTree.setProcessList(new ArrayList<>());
result.getCraftList().add(craftTree);
// 查询零件工艺信息
List<DsCraftVO> dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2");
if(CollectionUtils.isEmpty(dsCraftVOList)){
throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息");
}
// // 查询零件工艺信息 if (!CollectionUtils.isEmpty(dsCraftVOList)) {
// List<DsCraftVO> dsCraftVOList = craftService.selectDsCraftByPartId(partEntity.getId(), "2"); for (DsCraftVO craftVO : dsCraftVOList) {
// if(CollectionUtils.isEmpty(dsCraftVOList)){ // 查询工序信息
// throw new ServiceException("零件工艺信息有误 请检查该零件是否有工艺信息"); List<DsProcessEntity> processEntities = processService.selectDsProcessByCraftId(craftVO.getId());
// } // 每次循环创建新的craftTree对象
// CraftTreeVO craftTree1 = new CraftTreeVO();
// if (!CollectionUtils.isEmpty(dsCraftVOList)) { craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder());
// for (DsCraftVO craftVO : dsCraftVOList) { craftVO.setPartId(partEntity.getId());
// // 每次循环创建新的craftTree对象 craftVO.setPartVersions(dsTaskingEntity.getBatchNo());
// CraftTreeVO craftTree1 = new CraftTreeVO(); craftVO.setId(null);
// craftTree1.setCraftInfo(JSONObject.from(craftVO));
// craftVO.setReworkOrder(dsTaskingEntity.getReworkOrder());
// craftVO.setPartId(partEntity.getId()); if (!CollectionUtils.isEmpty(processEntities)) {
// craftVO.setPartVersions(dsTaskingEntity.getVersion()); // 关键:将正常工序列表转换为返工工序列表
// List<PrReworkProcessEntity> reworkProcessEntityList = convertToReworkProcessList(processEntities, dsTaskingEntity);
// craftTree1.setCraftInfo(JSONObject.from(craftVO));
// List<Long> processIds = processEntities.stream()
// // 查询工序信息 .map(DsProcessEntity::getId)
// List<DsProcessEntity> processEntities = processService.selectDsProcessByCraftId(craftVO.getId()); .collect(Collectors.toList());
//
// if (!CollectionUtils.isEmpty(processEntities)) { // 批量查询关联数据
// List<Long> processIds = processEntities.stream() List<DsProcessProjectEntity> processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds);
// .map(DsProcessEntity::getId) List<DsProcessMeasuringToolEntity> processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds);
// .collect(Collectors.toList()); List<DsProcessMoldToolEntity> processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds);
//
// // 批量查询关联数据 // 构建工序树
// List<DsProcessProjectEntity> processProjectEntityList = processProjectService.selectDsProcessProjectByProcessIds(processIds); List<ProcessTreeVO> processTree = reworkBuildProcessTree(reworkProcessEntityList, processProjectEntityList,
// List<DsProcessMeasuringToolEntity> processMeasuringToolEntityList = processMeasuringToolService.selectDsProcessMeasuringToolByProcessIds(processIds); processMeasuringToolEntityList, processMoldToolEntityList);
// List<DsProcessMoldToolEntity> processMoldToolEntityList = processMoldToolService.selectDsProcessMoldToolByProcessIds(processIds);
// clearAllIds(processTree);
// // 构建工序树 craftTree1.setProcessList(processTree);
// List<ProcessTreeVO> processTree = buildProcessTree(processEntities, processProjectEntityList, }
// processMeasuringToolEntityList, processMoldToolEntityList);
// craftTree1.setProcessList(processTree); result.getCraftList().add(craftTree1);
// } }
// }
// result.getCraftList().add(craftTree1);
// }
// }
} }
return result; return result;
} }
/**
* 清空工序树中所有ID
*/
private void clearAllIds(List<ProcessTreeVO> processTree) {
if (CollectionUtils.isEmpty(processTree)) {
return;
}
for (ProcessTreeVO node : processTree) {
// 清空工序信息中的id
if (node.getProcessInfo() instanceof JSONObject) {
((JSONObject) node.getProcessInfo()).remove("id");
}
// 清空工装模具列表中的id
if (!CollectionUtils.isEmpty(node.getMoldToolList())) {
for (Object obj : node.getMoldToolList()) {
if (obj instanceof JSONObject) {
((JSONObject) obj).remove("id");
}
}
}
// 清空尺寸量具列表中的id
if (!CollectionUtils.isEmpty(node.getMeasuringToolList())) {
for (Object obj : node.getMeasuringToolList()) {
if (obj instanceof JSONObject) {
((JSONObject) obj).remove("id");
}
}
}
// 清空工序项目列表中的id
if (!CollectionUtils.isEmpty(node.getProjectList())) {
for (Object obj : node.getProjectList()) {
if (obj instanceof JSONObject) {
((JSONObject) obj).remove("id");
}
}
}
}
}
/**
* 将正常工序列表转换为返工工序列表
*/
private List<PrReworkProcessEntity> convertToReworkProcessList(List<DsProcessEntity> processEntities, DsTaskingEntity dsTaskingEntity) {
List<WorkPlan> originalOrderProcess = pdaSaveService.getOriginalOrderProcess(dsTaskingEntity.getPartCode(), dsTaskingEntity.getBatchNo());
// 转换为Map便于快速查找
Map<Long, WorkPlan> workPlanMap = new HashMap<>();
if (!CollectionUtils.isEmpty(originalOrderProcess)) {
for (WorkPlan workPlan : originalOrderProcess) {
if (workPlan != null && workPlan.getPpsId() != null) {
workPlanMap.put(workPlan.getPpsId(), workPlan);
}
}
}
List<PrReworkProcessEntity> reworkList = new ArrayList<>();
for (DsProcessEntity process : processEntities) {
PrReworkProcessEntity reworkProcess = new PrReworkProcessEntity();
// 设置返工特有的属性
reworkProcess.setId(process.getId());
reworkProcess.setReworkCode(dsTaskingEntity.getReworkOrder());
reworkProcess.setPartCode(dsTaskingEntity.getPartCode());
reworkProcess.setBatchNo(dsTaskingEntity.getBatchNo());
reworkProcess.setProcessNo(process.getProcessNo());
reworkProcess.setPpsName(process.getProcessName());
reworkProcess.setPpsId(process.getPpsId());
reworkProcess.setCaId(process.getCaId());
reworkProcess.setMakeMemo(process.getProDes());
reworkProcess.setHourQuota(BigDecimal.valueOf(process.getProHours()));
reworkProcess.setCruxProcess(process.getIsMain());
reworkProcess.setTrialNo(process.getTrialNo());
reworkProcess.setCraftName(process.getCraftName());
// 匹配ppsId并赋值(不为空才赋值)
if (process.getPpsId() != null && workPlanMap.containsKey(process.getPpsId())) {
WorkPlan workPlan = workPlanMap.get(process.getPpsId());
Optional.ofNullable(workPlan.getOcId()).ifPresent(reworkProcess::setOcId);
Optional.ofNullable(workPlan.getMakeTeam()).ifPresent(reworkProcess::setMakeTeam);
}
reworkList.add(reworkProcess);
}
return reworkList;
}
@Override @Override
public boolean authorizedAccomplish(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectIds) { public boolean authorizedAccomplish(DsCraftEntity craft, List<DsProcessVO> processList, List<Long> processDeleteIds, List<Long> projectIds) {

Loading…
Cancel
Save