Merge branch 'dev-temp-xw-202502170000-111111' into dev

# Conflicts:
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java
dev-temp-nht-202502180000-customprint
xiangwei.zhang 3 months ago
commit 5ec10ea186

@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.shippingscan.IMesShippingScanStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesReworkTaskRequestModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingCheckModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesSortShippingModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
@ -117,6 +118,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
@Autowired
private MesShippingQueueRepository shippingQueueRDao;
@Autowired
private MesMoveRepository moveRepository;
@Override
public MesSortShippingCheckModel doShippingOrderNoQuery(MesShippingOrderManagement shippingOrderManagement) {
//校验发运单
@ -580,7 +584,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
}
//客供品移库
customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail);
customerSupplyMove(orderManagement, userInfo, sortShippingModel, shippingList, detail, model.getMesPartShippingGroup());
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
detail.setActualQty(MesPcnExtConstWords.ONE);
@ -730,9 +734,10 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
sortShippingModel.setMesWorkOrderList(mesWorkOrderExtService.getWorkOrderList(organizeCode, orderNoList));
sortShippingModel.setMesWorkOrderPartList(mesWorkOrderService.findMesWorkOrderPartByOrderNo(organizeCode, orderNoList));
sortShippingModel.setMesProductionRecordList(mesProductionRecordService.findProductionRecordList(organizeCode, orderNoList, MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue()));
sortShippingModel.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(shippingGroupCode, organizeCode,MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue()));
sortShippingModel.setMesPartList(mesPartService.findMesPartByPartNo(sortShippingModel.getPartNoAllList(), organizeCode));
}
sortShippingModel.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(shippingGroupCode, organizeCode,MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_10.getValue()));
return sortShippingModel;
}
@ -744,7 +749,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
return produceSnByCustSnMap;
}
private void customerSupplyMove(MesShippingOrderManagement orderManagement, String userInfo, MesSortShippingModel sortShippingModel, List<MesJisShipping> shippingList, MesShippingOrderManagementDetail detail) {
private void customerSupplyMove(MesShippingOrderManagement orderManagement, String userInfo, MesSortShippingModel sortShippingModel, List<MesJisShipping> shippingList, MesShippingOrderManagementDetail detail, MesPartShippingGroup mesPartShippingGroup) {
if (!StringUtils.isEmpty(detail.getVisualOrderNo()) && !Objects.isNull(sortShippingModel.getMesWorkOrderMap()) && sortShippingModel.getMesWorkOrderMap().containsKey(detail.getVisualOrderNo())) {
MesWorkOrder workOrder = sortShippingModel.getMesWorkOrderMap().get(detail.getVisualOrderNo());
//散件发运
@ -767,6 +772,27 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
}
}
} else if (Objects.equals(MesExtEnumUtil.PART_GROUP_MOVE_TYPE.PART_GROUP_MOVE_TYPE_10.getValue(), mesPartShippingGroup.getMoveType())) {
MesWorkOrder workOrder = sortShippingModel.getMesWorkOrderMap().get(detail.getVisualOrderNo());
//散件发运
if (!Objects.isNull(sortShippingModel.getMesProductionRecordMap()) && sortShippingModel.getMesProductionRecordMap().containsKey(detail.getVisualOrderNo()) && !Objects.isNull(sortShippingModel.getMesWorkOrderPartMap()) && sortShippingModel.getMesWorkOrderPartMap().containsKey(detail.getVisualOrderNo())) {
//标记为总成不记录回传表
detail.setSaveFlag(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
MesMoveRule moveRule = null;
MesPart itemPart = Objects.isNull(sortShippingModel.getMesPartMap()) || !sortShippingModel.getMesPartMap().containsKey(detail.getPartNo()) ? null : sortShippingModel.getMesPartMap().get(detail.getPartNo());
if (Objects.isNull(itemPart) || StringUtil.isEmpty(itemPart.getEsd()) || Objects.isNull(sortShippingModel.getMesMoveRuleMap()) || !sortShippingModel.getMesMoveRuleMap().containsKey(itemPart.getEsd())) {
log.info("客供品移库零件【{}】维护的ESD属性未匹配到零件发运组【{}】中的移库规则", detail.getPartNo(), workOrder.getPartProdGroupCode());
return;
}
moveRule = sortShippingModel.getMesMoveRuleMap().get(itemPart.getEsd());
if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) {
doCreateReworkMove(orderManagement.getOrganizeCode(),userInfo,moveRule.getErpSrcLocateNo(),moveRule.getErpDestLocateNo(), workOrder.getWorkCenterCode(), detail.getPartNo(), detail.getActualQty(),detail.getBarcode());
} else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.NOT_HANDLER.getValue() == moveRule.getReportType()) {
log.info("客供品移库零件【{}】维护的移库规则不做处理", detail.getPartNo(), workOrder.getPartProdGroupCode());
return;
}
}
}
}
@ -789,4 +815,24 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
ConvertBean.serviceModelInitialize(mesShippingQueue, userInfo);
shippingQueueRDao.insert(mesShippingQueue);
}
private void doCreateReworkMove(String organizeCode,String userName, String srcLocate, String destLocate, String workCenterCode, String partNo, double qty, String sn) {
MesPartSap mesPartSap = mesPartService.getMesPartSapByPartNo(partNo, organizeCode);
MesMove move = new MesMove();
move.setMatnr(mesPartSap.getPartNo());
move.setOrganizeCode(organizeCode);
move.setFactoryCode(organizeCode);
move.setLgort(srcLocate);
move.setUmlgo(destLocate);
move.setPartInspectionId(0L);
move.setMenge(qty);
move.setMeins(mesPartSap.getUnit());
move.setPostDate(TimeTool.getToday());
move.setPostTime(TimeTool.getTimeShortWithColon());
move.setMoveType(MesExtEnumUtil.MOVE_TYPE.RETURN_MOVE.getValue());
move.setProductSn(sn);
move.setWorkCenter(workCenterCode);
ConvertBean.serviceModelInitialize(move, userName);
moveRepository.insert(move);
}
}

@ -575,7 +575,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
}
}
//查询物料信息
//查询物料信息
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(productionRecord.getPartNo(), "partNo", ddlPackBeanPart);
MesPart mesPart = mesPartRDao.getByProperty(ddlPackBeanPart);

@ -1,43 +1,24 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesEquipVariableCollectContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCutScheme;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutMaterial;
import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel;
import cn.estsh.i3plus.pojo.mes.model.StationCustomDialogBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.repository.MesCutSchemeRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.jws.Oneway;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Description :
@ -52,13 +33,6 @@ public class MesFunctionDialogCutOrderPrintService extends BaseSwsService implem
@Autowired
private IShippingDispatchService shippingDispatchService;
@Autowired
private IMesWorkOrderCutService workOrderCutService;
@Autowired
private MesCutSchemeRepository cutSchemeRepository;
@Autowired
private MesPartRepository mesPartRepository;
@Override
public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
@ -92,60 +66,6 @@ public class MesFunctionDialogCutOrderPrintService extends BaseSwsService implem
List<MesWorkOrderCutDetailModel> mesWorkOrderCutFgDataContextList = productionDispatchContextStepService.getMesWorkOrderCutFgDataContext(reqBean);
// 如果当前存在成品列表则直接返回
if (CollectionUtils.isEmpty(mesWorkOrderCutFgDataContextList)) {
//获取上下文生产扫/读信息:加工单
List<MesEquipVariableCollectContext> equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean);
String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
DdlPackBean schemePackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, "cutCode", schemePackBean);
MesCutScheme mesCutScheme =cutSchemeRepository.getByProperty(schemePackBean);
// 如果是补片方案,则需要查询裁片工单原材料,而不是裁片方案原材料
if (mesCutScheme != null && Objects.equal(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),mesCutScheme.getIsFree())) {
// 查裁片工单物料列表
List<MesWorkOrderCutMaterial> workOrderCutMaterialList = workOrderCutService.queryCutOrderMaterialList(cutWorkOrderNo, reqBean.getOrganizeCode());
if (CollectionUtils.isEmpty(workOrderCutMaterialList)) {
MesPcnException.throwFlowException("裁片工单为补片方案但未添加原材料信息");
}
List<String> partNoList = workOrderCutMaterialList.stream().map(MesWorkOrderCutMaterial::getPartNo).collect(Collectors.toList());
// 查询物料信息
DdlPackBean partBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getInPackList(partNoList, "partNo", partBean);
List<MesPart> mesPartList = mesPartRepository.findByHqlWhere(partBean);
Map<String,List<MesPart>> map = mesPartList.stream().collect(Collectors.groupingBy(MesPart::getPartNo));
mesWorkOrderCutFgDataContextList = new ArrayList<>();
for (MesWorkOrderCutMaterial mesWorkOrderCutMaterial : workOrderCutMaterialList) {
MesWorkOrderCutDetailModel cutDetailModel = new MesWorkOrderCutDetailModel();
BeanUtils.copyProperties(mesWorkOrderCutMaterial, cutDetailModel);
cutDetailModel.setPartName(map.get(mesWorkOrderCutMaterial.getPartNo()).get(0).getPartName());
mesWorkOrderCutFgDataContextList.add(cutDetailModel);
}
} else {
// 查询物料信息
List<MesCutSchemeFg> mesCutSchemeFgs = workOrderCutService.queryCutSchemeFgList(cutWorkOrderNo, reqBean.getOrganizeCode());
mesWorkOrderCutFgDataContextList = new ArrayList<>();
for (MesCutSchemeFg mesWorkOrderCutMaterial : mesCutSchemeFgs) {
MesWorkOrderCutDetailModel cutDetailModel = new MesWorkOrderCutDetailModel();
BeanUtils.copyProperties(mesWorkOrderCutMaterial, cutDetailModel);
mesWorkOrderCutFgDataContextList.add(cutDetailModel);
}
}
productionDispatchContextStepService.dispatchMesWorkOrderCutFgDataContext(reqBean, mesWorkOrderCutFgDataContextList);
}
return CollectionUtils.isEmpty(mesWorkOrderCutFgDataContextList) ? dialogBean.unDialog() : dialogBean.obj(mesWorkOrderCutFgDataContextList);
}
}

@ -224,10 +224,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
// 裁片方案成品配置
List<MesCutSchemeFg> mesCutSchemeFgList = workOrderCutService.queryCutSchemeFgList(cutScheme.getCutCode(), reqBean.getOrganizeCode());
// 裁片方案成品配置
List<MesWorkOrderCutDetail> mesWorkOrderCutDetails = workOrderCutService.queryMesWorkOrderCutDetailList(workOrderCut.getCutWorkOrderNo(), reqBean.getOrganizeCode());
// 校验裁片方案成品配置
if(!checkMesCutSchemeFgListValid(mesCutSchemeFgList, workOrderList, stepResult, cutWorkOrderNo, cutScheme.getCutCode()).isCompleted()) return stepResult;
@ -238,7 +234,6 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
Map<String, MesPartContext> partDataExtContext = (Map<String, MesPartContext>) stepResult.getObj();
for (MesCutSchemeFg mesCutSchemeFg : mesCutSchemeFgList) {
if (StringUtils.isEmpty(mesCutSchemeFg.getPackageSnRuleCode()))
return stepResult.isCompleted(false).msg(String.format("请检查裁片方案成品信息,零件号[%s]未在裁片方案[%s]成品配置信息中维护包装编码规则!", mesCutSchemeFg.getPartNo(), cutScheme.getCutCode()));
@ -260,7 +255,7 @@ public class MesWorkOrderCutCheckStepService extends BaseStepService {
MesWorkOrderCutDetailModel workOrderCutDetailModel = new MesWorkOrderCutDetailModel();
BeanUtils.copyProperties(mesCutSchemeFg, workOrderCutDetailModel);
if (Objects.equal(cutScheme.getIsFree(), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())) {
Map<String, List<MesWorkOrderCutDetail>> map = mesWorkOrderCutDetails.stream().collect(Collectors.groupingBy(MesWorkOrderCutDetail::getPartNo));
Map<String, List<MesWorkOrderCutDetail>> map = mesWorkOrderCutDetailList.stream().collect(Collectors.groupingBy(MesWorkOrderCutDetail::getPartNo));
workOrderCutDetailModel.setQty(map.get(mesCutSchemeFg.getPartNo()).get(0).getQty());
workOrderCutDetailModel.setPackageQty(map.get(mesCutSchemeFg.getPartNo()).get(0).getPackageQty());
}

Loading…
Cancel
Save