forked from I3-YF/i3plus-mes-pcn-yfai
Merge branch 'uat-temp-nht-2503200000-volvo-print' into uat-temp-wj-chongqingdaqu-dev
commit
d19d75cb54
@ -0,0 +1,169 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.strategy;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPrintedSnLogService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintDataModel;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
||||
import cn.estsh.i3plus.mes.pcn.util.DateUtil;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.*;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackId;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.edi.cd.MesCimVolvoJisRackIdDetail;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.shipping.MesCustSortInfo;
|
||||
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StepResult;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesCustSoftInfoRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdDetailRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.edi.cd.MesCimVolvoJisRackIdRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description : 成都volvo零件标签打印
|
||||
* @Reference :
|
||||
* @Author : jason.niu
|
||||
* @CreateDate : 2025/03/20 16:43
|
||||
* @Modify:
|
||||
**/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ChengDuVolvoPartPrintStrategy implements IPrintTemplateStrategyService {
|
||||
@Autowired
|
||||
private ISyncFuncService syncFuncService;
|
||||
|
||||
@Autowired
|
||||
private SnowflakeIdMaker snowflakeIdMaker;
|
||||
|
||||
@Autowired
|
||||
private IMesPartService mesPartService;
|
||||
|
||||
@Autowired
|
||||
private IMesPrintedSnLogService mesPrintedSnLogService;
|
||||
|
||||
@Autowired
|
||||
private IMesCustomerPartService mesCustomerPartService;
|
||||
@Autowired
|
||||
private IMesWorkOrderService mesWorkOrderService;
|
||||
@Autowired
|
||||
private MesCustSoftInfoRepository custSoftInfoRDao;
|
||||
@Autowired
|
||||
private MesCimVolvoJisRackIdDetailRepository rackIdDetailRDao;
|
||||
@Autowired
|
||||
private MesCimVolvoJisRackIdRepository volvoJisRackIdRDao;
|
||||
|
||||
@Override
|
||||
public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel mesProduceSnPrintModel, MesNumberRule numberRule, StepResult stepResult, StationRequestBean reqBean, Boolean isStep) {
|
||||
String organizeCode = mesProduceSnPrintModel.getOrganizeCode();
|
||||
//物料信息
|
||||
MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), organizeCode);
|
||||
MesCustomerPart customerPart = (!Objects.isNull(genSerialNoModel) && !CollectionUtils.isEmpty(genSerialNoModel.getDataMap()) && genSerialNoModel.getDataMap().containsKey(MesCustomerPart.class.getSimpleName())) ? (MesCustomerPart) genSerialNoModel.getDataMap().get(MesCustomerPart.class.getSimpleName()) : mesCustomerPartService.getMesCustomerPart(organizeCode,mesProduceSnPrintModel.getPartNo());
|
||||
if (!isStep){
|
||||
MesPcnException.throwBusiException("成都volvo零件标签打印只支持工位端打印!");
|
||||
}
|
||||
|
||||
MesProduceSn mesProduceSn = mesProduceSnPrintModel.getMesProduceSnList().get(0);
|
||||
//封装打印信息
|
||||
MesProduceSnPrintDataModel printDataModel = getModel(mesProduceSn, customerPart);
|
||||
mesProduceSnPrintModel.getMesProduceSnPrintDataModelList().clear();
|
||||
Map<String, Object> printTemplateData = new HashMap<>(getPrintContextMap(mesProduceSn, customerPart));
|
||||
List<Map<String, Object>> printDataMapList = new ArrayList<>();
|
||||
printDataMapList.add(printTemplateData);
|
||||
mesProduceSnPrintModel.getPrintContextList().add(packResultMap(mesProduceSnPrintModel, printDataMapList));
|
||||
|
||||
//保存打印记录
|
||||
mesProduceSnPrintModel.getMesPrintedSnLogList().add(mesPrintedSnLogService.getMesCustomPrintedSnLog(mesProduceSnPrintModel.getUserName(), organizeCode, printDataModel, printTemplateData));
|
||||
return mesProduceSnPrintModel;
|
||||
}
|
||||
|
||||
private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName, Double qty) {
|
||||
MesProduceSn mesProduceSn = new MesProduceSn();
|
||||
mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + "");
|
||||
mesProduceSn.setProductSn(sn);
|
||||
mesProduceSn.setCustSn(sn);
|
||||
mesProduceSn.setPartNo(mesPart.getPartNo());
|
||||
mesProduceSn.setPartName(mesPart.getPartName());
|
||||
mesProduceSn.setProcessLabelTemplate(mesPart.getProcessLabelTemplate());
|
||||
mesProduceSn.setCustLabelTemplate(mesPart.getCustLabelTemplate());
|
||||
mesProduceSn.setProdLabelTemplate(mesPart.getProductLabelTemplate());
|
||||
mesProduceSn.setQty(qty);
|
||||
mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue());
|
||||
mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
||||
mesProduceSn.setLotNo(TimeTool.getToday());
|
||||
mesProduceSn.setPrintCount(MesPcnExtConstWords.ONE);
|
||||
mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
|
||||
mesProduceSn.setOrganizeCode(mesPart.getOrganizeCode());
|
||||
ConvertBean.serviceModelInitialize(mesProduceSn, userName);
|
||||
return mesProduceSn;
|
||||
}
|
||||
|
||||
private MesProduceSnPrintDataModel getModel(MesProduceSn produceSn, MesCustomerPart customerPart) {
|
||||
MesProduceSnPrintDataModel mesProduceSnPrintDataModel = new MesProduceSnPrintDataModel();
|
||||
mesProduceSnPrintDataModel.setPartNo(produceSn.getPartNo());
|
||||
mesProduceSnPrintDataModel.setPartName(produceSn.getPartName());
|
||||
if (!Objects.isNull(customerPart)) {
|
||||
mesProduceSnPrintDataModel.setCustPartNo(customerPart.getCustPartNo());
|
||||
}
|
||||
mesProduceSnPrintDataModel.setBarcode(produceSn.getProductSn());
|
||||
mesProduceSnPrintDataModel.setPrintDate(TimeTool.getNowTime(true));
|
||||
mesProduceSnPrintDataModel.setUserName(produceSn.getCreateUser());
|
||||
mesProduceSnPrintDataModel.setProductDate(TimeTool.parseStringFormat(produceSn.getLotNo(), DateUtil.SHORT_FORMAT, "yyyy/MM/dd"));
|
||||
return mesProduceSnPrintDataModel;
|
||||
}
|
||||
|
||||
private Map<String, Object> getPrintContextMap(MesProduceSn produceSn, MesCustomerPart customerPart) {
|
||||
MesWorkOrder workOrder = mesWorkOrderService.getWorkOrderNoByCustSn(produceSn.getOrganizeCode(), produceSn.getProductSn());
|
||||
if (workOrder == null || StringUtils.isEmpty(workOrder.getWorkOrderSource())) {
|
||||
MesPcnException.throwBusiException("客户条码[%s]对应的工单信息不存在!", produceSn.getProductSn());
|
||||
}
|
||||
|
||||
MesCustSortInfo custSoftInfo = custSoftInfoRDao.getById(Long.parseLong(workOrder.getWorkOrderSource()));
|
||||
if (custSoftInfo == null) {
|
||||
MesPcnException.throwBusiException("工单[%s]无法匹配客户排序信息!", workOrder.getWorkOrderNo());
|
||||
}
|
||||
MesCimVolvoJisRackIdDetail rackIdDetail = rackIdDetailRDao.getById(custSoftInfo.getSourceId());
|
||||
if (rackIdDetail == null) {
|
||||
MesPcnException.throwBusiException("工单[%s]客户排序信息无法匹配RackIdDetail!", workOrder.getWorkOrderNo());
|
||||
}
|
||||
MesCimVolvoJisRackId rackId = volvoJisRackIdRDao.getById(rackIdDetail.getJisRackIdFid());
|
||||
if (rackId == null) {
|
||||
MesPcnException.throwBusiException("工单[%s]客户排序信息无法匹配RackId!", workOrder.getWorkOrderNo());
|
||||
}
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put(MesPcnExtConstWords.VOLVO_CONSIGNMENT_REFERENCE, rackId.getConsignmentReference());
|
||||
result.put(MesPcnExtConstWords.PRODUCT_DATE, TimeTool.getNowTime("yyyyMMdd HH:mm"));
|
||||
result.put(MesPcnExtConstWords.VOLVO_FYON, rackIdDetail.getFyon());
|
||||
result.put(MesPcnExtConstWords.VOLVO_SEQUENCENUMBER, rackIdDetail.getSequenceNumber());
|
||||
result.put(MesPcnExtConstWords.VOLVO_RACKID, rackId.getJisRackId());
|
||||
result.put(MesPcnExtConstWords.VOLVO_POSITION, rackIdDetail.getPosition());
|
||||
result.put(MesPcnExtConstWords.CUST_PART_NO, custSoftInfo.getCustPartNo());
|
||||
result.put(MesPcnExtConstWords.PRINT_BAR_CODE, produceSn.getProductSn());
|
||||
result.put(MesPcnExtConstWords.PRINT_DATE, TimeTool.getNowTime(true));
|
||||
result.put(MesPcnExtConstWords.USER_NAME, produceSn.getCreateUser());
|
||||
return result;
|
||||
}
|
||||
|
||||
private Map<String, Object> packResultMap(MesProduceSnPrintModel printModel, List<Map<String, Object>> printTemplateDateList) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put(MesPcnExtConstWords.LABEL_TEMPLATE, printModel.getMesLabelTemplate());
|
||||
resultMap.put(MesPcnExtConstWords.TEMPLATE_DATA, printTemplateDateList);
|
||||
resultMap.put(MesPcnExtConstWords.TEMPLATE_CODE, printModel.getMesLabelTemplate().getTemplateCode());
|
||||
resultMap.put(MesPcnExtConstWords.PRINTER, printModel.getPrinter());
|
||||
return resultMap;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue