|
|
|
@ -318,12 +318,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
|
boolean isModifyPOrder = false;
|
|
|
|
|
boolean isFOrder = false;
|
|
|
|
|
//查询mes_part_ptr表,根据物料清单查找ptr替换信息
|
|
|
|
|
/**
|
|
|
|
|
* PTR生效
|
|
|
|
|
* 1.有开始时间和结束时间 和 需要数量,达到其中一个就结束
|
|
|
|
|
* 2.有开始时间无结束时间 和 需要数量 达到需要的数量结束
|
|
|
|
|
* 3.有开始时间无结束时间,无结束数量 一直替换
|
|
|
|
|
*/
|
|
|
|
|
if (!workOrderPartList.isEmpty()){
|
|
|
|
|
Map<String, MesWorkOrderPart> orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity()));
|
|
|
|
|
//先替换客户的ptr信息
|
|
|
|
|
String ptrInfo = mesWorkOrder.getPtrInfo();
|
|
|
|
|
if (StringUtils.isNotBlank(ptrInfo)) {
|
|
|
|
|
List<String> ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|"));
|
|
|
|
|
List<String> ptrInfoList = Arrays.asList(ptrInfo.replaceAll("_", "").split("\\|"));
|
|
|
|
|
if (!ptrInfoList.isEmpty()){
|
|
|
|
|
List<MesPartPtr> custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode);
|
|
|
|
|
long count = custPartPtrList.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count();
|
|
|
|
@ -349,12 +355,10 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
|
List<String> partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
|
|
|
|
|
List<MesPartPtr> partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList);
|
|
|
|
|
//装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号,value 是规则
|
|
|
|
|
long count = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count();
|
|
|
|
|
if (count > 0){
|
|
|
|
|
isFOrder = true;
|
|
|
|
|
}
|
|
|
|
|
List<String> fPartPtrPartList = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).map(MesPartPtr::getSrcPartNo).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
for (MesPartPtr mesPartPtr : partPtrList) {
|
|
|
|
|
//查询ptr总成
|
|
|
|
|
//查询ptr总成--只有特定总成才会替换
|
|
|
|
|
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",detailPartPtr);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",detailPartPtr);
|
|
|
|
@ -375,6 +379,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
|
if (!isModifyPOrder){
|
|
|
|
|
isModifyPOrder = true;
|
|
|
|
|
}
|
|
|
|
|
if (fPartPtrPartList.contains(mesPartPtr.getSrcPartNo())){
|
|
|
|
|
isFOrder = true;
|
|
|
|
|
}
|
|
|
|
|
mesWorkOrder.setRemark(mesPartPtr.getRemark());
|
|
|
|
|
String ptrInfoStr = "INFO"+mesPartPtr.getId()+"|PART"+mesPartPtrDetail.getId();
|
|
|
|
|
mesWorkOrder.setPtrInfo(ptrInfoStr);
|
|
|
|
@ -758,16 +765,50 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesPartPtr> getPartPtrList(String organizeCode,String workCenterCode, List<String> partNoList) {
|
|
|
|
|
/**
|
|
|
|
|
* 2024/11/16
|
|
|
|
|
* PTR生效
|
|
|
|
|
* 1.有开始时间和结束时间 和 需要数量,达到其中一个就结束
|
|
|
|
|
* 2.有开始时间无结束时间 和 需要数量 达到需要的数量结束
|
|
|
|
|
* 3.有开始时间无结束时间,无结束数量 一直替换
|
|
|
|
|
*/
|
|
|
|
|
DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", partPtrPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean);
|
|
|
|
|
List<MesPartPtr> partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean);
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "endTime", partPtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNotNull("prtVehicleCount", partPtrPackBean);
|
|
|
|
|
List<MesPartPtr> partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNotNull("endTime", partPtrPackBean);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 有开始时间 和 无结束时间 和 需要的数量,只有达到数量才结束
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DdlPackBean part1PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", part1PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", part1PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", part1PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNotNull("prtVehicleCount", part1PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNull("endTime", part1PtrPackBean);
|
|
|
|
|
List<MesPartPtr> partPtrList1 = partPtrRao.findByHqlWhere(part1PtrPackBean);
|
|
|
|
|
partPtrList.addAll(partPtrList1);
|
|
|
|
|
|
|
|
|
|
partPtrList = partPtrList.stream().filter(item -> item.getPrtVehicleCount() != null && item.getPrtVehicleCount() > 0)
|
|
|
|
|
.filter(item-> item.getPrtVehicleCount() > item.getPrtVehicleActualCount())
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
/**
|
|
|
|
|
* 有开始时间 和 无结束时间 和 无需要的数量
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DdlPackBean part2PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", part2PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackList(partNoList, "srcPartNo", part2PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", part2PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNull("prtVehicleCount", part2PtrPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNull("endTime", part2PtrPackBean);
|
|
|
|
|
List<MesPartPtr> partPtrList2 = partPtrRao.findByHqlWhere(part2PtrPackBean);
|
|
|
|
|
partPtrList.addAll(partPtrList2);
|
|
|
|
|
return partPtrList;
|
|
|
|
|
}
|
|
|
|
|
//根据排序信息PTR零件号 获取 ptr信息
|
|
|
|
|