From 6a0d1eee40cc7488ce1ae2ed2e002f943a272827 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 24 Jun 2024 20:53:38 +0800 Subject: [PATCH] =?UTF-8?q?BOM=E6=A0=91=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesBomService.java | 6 +++ .../controller/base/MesBomController.java | 39 ++++++++++++++- .../i3plus/ext/mes/apiservice/dao/IMesBomDao.java | 21 ++++++++ .../ext/mes/apiservice/daoimpl/MesDaoImpl.java | 52 ++++++++++++++++++++ .../apiservice/serviceimpl/base/MesBomService.java | 57 ++++++++++++++++------ 5 files changed, 159 insertions(+), 16 deletions(-) create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesBomDao.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java index 6df084a..2fd31de 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java @@ -15,6 +15,12 @@ import java.util.List; */ public interface IMesBomService extends IBaseMesService { + @ApiOperation("查询生产版本信息") + List findBomVersionByPartNo(MesBom mesBom); + + @ApiOperation("根据生产版本查询BomCode") + List findBomCodeByPartNoAndBomVersion(MesBom mesBom); + /** * 查询MES组织模型数据返回树结构 * diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java index e5ea5dc..83e14e8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesBomController.java @@ -9,6 +9,7 @@ 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.GetMapping; @@ -25,6 +26,38 @@ public class MesBomController extends BaseMesController { @Autowired private IMesBomService bomService; + @GetMapping(value = "/find-bom-version") + @ApiOperation(value = "查询生产版本信息") + public ResultBean findBomVersionByPartNo(MesBom bom) { + try { + ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空"); + bom.setOrganizeCode(AuthUtil.getOrganizeCode()); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(bomService.findBomVersionByPartNo(bom)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping(value = "/find-bom-code") + @ApiOperation(value = "根据生产版本查询BomCode") + public ResultBean findBomCodeByPartNoAndBomVersion(MesBom bom) { + try { + ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空"); + ValidatorBean.checkNotNull(bom.getBomVersion(), "BOM版本不能为空"); + bom.setOrganizeCode(AuthUtil.getOrganizeCode()); + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(bomService.findBomCodeByPartNoAndBomVersion(bom)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping(value = "/tree/query-first-floor") @ApiOperation(value = "查询MES组织模型数据返回树结构-只获取一层") public ResultBean queryMesDataTreeByFirstFloor(MesBom bom) { @@ -43,9 +76,13 @@ public class MesBomController extends BaseMesController { @ApiOperation(value = "查询MES组织模型数据返回树结构-获取所有") public ResultBean queryMesDataTree(MesBom bom, Pager pager) { try { + ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空"); + ValidatorBean.checkNotNull(bom.getBomVersion(), "BOM版本不能为空"); + ValidatorBean.checkNotNull(bom.getBomCode(), "BOM代码不能为空"); + ValidatorBean.checkNotNull(bom.getEffStartTime(), "生效时间不能为空"); bom.setOrganizeCode(AuthUtil.getOrganizeCode()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) - .setListPager(bomService.queryMesDataTree(bom,pager)); + .setListPager(bomService.queryMesDataTree(bom, pager)); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesBomDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesBomDao.java new file mode 100644 index 0000000..56c39d3 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesBomDao.java @@ -0,0 +1,21 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao; + +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : BOM信息 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/24 14:35 + * @Modify: + **/ +public interface IMesBomDao { + + @ApiOperation("查询生产版本信息") + List findBomVersionByPartNo(String partNo, String organizeCode); + + @ApiOperation("根据生产版本查询BomCode") + List findBomCodeByPartNoAndBomVersion(String partNo, String bomVersion, String organizeCode); +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java new file mode 100644 index 0000000..8783528 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesDaoImpl.java @@ -0,0 +1,52 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesBomDao; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +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; + +/** + * @Description : BOM信息 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/24 14:43 + * @Modify: + **/ + +@Service +@Slf4j +public class MesDaoImpl implements IMesBomDao { + + @Autowired + private EntityManager entityManager; + + @Override + public List findBomVersionByPartNo(String partNo, String organizeCode) { + StringBuilder sql = new StringBuilder(" select distinct bomVersion from MesBom where partNo = :partNo " + + "and isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode order by createDatetime desc"); + Query query = entityManager.createQuery(sql.toString(), String.class); + query.setParameter("partNo", partNo); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + return (List) query.getResultList(); + } + + @Override + public List findBomCodeByPartNoAndBomVersion(String partNo, String bomVersion, String organizeCode) { + StringBuilder sql = new StringBuilder(" select distinct bomCode from MesBom where partNo = :partNo and bomVersion = :bomVersion" + + "and isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode order by createDatetime desc"); + Query query = entityManager.createQuery(sql.toString(), String.class); + query.setParameter("partNo", partNo); + query.setParameter("bomVersion", bomVersion); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + return (List) query.getResultList(); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java index 3b75ed8..129d184 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesBomService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesBomDao; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.ext.mes.pojo.model.MesBomTreeModel; import cn.estsh.i3plus.platform.common.tool.MathOperation; @@ -18,11 +19,10 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; 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 java.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -30,12 +30,25 @@ import java.util.stream.Collectors; @Slf4j public class MesBomService extends BaseMesService implements IMesBomService { + @Autowired + private IMesBomDao mesBomDao; + protected void setPackQueryBean(MesBom bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getBomVersion(), "bomVersion", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); } @Override + public List findBomVersionByPartNo(MesBom mesBom) { + return mesBomDao.findBomVersionByPartNo(mesBom.getPartNo(), mesBom.getOrganizeCode()); + } + + @Override + public List findBomCodeByPartNoAndBomVersion(MesBom mesBom) { + return mesBomDao.findBomCodeByPartNoAndBomVersion(mesBom.getPartNo(), mesBom.getBomVersion(), mesBom.getOrganizeCode()); + } + + @Override public List queryMesDataTreeByFirstFloor(MesBom bom) { List resultList = new ArrayList(); @@ -66,25 +79,40 @@ public class MesBomService extends BaseMesService implements IMesBomServ @Override public ListPager queryMesDataTree(MesBom bom, Pager pager) { List resultList = new ArrayList(); - ValidatorBean.checkNotNull(bom.getPartNo(), "零件号不能为空"); MesBomTreeModel organize = new MesBomTreeModel(); organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// organize.setName("LML"); organize.setName(AuthUtil.getOrganize().getName()); DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(bom.getPartNo(), "partNo", packBean); - packBean.setOrderByStr(" order by createDatetime desc ") ; + DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), "bomVersion", packBean); + DdlPreparedPack.getStringEqualPack(bom.getBomCode(), "bomCode", packBean); + DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), "effStartTime", packBean); + packBean.setOrderByStr(" order by createDatetime desc "); pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean)); List bomList = baseRDao.findByHqlWherePage(packBean, pager); - recursionBomList(bomList); + recursionBomList(bomList,bom.getEffStartTime()); organize.setChildTreeList(bomList); resultList.add(organize); - return new ListPager<>(resultList, pager); + return new ListPager<>(resultList, pager); + } + + public List findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion, String bomCode, String effStartTime) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean); + DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean); + DdlPreparedPack.getStringSmallerPack(effStartTime, "effStartTime", ddlPackBean); + DdlPreparedPack.getOrderBy(null, null, ddlPackBean); + List mesBoms = baseRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(mesBoms)) { + MesException.throwMesBusiException("物料【%s】生产版本【%s】BOM代码【%s】生效时间小于【%s】对应bom信息不存在", partNo, bomVersion, bomCode, effStartTime); + } + return mesBoms; } public List findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) { @@ -94,7 +122,7 @@ public class MesBomService extends BaseMesService implements IMesBomServ DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", ddlPackBean); DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); List mesBoms = baseRDao.findByHqlWhere(ddlPackBean); - if (org.apache.commons.collections.CollectionUtils.isEmpty(mesBoms)) { + if (CollectionUtils.isEmpty(mesBoms)) { MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); } MesBom next = mesBoms.iterator().next(); @@ -175,15 +203,14 @@ public class MesBomService extends BaseMesService implements IMesBomServ * @return */ - private List recursionBomList(List bomList) { + private List recursionBomList(List bomList,String effStartTime) { if (!CollectionUtils.isEmpty(bomList)) { for (MesBom bom : bomList) { - if (bom.getItemPartNo().equals(bom.getPartNo())) continue; - List resultList = baseRDao.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE, "partNo"}, - new Object[]{CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), bom.getOrganizeCode(), bom.getItemPartNo()}); - - recursionBomList(resultList); -// bom.setChildTreeList(resultList); + if (Objects.equals("X", bom.getPartType())) { + List resultList = findMesBomByPartNoAndBomVersion(bom.getPartNo(), bom.getOrganizeCode(), bom.getBomVersion(), bom.getBomCode(), effStartTime); + bom.setChildTreeList(resultList); + recursionBomList(resultList,effStartTime); + } } } return bomList;