From 2685dd0e84d313df6c74f76bb48de1560c796551 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 6 Jun 2024 13:33:50 +0800 Subject: [PATCH 1/8] =?UTF-8?q?MesPartSap=E4=BF=AE=E6=94=B9=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=95=B0=E6=8D=AE=E6=9D=A5=E6=BA=90=20=E9=9B=B6?= =?UTF-8?q?=E4=BB=B6=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index df08d06..063fd2a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -149,10 +149,10 @@ public class MesSpotCheckOrderService extends BaseMesService // ConvertBean.serviceModelInitialize(spotCheckOrderPart, "LML"); spotCheckOrderPartList.add(spotCheckOrderPart); }); - spotCheckOrderPartService.insertBatch(spotCheckOrderPartList); + spotCheckOrderPartRepository.saveAll(spotCheckOrderPartList); } - spotCheckOrderResultService.insertBatch(spotCheckOrderResults); + spotCheckOrderResultRepository.saveAll(spotCheckOrderResults); return bean; } From c28fbbb20ecd5812d81596acad8133549f9849ac Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 6 Jun 2024 17:24:48 +0800 Subject: [PATCH 2/8] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/MesMediaFileCfgController.java | 109 ++++++++++++++++++++- .../base/MesPartTransferDetailService.java | 2 +- .../serviceimpl/busi/MesSpotCheckOrderService.java | 25 +++-- 3 files changed, 127 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMediaFileCfgController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMediaFileCfgController.java index 8695393..01005bc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMediaFileCfgController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMediaFileCfgController.java @@ -1,10 +1,27 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.icloud.core.sdk.ICoreSysFileCloud; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesMediaFileCfg; +import cn.estsh.i3plus.pojo.mes.repository.MesMediaFileCfgRepository; +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 io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.UUID; /** * @Description: 媒体文件维护 @@ -15,4 +32,92 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesMediaFileCfg") public class MesMediaFileCfgController extends BaseMesController{ + public static final Logger LOGGER = LoggerFactory.getLogger(MesMediaFileCfgController.class); + @Autowired + private MesMediaFileCfgRepository mediaFileCfgRepository; + + @Autowired + private ICoreSysFileCloud coreSysFileCloud; + + //默认大小 + private static final long FILE_SIZE = 1024 * 1024; + + @PostMapping(value = "/media-file/insert") + @ApiOperation(value = "上传媒体文件") + public ResultBean insertProduceCtgyPicture(@RequestParam("file") MultipartFile file, MesMediaFileCfg mesMediaFileCfg) { + try { + + if (file.isEmpty()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.REPORT.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("不允许上传空文件") + .build(); + } + // 校验文件大小 + long size = file.getSize(); + if(size > FILE_SIZE){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.REPORT.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("文件过大,请重新上传!") + .build(); + } + + String fileName = file.getOriginalFilename(); + String newName= UUID.randomUUID().toString()+fileName.substring(fileName.indexOf(".")); + + String path="/tmp/media-file/"; + + File saveFile=new File(path + newName); + if(!saveFile.getParentFile().exists()){ + saveFile.getParentFile().mkdirs(); + } + file.transferTo(saveFile); + + MesMediaFileCfg mesMediaFileCfg1=new MesMediaFileCfg(); + mesMediaFileCfg1.setFileName(fileName); + mesMediaFileCfg1.setFileUrl(saveFile.getPath()); + mesMediaFileCfg1.setFileType(mesMediaFileCfg.getFileType()); + mediaFileCfgRepository.save(mesMediaFileCfg1); + + return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(mesMediaFileCfg1); + } catch (ImppBusiException imppException) { + LOGGER.error(imppException.getErrorMsg() + ":{}", imppException.getErrorDetail(), imppException); + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @ApiOperation("下载文件") + @GetMapping("/download") + public ResultBean download(@RequestParam("filePath") String filePath, HttpServletResponse response){ + + InputStream inputStream = null; + OutputStream outputStream = null; + try { + // 读取文件 + File file = new File(filePath); + inputStream = new FileInputStream(file); + outputStream = response.getOutputStream(); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8")); + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + outputStream.flush(); + inputStream.close(); + outputStream.close(); + return ResultBean.success("下载成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException imppException) { + LOGGER.error(imppException.getErrorMsg() + ":{}", imppException.getErrorDetail(), imppException); + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTransferDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTransferDetailService.java index b6622a4..61017b2 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTransferDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTransferDetailService.java @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service; @Slf4j public class MesPartTransferDetailService extends BaseMesService implements IMesPartTransferDetailService { protected void setPackQueryBean(MesPartTransferDetail bean, DdlPackBean packBean) { - DdlPreparedPack.getStringEqualPack(bean.getPid(),"pid",packBean); + DdlPreparedPack.getNumEqualPack(bean.getPid(),"pid",packBean); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 063fd2a..e792eb6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -6,9 +6,13 @@ import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderResultService; import cn.estsh.i3plus.ext.mes.api.busi.IMesSpotCheckOrderService; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.WmsConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -30,6 +34,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; @Service @@ -57,7 +62,8 @@ public class MesSpotCheckOrderService extends BaseMesService @Autowired private ISyncFuncService syncFuncService; - + @Autowired + private ICoreUtilCloud sysOrderNoRuleCloud; @Override public MesSpotCheckOrder insert(MesSpotCheckOrder bean) { onInsertBean(bean); @@ -109,13 +115,20 @@ public class MesSpotCheckOrderService extends BaseMesService } //生成单据号 - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.SPOT_CHECK_ORDER_NO_RULE); - List resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); - +// GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.SPOT_CHECK_ORDER_NO_RULE); +// List resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); + + String orderNo=""; + BaseResultBean orderResutlBean = sysOrderNoRuleCloud.getOrderNo(MesCommonConstant.SPOT_CHECK_ORDER_NO_RULE); + if (orderResutlBean != null && orderResutlBean.isSuccess()) { + orderNo = orderResutlBean.getResultObject().get(WmsConstWords.CORE_ORDER_NO).toString(); + } else { + orderNo = TimeTool.getDateTime().replaceAll("-", "") + String.valueOf((int) (Math.random() * 9000) + 1000); + } //保存单据 BeanUtils.copyProperties(equipmentSpotCheck, bean, "id"); -// bean.setSpotCheckOrderNo("SPOT_CHECK_ORDER_NO_0003"); - bean.setSpotCheckOrderNo(resultList.get(0)); + + bean.setSpotCheckOrderNo(orderNo); ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName()); bean = baseRDao.insert(bean); From b354c07e5b93f8027dcd6785d5b90e1bb1fdb769 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 6 Jun 2024 18:54:00 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=AD=A6=E6=B1=89=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesMoveRuleService.java | 17 + .../ext/mes/api/base/IMesPartSapService.java | 4 + .../i3plus/ext/mes/api/base/IMesPartService.java | 4 +- .../mes/api/base/IMesProdRuleNosortCfgService.java | 2 +- .../ext/mes/api/base/IMesWorkOrderService.java | 2 + .../controller/base/MesMoveRuleController.java | 18 ++ .../controller/base/MesWorkOrderController.java | 27 ++ .../apiservice/dao/IMesProdRuleNosortCfgDao.java | 12 + .../daoimpl/MesProdRuleNosortCfgDaoImpl.java | 38 +++ .../serviceimpl/base/MesMoveRuleImpl.java | 80 +++++ .../serviceimpl/base/MesPartSapService.java | 14 + .../serviceimpl/base/MesPartService.java | 15 + .../base/MesProdRuleNosortCfgService.java | 20 +- .../base/MesProdRuleSortCfgService.java | 6 +- .../serviceimpl/base/MesWorkCenterService.java | 8 + .../serviceimpl/base/MesWorkOrderService.java | 351 ++++++++++++++++++--- .../base/roundness/MesTimeRoundnessService.java | 2 +- 17 files changed, 560 insertions(+), 60 deletions(-) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesMoveRuleService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMoveRuleController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesMoveRuleImpl.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesMoveRuleService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesMoveRuleService.java new file mode 100644 index 0000000..a05360a --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesMoveRuleService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesMoveRule; + +import java.util.List; + +/** + * @Description : 移库规则 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/5 9:06 + * @Modify: + **/ +public interface IMesMoveRuleService extends IBaseMesService { + + List findMesMoveRuleByPartProdGroupCode(String partProdGroupCode,String organizeCode); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartSapService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartSapService.java index 1852f35..43828ee 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartSapService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartSapService.java @@ -2,6 +2,8 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; +import java.util.List; + /** * @Description: * @CreateDate 2024/04/16 @@ -10,4 +12,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; public interface IMesPartSapService extends IBaseMesService { MesPartSap getMesPartSapByPartNo(String partNo, String organizeCode); + + List findMesPartSapByPartNoList(List partNoList, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartService.java index 2b264c7..66fc186 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartService.java @@ -2,6 +2,8 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesPart; +import java.util.List; + /** * @Description: * @CreateDate 2024/04/16 @@ -11,5 +13,5 @@ public interface IMesPartService extends IBaseMesService { MesPart getPartByPartNo(String partNo, String organizeCode); - + List findMesPartByPartNoList(List partNoList, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProdRuleNosortCfgService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProdRuleNosortCfgService.java index 1b392ae..34513b4 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProdRuleNosortCfgService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProdRuleNosortCfgService.java @@ -1,6 +1,5 @@ package cn.estsh.i3plus.ext.mes.api.base; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; /** @@ -10,5 +9,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; */ public interface IMesProdRuleNosortCfgService extends IBaseMesService { + MesProdRuleNosortCfg findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 2d085d9..c50b811 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -13,6 +13,8 @@ public interface IMesWorkOrderService extends IBaseMesService { void doProductReport(MesWorkOrder mesWorkOrder); + void doProductReportExt(MesWorkOrder mesWorkOrder); + List sumMesWorkOrderQtyToSap(String organizeCode); List queryMesWorkOrderProcessToSap(String organizeCode); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMoveRuleController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMoveRuleController.java new file mode 100644 index 0000000..2060d03 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesMoveRuleController.java @@ -0,0 +1,18 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.mes.bean.MesMoveRule; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 移库规则 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/5 9:06 + * @Modify: + **/ +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesMoveRule") +public class MesMoveRuleController extends BaseMesController{ +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 3562551..62e4b37 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -2,16 +2,19 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; 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.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +46,10 @@ public class MesWorkOrderController extends BaseMesController { validateImport(beanList); String userName = AuthUtil.getSessionUser().getUserName(); String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); + //非排序工单导入前删除 + if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == type) { + + } // 导入数据初始化 for (MesWorkOrder bean : beanList) { bean.setWorkOrderType(type); @@ -78,6 +85,26 @@ public class MesWorkOrderController extends BaseMesController { } } + @PostMapping(value = "/doProductReportExt") + @ApiOperation(value = "生产报工(武汉)") + public ResultBean doProductReportExt(@RequestBody MesWorkOrder mesWorkOrder) { + try { + ValidatorBean.checkNotNull(mesWorkOrder.getId(),"工单id不能为空"); + ValidatorBean.checkNotNull(mesWorkOrder.getNum(),"报工数量不能为空"); + ValidatorBean.checkNotZero(mesWorkOrder.getNum(),"报工数量不能为0"); + mesWorkOrder.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + ConvertBean.serviceModelUpdate(mesWorkOrder, AuthUtilExt.getUserName()); + //新增初始化 + mesWorkOrderService.doProductReportExt(mesWorkOrder); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } + @GetMapping(value = "/sendToSap") @ApiOperation(value = "发送给sap") diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java new file mode 100644 index 0000000..86a4a98 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesProdRuleNosortCfgDao.java @@ -0,0 +1,12 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao; + + +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; + +import java.util.List; + +public interface IMesProdRuleNosortCfgDao { + + List findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode); + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java new file mode 100644 index 0000000..e7db34c --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesProdRuleNosortCfgDaoImpl.java @@ -0,0 +1,38 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.List; + +@Service +@Slf4j +public class MesProdRuleNosortCfgDaoImpl implements IMesProdRuleNosortCfgDao { + + @Autowired + private EntityManager entityManager; + + @Override + public List findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode) { + StringBuffer hql = new StringBuffer("select ns from MesProdRuleNosortCfg ns" + + " left join MesWcEquipment we on ns.equipmentCode = we.equipmentCode " + + " where ns.isDeleted=:isDeleted and ns.isValid = :isValid and ns.organizeCode = :organizeCode " + + " and we.isDeleted=:isDeleted and we.isValid = :isValid and we.organizeCode = :organizeCode " + + " and we.workCenterCode = :workCenterCode and ns.outPartNo = :outPartNo"); + + Query query = entityManager.createQuery(hql.toString(), MesProdRuleNosortCfg.class); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("workCenterCode", workCenterCode); + query.setParameter("outPartNo", partNo); + + return query.getResultList(); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesMoveRuleImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesMoveRuleImpl.java new file mode 100644 index 0000000..b5893a0 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesMoveRuleImpl.java @@ -0,0 +1,80 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesMoveRuleService; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesMoveRule; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +/** + * @Description : 移库规则 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/5 9:08 + * @Modify: + **/ +@Service +@Slf4j +public class MesMoveRuleImpl extends BaseMesService implements IMesMoveRuleService { + + @Override + protected void setPackQueryBean(MesMoveRule bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getPartProdGroupCode(), "partProdGroupCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getSrcType(), "srcType", packBean); + } + + @Override + protected void onInsertBean(MesMoveRule item) { + // 数据校验 + checkNotNull(item); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(item.getSrcType(), "srcType", ddlPackBean); + + if (baseRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("零件生产组代码【%s】来源类型【%s】数据已存在", item.getPartProdGroupCode(), item.getSrcType()); + } + + } + + @Override + protected void onUpdateBean(MesMoveRule item) { + // 数据校验 + checkNotNull(item); + + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(item.getSrcType(), "srcType", ddlPackBean); + DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", ddlPackBean); + + if (baseRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("零件生产组代码【%s】来源类型【%s】数据已存在", item.getPartProdGroupCode(), item.getSrcType()); + } + } + + @Override + public List findMesMoveRuleByPartProdGroupCode(String partProdGroupCode, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", ddlPackBean); + List moveRules = baseRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(moveRules)) { + MesException.throwMesBusiException("零件生产组代码【%s】移库规则数据不存在", partProdGroupCode); + } + return moveRules; + } + + private void checkNotNull(MesMoveRule item) { + ValidatorBean.checkNotNull(item.getPartProdGroupCode(), "零件生产组代码不能为空"); + ValidatorBean.checkNotNull(item.getErpSrcLocateNo(), "ERP来源库位不能为空"); + ValidatorBean.checkNotNull(item.getErpDestLocateNo(), "ERP目的库位不能为空"); + ValidatorBean.checkNotNull(item.getSrcType(), "来源类型不能为空"); + ValidatorBean.checkNotNull(item.getReportType(), "汇报类型不能为空"); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java index 228f09a..ebedd80 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java @@ -11,6 +11,9 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; @Service @Slf4j @@ -69,4 +72,15 @@ public class MesPartSapService extends BaseMesService implements IMe } return mesPart; } + + @Override + public List findMesPartSapByPartNoList(List partNoList, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(partNoList, "partNo", ddlPackBean); + List mesPartSapList = baseRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesPartSapList)) { + MesException.throwMesBusiException("物料【%s】信息不存在", partNoList); + } + return mesPartSapList; + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartService.java index 8670991..ef0ba71 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartService.java @@ -7,10 +7,14 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; 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.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; @Service @Slf4j @@ -33,6 +37,17 @@ public class MesPartService extends BaseMesService implements IMesPartS return mesPart; } + @Override + public List findMesPartByPartNoList(List partNoList, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(partNoList, "partNo", ddlPackBean); + List mesPartList = baseRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesPartList)) { + MesException.throwMesBusiException("物料【%s】信息不存在", partNoList); + } + return mesPartList; + } + protected void onInsertBean(MesPart item) { // 数据校验 ValidatorBean.checkNotNull(item.getPartNo(), "物料号不能为空"); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleNosortCfgService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleNosortCfgService.java index aaefa60..a0b7c9a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleNosortCfgService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleNosortCfgService.java @@ -1,24 +1,29 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService; -import cn.estsh.i3plus.ext.mes.api.base.IMesTimeEfficientCfgService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; -import cn.estsh.i3plus.pojo.mes.bean.MesTimeEfficientCfg; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +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; + @Service @Slf4j public class MesProdRuleNosortCfgService extends BaseMesService implements IMesProdRuleNosortCfgService { + @Autowired + private IMesProdRuleNosortCfgDao mesProdRuleNosortCfgDao; protected void setPackQueryBean(MesProdRuleNosortCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getInPartNo(), "inPartNo", packBean); @@ -83,4 +88,13 @@ public class MesProdRuleNosortCfgService extends BaseMesService prodRuleNosortCfgList = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCenterCode(workCenterCode, partNo, organizeCode); + if(CollectionUtils.isEmpty(prodRuleNosortCfgList)){ + MesException.throwMesBusiException("产线【%s】产出零件【%s】对应的非排序工艺路线信息不存在",workCenterCode,partNo); + } + return prodRuleNosortCfgList.iterator().next(); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleSortCfgService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleSortCfgService.java index b388449..5e0c661 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleSortCfgService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdRuleSortCfgService.java @@ -45,7 +45,7 @@ public class MesProdRuleSortCfgService extends BaseMesService implements IMesWorkCenterService { + @Override + protected void setPackQueryBean(MesWorkCenter bean, DdlPackBean packBean) { + DdlPreparedPack.getStringLikerPack(bean.getErpWorkCenter(), "erpWorkCenter", packBean); + DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), "workCenterCode", packBean); + DdlPreparedPack.getStringLikerPack(bean.getWorkCenterName(), "workCenterName", packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 5b92cb9..b3c7a61 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.*; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; @@ -31,7 +32,9 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; @Service @Slf4j @@ -64,7 +67,16 @@ public class MesWorkOrderService extends BaseMesService implements private MesCustomerPartRepository mesCustomerPartRDao; @Autowired private IMesPartSapService iMesPartSapService; - + @Autowired + private IMesMoveRuleService mesMoveRuleService; + @Autowired + private MesProdRuleSortCfgRepository mesProdRuleSortCfgRDao; + @Autowired + private IMesProdRuleNosortCfgService mesProdRuleNosortCfgService; + @Autowired + private IMesPartSapService mesPartSapService; + @Autowired + private MesMoveRepository mesMoveRDao; @Override public MesWorkOrder insert(MesWorkOrder bean) { //插入前构造数据 @@ -327,13 +339,13 @@ public class MesWorkOrderService extends BaseMesService implements MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode()); } } - //校验零件生产组信息 -// MesPartProdGroupDetail mesPartProdGroupDetail = new MesPartProdGroupDetail(); -// mesPartProdGroupDetail.setWorkCenterCode(item.getWorkCenterCode()); -// mesPartProdGroupDetail.setPartNo(item.getPartNo()); -// mesPartProdGroupDetail.setOrganizeCode(item.getOrganizeCode()); -// List mesPartProdGroup = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail); + //校验零件生产组信息 + if(StringUtil.isEmpty(item.getPartProdGroupCode())){ + MesPartProdGroup mesPartProdGroup = getMesPartProdGroup(item); + item.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode()); + item.setPartProdGroupName(mesPartProdGroup.getPartProdGroupName()); + } //排序工单数量为1 item.setQty(1d); @@ -387,6 +399,19 @@ public class MesWorkOrderService extends BaseMesService implements } + private MesPartProdGroup getMesPartProdGroup(MesWorkOrder item) { + MesPartProdGroupDetail mesPartProdGroupDetail = new MesPartProdGroupDetail(); + mesPartProdGroupDetail.setWorkCenterCode(item.getWorkCenterCode()); + mesPartProdGroupDetail.setPartNo(item.getPartNo()); + mesPartProdGroupDetail.setOrganizeCode(item.getOrganizeCode()); + List mesPartProdGroupList = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail); + if(CollectionUtils.isEmpty(mesPartProdGroupList)){ + MesException.throwMesBusiException("生产线代码【%s】零件号【%s】对应的零件生产组信息没有维护"); + } + MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.iterator().next(); + return mesPartProdGroup; + } + private void getCustomerPart(MesWorkOrder item) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(item.getPartNo(), "erpPartNo", ddlPackBean); @@ -476,23 +501,9 @@ public class MesWorkOrderService extends BaseMesService implements MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrder.getWorkCenterCode()); } //获取生产版本 - ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "partNo", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getProductVersion(), "productVersion", ddlPackBean); - MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); - if (null == mesProductVersion) { - MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo()); - } + MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder); //物料+生产版本获取bom信息 - ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesProductVersion.getAlternativePartList(), "bomVersion", ddlPackBean); - List mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); - if (CollectionUtils.isEmpty(mesBoms)) { - MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", - mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion()); - } + List mesBoms = getMesBoms(mesWorkOrder, mesPart, mesProductVersion); //报工类型 if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) { mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty())); @@ -525,45 +536,267 @@ public class MesWorkOrderService extends BaseMesService implements update(mesWorkOrder); //生成条码 - // todo - GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.REPORT_SN); - genSerialNoModel.setPartNo(mesWorkOrder.getPartNo()); - List resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList(); + List resultList = getStringList(mesWorkOrder); //保存数据 List mesProductOffLineList = new ArrayList<>(); - MesProductOffLine newMesProductOffLine; for (String sn : resultList) { for (MesBom mesBom : mesBoms) { - newMesProductOffLine = new MesProductOffLine(); - newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo()); - newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName()); - newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); - newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); - newMesProductOffLine.setItemQty(mesBom.getItemQty()); - newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); - newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); - newMesProductOffLine.setQty(1d); - newMesProductOffLine.setReportSn(sn); - newMesProductOffLine.setBomVersion(mesWorkOrder.getProductVersion()); - newMesProductOffLine.setSerialNumber(sn); - newMesProductOffLine.setUnit(mesBom.getUnit()); - newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); - newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); - newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); - newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); - newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); - newMesProductOffLine.setSapWorkCenter(mesWorkCenter.getErpWorkCenter()); - newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); - - ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); - mesProductOffLineList.add(newMesProductOffLine); + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom,false)); } } mesProductOffLineService.insertBatch(mesProductOffLineList); } @Override + public void doProductReportExt(MesWorkOrder mesWorkOrderNew) { + MesWorkOrder mesWorkOrder = baseRDao.getById(mesWorkOrderNew.getId()); + if(Objects.isNull(mesWorkOrder)){ + MesException.throwMesBusiException("工单id为【%s】工单信息不存在",mesWorkOrderNew.getId()); + } + //查询物料信息 + MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); + if(mesWorkOrderNew.getNum() <= 0){ + MesException.throwMesBusiException("工单报工数量不能为0,不允许报工"); + } + //报工类型 + //报工 + if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) { + mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getReportedQty())); + } else { + //冲销数量大于工单完成数量报错 + if (mesWorkOrderNew.getNum() > mesWorkOrder.getReportedQty()) { + MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销", + mesWorkOrderNew.getNum(), mesWorkOrder.getReportedQty()); + } + //报工调整数量加- + mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getAdjustQty()))); + //已汇报数量减一 + mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrderNew.getNum())); + } + //更新工单状态 + double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); + mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); + if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) { + MesException.throwMesBusiException("工单报工数量大于工单数量【%s】,不允许报工", mesWorkOrder.getQty()); + } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) { + mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + } else { + mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue()); + } + //获取生产版本 + MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder); + //物料+生产版本获取bom信息 + List mesBoms = getMesBoms(mesWorkOrder, mesPart, mesProductVersion); + //生成条码 + List resultList = getStringList(mesWorkOrderNew); + //保存数据 + List mesProductOffLineList = new ArrayList<>(); + List mesMoveList = new ArrayList<>(); + boolean isReport = false; + boolean isMove = false; + //排序工单 + if(MesExtEnumUtil.ORDER_TYPE.SORT.getValue() == mesWorkOrder.getWorkOrderType()){ + //报工类型 + if (MesExtEnumUtil.REPORT_TYPE.WRITE_OFF.getValue() == mesWorkOrder.getReportType()) { + MesException.throwMesBusiException("工单【%s】为排序工单不允许冲销",mesWorkOrder.getWorkOrderNo()); + } + //排序加工规则 + MesProdRuleSortCfg mesProdRuleSortCfg = getMesProdRuleSortCfg(mesWorkOrder); + if(MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue() == mesProdRuleSortCfg.getReportType()){ + isReport = true; + } else if (MesExtEnumUtil.MES_REPORT_TYPE.MOVE.getValue() == mesProdRuleSortCfg.getReportType()) { + isMove = true; + }else if (MesExtEnumUtil.MES_REPORT_TYPE.REPORT_MOVE.getValue() == mesProdRuleSortCfg.getReportType()) { + isReport = true; + isMove = true; + }else if (MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleSortCfg.getReportType()) { + customerSupplyMove(mesWorkOrder, mesProductVersion, mesBoms, resultList, mesProductOffLineList, mesMoveList); + }else{ + log.info("工单{}排序加工规则报工类型未维护",mesWorkOrder.getWorkOrderNo()); + return; + } + + if(MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() != mesProdRuleSortCfg.getReportType()){ + //查询SAP物料信息 + MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); + for (String sn : resultList) { + //成品汇报 + if(isReport){ + for (MesBom mesBom : mesBoms) { + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom,false)); + } + } + //成品移库 + if(isMove){ + MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), 1d); + move.setMatnr(mesWorkOrder.getPartNo()); + mesMoveList.add(move); + } + } + } + } else if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == mesWorkOrder.getWorkOrderType()) { + MesProdRuleNosortCfg mesProdRuleNoSortCfg = mesProdRuleNosortCfgService.findMesProdRuleNosortCfgByWorkCenterCode(mesWorkOrder.getWorkCenterCode(),mesWorkOrder.getPartNo(),mesWorkOrder.getOrganizeCode()); + if( CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesProdRuleNoSortCfg.getReportType()){ + for (String sn : resultList) { + for (MesBom mesBom : mesBoms) { + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom,false)); + } + } + } + }else { + log.info("工单{}排序规则不属于排序工单和非排序工单",mesWorkOrder.getWorkOrderNo()); + return; + } + + //更新工单 + update(mesWorkOrder); + //保存报工记录 + if(CollectionUtils.isNotEmpty(mesProductOffLineList)){ + mesProductOffLineService.insertBatch(mesProductOffLineList); + } + //保存移库记录 + if(CollectionUtils.isNotEmpty(mesMoveList)){ + mesMoveRDao.saveAll(mesMoveList); + } + } + + private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List mesBoms, List resultList, List mesProductOffLineList, List mesMoveList) { + boolean isItemMove; + boolean isItemReport; + MesMoveRule moveRule; + //查询零件生产组的移库规则 + List moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode()); + Map> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType)); + List itemPartNoList = mesBoms.stream().map(MesBom::getItemPartNo).collect(Collectors.toList()); + //子物料SAP下发信息 + Map> mesPartSapMap = getPartSapMap(mesWorkOrder, itemPartNoList); + //获取物料信息 + Map> itemPartMap = getItemPartMap(mesWorkOrder, itemPartNoList); + for (String sn : resultList) { + for (MesBom mesBom : mesBoms) { + isItemReport = false; + isItemMove = false; + moveRule = null; + if(itemPartMap.containsKey(mesBom.getItemPartNo())){ + MesPart itemPart = itemPartMap.get(mesBom.getItemPartNo()).iterator().next(); + if(!StringUtil.isEmpty(itemPart.getPartEds()) && mesMoveRuleMap.containsKey(itemPart.getPartEds())){ + moveRule = mesMoveRuleMap.get(itemPart.getPartEds()).iterator().next(); + if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) { + isItemMove = true; + isItemReport = true; + } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT.getValue() == moveRule.getReportType()) { + isItemReport = true; + } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) { + isItemMove = true; + } + } + } + //汇报 + if(isItemReport){ + mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom,true)); + } + //移库 + if(isItemMove){ + MesPartSap mesPartSap = null; + if(mesPartSapMap.containsKey(mesBom.getItemPartNo())){ + mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next(); + } + MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty()); + move.setMatnr(mesBom.getItemPartNo()); + mesMoveList.add(move); + } + } + } + } + + private Map> getPartSapMap(MesWorkOrder mesWorkOrder, List itemPartNoList) { + List mesPartSapList = mesPartSapService.findMesPartSapByPartNoList(itemPartNoList, mesWorkOrder.getOrganizeCode()); + Map> mesPartSapMap = mesPartSapList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPartSap::getPartNo)); + return mesPartSapMap; + } + + private Map> getItemPartMap(MesWorkOrder mesWorkOrder, List itemPartNoList) { + List itemPartList = iMesPartService.findMesPartByPartNoList(itemPartNoList, mesWorkOrder.getOrganizeCode()); + Map> itemPartMap = itemPartList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPart::getPartNo)); + return itemPartMap; + } + + private MesProdRuleSortCfg getMesProdRuleSortCfg(MesWorkOrder mesWorkOrder) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"reportPartNo",ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(),"workCenterCode",ddlPackBean); + MesProdRuleSortCfg mesProdRuleSortCfg = mesProdRuleSortCfgRDao.getByProperty(ddlPackBean); + if(Objects.isNull(mesProdRuleSortCfg)){ + MesException.throwMesBusiException("产线【%s】物料【%s】排序加工规则未维护", mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo()); + } + return mesProdRuleSortCfg; + } + + private List getStringList(MesWorkOrder mesWorkOrder) { + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.REPORT_SN); + List resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList(); + return resultList; + } + + private List getMesBoms(MesWorkOrder mesWorkOrder, MesPart mesPart, MesProductVersion mesProductVersion) { + DdlPackBean ddlPackBean; + ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesProductVersion.getAlternativePartList(), "bomVersion", ddlPackBean); + List mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesBoms)) { + MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", + mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion()); + } + return mesBoms; + } + + private MesProductVersion getMesProductVersion(MesWorkOrder mesWorkOrder) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getErpWorkCenter(), "workCenterCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getProductVersion(), "productVersion", ddlPackBean); + MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); + if (null == mesProductVersion) { + MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo()); + } + return mesProductVersion; + } + + + private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, + String sn, MesBom mesBom,boolean isItemReport) { + MesProductOffLine newMesProductOffLine; + newMesProductOffLine = new MesProductOffLine(); + if(!isItemReport){ + newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo()); + newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName()); + } + + newMesProductOffLine.setReportSn(sn); + newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); + newMesProductOffLine.setItemPartName(mesBom.getItemPartName()); + newMesProductOffLine.setItemQty(mesBom.getItemQty()); + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); + newMesProductOffLine.setQty(1d); + newMesProductOffLine.setBomVersion(mesWorkOrder.getProductVersion()); + newMesProductOffLine.setSerialNumber(sn); + newMesProductOffLine.setUnit(mesBom.getUnit()); + newMesProductOffLine.setItemUnit(mesBom.getItemUnit()); + newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getWorkOrderNo()); + newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); + newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); + newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); + newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter()); + newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); + + ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); + return newMesProductOffLine; + } + + @Override public List sumMesWorkOrderQtyToSap(String organizeCode) { List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); @@ -581,4 +814,20 @@ public class MesWorkOrderService extends BaseMesService implements DdlPreparedPack.getInPackList(statusList, "workOrderStatus", packBean); return mesWorkOrderRDao.findByHqlWhere(packBean); } + + private MesMove createMove(MesPartSap mesPart , String source, String target, String org,double qty) { + MesMove move = new MesMove(); + if(!Objects.isNull(mesPart)){ + move.setMeins(mesPart.getUnit()); + } + move.setOrganizeCode(org); + move.setFactoryCode(org); + move.setLgort(source); + move.setUmlgo(target); + move.setMenge(qty); + move.setPostDate(TimeTool.getToday()); + move.setPostTime(TimeTool.getTimeShortWithColon()); + ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); + return move; + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java index 1f5e93d..eafe60f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/roundness/MesTimeRoundnessService.java @@ -90,7 +90,7 @@ public class MesTimeRoundnessService implements IRoundnessStrategy { MesWorkOrder mesWorkOrder = new MesWorkOrder(); mesWorkOrder.setWorkOrderType(MesExtEnumUtil.ORDER_TYPE.BTO.getValue()); mesWorkOrder.setWorkOrderSeq(createSeq.toString()); - mesWorkOrder.setProduceSeq(createSeq.toString()); + mesWorkOrder.setProduceSeq(createSeq); mesWorkOrder.setOrganizeCode(detail.getOrganizeCode()); //产线 mesWorkOrder.setWorkCenterCode(detail.getWorkCenterCode()); From 19a71a99ecffec1ab17915529191402051375476 Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 6 Jun 2024 19:22:17 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E7=82=B9=E6=A3=80=E5=8D=95=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=9F=A5=E8=AF=A2=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index e792eb6..73883e7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -377,6 +377,7 @@ public class MesSpotCheckOrderService extends BaseMesService DdlPreparedPack.getStringLikerPack(bean.getWorkCellCode(),"workCellCode",packBean); DdlPreparedPack.getStringLikerPack(bean.getSpotCheckCode(),"spotCheckCode",packBean); DdlPreparedPack.getStringLikerPack(bean.getSpotCheckName(),"spotCheckName",packBean); + DdlPreparedPack.getStringLikerPack(bean.getEquipCode(),"equipCode",packBean); DdlPreparedPack.getNumEqualPack(bean.getStatus(),"status",packBean); DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderResult(),"spotCheckOrderResult",packBean); DdlPreparedPack.getStringLikerPack(bean.getEquipName(),"equipName",packBean); From 9161c1b4d569f6cf9a2e2fd6189c126e8be47887 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 6 Jun 2024 19:38:39 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=8A=A5=E5=B7=A5=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=BC=94=E7=A4=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesWorkOrderService.java | 2 ++ .../controller/base/MesWorkOrderController.java | 2 +- .../serviceimpl/base/MesWorkOrderService.java | 17 ++++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index c50b811..3243b9f 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -15,6 +15,8 @@ public interface IMesWorkOrderService extends IBaseMesService { void doProductReportExt(MesWorkOrder mesWorkOrder); + void deleteUnSortOrder(String userName,String organizeCode); + List sumMesWorkOrderQtyToSap(String organizeCode); List queryMesWorkOrderProcessToSap(String organizeCode); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index 62e4b37..0db6a80 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -48,7 +48,7 @@ public class MesWorkOrderController extends BaseMesController { String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); //非排序工单导入前删除 if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == type) { - + mesWorkOrderService.deleteUnSortOrder(userName,organizeCode); } // 导入数据初始化 for (MesWorkOrder bean : beanList) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index b3c7a61..fe05155 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -629,7 +629,7 @@ public class MesWorkOrderService extends BaseMesService implements } //成品移库 if(isMove){ - MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), 1d); + MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), 1d,sn); move.setMatnr(mesWorkOrder.getPartNo()); mesMoveList.add(move); } @@ -661,6 +661,16 @@ public class MesWorkOrderService extends BaseMesService implements } } + @Override + public void deleteUnSortOrder(String userName, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue(),"workOrderType",ddlPackBean); + DdlPreparedPack.getStringSmallerNotEqualPack(TimeTool.getToday(),"planStartTime",ddlPackBean); + DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(),"workOrderStatus",ddlPackBean); + baseRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime","workOrderStatus"}, + new Object[]{userName, TimeTool.getNowTime(true),MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()},ddlPackBean); + } + private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List mesBoms, List resultList, List mesProductOffLineList, List mesMoveList) { boolean isItemMove; boolean isItemReport; @@ -702,7 +712,7 @@ public class MesWorkOrderService extends BaseMesService implements if(mesPartSapMap.containsKey(mesBom.getItemPartNo())){ mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next(); } - MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty()); + MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty(),sn); move.setMatnr(mesBom.getItemPartNo()); mesMoveList.add(move); } @@ -815,7 +825,7 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderRDao.findByHqlWhere(packBean); } - private MesMove createMove(MesPartSap mesPart , String source, String target, String org,double qty) { + private MesMove createMove(MesPartSap mesPart , String source, String target, String org,double qty,String sn) { MesMove move = new MesMove(); if(!Objects.isNull(mesPart)){ move.setMeins(mesPart.getUnit()); @@ -826,6 +836,7 @@ public class MesWorkOrderService extends BaseMesService implements move.setUmlgo(target); move.setMenge(qty); move.setPostDate(TimeTool.getToday()); + move.setProductSn(sn); move.setPostTime(TimeTool.getTimeShortWithColon()); ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); return move; From eb3de12f5e900200b97b89e4bb95c01a8c64966b Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 6 Jun 2024 20:34:47 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E8=A3=85=E8=BD=A6=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=96=B0=E5=A2=9E=E5=8F=91=E8=BF=90=E7=BB=84=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesLoadingGroupDetailServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLoadingGroupDetailServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLoadingGroupDetailServiceImpl.java index 1c9f0fc..1edfd76 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLoadingGroupDetailServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLoadingGroupDetailServiceImpl.java @@ -25,6 +25,7 @@ public class MesLoadingGroupDetailServiceImpl extends BaseMesService Date: Thu, 6 Jun 2024 20:38:20 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index fe05155..ec080bb 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -406,7 +406,8 @@ public class MesWorkOrderService extends BaseMesService implements mesPartProdGroupDetail.setOrganizeCode(item.getOrganizeCode()); List mesPartProdGroupList = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail); if(CollectionUtils.isEmpty(mesPartProdGroupList)){ - MesException.throwMesBusiException("生产线代码【%s】零件号【%s】对应的零件生产组信息没有维护"); + MesException.throwMesBusiException("生产线代码【%s】零件号【%s】对应的零件生产组信息没有维护", + item.getWorkCenterCode(),item.getPartNo()); } MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.iterator().next(); return mesPartProdGroup; From 3bda4b3a06b5561fa0a41601379ac86099a43597 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 7 Jun 2024 14:23:46 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E6=AD=A6=E6=B1=89=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesWorkOrderService.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index ec080bb..39e28f0 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -630,7 +630,7 @@ public class MesWorkOrderService extends BaseMesService implements } //成品移库 if(isMove){ - MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), 1d,sn); + MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), 1d,sn,MesExtEnumUtil.MOVE_TYPE.FINISH_PRODUCTS_MOVE.getValue()); move.setMatnr(mesWorkOrder.getPartNo()); mesMoveList.add(move); } @@ -691,8 +691,8 @@ public class MesWorkOrderService extends BaseMesService implements moveRule = null; if(itemPartMap.containsKey(mesBom.getItemPartNo())){ MesPart itemPart = itemPartMap.get(mesBom.getItemPartNo()).iterator().next(); - if(!StringUtil.isEmpty(itemPart.getPartEds()) && mesMoveRuleMap.containsKey(itemPart.getPartEds())){ - moveRule = mesMoveRuleMap.get(itemPart.getPartEds()).iterator().next(); + if(!StringUtil.isEmpty(itemPart.getEsd()) && mesMoveRuleMap.containsKey(itemPart.getEsd())){ + moveRule = mesMoveRuleMap.get(itemPart.getEsd()).iterator().next(); if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) { isItemMove = true; isItemReport = true; @@ -713,7 +713,7 @@ public class MesWorkOrderService extends BaseMesService implements if(mesPartSapMap.containsKey(mesBom.getItemPartNo())){ mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next(); } - MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty(),sn); + MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty(),"",MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue()); move.setMatnr(mesBom.getItemPartNo()); mesMoveList.add(move); } @@ -826,7 +826,7 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderRDao.findByHqlWhere(packBean); } - private MesMove createMove(MesPartSap mesPart , String source, String target, String org,double qty,String sn) { + private MesMove createMove(MesPartSap mesPart , String source, String target, String org,double qty,String sn,Integer moveType) { MesMove move = new MesMove(); if(!Objects.isNull(mesPart)){ move.setMeins(mesPart.getUnit()); @@ -838,6 +838,7 @@ public class MesWorkOrderService extends BaseMesService implements move.setMenge(qty); move.setPostDate(TimeTool.getToday()); move.setProductSn(sn); + move.setMoveType(moveType); move.setPostTime(TimeTool.getTimeShortWithColon()); ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); return move;