Merge remote-tracking branch 'origin/dev' into dev

dev-temp-xw-202501150000-44852
xiangwei.zhang 6 months ago
commit fc20661b2b

@ -15,6 +15,6 @@ import java.util.List;
**/ **/
public interface IMesProductionRecordReportExtDao { public interface IMesProductionRecordReportExtDao {
ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList); ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo);
} }

@ -34,7 +34,8 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
private EntityManager entityManager; private EntityManager entityManager;
@Override @Override
public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList) { public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(
MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo) {
List<MesProductionRecordReportExtModel> resultList = new ArrayList<>(); List<MesProductionRecordReportExtModel> resultList = new ArrayList<>();
@ -48,7 +49,7 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
StringBuilder endHql = new StringBuilder(); StringBuilder endHql = new StringBuilder();
StringBuilder limitHql = new StringBuilder(); StringBuilder limitHql = new StringBuilder();
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) { if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
unionQueryHql.append("SELECT " + unionQueryHql.append("SELECT " +
" o.workCenterCode, " + " o.workCenterCode, " +
" o.workCellCode, " + " o.workCellCode, " +
@ -70,7 +71,7 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
countQueryHql.append("SELECT count(1) FROM ( "); countQueryHql.append("SELECT count(1) FROM ( ");
} }
if (!CollectionUtils.isEmpty(reportStatusList)) { if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
prQueryHql.append("" + prQueryHql.append("" +
" SELECT " + " SELECT " +
" a.work_center_code AS workCenterCode, " + " a.work_center_code AS workCenterCode, " +
@ -92,7 +93,7 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
" AND a.is_valid = :isValid " + " AND a.is_valid = :isValid " +
" AND a.complete_date_time >= :completeDateTimeStart " + " AND a.complete_date_time >= :completeDateTimeStart " +
" AND a.complete_date_time <= :completeDateTimeEnd "); " AND a.complete_date_time <= :completeDateTimeEnd ");
if (reportStatusList.size() == 1) { if (reportStatusList2Pr.size() == 1) {
prQueryHql.append(" AND a.report_status = :reportStatus "); prQueryHql.append(" AND a.report_status = :reportStatus ");
} else { } else {
prQueryHql.append(" AND a.report_status in (:reportStatus) "); prQueryHql.append(" AND a.report_status in (:reportStatus) ");
@ -123,11 +124,11 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
} }
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) { if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
prQueryHql.append(" ) UNION ALL ( "); prQueryHql.append(" ) UNION ALL ( ");
} }
if (model.getIsQueryWo()) { if (!CollectionUtils.isEmpty(reportStatusList2Wo)) {
woQueryHql.append("" + woQueryHql.append("" +
" SELECT " + " SELECT " +
" b.work_center_code AS workCenterCode, " + " b.work_center_code AS workCenterCode, " +
@ -168,7 +169,7 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
} }
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) { if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
endHql.append(" )) AS o "); endHql.append(" )) AS o ");
} else { } else {
endHql.append(" ) AS o "); endHql.append(" ) AS o ");
@ -176,11 +177,11 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
limitHql.append(" LIMIT :startRow , :pageSize "); limitHql.append(" LIMIT :startRow , :pageSize ");
if (!CollectionUtils.isEmpty(reportStatusList) && model.getIsQueryWo()) { if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
queryHql.append(unionQueryHql).append(prQueryHql).append(woQueryHql).append(endHql).append(limitHql); queryHql.append(unionQueryHql).append(prQueryHql).append(woQueryHql).append(endHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(woQueryHql).append(endHql); countHql.append(countQueryHql).append(prQueryHql).append(woQueryHql).append(endHql);
} else { } else {
if (!CollectionUtils.isEmpty(reportStatusList)) { if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
queryHql.append(prQueryHql).append(limitHql); queryHql.append(prQueryHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(endHql); countHql.append(countQueryHql).append(prQueryHql).append(endHql);
} else { } else {
@ -193,9 +194,9 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
// log.info("countHql: --- {}", countHql.toString()); // log.info("countHql: --- {}", countHql.toString());
Query dataQuery = entityManager.createNativeQuery(queryHql.toString()); Query dataQuery = entityManager.createNativeQuery(queryHql.toString());
setQueryParams(dataQuery, model, reportStatusList, pager); setQueryParams(dataQuery, model, reportStatusList2Pr, reportStatusList2Wo, pager);
Query countQuery = entityManager.createNativeQuery(countHql.toString()); Query countQuery = entityManager.createNativeQuery(countHql.toString());
setQueryParams(countQuery, model, reportStatusList, null); setQueryParams(countQuery, model, reportStatusList2Pr, reportStatusList2Wo, null);
Object o = countQuery.getSingleResult(); Object o = countQuery.getSingleResult();
@ -231,20 +232,26 @@ public class MesProductionRecordReportExtDao implements IMesProductionRecordRepo
} }
private void setQueryParams(Query query, MesProductionRecordReportExtModel model, List<Integer> reportStatusList, Pager pager) { private void setQueryParams(Query query, MesProductionRecordReportExtModel model, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo, Pager pager) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode()); query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue());
query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_START, model.getCompleteDateTimeStart()); query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_START, model.getCompleteDateTimeStart());
query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_END, model.getCompleteDateTimeEnd()); query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_END, model.getCompleteDateTimeEnd());
if (!CollectionUtils.isEmpty(reportStatusList)) { if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
if (reportStatusList.size() == 1) { if (reportStatusList2Pr.size() == 1) {
query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList.get(0)); query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList2Pr.get(0));
} else { } else {
query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList); query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList2Pr);
}
}
if (!CollectionUtils.isEmpty(reportStatusList2Wo)) {
if (reportStatusList2Pr.size() == 1) {
query.setParameter(MesExtConstWords.MESSAGE_TYPE, reportStatusList2Wo.get(0));
} else {
query.setParameter(MesExtConstWords.MESSAGE_TYPE, reportStatusList2Wo);
} }
} }
if (model.getIsQueryWo()) query.setParameter(MesExtConstWords.MESSAGE_TYPE, MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT.getValue());
if (!StringUtils.isEmpty(model.getPartNo())) { if (!StringUtils.isEmpty(model.getPartNo())) {
query.setParameter(MesExtConstWords.PART_NO, model.getPartNo()); query.setParameter(MesExtConstWords.PART_NO, model.getPartNo());
} }

@ -211,8 +211,8 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
commonHql.append(" and partType.assemblyDescription = '通用追溯' and workOrder.workOrderStatus in (:workOrderStatus) "); commonHql.append(" and partType.assemblyDescription = '通用追溯' and workOrder.workOrderStatus in (:workOrderStatus) ");
commonHql.append(" and assembly.assemblySn != '' and assembly.assemblySn is not null "); commonHql.append(" and assembly.assemblySn != '' and assembly.assemblySn is not null ");
if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and workOrder.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' "); if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and workOrder.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' ");
if (!StringUtils.isEmpty(model.getCustSn())) commonHql.append(" and orderAssembly.custSn like '%").append(model.getCustSn()).append("%' "); if (!StringUtils.isEmpty(model.getCustSn())) commonHql.append(" and workOrder.custSn like '%").append(model.getCustSn()).append("%' ");
if (!StringUtils.isEmpty(model.getAssemblySn())) commonHql.append(" and orderAssembly.assemblySn like '%").append(model.getAssemblySn()).append("%' "); if (!StringUtils.isEmpty(model.getAssemblySn())) commonHql.append(" and assembly.assemblySn like '%").append(model.getAssemblySn()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkOrderNo())) commonHql.append(" and workOrder.workOrderNo like '%").append(model.getWorkOrderNo()).append("%' "); if (!StringUtils.isEmpty(model.getWorkOrderNo())) commonHql.append(" and workOrder.workOrderNo like '%").append(model.getWorkOrderNo()).append("%' ");
if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and workOrder.shippingTime >= :shippingTimeStart "); if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and workOrder.shippingTime >= :shippingTimeStart ");
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and workOrder.shippingTime <= :shippingTimeEnd "); if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and workOrder.shippingTime <= :shippingTimeEnd ");

@ -3,7 +3,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.*; import cn.estsh.i3plus.ext.mes.api.base.*;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao;
import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.TestJob;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
@ -28,8 +27,6 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.DateUtilExt; import cn.estsh.i3plus.pojo.mes.util.DateUtilExt;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -1033,7 +1030,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription(); String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription();
for (MesBom mesBom : mesBoms) { for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime,mesBoms.size()));
} }
mesProductOffLineService.insertBatch(mesProductOffLineList); mesProductOffLineService.insertBatch(mesProductOffLineList);
} }
@ -1099,8 +1096,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
} }
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
//生成条码 //生成条码
String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName()); String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName());
//保存数据 //保存数据
@ -1111,9 +1106,17 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowTime = TimeTool.getNowTime(true); String nowTime = TimeTool.getNowTime(true);
//排序工单 //排序工单
if (MesExtEnumUtil.ORDER_TYPE.SORT.getValue() == mesWorkOrder.getWorkOrderType()) { if (MesExtEnumUtil.ORDER_TYPE.SORT.getValue() == mesWorkOrder.getWorkOrderType()) {
//报工类型 //排序线不能做报工调整ESD属性类型
if (MesExtEnumUtil.REPORT_TYPE.WRITE_OFF.getValue() == mesWorkOrder.getReportType()) { if (MesExtEnumUtil.REPORT_TYPE.WRITE_OFF.getValue() == mesWorkOrder.getReportType()) {
MesException.throwMesBusiException("工单【%s】为排序工单不允许冲销", mesWorkOrder.getWorkOrderNo()); MesConfig config = mesConfigService.getCfgValueByCode(mesWorkOrder.getOrganizeCode(), MesExtConstWords.NOT_ALLOW_WRITE_OFF);
if (!Objects.isNull(config) && config.getCfgValue().contains(mesPart.getEsd())) {
MesException.throwMesBusiException("物料特殊移库类型为【%s】,不允许冲销", mesPart.getEsd());
}
}
//查询工单零件表
List<MesWorkOrderPart> partList = mesWorkOrderPartService.findMesWorkOrderPart(mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getOrganizeCode());
if(CollectionUtils.isEmpty(partList)){
MesException.throwMesBusiException("工单【%s】工单零件表信息不存在不允许冲销", mesWorkOrder.getWorkOrderNo());
} }
//排序加工规则 //排序加工规则
MesProdRuleSortCfg mesProdRuleSortCfg = getMesProdRuleSortCfg(mesWorkOrder); MesProdRuleSortCfg mesProdRuleSortCfg = getMesProdRuleSortCfg(mesWorkOrder);
@ -1125,7 +1128,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
isReport = true; isReport = true;
isMove = true; isMove = true;
} else if (MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleSortCfg.getReportType()) { } else if (MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleSortCfg.getReportType()) {
customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime,true); customerSupplyMoveSort(mesWorkOrderNew, mesProductVersion, partList, sn, mesProductOffLineList, mesMoveList, nowTime);
} else { } else {
log.info("工单{}排序加工规则报工类型未维护", mesWorkOrder.getWorkOrderNo()); log.info("工单{}排序加工规则报工类型未维护", mesWorkOrder.getWorkOrderNo());
return; return;
@ -1136,8 +1139,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
//成品汇报 //成品汇报
if (isReport) { if (isReport) {
for (MesBom mesBom : mesBoms) { for (MesWorkOrderPart orderPart : partList) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, orderPart,false,nowTime,partList.size()));
} }
} }
//成品移库 //成品移库
@ -1148,18 +1151,23 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
} }
} else if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == mesWorkOrder.getWorkOrderType()) { } else if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == mesWorkOrder.getWorkOrderType()) {
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
MesProdRuleNosortCfg mesProdRuleNoSortCfg = mesProdRuleNosortCfgService.findMesProdRuleNosortCfgByWorkCenterCode(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); MesProdRuleNosortCfg mesProdRuleNoSortCfg = mesProdRuleNosortCfgService.findMesProdRuleNosortCfgByWorkCenterCode(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
if (MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == mesProdRuleNoSortCfg.getReportType()) { if (MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == mesProdRuleNoSortCfg.getReportType()) {
for (MesBom mesBom : mesBoms) { for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size())); mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, nowTime,mesBoms.size()));
} }
}else if(MesExtEnumUtil.NOSORT_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleNoSortCfg.getReportType()) { }else if(MesExtEnumUtil.NOSORT_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleNoSortCfg.getReportType()) {
customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime,false); customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime);
} }
} else { } else {
log.info("工单{}排序规则不属于排序工单和非排序工单", mesWorkOrder.getWorkOrderNo()); log.info("工单{}排序规则不属于排序工单和非排序工单", mesWorkOrder.getWorkOrderNo());
return; return;
} }
//原因备注
mesWorkOrder.setRemark(mesWorkOrderNew.getRemark());
mesWorkOrder.setDescription(mesWorkOrderNew.getDescription());
//更新工单 //更新工单
updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum()); updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum());
@ -1528,7 +1536,56 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return newMesProductOffLine; return newMesProductOffLine;
} }
private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesBom> mesBoms, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime,boolean isSort) { private void customerSupplyMoveSort(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesWorkOrderPart> orderPartList, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime) {
boolean isItemMove;
boolean isItemReport;
MesMoveRule moveRule;
MesPart itemPart;
//查询零件生产组的移库规则
List<MesMoveRule> moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode(), MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_20.getValue());
Map<String, List<MesMoveRule>> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType));
List<String> itemPartNoList = orderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
//子物料SAP下发信息
Map<String, List<MesPartSap>> mesPartSapMap = getPartSapMap(mesWorkOrder, itemPartNoList);
//获取物料信息
Map<String, List<MesPart>> itemPartMap = getItemPartMap(mesWorkOrder, itemPartNoList);
for (MesWorkOrderPart orderPart : orderPartList) {
isItemReport = false;
isItemMove = false;
moveRule = null;
itemPart = null;
if (itemPartMap.containsKey(orderPart.getPartNo())) {
itemPart = itemPartMap.get(orderPart.getPartNo()).iterator().next();
if (!StringUtil.isEmpty(itemPart.getEsd()) && mesMoveRuleMap.containsKey(itemPart.getEsd())) {
moveRule = mesMoveRuleMap.get(itemPart.getEsd()).iterator().next();
if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) {
isItemMove = true;
isItemReport = true;
} else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT.getValue() == moveRule.getReportType()) {
isItemReport = true;
} else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) {
isItemMove = true;
}
}
}
//汇报
if (isItemReport) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, orderPart, true, nowTime, null));
}
//移库
if (isItemMove) {
MesPartSap mesPartSap = null;
if (mesPartSapMap.containsKey(orderPart.getPartNo())) {
mesPartSap = mesPartSapMap.get(orderPart.getPartNo()).iterator().next();
}
MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), orderPart.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), orderPart.getItemQty(), MesExtConstWords.EMPTY, MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue());
move.setMatnr(orderPart.getPartNo());
mesMoveList.add(move);
}
}
}
private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesBom> mesBoms, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime) {
boolean isItemMove; boolean isItemMove;
boolean isItemReport; boolean isItemReport;
MesMoveRule moveRule; MesMoveRule moveRule;
@ -1561,9 +1618,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
} }
//汇报 //汇报
if (isItemReport && isSort) { if (isItemReport) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true, nowTime, null));
} else if (isItemReport) {
String reportSn = String.valueOf(snowflakeIdMaker.nextId()); String reportSn = String.valueOf(snowflakeIdMaker.nextId());
MesProductVersion itemVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesBom.getItemPartNo(), mesProductVersion.getProductVersion()); MesProductVersion itemVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesBom.getItemPartNo(), mesProductVersion.getProductVersion());
List<MesBom> bomList = null; List<MesBom> bomList = null;
@ -1574,10 +1629,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//bom下的子节汇报 //bom下的子节汇报
if (!CollectionUtils.isEmpty(bomList)) { if (!CollectionUtils.isEmpty(bomList)) {
for (MesBom bom : bomList) { for (MesBom bom : bomList) {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, bom, mesBom.getItemQty(), true,bomList.size(), nowTime)); mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, bom, mesBom.getItemQty(), true, bomList.size(), nowTime, MesExtConstWords.SAVE_PRODUCT_VERSION_FLAG.equals(itemPart.getEsd())));
} }
} else { } else {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, mesBom, mesBom.getQty(), true,MesExtConstWords.ONE, nowTime)); mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, mesBom, mesBom.getQty(), true,MesExtConstWords.ONE, nowTime,false));
} }
} }
//移库 //移库
@ -1593,9 +1648,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
//bom下的子节汇报总成也需要汇报 //bom下的子节汇报总成也需要汇报
if (!isSort && !CollectionUtils.isEmpty(mesProductOffLineList)) { if (!CollectionUtils.isEmpty(mesProductOffLineList)) {
for (MesBom mesBom : mesBoms) { for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, mesBom.getQty(), false,mesBoms.size(), nowTime)); mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, mesBom.getQty(), false,mesBoms.size(), nowTime,false));
} }
} }
} }
@ -1627,7 +1682,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom,Double itemQty, boolean isItemReport,Integer bomSize,String nowTime) { String sn, MesBom mesBom,Double itemQty, boolean isItemReport,
Integer bomSize,String nowTime,boolean saveProductVersionFlag) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine(); MesProductOffLine newMesProductOffLine = new MesProductOffLine();
BeanUtils.copyProperties(mesBom, newMesProductOffLine,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); BeanUtils.copyProperties(mesBom, newMesProductOffLine,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
newMesProductOffLine.setReportPartNo(mesBom.getPartNo()); newMesProductOffLine.setReportPartNo(mesBom.getPartNo());
@ -1636,6 +1692,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
newMesProductOffLine.setQty(MathOperation.mul(mesWorkOrder.getNum(),itemQty)); newMesProductOffLine.setQty(MathOperation.mul(mesWorkOrder.getNum(),itemQty));
newMesProductOffLine.setItemQty(MathOperation.mul(newMesProductOffLine.getQty(), mesBom.getItemQty())); newMesProductOffLine.setItemQty(MathOperation.mul(newMesProductOffLine.getQty(), mesBom.getItemQty()));
//装配费没有bom情况
if (isItemReport && mesBom.getPartNo().equals(mesWorkOrder.getPartNo())) { if (isItemReport && mesBom.getPartNo().equals(mesWorkOrder.getPartNo())) {
newMesProductOffLine.setReportPartNo(mesBom.getItemPartNo()); newMesProductOffLine.setReportPartNo(mesBom.getItemPartNo());
newMesProductOffLine.setReportPartNameRdd(mesBom.getItemPartName()); newMesProductOffLine.setReportPartNameRdd(mesBom.getItemPartName());
@ -1654,7 +1711,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode()); if (Objects.equals(MesExtEnumUtil.ORDER_TYPE.BTO.getValue(), mesWorkOrder.getWorkOrderType())){
newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode());
}
newMesProductOffLine.setSapWorkCenter(saveProductVersionFlag ? mesProductVersion.getProductVersion() : mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomSize); newMesProductOffLine.setBomTotalSize(bomSize);
@ -1663,14 +1723,45 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return newMesProductOffLine; return newMesProductOffLine;
} }
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom, boolean isItemReport,String nowTime,Integer bomTotalSize) { String sn, MesWorkOrderPart workOrderPart, boolean isItemReport,String nowTime,Integer bomTotalSize) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine(); MesProductOffLine newMesProductOffLine = new MesProductOffLine();
if (!isItemReport) { if(!isItemReport){
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo()); newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName()); newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName());
} }
newMesProductOffLine.setReportSn(sn);
newMesProductOffLine.setItemPartNo(workOrderPart.getPartNo());
newMesProductOffLine.setItemPartName(workOrderPart.getPartName());
newMesProductOffLine.setItemQty(MathOperation.mul(mesWorkOrder.getNum(), workOrderPart.getItemQty()));
if (mesProductVersion != null){
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
}
newMesProductOffLine.setQty(Double.valueOf(mesWorkOrder.getNum()));
newMesProductOffLine.setBomVersion(mesWorkOrder.getProductVersion());
newMesProductOffLine.setSerialNumber(sn);
newMesProductOffLine.setItemUnit(workOrderPart.getItemUnit());
newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomTotalSize);
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
return newMesProductOffLine;
}
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom, String nowTime, Integer bomTotalSize) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName());
newMesProductOffLine.setReportSn(sn); newMesProductOffLine.setReportSn(sn);
newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());

@ -438,14 +438,24 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//获取相同总成的ptrId 在ptr详情中 //获取相同总成的ptrId 在ptr详情中
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList()); List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList());
if (!custPartPtrList.isEmpty()) { if (!custPartPtrList.isEmpty()) {
mesPartPtr = custPartPtrList.get(0); /**
//查询ptr总成--只有特定总成才会替换 * bug 44747 ptr
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); * PTRPTRPTRPTR;
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(), "ptrId", detailPartPtr); */
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr); for (MesPartPtr partPtr : custPartPtrList) {
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr); //查询ptr总成--只有特定总成才会替换
if (!ptrDetailList.isEmpty()) { DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
mesPartPtrDetail = ptrDetailList.get(0); DdlPreparedPack.getNumEqualPack(partPtr.getId(), "ptrId", detailPartPtr);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr);
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr);
if (!ptrDetailList.isEmpty()) {
mesPartPtrDetail = ptrDetailList.get(0);
mesPartPtr = partPtr;
break;
}
}
if (mesPartPtr == null){
mesPartPtr = custPartPtrList.get(0);
} }
} }
} }

@ -36,11 +36,15 @@ public class MesProductionRecordReportExtService implements IMesProductionRecord
public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager) { public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager) {
List<Integer> reportStatusList = !StringUtils.isEmpty(model.getReportStatusList()) List<Integer> reportStatusList = !StringUtils.isEmpty(model.getReportStatusList())
? Arrays.asList(model.getReportStatusList().split(MesExtConstWords.COMMA)).stream().map(Integer::parseInt).collect(Collectors.toList()) ? Arrays.asList(model.getReportStatusList().split(MesExtConstWords.COMMA)).stream().map(Integer::parseInt).collect(Collectors.toList()) :
: Stream.of(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue(), Stream.of(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_20.getValue(), MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue()).collect(Collectors.toList()); MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_20.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_40.getValue()
).collect(Collectors.toList());
List<Integer> reportStatusList2Pr = null; List<Integer> reportStatusList2Pr = null;
List<Integer> reportStatusList2Wo = null;
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue())) { if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue())) {
reportStatusList2Pr = new ArrayList<>(); reportStatusList2Pr = new ArrayList<>();
reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue()); reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue());
@ -51,10 +55,13 @@ public class MesProductionRecordReportExtService implements IMesProductionRecord
reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()); reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue());
} }
if (StringUtils.isEmpty(model.getWorkCellCode()) && StringUtils.isEmpty(model.getEquipmentCode()) && if (StringUtils.isEmpty(model.getWorkCellCode()) && StringUtils.isEmpty(model.getEquipmentCode())) {
reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue())) model.setIsQueryWo(true); reportStatusList2Wo = new ArrayList<>();
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue())) reportStatusList2Wo.add(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT.getValue());
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_40.getValue())) reportStatusList2Wo.add(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST.getValue());
}
ListPager<MesProductionRecordReportExtModel> listPager = productionRecordReportExtDao.queryProductionRecordUnionWorkOrderLogReport(model, pager, reportStatusList2Pr); ListPager<MesProductionRecordReportExtModel> listPager = productionRecordReportExtDao.queryProductionRecordUnionWorkOrderLogReport(model, pager, reportStatusList2Pr, reportStatusList2Wo);
return listPager; return listPager;

@ -59,9 +59,6 @@ public class MesProductionRecordReportExtModel implements Serializable {
@ApiParam("汇报状态名称") @ApiParam("汇报状态名称")
private String reportStatusName; private String reportStatusName;
@ApiParam("是否查询工单日志表")
private Boolean isQueryWo = false;
public MesProductionRecordReportExtModel() {} public MesProductionRecordReportExtModel() {}
public MesProductionRecordReportExtModel(Object workCenterCode, Object workCellCode, Object partNo, Object partName, Object shiftCode, Object equipmentCode, Object equipmentName, Object reportStatus, Object dataSource, Object qty) { public MesProductionRecordReportExtModel(Object workCenterCode, Object workCellCode, Object partNo, Object partName, Object shiftCode, Object equipmentCode, Object equipmentName, Object reportStatus, Object dataSource, Object qty) {

@ -434,5 +434,9 @@ public class MesExtConstWords {
//MES汇报查询BOM是否携带结束查询条件 //MES汇报查询BOM是否携带结束查询条件
public static final String MES_REPORT_FIND_BOM_WITH_EFFENDTIME = "MES_REPORT_FIND_BOM_WITH_EFFENDTIME"; public static final String MES_REPORT_FIND_BOM_WITH_EFFENDTIME = "MES_REPORT_FIND_BOM_WITH_EFFENDTIME";
//螺钉包保存生产版本标记
public static final String SAVE_PRODUCT_VERSION_FLAG = "ZFBT";
//排序线不能做报工调整ESD属性类型
public static final String NOT_ALLOW_WRITE_OFF = "NOT_ALLOW_WRITE_OFF";
} }

Loading…
Cancel
Save