条码打印功能开发

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.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);
}

@ -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<MesPackingDefine> findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel);
MesProduceSnPrintModel findMesPackingDefine(MesProduceSnPrintModel mesProduceSnPrintModel);
@ApiOperation(value = "查询条码信息")
MesProduceSn findMesProduceSn(MesProduceSnPrintModel mesProduceSnPrintModel);

@ -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) {

@ -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<MesPart> 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;
}
}

@ -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<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());
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()));
//条码生成
if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) {
//物料信息
MesPart mesPart = mesPartService.getMesPartByPartNo(mesProduceSnPrintModel.getPartNo(), mesProduceSnPrintModel.getOrganizeCode());
//条码生成
if (StringUtils.isEmpty(mesProduceSnPrintModel.getProductSn())) {
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getSnRule(), "条码规则不能为空");
ValidatorBean.checkNotNull(mesProduceSnPrintModel.getPrintTemplate(), "打印模板不能为空");
//生成条码
List<String> 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());

@ -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<MesPackingDefine> mesPackingDefineList;
@ApiParam(name = "打印模板信息")
private MesLabelTemplate mesLabelTemplate;
@ApiParam(name = "产品条码信息")
private List<MesProduceSn> mesProduceSnList = new ArrayList<>();
public Double getQty() {
return qty == null || qty <= 0d ? 1d : qty;
}
}

Loading…
Cancel
Save