| | |
| | | package com.consum.base.service.impl; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | |
| | | import org.apache.commons.compress.utils.Lists; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | 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; |
| | |
| | | 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.GoodsTemplateInfoVO; |
| | | import com.consum.base.pojo.response.LWHFromTransferExtendVO; |
| | | import com.consum.base.service.BaseWarehouseManagerService; |
| | | import com.consum.base.service.BaseWarehouseService; |
| | | import com.consum.base.service.FinSysTenantServiceImpl; |
| | | import com.consum.base.service.LWhFormOutputServiceImpl; |
| | | import com.consum.base.service.LWhFormTransferService; |
| | | import com.consum.base.service.LWhGoodsService; |
| | | import com.consum.base.service.LWhProcureModelService; |
| | | import com.consum.base.service.LWhProcureModelUserRecordService; |
| | | import com.consum.base.service.LWhProcureModelUserServiceImpl; |
| | | import com.consum.model.po.BaseWarehouse; |
| | | import com.consum.model.po.BaseWarehouseManager; |
| | | import com.consum.model.po.FinSysTenant; |
| | | import com.consum.model.po.FinSysTenantUser; |
| | | import com.consum.model.po.LWhFormTransfer; |
| | | import com.consum.model.po.LWhProcureModel; |
| | | import com.consum.model.po.LWhProcureModelUser; |
| | | import com.consum.model.po.LWhProcureModelUserRecord; |
| | | import com.consum.base.service.*; |
| | | import com.consum.model.po.*; |
| | | import com.walker.db.page.GenericPager; |
| | | import com.walker.infrastructure.utils.StringUtils; |
| | | import com.walker.jdbc.service.BaseServiceImpl; |
| | | import org.apache.commons.compress.utils.Lists; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @Description 调拨管理 |
| | |
| | | @Autowired |
| | | private LWhProcureModelService lWhProcureModelService; |
| | | @Autowired |
| | | private LWhFormOutputServiceImpl lWhFormOutputService; |
| | | @Autowired |
| | | private BaseGoodsModelsServiceImpl baseGoodsModelsService; |
| | | @Autowired |
| | | private LWhProcureModelUserServiceImpl lWhProcureModelUserService; |
| | | private LWhProcureModelUserService lWhProcureModelUserService; |
| | | @Autowired |
| | | private LWhProcureModelUserRecordService lWhProcureModelUserRecordService; |
| | | @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 "; |
| | | |
| | |
| | | Long id = sysInfo.getId(); |
| | | BaseWarehouseManager manager = new BaseWarehouseManager(); |
| | | manager.setManagerId(id); |
| | | List<BaseWarehouseManager> managerList = baseWarehouseManagerService.selectAll(manager); |
| | | List<BaseWarehouseManager> managerList = baseWarehouseManagerService.select(manager); |
| | | if (CollectionUtils.isEmpty(managerList)) { |
| | | log.error("该用户不是库管员"); |
| | | throw new Exception("该用户不是库管员"); |
| | |
| | | if (businessType == 0) { |
| | | lWhProcureModel.setBusinessType(2); |
| | | // 根据物品型号查询物品库存 |
| | | int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null); |
| | | int goodsNum = lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null); |
| | | lWhProcureModel.setWorehouseCount(goodsNum); |
| | | } |
| | | if (businessType == 1) { |
| | |
| | | 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 = lWhFormOutputService.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 = |
| | | lWhFormOutputService.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); |
| | |
| | | }); |
| | | 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; |
| | | } |