From be96b79932aaaf0bd6a1c143e6f1d045c6a8935a Mon Sep 17 00:00:00 2001 From: futian.liu <liufutianyoo@163.com> Date: 星期四, 07 十二月 2023 16:16:05 +0800 Subject: [PATCH] 分发列表去重 --- consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 107 insertions(+), 34 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java index 0b09797..473f57a 100644 --- a/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java +++ b/consum-base/src/main/java/com/consum/base/service/impl/LWhFormTransferServiceImpl.java @@ -1,10 +1,13 @@ package com.consum.base.service.impl; +import com.consum.base.pojo.response.GoodsTemplateInfoVO; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; @@ -15,6 +18,7 @@ import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; +import com.consum.base.core.type.CategoryType; import com.consum.base.core.utils.CurrencyUtil; import com.consum.base.core.utils.IdUtil; import com.consum.base.core.utils.MapUtils; @@ -22,11 +26,11 @@ import com.consum.base.pojo.LWhFormTransferGoodsInfoParam; import com.consum.base.pojo.LWhProcureModelUserParam; import com.consum.base.pojo.LWhTransferModelParam; +import com.consum.base.pojo.dto.GoodModelInfoDTO; import com.consum.base.pojo.excel.TransferExcelTemplate; import com.consum.base.pojo.query.TransferQry; import com.consum.base.pojo.request.LWhFormTransferParam; import com.consum.base.pojo.response.DepartGoodsUseInfo; -import com.consum.base.pojo.response.FormTransferGoodsVO; import com.consum.base.pojo.response.GoodsModelVO; import com.consum.base.pojo.response.LWHFromTransferExtendVO; import com.consum.base.service.BaseWarehouseManagerService; @@ -76,8 +80,8 @@ @Autowired private BaseWarehouseManagerService baseWarehouseManagerService; - private static String QUERY_FORM_TRANSFER_LIST = - "SELECT ft.* FROM l_wh_form_transfer ft " + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id " + private static final String QUERY_FORM_TRANSFER_LIST = + "SELECT DISTINCT ft.* FROM l_wh_form_transfer ft " + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id " + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID " + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 "; @@ -347,41 +351,50 @@ result.setDepartmentName(lWhFormTransfer.getInWarehouseName()); } - String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type " - + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " - + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " - + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id "; + List<GoodModelInfoDTO> goodsModelInfo = + lWhProcureModelService.getGoodsModelListByBusinessId(result.getId(), null); + if (CollectionUtils.isEmpty(goodsModelInfo)) { + return result; + } + // 鏌ヨ閮ㄩ棬鐗╁搧浣跨敤淇℃伅 Map<String, Object> paramMap = new HashMap<>(); paramMap.put("id", result.getId()); - List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil()); - String queryRecord = "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1"; LWhProcureModelUserRecord lWhProcureModelUserRecord = lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord()); - List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList(); - for (Map<String, Object> map : procureModelList) { - FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class); - Long baseGoodsTemplateId = procureTemplateInfoVO.getId(); - // 鏌ヨ鍨嬪彿鏁伴噺 - List<GoodsModelVO> goodsModelVOList = Lists.newArrayList(); - String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount " - + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " - + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " - + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId"; - Map<String, Object> goodsModelParamMap = new HashMap<>(); - goodsModelParamMap.put("id", result.getId()); - goodsModelParamMap.put("baseGoodsTemplateId", baseGoodsTemplateId); - List<Map<String, Object>> modelList = this.select(sql2, goodsModelParamMap, new MapperUtil()); - modelList.forEach(item -> { - GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class); - Integer businessType = result.getBusinessType(); - String type = procureTemplateInfoVO.getType(); + + Map<Long, List<GoodModelInfoDTO>> collect = + goodsModelInfo.stream().filter(Objects::nonNull).filter(dto -> dto.getBaseGoodsTemplateId() != null) + .collect(Collectors.groupingBy(GoodModelInfoDTO::getBaseGoodsTemplateId)); + List<GoodsTemplateInfoVO> goodsTemplateInfoList = Lists.newArrayList(); + for (Map.Entry<Long, List<GoodModelInfoDTO>> entry : collect.entrySet()) { + List<GoodModelInfoDTO> value = entry.getValue(); + GoodModelInfoDTO goodModelInfoDTO = value.stream().findFirst().orElse(null); + GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO(); + if (goodModelInfoDTO != null) { + goodsTemplateInfoVO.setId(goodModelInfoDTO.getId()); + goodsTemplateInfoVO.setCategoryName(goodModelInfoDTO.getCategoryName()); + goodsTemplateInfoVO.setGoodsName(goodModelInfoDTO.getBaseGoodsName()); + goodsTemplateInfoVO.setType(goodModelInfoDTO.getType()); + } + + List<GoodsModelVO> goodsModelList = Lists.newArrayList(); + for (GoodModelInfoDTO goodModelInfo : value) { + GoodsModelVO goodsModelVO = new GoodsModelVO(); + goodsModelVO.setId(goodModelInfo.getId()); + goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName()); + goodsModelVO.setUnit(goodModelInfo.getUnit()); + goodsModelVO.setCounts(goodModelInfo.getCounts()); + goodsModelVO.setTotalAmount(CurrencyUtil.convertFenToYuan(goodModelInfo.getTotalAmount())); // 閮ㄩ棬鍒嗗彂闇�瑕佹煡璇娇鐢ㄤ俊鎭� - if (businessType == 1 && "A".equals(type)) { + Integer businessType = result.getBusinessType(); + String type = goodsTemplateInfoVO.getType(); + if (businessType == 1 && CategoryType.TYPE_A.getValue().equals(type)) { Long procureModelId = goodsModelVO.getId(); LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); lWhProcureModelUser.setWhProcureModelId(procureModelId); + lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId()); List<LWhProcureModelUser> procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser); @@ -399,14 +412,74 @@ }); goodsModelVO.setUseInfo(departGoodsUseInfoList); } - } - goodsModelVOList.add(goodsModelVO); - procureTemplateInfoVO.setModels(goodsModelVOList); - }); - formTransferGoods.add(procureTemplateInfoVO); + goodsModelList.add(goodsModelVO); + } + goodsTemplateInfoVO.setModels(goodsModelList); + goodsTemplateInfoList.add(goodsTemplateInfoVO); } - result.setFormTransferGoods(formTransferGoods); + result.setFormTransferGoods(goodsTemplateInfoList); + + // String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type " + // + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " + // + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + // + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id "; + // Map<String, Object> paramMap = new HashMap<>(); + // paramMap.put("id", result.getId()); + // List<Map<String, Object>> procureModelList = this.select(sql, paramMap, new MapperUtil()); + // + // String queryRecord = + // "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1"; + // LWhProcureModelUserRecord lWhProcureModelUserRecord = + // lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord()); + // List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList(); + // for (Map<String, Object> map : procureModelList) { + // FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class); + // Long baseGoodsTemplateId = procureTemplateInfoVO.getId(); + // // 鏌ヨ鍨嬪彿鏁伴噺 + // List<GoodsModelVO> goodsModelVOList = Lists.newArrayList(); + // String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount " + // + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " + // + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + // + "WHERE pm.BUSINESS_ID =:id and bgt.id =:baseGoodsTemplateId"; + // Map<String, Object> goodsModelParamMap = new HashMap<>(); + // goodsModelParamMap.put("id", result.getId()); + // goodsModelParamMap.put("baseGoodsTemplateId", baseGoodsTemplateId); + // List<Map<String, Object>> modelList = this.select(sql2, goodsModelParamMap, new MapperUtil()); + // modelList.forEach(item -> { + // GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class); + // Integer businessType = result.getBusinessType(); + // String type = procureTemplateInfoVO.getType(); + // // 閮ㄩ棬鍒嗗彂闇�瑕佹煡璇娇鐢ㄤ俊鎭� + // if (businessType == 1 && "A".equals(type)) { + // Long procureModelId = goodsModelVO.getId(); + // LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); + // lWhProcureModelUser.setWhProcureModelId(procureModelId); + // lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId()); + // List<LWhProcureModelUser> procureModelUserList = + // this.lWhProcureModelUserService.select(lWhProcureModelUser); + // if (!CollectionUtils.isEmpty(procureModelUserList)) { + // List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList(); + // procureModelUserList.forEach(useInfo -> { + // Integer goodsNum = useInfo.getGoodsNum(); + // Long nowUserPhone = useInfo.getNowUserPhone(); + // String nowUserName = useInfo.getNowUserName(); + // DepartGoodsUseInfo departGoodsUseInfo = new DepartGoodsUseInfo(); + // departGoodsUseInfo.setName(nowUserName); + // departGoodsUseInfo.setNum(goodsNum); + // departGoodsUseInfo.setTel(nowUserPhone); + // departGoodsUseInfoList.add(departGoodsUseInfo); + // }); + // goodsModelVO.setUseInfo(departGoodsUseInfoList); + // } + // + // } + // goodsModelVOList.add(goodsModelVO); + // procureTemplateInfoVO.setModels(goodsModelVOList); + // }); + // formTransferGoods.add(procureTemplateInfoVO); + // } + // result.setFormTransferGoods(formTransferGoods); return result; } -- Gitblit v1.9.1