条码打印功能开发

tags/yfai-pcn-ext-v1.0
jun 11 months ago
parent 9207a635de
commit 73b4b0d4d9

@ -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.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
/** /**
@ -19,4 +20,7 @@ public interface IMesPartService {
@ApiOperation(value = "根据物料代码查询物料信息") @ApiOperation(value = "根据物料代码查询物料信息")
MesPart getMesPartByPartNo(String partNo,String organizeCode); MesPart getMesPartByPartNo(String partNo,String organizeCode);
@ApiOperation(value = "根据物料代码查询SAP物料信息")
MesPartSap getMesPartSapByPartNo(String partNo, String organizeCode);
} }

@ -1,16 +1,13 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi; package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; 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 cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IMesProduceSnPrintService { public interface IMesProduceSnPrintService {
@ApiOperation(value = "查询包装信息") @ApiOperation(value = "查询包装信息")
List<MesPackingDefine> findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel); MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel);
@ApiOperation(value = "查询条码信息") @ApiOperation(value = "查询条码信息")
MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel); MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel);

@ -39,7 +39,7 @@ public class MesProduceSnPrintController {
try { try {
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPartNo(), "ERP零件号不能为空"); ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPartNo(), "ERP零件号不能为空");
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getOrganizeCode(), "工厂代码不能为空"); ValidatorBean.checkNotNull(mesProduceSnPrintModel.getOrganizeCode(), "工厂代码不能为空");
return ResultBean.success("查询成功").setResultList(mesProduceSnPrintService.findMesPackingDefine(mesProduceSnPrintModel)); return ResultBean.success("查询成功").setResultObject(mesProduceSnPrintService.findMesPackingDefine(mesProduceSnPrintModel));
} catch (ImppBusiException imppException) { } catch (ImppBusiException imppException) {
return ResultBean.fail(imppException); return ResultBean.fail(imppException);
} catch (Exception e) { } catch (Exception e) {

@ -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.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPart; 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.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartSapRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -28,6 +30,9 @@ public class MesPartServiceImpl implements IMesPartService {
@Autowired @Autowired
private MesPartRepository mesPartRDao; private MesPartRepository mesPartRDao;
@Autowired
private MesPartSapRepository mesPartSapRDao;
@Override @Override
public ListPager<MesPart> queryMesPart(MesPart mesPart, Pager pager) { public ListPager<MesPart> queryMesPart(MesPart mesPart, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPart.getOrganizeCode()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPart.getOrganizeCode());
@ -48,4 +53,15 @@ public class MesPartServiceImpl implements IMesPartService {
} }
return mesPart; 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;
}
} }

@ -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.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine; import cn.estsh.i3plus.pojo.mes.bean.*;
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.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineDetailsRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineDetailsRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -61,7 +59,11 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
private IMesTemplateService mesTemplateService; private IMesTemplateService mesTemplateService;
@Override @Override
public List<MesPackingDefine> 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()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getPartNo(), "partNo", ddlPackBean); DdlPreparedPack.getStringEqualPack(mesProduceSnPrintModel.getPartNo(), "partNo", ddlPackBean);
@ -72,7 +74,8 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
//查询包装定义主表 //查询包装定义主表
ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode()); ddlPackBean = DdlPackBean.getDdlPackBean(mesProduceSnPrintModel.getOrganizeCode());
DdlPreparedPack.getInPackList(packingDefineDetails.stream().map(MesPackingDefineDetails::getPackCode).collect(Collectors.toList()), "packCode", ddlPackBean); DdlPreparedPack.getInPackList(packingDefineDetails.stream().map(MesPackingDefineDetails::getPackCode).collect(Collectors.toList()), "packCode", ddlPackBean);
return mesPackingDefineRDao.findByHqlWhere(ddlPackBean); mesProduceSnPrintModel.setMesPackingDefineList(mesPackingDefineRDao.findByHqlWhere(ddlPackBean));
return mesProduceSnPrintModel;
} }
@Override @Override
@ -88,22 +91,26 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
@Override @Override
public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) { public MesProduceSnPrintModel doPrint(MesProduceSnPrintModel mesProduceSnPrintModel) {
//获取打印模板信息 //物料信息
mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate())); MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode());
//条码生成 //条码生成
if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) { if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) {
//物料信息 ValidatorBean.checkNotNull(mesProduceSnPrintModel.getSnRule(), "条码规则不能为空");
MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode()); ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPrintTemplate(), "打印模板不能为空");
//生成条码 //生成条码
List<String> snList = getStringList(mesProduceSnPrintModel); List<String> snList = getStringList(mesProduceSnPrintModel);
for (String sn : snList) { 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()); mesProduceSnRDao.saveAll(mesProduceSnPrintModel.getMesProduceSnList());
//条码补打 //条码补打
} else { } else {
ValidatorBean.checkNotNull(mesPart.getProductLabelTemplate(), "打印模板不能为空");
mesProduceSnPrintModel.setPrintTemplate(mesPart.getProductLabelTemplate());
mesProduceSnPrintModel.getMesProduceSnList().add(findMesProduceSn(mesProduceSnPrintModel)); mesProduceSnPrintModel.getMesProduceSnList().add(findMesProduceSn(mesProduceSnPrintModel));
} }
//获取打印模板信息
mesProduceSnPrintModel.setMesLabelTemplate(mesTemplateService.getMesLabelTemplate(mesProduceSnPrintModel.getPrintTemplate()));
return mesProduceSnPrintModel; return mesProduceSnPrintModel;
} }
@ -113,7 +120,7 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
return resultList; 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 mesProduceSn = new MesProduceSn();
mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + ""); mesProduceSn.setSerialNumber(snowflakeIdMaker.nextId() + "");
mesProduceSn.setProductSn(sn); mesProduceSn.setProductSn(sn);
@ -123,7 +130,7 @@ public class MesProduceSnPrintServiceImpl implements IMesProduceSnPrintService {
mesProduceSn.setProcessLabelTemplate(mesPart.getProcessLabelTemplate()); mesProduceSn.setProcessLabelTemplate(mesPart.getProcessLabelTemplate());
mesProduceSn.setCustLabelTemplate(mesPart.getCustLabelTemplate()); mesProduceSn.setCustLabelTemplate(mesPart.getCustLabelTemplate());
mesProduceSn.setProdLabelTemplate(mesPart.getProductLabelTemplate()); mesProduceSn.setProdLabelTemplate(mesPart.getProductLabelTemplate());
mesProduceSn.setQty(1d); mesProduceSn.setQty(qty);
mesProduceSn.setSnStatus(10); mesProduceSn.setSnStatus(10);
mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
mesProduceSn.setLotNo(TimeTool.getDateTimeShort()); mesProduceSn.setLotNo(TimeTool.getDateTimeShort());

@ -1,6 +1,7 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model; package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; 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 cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.Data; import lombok.Data;
@ -34,7 +35,7 @@ public class MesProduceSnPrintModel {
private Integer printQty; private Integer printQty;
@ApiParam("标包数量") @ApiParam("标包数量")
private Integer qty; private Double qty;
@ApiParam("打印模板") @ApiParam("打印模板")
private String printTemplate; private String printTemplate;
@ -48,9 +49,19 @@ public class MesProduceSnPrintModel {
@ApiParam(name = "用户名") @ApiParam(name = "用户名")
private String userName; private String userName;
@ApiParam(value = "打印机")
private String printer;
@ApiParam(name = "包装定义维护")
List<MesPackingDefine> mesPackingDefineList;
@ApiParam(name = "打印模板信息") @ApiParam(name = "打印模板信息")
private MesLabelTemplate mesLabelTemplate; private MesLabelTemplate mesLabelTemplate;
@ApiParam(name = "产品条码信息") @ApiParam(name = "产品条码信息")
private List<MesProduceSn> mesProduceSnList = new ArrayList<>(); private List<MesProduceSn> mesProduceSnList = new ArrayList<>();
public Double getQty() {
return qty == null || qty <= 0d ? 1d : qty;
}
} }

Loading…
Cancel
Save