From 731cdeeac1a29adc45b04c37408b6e933475167a Mon Sep 17 00:00:00 2001 From: gsz Date: Thu, 10 Oct 2024 11:18:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E8=BF=90=E9=9B=B6=E4=BB=B6=E5=AD=90?= =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E6=98=8E=E7=BB=86+=E5=8F=91=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E5=AD=90=E9=9B=B6=E4=BB=B6=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMesShippingOrderManagementDetailService.java | 4 + ...MesShippingOrderManagementDetailController.java | 32 +++++ .../dao/IMesShippingOrderManagementDetailDao.java | 4 + .../MesShippingOrderManagementDetailDaoImpl.java | 129 +++++++++++++++++++++ .../MesShippingOrderManagementDetailService.java | 36 ++++++ 5 files changed, 205 insertions(+) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java index 3c77082..d035341 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesShippingOrderManagementDetailService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import io.swagger.annotations.ApiOperation; @@ -23,4 +24,7 @@ public interface IMesShippingOrderManagementDetailService extends IBaseMesServic @ApiOperation("发运退回") void doShippingBack(Long[] idList,String organizeCode,String userName); + + @ApiOperation("查询发运零件子零件明细") + ListPager queryDetailMesWorkOrderPart(MesWorkOrderPart bean, Pager pager); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java index f04f835..b03b915 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesShippingOrderManagementDetailController.java @@ -6,6 +6,7 @@ import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -68,5 +69,36 @@ public class MesShippingOrderManagementDetailController extends BaseMesControlle } } + @PostMapping(value = "/ship-part/query-item-part") + @ApiOperation(value = "发运零件子零件明细") + public ResultBean queryDetailMesWorkOrderPart(@RequestBody MesWorkOrderPart detail, Pager pager) { + try { + + detail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setListPager(shippingOrderManagementDetailService.queryDetailMesWorkOrderPart(detail,pager)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping(value = "/ship-order/query-item-part") + @ApiOperation(value = "发运单子零件明细") + public ResultBean queryMesShippingOrderManagementDetail(@RequestBody MesWorkOrderPart detail, Pager pager) { + try { + + detail.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + + return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setListPager(shippingOrderManagementDetailService.queryDetailMesWorkOrderPart(detail,pager)); + } 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/dao/IMesShippingOrderManagementDetailDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java index 7053b64..4e89a43 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesShippingOrderManagementDetailDao.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.dao; import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import io.swagger.annotations.ApiOperation; @@ -18,10 +19,13 @@ import java.util.List; public interface IMesShippingOrderManagementDetailDao { int queryOrderDetailGroupByPartCount(MesShippingOrderManagementDetail detail); + int queryDetailGroupByPartNo(MesWorkOrderPart detail); List queryOrderDetailGroupByPartInfo(MesShippingOrderManagementDetail detail, Pager pager); + List queryOrderDetailGroupByPartInfo(MesWorkOrderPart detail, Pager pager); @ApiOperation("查询发运单明细") ListPager queryMesShippingDetailsByPager(MesShippingOrderManagementDetailModel mesShippingOrderManagementDetailModel, Pager pager); + List queryMesShippingOrderManagementDetail(MesWorkOrderPart bean); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java index 3cbd941..f2ccd98 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesShippingOrderManagementDetailDaoImpl.java @@ -6,6 +6,8 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; 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.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -20,6 +22,7 @@ import javax.persistence.Query; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @Description :SAP生产计划 @@ -187,4 +190,130 @@ public class MesShippingOrderManagementDetailDaoImpl implements IMesShippingOrde commonHql.append(" and m.publishTime <= :publishTimeEnd "); return commonHql.toString(); } + @Override + public List queryMesShippingOrderManagementDetail(MesWorkOrderPart detail ) { + StringBuffer hql = new StringBuffer("" + + " SELECT " + + " SUBSTRING_INDEX(sd.bar_code, ',', 1) AS bar_code, " + + " sd.plan_qty, " + + " sd.actual_qty, " + + " s.shipping_code, " + + " sd.part_no, " + + " sd.modify_date_time, " + + " from mes_shipping_detail sd " + + " left join mes_work_order wo on wop.work_order_no=wo.work_order_no " + + " WHERE sd.status in (20) " +//todo 发运 20 + " and sd.bar_code != '' and bar_code is not NULL "); + hql.append(" and sd.organize_code = :organizeCode "); + hql.append(" and sd.is_deleted = :isDeleted "); + hql.append(" and sd.is_valid = :isValid "); + if (!StringUtil.isEmpty(detail.getModifyDateTimeStart())){ + hql.append(" and sd.modify_date_time >= "+detail.getModifyDateTimeStart()+" "); + } + if (!StringUtil.isEmpty(detail.getModifyDateTimeEnd())){ + hql.append(" and sd.modify_date_time <= "+detail.getModifyDateTimeEnd()+" "); + } + + Query query = entityManager.createNativeQuery(hql.toString()); + query.setParameter("organizeCode", detail.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + + List list = query.getResultList(); + List modelList = new ArrayList<>(); + + for (Object result : list) { + Object[] cells = (Object[]) result; + MesShippingOrderManagementDetail model = new MesShippingOrderManagementDetail(); + model.setBarcode(StringUtils.isEmpty(cells[0]) ? "" : String.valueOf(cells[0])); + model.setPlanQty(StringUtils.isEmpty(cells[1]) ? 1 : Integer.parseInt(String.valueOf(cells[1]))); + model.setActualQty(StringUtils.isEmpty(cells[2]) ? 1 : Integer.parseInt(String.valueOf(cells[2]))); + model.setShippingCode(StringUtils.isEmpty(cells[3]) ? "" : String.valueOf(cells[3])); + model.setPartNo(StringUtils.isEmpty(cells[4]) ? "" : String.valueOf(cells[4])); + model.setModifyDatetime(StringUtils.isEmpty(cells[5]) ? "" : String.valueOf(cells[5])); + modelList.add(model); + } + + return modelList; + } + @Override + public int queryDetailGroupByPartNo(MesWorkOrderPart detail) { + + StringBuffer hql = new StringBuffer("select count(1)" + + " from mes_work_order_part wop " + + " left join mes_work_order wo on wop.work_order_no=wo.work_order_no " ); + hql.append(" WHERE wop.organize_code = :organizeCode "); + hql.append(" and wop.is_deleted = :isDeleted "); + hql.append(" and wop.is_valid = :isValid "); + + if (!StringUtil.isEmpty(detail.getPartNo())){ + hql.append(" and wop.part_no ="+detail.getPartNo()+" "); + } + if (!StringUtil.isEmpty(detail.getWorkCenterCode())){ + hql.append(" and wop.work_center_code ="+detail.getWorkCenterCode()+" "); + } + hql.append(" and wop.work_order_no in (:codeList) "); + + Query query = entityManager.createNativeQuery(hql.toString()); + query.setParameter("organizeCode", detail.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("codeList", detail.getShippingDetails().stream().map(MesShippingOrderManagementDetail::getBarcode).collect(Collectors.toList())); + + + List list = query.getResultList(); + + if (CollectionUtils.isEmpty(list)) { + return 0; + } + + return list.size(); + } + @Override + public List queryOrderDetailGroupByPartInfo(MesWorkOrderPart detail, Pager pager) { + + StringBuffer hql = new StringBuffer("" + + "SELECT " + + " wo.work_center_code, " + + " wop.part_no, " + + " wop.part_name, " + + " wop.item_qty " + + " from mes_work_order_part wop " + + " left join mes_work_order wo on wop.work_order_no=wo.work_order_no " ); + hql.append(" WHERE wop.organize_code = :organizeCode "); + hql.append(" and wop.is_deleted = :isDeleted "); + hql.append(" and wop.is_valid = :isValid "); + + if (!StringUtil.isEmpty(detail.getPartNo())){ + hql.append(" and wop.part_no ="+detail.getPartNo()+" "); + } + if (!StringUtil.isEmpty(detail.getWorkCenterCode())){ + hql.append(" and wop.work_center_code ="+detail.getWorkCenterCode()+" "); + } + hql.append(" and wop.work_order_no in (:codeList) "); + + Query query = entityManager.createNativeQuery(hql.toString()); + query.setParameter("organizeCode", detail.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("codeList", detail.getShippingDetails().stream().map(MesShippingOrderManagementDetail::getBarcode).collect(Collectors.toList())); + + + query.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()); + + List list = query.getResultList(); + List modelList = new ArrayList<>(); + + for (Object result : list) { + Object[] cells = (Object[]) result; + MesWorkOrderPart model = new MesWorkOrderPart(); + model.setWorkCenterCode(StringUtils.isEmpty(cells[0]) ? "" : String.valueOf(cells[0])); + model.setPartNo(StringUtils.isEmpty(cells[1]) ? "" : String.valueOf(cells[1])); + model.setPartName(StringUtils.isEmpty(cells[2]) ? "" : String.valueOf(cells[2])); + model.setItemQty(StringUtils.isEmpty(cells[3]) ? 1 : Double.parseDouble(String.valueOf(cells[3]))); + modelList.add(model); + } + + return modelList; + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java index 3919fe0..cbd0104 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementDetailService.java @@ -12,9 +12,12 @@ 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.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +39,9 @@ public class MesShippingOrderManagementDetailService extends BaseMesService queryDetailMesWorkOrderPart(MesWorkOrderPart bean, Pager pager) { + List modelList=new ArrayList<>(); + List shippingDetails = shippingOrderManagementDetailDao.queryMesShippingOrderManagementDetail(bean); + if (CollectionUtils.isEmpty(shippingDetails)){ + return new ListPager<>(modelList, pager); + } + bean.setShippingDetails(shippingDetails); + int count = shippingOrderManagementDetailDao.queryDetailGroupByPartNo(bean); + + pager = PagerHelper.getPager(pager, count); + + modelList = shippingOrderManagementDetailDao.queryOrderDetailGroupByPartInfo(bean, pager); + //查询发运明细 + if (!CollectionUtils.isEmpty(modelList)){ + Map> collect = shippingDetails.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getBarcode)); + for (MesWorkOrderPart mesWorkOrderPart : modelList) { + if (!CollectionUtils.isEmpty(collect.get(mesWorkOrderPart.getWorkOrderNo()))){ + MesShippingOrderManagementDetail managementDetail = collect.get(mesWorkOrderPart.getWorkOrderNo()).get(0); + mesWorkOrderPart.setItemQty(mesWorkOrderPart.getItemQty()*managementDetail.getPlanQty()); + mesWorkOrderPart.setShippingCode(managementDetail.getShippingCode()); + mesWorkOrderPart.setTotalPartNo(managementDetail.getPartNo()); + mesWorkOrderPart.setShippingTime(managementDetail.getModifyDatetime()); + } + } + } + + return new ListPager<>(modelList, pager); + } + }