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 c98c6f5..67600e1 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 @@ -63,5 +63,6 @@ public interface IMesBomService extends IBaseMesService { */ MesBom findBom(String organizeCode, String bomVersion,String partNo); - + @ApiOperation(value = "bom反向查询") + List queryMesBomReverse(MesBom mesBom); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java index 077cd1d..8888d56 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/report/IMesYfReportService.java @@ -9,6 +9,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCokpitKanbanData; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; +import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.ApiOperation; @@ -56,4 +57,7 @@ public interface IMesYfReportService { @ApiOperation("通用导出报表") ListPager queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager); + + @ApiOperation("通用发运报表查询") + ListPager queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager); } 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 4527383..a3212fd 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 @@ -13,6 +13,7 @@ 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; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -108,4 +109,21 @@ public class MesBomController extends BaseMesController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + + @PostMapping(value = "/reverseQuery") + @ApiOperation(value = "bom反向查询") + public ResultBean queryMesBomReverse(MesBom bom) { + try { + ValidatorBean.checkNotNull(bom.getPartNo(), "父零件号不能为空"); + ValidatorBean.checkNotNull(bom.getEffStartTime(), "生效时间不能为空"); + ValidatorBean.checkNotNull(bom.getNum(), "层数不能为空"); + bom.setOrganizeCode(AuthUtil.getOrganizeCode()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(bomService.queryMesBomReverse(bom)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } 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/controller/report/MesBusiReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java index c873052..1d74350 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java @@ -12,10 +12,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesDowntimeRecord; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel; -import cn.estsh.i3plus.pojo.mes.model.report.MesDowntimeRecordResModel; -import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; -import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel; -import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel; +import cn.estsh.i3plus.pojo.mes.model.report.*; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -181,5 +178,19 @@ public class MesBusiReportController extends MesBaseController { } } + @ApiOperation(value = "通用发运报表查询", notes = "通用发运报表查询") + @PostMapping("/generalShipping/query") + public ResultBean queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager) { + try { + ValidatorBean.beginValid(model) + .notNull("organizeCode", model.getOrganizeCode()); + return ResultBean.success("查询成功").setListPager(mesYfReportService.queryGeneralShipping(model,pager)); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } 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/dao/report/IMesYfReportDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java index 644909b..98dda94 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/report/IMesYfReportDao.java @@ -5,8 +5,11 @@ import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultM import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; +import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel; import io.swagger.annotations.ApiOperation; +import java.util.List; + /** * @Description : 报表-数据方法 * @Reference : @@ -27,4 +30,7 @@ public interface IMesYfReportDao { @ApiOperation("通用导出报表") ListPager queryGeneralExport(MesGeneralExportReportModel mesGeneralExportReportModel, Pager pager); + @ApiOperation("通用发运报表查询") + ListPager queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager, List shippingGroupList); + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java index af25b75..806652d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java @@ -8,9 +8,11 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; +import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.persistence.EntityManager; @@ -118,13 +120,13 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { StringBuilder dataHql = new StringBuilder(); dataHql.append(" select new ").append(MesGeneralExportReportModel.class.getName()).append("(workOrder.organizeCode,workOrder.workCenterCode,workOrder.id,workOrder.workOrderNo,workOrder.custSn,partType.partTypeName,assembly.assemblySn,assembly.createDatetime,workOrder.shippingTime)"); //共用HQL - String commonHql = getCommonHql(mesGeneralExportReportModel); + String commonHql = getGeneralExportCommonHql(mesGeneralExportReportModel); //行数 Query countQuery = entityManager.createQuery("select count(1) " + commonHql); - setParameter(mesGeneralExportReportModel, countQuery); + setGeneralExportParameter(mesGeneralExportReportModel, countQuery); //数据 - Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesGeneralExportReportModel)).toString(), MesGeneralExportReportModel.class); - setParameter(mesGeneralExportReportModel, dataQuery); + Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getGeneralExportOrderBy(mesGeneralExportReportModel)).toString(), MesGeneralExportReportModel.class); + setGeneralExportParameter(mesGeneralExportReportModel, dataQuery); if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager); int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); @@ -134,7 +136,29 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { return new ListPager<>(dataQuery.getResultList(), pager); } - private void setParameter(MesGeneralExportReportModel model, Query query) { + + @Override + public ListPager queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager, List shippingGroupList) { + StringBuilder dataHql = new StringBuilder(); + dataHql.append(" select new ").append(MesGeneralShippingReportModel.class.getName()).append("(s.id,s.status,s.shippingCode,wo.workCenterCode,s.seq,wo.custOrderNo,sd.partNo,wo.custPartNo,wo.carModelCode,cgg.upperColour,s.endScanTime,sr.startCarNo,sr.endCarNo,sr.expectedArrivalTime,sr.createDatetime)"); + //共用HQL + String commonHql = getGeneralShippingCommonHql(model, shippingGroupList); + //行数 + Query countQuery = entityManager.createQuery("select count(1) " + commonHql); + setGeneralShippingParameter(model, countQuery, shippingGroupList); + //数据 + Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getGeneralShippingOrderBy(model)).toString(), MesGeneralShippingReportModel.class); + setGeneralShippingParameter(model, dataQuery, shippingGroupList); + if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager); + + int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); + if (count <= 0) return new ListPager<>(new ArrayList<>(), pager); + pager = PagerHelper.getPager(pager, count); + dataQuery.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()); + return new ListPager<>(dataQuery.getResultList(), pager); + } + + private void setGeneralExportParameter(MesGeneralExportReportModel model, Query query) { query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("organizeCode", model.getOrganizeCode()); @@ -143,7 +167,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd()); } - private String getOrderBy(MesGeneralExportReportModel model) { + private String getGeneralExportOrderBy(MesGeneralExportReportModel model) { StringBuilder orderBy = new StringBuilder(); if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) { model.setOrderByParam("createDatetime"); @@ -152,7 +176,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { return orderBy.append(" order by assembly.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString(); } - private String getCommonHql(MesGeneralExportReportModel model) { + private String getGeneralExportCommonHql(MesGeneralExportReportModel model) { StringBuilder commonHql = new StringBuilder(); commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on orderAssembly.workOrderNo = workOrder.workOrderNo and workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid"); commonHql.append(" left join MesProductionAssembly assembly on workOrder.custSn = assembly.custSn and orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid "); @@ -171,4 +195,55 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { return commonHql.toString(); } + private void setGeneralShippingParameter(MesGeneralShippingReportModel model, Query query, List shippingGroupList) { + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("organizeCode", model.getOrganizeCode()); + if(!CollectionUtils.isEmpty(shippingGroupList)) query.setParameter("shippingGroupList", shippingGroupList); + if (!StringUtils.isEmpty(model.getShippingTimeStart())) query.setParameter("shippingTimeStart", model.getShippingTimeStart()); + if (!StringUtils.isEmpty(model.getShippingTimeEnd())) query.setParameter("shippingTimeEnd", model.getShippingTimeEnd()); + if (!StringUtils.isEmpty(model.getArrivalTimeStart())) query.setParameter("arrivalTimeStart", model.getArrivalTimeStart()); + if (!StringUtils.isEmpty(model.getArrivalTimeEnd())) query.setParameter("arrivalTimeEnd", model.getArrivalTimeEnd()); + if (!StringUtils.isEmpty(model.getReceivingTimeStart())) query.setParameter("receivingTimeStart", model.getReceivingTimeStart()); + if (!StringUtils.isEmpty(model.getReceivingTimeEnd())) query.setParameter("receivingTimeEnd", model.getReceivingTimeEnd()); + } + + private String getGeneralShippingOrderBy(MesGeneralShippingReportModel model) { + StringBuilder orderBy = new StringBuilder(); + if (StringUtils.isEmpty(model.getOrderByParam()) || StringUtils.isEmpty(model.getAscOrDesc())) { + model.setOrderByParam("createDatetime"); + model.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); + } + return orderBy.append(" order by s.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString(); + } + + private String getGeneralShippingCommonHql(MesGeneralShippingReportModel model, List shippingGroupList) { + StringBuilder commonHql = new StringBuilder(); + commonHql.append(" from MesShippingOrderManagement s left join MesShippingOrderManagementDetail sd on s.id = sd.pid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid "); + commonHql.append(" left join MesWorkOrder wo on sd.logicSeq = wo.workOrderSeq and wo.organizeCode = :organizeCode and wo.isDeleted=:isDeleted and wo.isValid=:isValid "); + commonHql.append(" left join MesCimGmGepics cgg on cgg.csnNo = wo.custOrderNo and cgg.organizeCode = :organizeCode and cgg.isDeleted=:isDeleted and cgg.isValid=:isValid and cgg.barcode !='' and cgg.barcode is not null "); + commonHql.append(" left join MesSupplyclientRunsheet sr on s.shippingCode = sr.runSheetNo and sr.organizeCode = :organizeCode and sr.isDeleted=:isDeleted and sr.isValid=:isValid "); + commonHql.append(" where s.organizeCode = :organizeCode and s.isDeleted=:isDeleted and s.isValid=:isValid and sd.organizeCode = :organizeCode and sd.isDeleted=:isDeleted and sd.isValid=:isValid and wo.organizeCode = :organizeCode and wo.isDeleted=:isDeleted and wo.isValid=:isValid"); + if(!CollectionUtils.isEmpty(shippingGroupList)) commonHql.append(" and s.shippingGroupCode in (:shippingGroupList)"); + if (!StringUtils.isEmpty(model.getShippingCode())) commonHql.append(" and s.shippingCode like '%").append(model.getShippingCode()).append("%' "); + if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and wo.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' "); + if (!StringUtils.isEmpty(model.getSeq())) commonHql.append(" and s.seq like '%").append(model.getSeq()).append("%' "); + if (!StringUtils.isEmpty(model.getCustOrderCode())) commonHql.append(" and wo.custOrderNo like '%").append(model.getCustOrderCode()).append("%' "); + if (!StringUtils.isEmpty(model.getPartNo())) commonHql.append(" and sd.partNo like '%").append(model.getPartNo()).append("%' "); + if (!StringUtils.isEmpty(model.getCustPartNo())) commonHql.append(" and wo.custPartNo like '%").append(model.getCustPartNo()).append("%' "); + if (!StringUtils.isEmpty(model.getVehicleNo())) commonHql.append(" and wo.carModelCode like '%").append(model.getVehicleNo()).append("%' "); + if (!StringUtils.isEmpty(model.getUpperColour())) commonHql.append(" and cgg.upperColour like '%").append(model.getUpperColour()).append("%' "); + if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and s.endScanTime >= :shippingTimeStart "); + if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and s.endScanTime <= :shippingTimeEnd "); + if (!StringUtils.isEmpty(model.getStartCarNo())) commonHql.append(" and sr.startCarNo like '%").append(model.getStartCarNo()).append("%' "); + if (!StringUtils.isEmpty(model.getEndCarNo())) commonHql.append(" and sr.endCarNo like '%").append(model.getEndCarNo()).append("%' "); + if (!StringUtils.isEmpty(model.getArrivalTimeStart())) commonHql.append(" and sr.expectedArrivalTime >= :arrivalTimeStart "); + if (!StringUtils.isEmpty(model.getArrivalTimeEnd())) commonHql.append(" and sr.expectedArrivalTime <= :arrivalTimeEnd "); + if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and s.endScanTime >= :shippingTimeStart "); + if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and s.endScanTime <= :shippingTimeEnd "); + if (!StringUtils.isEmpty(model.getReceivingTimeStart())) commonHql.append(" and sr.createDatetime >= :receivingTimeStart "); + if (!StringUtils.isEmpty(model.getReceivingTimeEnd())) commonHql.append(" and sr.createDatetime <= :receivingTimeEnd "); + return commonHql.toString(); + } + } 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 6172c36..efe5087 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 @@ -4,6 +4,7 @@ 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.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.model.MesBomTreeModel; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.MesConstWords; @@ -207,6 +208,45 @@ public class MesBomService extends BaseMesService implements IMesBomServ return bomList.isEmpty() ? null : bomList.get(0); } + @Override + public List queryMesBomReverse(MesBom mesBom) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesBom.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesBom.getPartNo(), "itemPartNo", packBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean); + DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean); + List mesBomList = baseRDao.findByHqlWhere(packBean); + if(CollectionUtils.isEmpty(mesBomList)){ + return new ArrayList<>(); + } + List resultMesBomList = new ArrayList<>(); + Map> mesBomMap = mesBomList.stream().collect(Collectors.groupingBy(bom -> bom.getPartNo() + bom.getItemPartNo())); + for (String partNoKey : mesBomMap.keySet()) { + MesBom bom = mesBomMap.get(partNoKey).get(MesExtConstWords.ZERO); + resultMesBomList.add(bom); + //按照层数递归上一次 + bomReverse(resultMesBomList,bom.getPartNo(),bom.getOrganizeCode(),mesBom.getNum()-1); + } + return resultMesBomList; + } + + private void bomReverse(List resultMesBomList,String partNo,String organizeCode, Integer num) { + if(num == MesExtConstWords.ZERO) return; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "itemPartNo", packBean); + DdlPreparedPack.getStringEqualPack("X", "partType", packBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean); + DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean); + List mesBomList = baseRDao.findByHqlWhere(packBean); + if(CollectionUtils.isEmpty(mesBomList)) return; + Map> mesBomMap = mesBomList.stream().collect(Collectors.groupingBy(bom -> bom.getPartNo() + bom.getItemPartNo())); + for (String partNoKey : mesBomMap.keySet()) { + MesBom bom = mesBomMap.get(partNoKey).get(MesExtConstWords.ZERO); + resultMesBomList.add(bom); + //按照层数递归上一次 + bomReverse(resultMesBomList,bom.getPartNo(),bom.getOrganizeCode(),num-1); + } + } + /** * 递归展开 BOM * diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index 7a0fee7..228447d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -24,6 +24,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralExportReportModel; +import cn.estsh.i3plus.pojo.mes.model.report.MesGeneralShippingReportModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportDataModel; import cn.estsh.i3plus.pojo.mes.model.report.MesTraceabilityReportModel; import cn.estsh.i3plus.pojo.mes.repository.*; @@ -274,6 +275,16 @@ public class MesYfReportServiceImpl implements IMesYfReportService { return mesYfReportDao.queryGeneralExport(mesGeneralExportReportModel,pager); } + @Override + public ListPager queryGeneralShipping(MesGeneralShippingReportModel model, Pager pager) { + MesConfig groupCfg = mesConfigService.getCfgValueByCode(model.getOrganizeCode(), MesExtConstWords.GENERAL_SHIPPING_PART_GROUP); + List shippingGroupList = null; + if (!Objects.isNull(groupCfg) && !StringUtil.isEmpty(groupCfg.getCfgValue())) { + shippingGroupList = Arrays.asList(groupCfg.getCfgValue().split(MesExtConstWords.COMMA)); + } + return mesYfReportDao.queryGeneralShipping(model, pager, shippingGroupList); + } + private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java index 7ea5676..f1a0805 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java @@ -327,4 +327,11 @@ public class MesExtConstWords { public static final String PART_PROD_GROUP_CODE = "partProdGroupCode"; + /** + * 系统参数 + */ + //通用发运报表,发运组 + public static final String GENERAL_SHIPPING_PART_GROUP = "GENERAL_SHIPPING_PART_GROUP"; + + }