diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartService.java index da46c8e..765c788 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPartService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.base; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; import io.swagger.annotations.ApiOperation; /** @@ -19,4 +20,7 @@ public interface IMesPartService { @ApiOperation(value = "根据物料代码查询物料信息") MesPart getMesPartByPartNo(String partNo,String organizeCode); + + @ApiOperation(value = "根据物料代码查询SAP物料信息") + MesPartSap getMesPartSapByPartNo(String partNo, String organizeCode); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnPrintService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnPrintService.java index 97ab747..1ce8025 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnPrintService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnPrintService.java @@ -1,16 +1,13 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; -import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import io.swagger.annotations.ApiOperation; -import java.util.List; - public interface IMesProduceSnPrintService { @ApiOperation(value = "查询包装信息") - List findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel); + MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel); @ApiOperation(value = "查询条码信息") MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java index 5d6b34a..db6be92 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesProduceSnPrintController.java @@ -39,7 +39,7 @@ public class MesProduceSnPrintController { try { ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPartNo(), "ERP零件号不能为空"); ValidatorBean.checkNotNull(mesProduceSnPrintModel.getOrganizeCode(), "工厂代码不能为空"); - return ResultBean.success("查询成功").setResultList(mesProduceSnPrintService.findMesPackingDefine(mesProduceSnPrintModel)); + return ResultBean.success("查询成功").setResultObject(mesProduceSnPrintService.findMesPackingDefine(mesProduceSnPrintModel)); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartServiceImpl.java index 729a009..5a4678b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPartServiceImpl.java @@ -8,7 +8,9 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartSapRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,6 +30,9 @@ public class MesPartServiceImpl implements IMesPartService { @Autowired private MesPartRepository mesPartRDao; + @Autowired + private MesPartSapRepository mesPartSapRDao; + @Override public ListPager queryMesPart(MesPart mesPart, Pager pager) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPart.getOrganizeCode()); @@ -48,4 +53,15 @@ public class MesPartServiceImpl implements IMesPartService { } return mesPart; } + + @Override + public MesPartSap getMesPartSapByPartNo(String partNo, String organizeCode) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean); + MesPartSap mesPartSap = mesPartSapRDao.getByProperty(packBean); + if(Objects.isNull(mesPartSap)){ + MesPcnException.throwFlowException("SAP物料【%s】信息不存在",partNo); + } + return mesPartSap; + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintServiceImpl.java index ec3987a..aa13503 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnPrintServiceImpl.java @@ -11,15 +11,13 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine; -import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefineDetails; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; -import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineDetailsRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -61,7 +59,11 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService { private IMesTemplateService mesTemplateService; @Override - public List findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel) { + public MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel) { + //查询SAP下发物料信息 + MesPartSap mesPartSap = mesPartService.getMesPartSapByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode()); + mesProduceSnPrintModel.setQty(mesPartSap.getSnp()); + mesProduceSnPrintModel.setPartName(mesPartSap.getPartName()); //查询包装定义明细 DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getPartNo(), "partNo", ddlPackBean); @@ -72,7 +74,8 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService { //查询包装定义主表 ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode()); DdlPreparedPack.getInPackList(packingDefineDetails.stream().map(MesPackingDefineDetails::getPackCode).collect(Collectors.toList()), "packCode", ddlPackBean); - return mesPackingDefineRDao.findByHqlWhere(ddlPackBean); + mesProduceSnPrintModel.setMesPackingDefineList(mesPackingDefineRDao.findByHqlWhere(ddlPackBean)); + return mesProduceSnPrintModel; } @Override @@ -88,22 +91,26 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService { @Override public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) { - //获取打印模板信息 - mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate())); + //物料信息 + MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode()); //条码生成 if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) { - //物料信息 - MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode()); + ValidatorBean.checkNotNull(mesProduceSnPrintModel.getSnRule(), "条码规则不能为空"); + ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPrintTemplate(), "打印模板不能为空"); //生成条码 List snList = getStringList(mesProduceSnPrintModel); for (String sn : snList) { - mesProduceSnPrintModel.getMesProduceSnList().add(generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName())); + mesProduceSnPrintModel.getMesProduceSnList().add(generateMesProduceSn(mesPart, sn, mesProduceSnPrintModel.getUserName(),mesProduceSnPrintModel.getQty())); } mesProduceSnRDao.saveAll(mesProduceSnPrintModel.getMesProduceSnList()); //条码补打 } else { + ValidatorBean.checkNotNull(mesPart.getProductLabelTemplate(), "打印模板不能为空"); + mesProduceSnPrintModel.setPrintTemplate(mesPart.getProductLabelTemplate()); mesProduceSnPrintModel.getMesProduceSnList().add(findMesProduceSn(mesProduceSnPrintModel)); } + //获取打印模板信息 + mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate())); return mesProduceSnPrintModel; } @@ -113,7 +120,7 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService { return resultList; } - private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName) { + private MesProduceSn generateMesProduceSn(MesPart mesPart, String sn, String userName,Double qty) { MesProduceSn mesProduceSn = new MesProduceSn(); mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + ""); mesProduceSn.setProductSn(sn); @@ -123,7 +130,7 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService { mesProduceSn.setProcessLabelTemplate(mesPart.getProcessLabelTemplate()); mesProduceSn.setCustLabelTemplate(mesPart.getCustLabelTemplate()); mesProduceSn.setProdLabelTemplate(mesPart.getProductLabelTemplate()); - mesProduceSn.setQty(1d); + mesProduceSn.setQty(qty); mesProduceSn.setSnStatus(10); mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); mesProduceSn.setLotNo(TimeTool.getDateTimeShort()); diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesProduceSnPrintModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesProduceSnPrintModel.java index 13c8426..8c1017b 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesProduceSnPrintModel.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesProduceSnPrintModel.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.model; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import io.swagger.annotations.ApiParam; import lombok.Data; @@ -34,7 +35,7 @@ public class MesProduceSnPrintModel { private Integer printQty; @ApiParam("标包数量") - private Integer qty; + private Double qty; @ApiParam("打印模板") private String printTemplate; @@ -48,9 +49,19 @@ public class MesProduceSnPrintModel { @ApiParam(name = "用户名") private String userName; + @ApiParam(value = "打印机") + private String printer; + + @ApiParam(name = "包装定义维护") + List mesPackingDefineList; + @ApiParam(name = "打印模板信息") private MesLabelTemplate mesLabelTemplate; @ApiParam(name = "产品条码信息") private List mesProduceSnList = new ArrayList<>(); + + public Double getQty() { + return qty == null || qty <= 0d ? 1d : qty; + } }