From 6cb853902e3c8147df652671858a1a37402a0e21 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 1 Jul 2024 18:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E6=96=99=E9=98=B2=E9=94=99=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesRawPartChargingController.java | 58 +++++ .../busi/MesRawPartChargingServiceImpl.java | 264 +++++++++++++++++++++ .../ext/mes/pcn/pojo/model/MesRawPackageModel.java | 29 +++ .../pcn/pojo/model/MesRawPartChargingModel.java | 44 ++++ 4 files changed, 395 insertions(+) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesRawPartChargingController.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java create mode 100644 modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPackageModel.java create mode 100644 modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPartChargingModel.java diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesRawPartChargingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesRawPartChargingController.java new file mode 100644 index 0000000..bd6cf3b --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesRawPartChargingController.java @@ -0,0 +1,58 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesRawPartChargingService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRawPartChargingModel; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @Description :加料防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/30 14:38 + * @Modify: + **/ +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesRawPartCharging") +public class MesRawPartChargingController { + + @Autowired + private IMesRawPartChargingService mesRawPartChargingService; + + @GetMapping("/findMesRawPackagePart") + @ApiOperation(value = "原材料容器零件关系") + public ResultBean findMesRawPackagePart(MesRawPartChargingModel mesRawPartChargingModel) { + try { + ValidatorBean.checkNotNull(mesRawPartChargingModel.getPackageSn(),"料筒条码不能为空"); + mesRawPartChargingModel.setUserName(AuthUtil.getSessionUser().getUserName()); + mesRawPartChargingModel.setOrganizeCode(AuthUtil.getOrganizeCode()); + return ResultBean.success("执行成功").setResultObject(mesRawPartChargingService.findMesRawPackagePart(mesRawPartChargingModel)); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping("/doAction") + @ApiOperation(value = "操作") + public ResultBean doAction(@RequestBody MesRawPartChargingModel mesRawPartChargingModel) { + try { + ValidatorBean.checkNotNull(mesRawPartChargingModel.getType(), "操作类型不能为空"); + mesRawPartChargingModel.setUserName(AuthUtil.getSessionUser().getUserName()); + mesRawPartChargingModel.setOrganizeCode(AuthUtil.getOrganizeCode()); + return ResultBean.success("执行成功").setResultObject(mesRawPartChargingService.doAction(mesRawPartChargingModel)); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java new file mode 100644 index 0000000..fa382d5 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java @@ -0,0 +1,264 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesRawPartChargingService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRawPackageModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRawPartChargingModel; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.*; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +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 java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description : 加料防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/30 12:20 + * @Modify: + **/ +@Service +@Slf4j +public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService { + @Autowired + private MesRawPackageRepository mesRawPackageRepository; + + @Autowired + private MesRawPackageDetailRepository mesRawPackageDetailRepository; + + @Autowired + private MesRawPackagePartRepository mesRawPackagePartRepository; + + @Autowired + private MesRawPartChargingRepository mesRawPartChargingRepository; + + @Autowired + private MesRawPartChargingLogRepository mesRawPartChargingLogRepository; + + @Autowired + private MesPartSapRepository mesPartSapRDao; + + @Autowired + private MesProduceSnRepository mesProduceSnRDao; + + @Override + public MesRawPartChargingModel findMesRawPackagePart(MesRawPartChargingModel mesRawPartChargingModel) { + MesRawPackageModel mesRawPackageDetailModel = new MesRawPackageModel(); + //原材料容器明细 + MesRawPackageDetail packageDetail = getMesRawPackageDetail(mesRawPartChargingModel); + //原材料容器 + mesRawPackageDetailModel.setMesRawPackage(getRawPackage(mesRawPartChargingModel, packageDetail)); + mesRawPackageDetailModel.setMesRawPackageDetail(packageDetail); + //原材料容器零件关系表 + mesRawPackageDetailModel.setMesRawPackagePartList(getMesRawPackagePartList(mesRawPartChargingModel, packageDetail)); + mesRawPartChargingModel.setMesRawPackageModel(mesRawPackageDetailModel); + return mesRawPartChargingModel; + } + + @Override + public MesRawPartChargingModel doAction(MesRawPartChargingModel mesRawPartChargingModel) { + //10扫描原料条码 20提交 30初始化料筒 + switch (mesRawPartChargingModel.getType()) { + case 10: + doScanSn(mesRawPartChargingModel); + break; + case 20: + doSubmit(mesRawPartChargingModel); + break; + case 30: + doMesRawPartChargingInit(mesRawPartChargingModel); + break; + default: + MesPcnException.throwMesBusiException("扫描类型【%s】不存在", mesRawPartChargingModel.getType()); + break; + } + return mesRawPartChargingModel; + } + + public void doScanSn(MesRawPartChargingModel mesRawPartChargingModel) { + //属性校验 + checkNotNull(mesRawPartChargingModel); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getMesRawPackagePart(), "原材料容器零件关系不能为空"); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getSn(), "原料条码不能为空"); + //校验是否已扫描 + List mesRawPartCharging = findMesRawPartCharging(mesRawPartChargingModel); + if (!CollectionUtils.isEmpty(mesRawPartCharging)) { + MesPcnException.throwMesBusiException("料筒条码【%s】与原料条码【%s】已绑定", mesRawPartChargingModel.getPackageSn(), mesRawPartCharging.iterator().next().getSn()); + } + if (Objects.isNull(MesExtEnumUtil.RAW_SCAN_TYPE.valueOfDescription(mesRawPartChargingModel.getMesRawPackagePart().getScanType()))) { + MesPcnException.throwMesBusiException("料筒条码【%s】物料【%s】扫描类型信息不存在", mesRawPartChargingModel.getPackageSn(), mesRawPartChargingModel.getMesRawPackagePart().getPartNo()); + } + //自制件 + if (MesExtEnumUtil.RAW_SCAN_TYPE.HOMEMADE_SN.getValue() == mesRawPartChargingModel.getMesRawPackagePart().getScanType()) { + checkHomeMadeSn(mesRawPartChargingModel); + //非自制件 + } else { + checkHomeRuleSn(mesRawPartChargingModel); + } + } + + public void doSubmit(MesRawPartChargingModel mesRawPartChargingModel) { + //属性校验 + checkNotNull(mesRawPartChargingModel); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getMesRawPackagePart(), "原材料容器零件关系不能为空"); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getSn(), "原料条码不能为空"); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getLotNo(), "批次号不能为空"); + //保存生产控制加料 + MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel); + //保存日志 + saveLog(mesRawPartChargingModel, charging.getId(), MesExtEnumUtil.CHARGING_LOG_STATUS.FEEDING); + } + + + public void doMesRawPartChargingInit(MesRawPartChargingModel mesRawPartChargingModel) { + //属性校验 + checkNotNull(mesRawPartChargingModel); + + List mesRawPartChargingList = findMesRawPartCharging(mesRawPartChargingModel); + if(CollectionUtils.isEmpty(mesRawPartChargingList)){ + MesPcnException.throwMesBusiException("料筒条码【%s】未绑定,无需初始化", mesRawPartChargingModel.getPackageSn()); + } + //删除绑定信息 + mesRawPartChargingRepository.deleteWeaklyByIds((Long[]) mesRawPartChargingList.stream().map(MesRawPartCharging::getId).toArray(), mesRawPartChargingModel.getUserName()); + //保存日志 + for (MesRawPartCharging mesRawPartCharging : mesRawPartChargingList) { + saveLog(mesRawPartChargingModel, mesRawPartCharging.getId(), MesExtEnumUtil.CHARGING_LOG_STATUS.CLEAR); + } + + } + + private List getMesRawPackagePartList(MesRawPartChargingModel mesRawPartChargingModel, MesRawPackageDetail packageDetail) { + DdlPackBean packBean; + packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(packageDetail.getId(), "packageDetailId", packBean); + List packagePartList = mesRawPackagePartRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(packagePartList)) { + MesPcnException.throwMesBusiException("料筒条码【%s】原材料容器零件关系未维护", mesRawPartChargingModel.getPackageSn()); + } + //查询物料名称 + Map partSapMap = getMesPartSapMap(mesRawPartChargingModel, packagePartList); + for (MesRawPackagePart mesRawPackagePart : packagePartList) { + if (!Objects.isNull(partSapMap) && partSapMap.containsKey(mesRawPackagePart.getPartNo())) { + mesRawPackagePart.setPartName(partSapMap.get(mesRawPackagePart.getPartNo()).getPartName()); + } + } + return packagePartList; + } + + private Map getMesPartSapMap(MesRawPartChargingModel mesRawPartChargingModel, List packagePartList) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getInPackList(packagePartList.stream().map(MesRawPackagePart::getPartNo).collect(Collectors.toList()), "partNo", packBean); + List partSapList = mesPartSapRDao.findByHqlWhere(packBean); + Map partSapMap = null; + if (!CollectionUtils.isEmpty(partSapList)) { + partSapMap = partSapList.stream().collect(Collectors.toMap(MesPartSap::getPartNo, t -> t)); + } + return partSapMap; + } + + private MesRawPackage getRawPackage(MesRawPartChargingModel mesRawPartChargingModel, MesRawPackageDetail packageDetail) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(packageDetail.getPid(), "id", packBean); + MesRawPackage mesRawPackage = mesRawPackageRepository.getByProperty(packBean); + if (Objects.isNull(mesRawPackage)) { + MesPcnException.throwMesBusiException("料筒条码【%s】信息不存在", mesRawPartChargingModel.getPackageSn()); + } + return mesRawPackage; + } + + private MesRawPackageDetail getMesRawPackageDetail(MesRawPartChargingModel mesRawPartChargingModel) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesRawPartChargingModel.getPackageSn(), "packageSn", packBean); + MesRawPackageDetail packageDetail = mesRawPackageDetailRepository.getByProperty(packBean); + if (Objects.isNull(packageDetail)) { + MesPcnException.throwMesBusiException("料筒条码【%s】信息不存在", mesRawPartChargingModel.getPackageSn()); + } + return packageDetail; + } + + private List findMesRawPartCharging(MesRawPartChargingModel mesRawPartChargingModel) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackageDetail().getId(), "packageDetailId", packBean); + return mesRawPartChargingRepository.findByHqlWhere(packBean); + } + + private void checkHomeMadeSn(MesRawPartChargingModel mesRawPartChargingModel) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRawPartChargingModel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesRawPartChargingModel.getSn(), "productSn", packBean); + MesProduceSn produceSn = mesProduceSnRDao.getByProperty(packBean); + if (Objects.isNull(produceSn)) { + MesPcnException.throwMesBusiException("自制件条码【%s】信息不存在", mesRawPartChargingModel.getSn()); + } + if (!mesRawPartChargingModel.getMesRawPackagePart().getPartNo().equals(produceSn.getPartNo())) { + MesPcnException.throwMesBusiException("自制件条码【%s】物料【%s】与选择物料【%s】物料号不匹配", mesRawPartChargingModel.getSn(), produceSn.getPartNo(), mesRawPartChargingModel.getMesRawPackagePart().getPartNo()); + } + mesRawPartChargingModel.setMesProduceSn(produceSn); + } + + private void checkHomeRuleSn(MesRawPartChargingModel mesRawPartChargingModel) { + if (StringUtils.isEmpty(mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule())) { + MesPcnException.throwMesBusiException("非自制件,条码规则未维护", mesRawPartChargingModel.getMesRawPackagePart().getPartNo()); + } + if (!mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().contains("*") && !mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().equals(mesRawPartChargingModel.getSn())) { + MesPcnException.throwMesBusiException("原料条码【%s】校验条码规则【%s】失败", mesRawPartChargingModel.getSn(), mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule()); + } else if (mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().startsWith("*") && mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().endsWith("*") && !mesRawPartChargingModel.getSn().contains(mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().replace("*", ""))) { + MesPcnException.throwMesBusiException("原料条码【%s】校验条码规则【%s】失败", mesRawPartChargingModel.getSn(), mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule()); + } else if (mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().startsWith("*") && !mesRawPartChargingModel.getSn().endsWith(mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().replace("*", ""))) { + MesPcnException.throwMesBusiException("原料条码【%s】校验条码规则【%s】失败", mesRawPartChargingModel.getSn(), mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule()); + } else if (mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().endsWith("*") && !mesRawPartChargingModel.getSn().startsWith(mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule().replace("*", ""))) { + MesPcnException.throwMesBusiException("原料条码【%s】校验条码规则【%s】失败", mesRawPartChargingModel.getSn(), mesRawPartChargingModel.getMesRawPackagePart().getBarcodeRule()); + } + } + + private MesRawPartCharging insertRawPartCharging(MesRawPartChargingModel mesRawPartChargingModel) { + MesRawPartCharging mesRawPartCharging = new MesRawPartCharging(); + mesRawPartCharging.setOrganizeCode(mesRawPartChargingModel.getOrganizeCode()); + mesRawPartCharging.setPackageDetailId(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackageDetail().getId()); + mesRawPartCharging.setParentPackageDetailId(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackageDetail().getId()); + mesRawPartCharging.setPackagePartId(mesRawPartChargingModel.getMesRawPackagePart().getId()); + mesRawPartCharging.setEquipmentCode(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackageDetail().getEquipCode()); + mesRawPartCharging.setPartNo(mesRawPartChargingModel.getMesRawPackagePart().getPartNo()); + mesRawPartCharging.setSn(mesRawPartChargingModel.getSn()); + mesRawPartCharging.setUnit(mesRawPartChargingModel.getMesRawPackagePart().getUnit()); + if (!Objects.isNull(mesRawPartChargingModel.getMesProduceSn())) { + mesRawPartCharging.setQty(mesRawPartChargingModel.getMesProduceSn().getQty()); + } else { + mesRawPartCharging.setQty(mesRawPartChargingModel.getMesRawPackagePart().getQty()); + } + mesRawPartCharging.setLoadPartTime(TimeTool.getNowTime(true)); + mesRawPartCharging.setLotNo(mesRawPartChargingModel.getLotNo()); + mesRawPartCharging.setParentPackageSn(mesRawPartChargingModel.getPackageSn()); + mesRawPartCharging.setPackageId(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackage().getId()); + ConvertBean.serviceModelInitialize(mesRawPartCharging, mesRawPartChargingModel.getUserName()); + return mesRawPartChargingRepository.insert(mesRawPartCharging); + } + + private void saveLog(MesRawPartChargingModel mesRawPartChargingModel, Long id, MesExtEnumUtil.CHARGING_LOG_STATUS status) { + MesRawPartChargingLog mesRawPartChargingLog = new MesRawPartChargingLog(); + BeanUtils.copyProperties(mesRawPartChargingModel, mesRawPartChargingLog); + mesRawPartChargingLog.setCharingId(id); + mesRawPartChargingLog.setPackageSn(mesRawPartChargingModel.getPackageSn()); + mesRawPartChargingLog.setPackageName(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackage().getName()); + mesRawPartChargingLog.setStatus(status.getValue()); + mesRawPartChargingLogRepository.insert(mesRawPartChargingLog); + } + + private void checkNotNull(MesRawPartChargingModel mesRawPartChargingModel) { + ValidatorBean.checkNotNull(mesRawPartChargingModel.getPackageSn(), "料筒条码不能为空"); + ValidatorBean.checkNotNull(mesRawPartChargingModel.getMesRawPackageModel(), "原材料容器不能为空"); + } +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPackageModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPackageModel.java new file mode 100644 index 0000000..a844d96 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPackageModel.java @@ -0,0 +1,29 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackage; +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackageDetail; +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackagePart; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.List; + +/** + * @Description : 原材料容器明细Model + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/30 11:40 + * @Modify: + **/ +@Data +public class MesRawPackageModel { + + @ApiParam("原材料容器") + private MesRawPackage mesRawPackage; + + @ApiParam("原材料容器明细") + private MesRawPackageDetail mesRawPackageDetail; + + @ApiParam("原材料容器零件关系表") + private List mesRawPackagePartList; +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPartChargingModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPartChargingModel.java new file mode 100644 index 0000000..40d415d --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesRawPartChargingModel.java @@ -0,0 +1,44 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackagePart; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +/** + * @Description : 加料防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/30 11:40 + * @Modify: + **/ +@Data +public class MesRawPartChargingModel { + @ApiParam("操作人") + private String userName; + + @ApiParam("工厂代码") + private String organizeCode; + + @ApiParam("料筒条码") + private String packageSn; + + @ApiParam("原料条码") + private String sn; + + @ApiParam("批次号") + private String lotNo; + + @ApiParam("操作类型") + private Integer type; + + @ApiParam("原材料容器") + private MesRawPackageModel mesRawPackageModel; + + @ApiParam("原材料容器零件关系") + private MesRawPackagePart mesRawPackagePart; + + @ApiParam("产品条码") + private MesProduceSn mesProduceSn; + +}