From 0ec6c7ee0b8236cbc6f49a8cc0e466099a09e08d Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期一, 27 十一月 2023 10:25:32 +0800 Subject: [PATCH] 物品报废 --- consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java | 329 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 297 insertions(+), 32 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java index 7601f0a..acc6e5c 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormScrappedServiceImpl.java @@ -2,19 +2,41 @@ import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; -import com.consum.base.pojo.LWhFormScrappedGoodsParams; +import com.consum.base.core.utils.IdUtil; +import com.consum.base.core.utils.MapUtils; +import com.consum.base.core.utils.MapperUtil; +import com.consum.base.core.utils.PageUtil; +import com.consum.base.pojo.LWhFormScrappedGoodsInfoParam; +import com.consum.base.pojo.LWhFormScrappedGoodsModelParams; import com.consum.base.pojo.LWhFormScrappedParam; -import com.consum.base.pojo.LWhProcureModelParams; -import com.consum.base.util.IdUtil; -import com.consum.model.po.*; +import com.consum.base.pojo.query.LWhFormScrappedQry; +import com.consum.base.pojo.response.FormScrappedGoodsDetailVO; +import com.consum.base.pojo.response.FormScrappedGoodsVO; +import com.consum.base.pojo.response.GoodsModelVO; +import com.consum.base.pojo.response.LWhFormScrappedExtendVO; +import com.consum.model.po.BaseGoodsModels; +import com.consum.model.po.BaseGoodsTemplate; +import com.consum.model.po.BaseWarehouse; +import com.consum.model.po.FinSysTenantDepartment; +import com.consum.model.po.FinSysTenantUser; +import com.consum.model.po.LWhFormScrapped; +import com.consum.model.po.LWhFormScrappedGoods; +import com.consum.model.po.SDictData; import com.iplatform.model.po.S_user_core; +import com.walker.db.page.GenericPager; +import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +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 java.util.ArrayList; -import java.util.List; +import org.springframework.util.CollectionUtils; /** * @Description 鎶ュ簾鍗� @@ -23,6 +45,7 @@ */ @Service public class LWhFormScrappedServiceImpl extends BaseServiceImpl { + @Autowired private CodeGeneratorService codeGeneratorService; @Autowired @@ -33,22 +56,36 @@ private LWhGoodsService lWhGoodsService; @Autowired private LWhFormScrappedGoodsService scrappedGoodsService; + @Autowired + private SDictDataServiceImpl sDictDataService; + @Autowired + private BaseGoodsModelsServiceImpl baseGoodsModelsService; + @Autowired + private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; + @Autowired + private LWhFormScrappedCoreService lWhFormScrappedCoreService; + + private static String QUERY_LIST = "SELECT fs.* FROM l_wh_form_scrapped fs left join l_wh_form_scrapped_goods fsg on fs.id = fsg.FORM_SCRAPPED_ID WHERE 1 = 1 "; + + private static final String QUERY_BF_DETAIL_LIST = "select fs.id,fs.BUSINESS_FORM_CODE,fsg.GOODS_TEMPLATE_NAME,fsg.BASE_GOODS_MODELS_NAME,fsg.COUNTS," + + "fs.AGENCY_NAME,OPERATOR_NAME,DEAL_TIME from l_wh_form_scrapped fs " + + "inner join l_wh_form_scrapped_goods fsg on fs.ID = fsg.FORM_SCRAPPED_ID where 1=1 "; /** * 鏂板 + * * @param param - * @param sysInfo - * @param operatorUser - * @return + * @param currentUser 褰撳墠鐧诲綍鐢ㄦ埛 + * @param sysInfo 褰撳墠鐧诲綍鐢ㄦ埛 + * @return 1.鏂板鎶ュ簾鍗� 2.鏂板鎶ュ簾鍗曠墿鍝� */ - //1.鏂板鎶ュ簾鍗� - //2.鏂板鎶ュ簾鍗曠墿鍝� - public int add(LWhFormScrappedParam param, FinSysTenantUser sysInfo, S_user_core operatorUser) { + + public int add(LWhFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo) { //1.鏂板鎶ュ簾鍗曡褰� LWhFormScrapped lWhFormScrapped = new LWhFormScrapped(); - //璋冩嫧鍗昳d - long lWhFormTransferId = IdUtil.generateId(); - lWhFormScrapped.setId(lWhFormTransferId); + //鎶ュ簾鍗昳d + long lWhFormScrappedId = IdUtil.generateId(); + lWhFormScrapped.setId(lWhFormScrappedId); lWhFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped)); lWhFormScrapped.setWarehouseType(0); Long warehouseId = param.getWarehouseId(); @@ -78,28 +115,256 @@ return 0; } //2.鏂板鎶ュ簾鍗曠墿鍝佽褰� - List<LWhFormScrappedGoodsParams> scrappedGoodsParamList = param.getScrappedGoodsList(); - List<LWhFormScrappedGoods> scrappedGoodsList = new ArrayList<>(); - for (LWhFormScrappedGoodsParams params : scrappedGoodsParamList) { - LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods(); - scrappedGoods.setId(IdUtil.generateId()); - //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨 - int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0,warehouseId, scrappedGoods.getBaseGoodsModelsId(), (short) 1, null); - if (params.getCounts() > goodsNum) { - log.error("鎶ュ簾鏁伴噺澶т簬搴撳瓨鏁伴噺"); + //鏍规嵁鐗╁搧id鏌ヨ鐗╁搧 + for (LWhFormScrappedGoodsInfoParam goodsInfo : param.getScrappedGoodsInfo()) { + BaseGoodsTemplate goodsTemplate = this.baseGoodsTemplateService.get(new BaseGoodsTemplate(goodsInfo.getBaseGoodsTemplateId())); + if (goodsTemplate == null) { + log.error("璇ョ墿鍝佹ā鏉夸笉瀛樺湪"); return 0; } - scrappedGoods.setCounts(params.getCounts()); - scrappedGoods.setScrappedCode(params.getScrappedCode()); - //TODO 鎶ュ簾鍘熷洜 - scrappedGoodsList.add(scrappedGoods); + List<LWhFormScrappedGoodsModelParams> scrappedGoodsParamList = goodsInfo.getScrappedGoodsList(); + if (CollectionUtils.isEmpty(scrappedGoodsParamList)) { + log.error("鏂板鎶ュ簾鍗曠墿鍝佽褰曞け璐�"); + return 0; + } + //鑾峰彇瑙勬牸鍨嬪彿id + List<Long> baseGoodsModelsIdList = scrappedGoodsParamList.stream().map(params -> params.getBaseGoodsModelsId()).collect(Collectors.toList()); + //鏍规嵁瑙勬牸鍨嬪彿id鏌ヨ瑙勬牸鍨嬪彿 + List<BaseGoodsModels> models = this.baseGoodsModelsService.selectByModelsIdList(baseGoodsModelsIdList); + if (CollectionUtils.isEmpty(models)) { + log.error("璇ュ瀷鍙峰晢鍝佷笉瀛樺湪"); + return 0; + } + Map<Long, BaseGoodsModels> modelMap = models.stream().collect(Collectors.toMap(model -> model.getId(), model -> model)); + //鑾峰彇鎶ュ簾鍘熷洜code + List<String> scrappedCodeList = scrappedGoodsParamList.stream().map(params -> params.getScrappedCode()).collect(Collectors.toList()); + //鏍规嵁鎶ュ簾鍘熷洜code鏌ヨ鏁版嵁瀛楀吀 + List<SDictData> SDictDataList = this.sDictDataService.selectByScrappedCodeList(scrappedCodeList); + Map<Long, String> scrappedNameMap = SDictDataList.stream().collect(Collectors.toMap(s -> s.getDict_code(), s -> s.getDict_label())); + + List<LWhFormScrappedGoods> scrappedGoodsList = new ArrayList<>(); + for (LWhFormScrappedGoodsModelParams params : scrappedGoodsParamList) { + LWhFormScrappedGoods scrappedGoods = new LWhFormScrappedGoods(); + scrappedGoods.setId(IdUtil.generateId()); + //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨 + int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, scrappedGoods.getBaseGoodsModelsId(), 1, null); + if (params.getCounts() > goodsNum) { + log.error("鎶ュ簾鏁伴噺澶т簬搴撳瓨鏁伴噺"); + return 0; + } + scrappedGoods.setCounts(params.getCounts()); + //鎶ュ簾鍘熷洜 + scrappedGoods.setScrappedCode(params.getScrappedCode()); + scrappedGoods.setScrappedName(scrappedNameMap.get(Long.valueOf(params.getScrappedCode()))); + scrappedGoods.setFormScrappedId(lWhFormScrappedId); + //鐗╁搧妯℃澘 + scrappedGoods.setBaseGoodsTemplateId(goodsTemplate.getId()); + scrappedGoods.setGoodsTemplateName(goodsTemplate.getGoodsName()); + //瑙勬牸鍨嬪彿 + Long baseGoodsModelsId = params.getBaseGoodsModelsId(); + BaseGoodsModels baseGoodsModels = modelMap.get(baseGoodsModelsId); + if (baseGoodsModels != null) { + scrappedGoods.setBaseGoodsModelsId(baseGoodsModelsId); + scrappedGoods.setBaseGoodsModelsName(baseGoodsModels.getModelName()); + scrappedGoods.setUnit(baseGoodsModels.getUnit()); + } + + scrappedGoodsList.add(scrappedGoods); + } + int flag2 = this.scrappedGoodsService.insert(scrappedGoodsList); + if (flag2 != scrappedGoodsList.size()) { + log.error("鏂板鎶ュ簾鍗曠墿鍝佽褰� 澶辫触"); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return 0; + } } - int flag2 = this.scrappedGoodsService.insert(scrappedGoodsList); - if (flag2 != scrappedGoodsList.size()) { - log.error("鏂板鎶ュ簾鍗曠墿鍝佽褰�"); + //3.鏍规嵁鎶ュ簾鍗曟姤搴熺墿鍝� + Long lWarehouseFlowId = this.lWhFormScrappedCoreService.outFormByTransId(lWhFormScrappedId, currentUser, param.getDealTime()); + if (lWarehouseFlowId == null) { + log.error("鏍规嵁鍑哄簱鍗曞嚭搴� 澶辫触"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return 0; } + return 1; } + + /** + * @Description 鍒楄〃鏌ヨ + * @Author 鍗㈠簡闃� + * @Date 2023/11/2 + */ + public PageUtil queryList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) { + HashMap<String, Object> paramts = new HashMap<>(); + StringBuilder sql = new StringBuilder(QUERY_LIST); + //鎶ュ簾鍗曞彿 + if (!StringUtils.isEmpty(param.getBusinessFormCode())) { + sql.append("and BUSINESS_FORM_CODE = :businessFormCode "); + paramts.put("businessFormCode", param.getBusinessFormCode()); + } + //鐗╁搧鍚嶇О + if (!StringUtils.isEmpty(param.getGoodsTemplateName())) { + sql.append("and fsg.GOODS_TEMPLATE_NAME LIKE :goodsTemplateName "); + paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); + } + //鏈烘瀯 + sql.append("and AGENCY_ID like :agencyId "); + if (param.getAgencyId() != null) { + paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT); + } else { + paramts.put("agencyId", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT); + } + //鎶ュ簾鏃堕棿 + if (param.getStartTime() != null) { + sql.append("and DEAL_TIME >=:dealTimeStart "); + paramts.put("dealTimeStart", param.getStartTime() * 1000000); + } + if (param.getEndTime() != null) { + sql.append("and DEAL_TIME <:dealTimeEnd "); + paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000); + } + + sql.append("ORDER BY DEAL_TIME DESC"); + GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormScrapped()); + return new PageUtil(genericPager); + } + + /** + * @Description 鏍规嵁id鏌ヨ璇︽儏 + * @Author 鍗㈠簡闃� + * @Date 2023/11/2 + */ + public LWhFormScrappedExtendVO getById(Long id) { + LWhFormScrappedExtendVO scrappedExtend = new LWhFormScrappedExtendVO(); + //1.鏌ヨ鎶ュ簾鍗� + LWhFormScrapped lWhFormScrapped = this.get(new LWhFormScrapped(id)); + if (lWhFormScrapped != null) { + BeanUtils.copyProperties(lWhFormScrapped, scrappedExtend); + } + //2.鏌ヨ鎶ュ簾鍗� + List<LWhFormScrappedGoods> scrappedGoodsList = this.scrappedGoodsService.getByFormScrappedId(id); + //閫氳繃baseGoodsTemplateId 杩涜鍒嗙粍 + Map<Long, List<LWhFormScrappedGoods>> map = scrappedGoodsList.stream().collect(Collectors.groupingBy(LWhFormScrappedGoods::getBaseGoodsTemplateId)); + //寰幆map鐨刱ey鍜寁alue + List<FormScrappedGoodsVO> scrappedGoodsVO = Lists.newArrayList(); + for (Map.Entry<Long, List<LWhFormScrappedGoods>> entry : map.entrySet()) { + Long baseGoodsTemplateId = entry.getKey(); + List<LWhFormScrappedGoods> goodsList = entry.getValue(); + LWhFormScrappedGoods lWhFormScrappedGoods = goodsList.stream().findFirst().get(); + FormScrappedGoodsVO formScrappedGoodsVO = new FormScrappedGoodsVO(); + formScrappedGoodsVO.setBaseGoodsTemplateId(baseGoodsTemplateId); + formScrappedGoodsVO.setGoodsName(lWhFormScrappedGoods.getGoodsTemplateName()); + + List<GoodsModelVO> goodsModelList = Lists.newArrayList(); + goodsList.forEach(item -> { + GoodsModelVO goodsModelVO = new GoodsModelVO(); + goodsModelVO.setId(item.getId()); + goodsModelVO.setBaseGoodsModelsName(item.getBaseGoodsModelsName()); + goodsModelVO.setUnit(item.getUnit()); + goodsModelVO.setCounts(item.getCounts()); + goodsModelVO.setBaseGoodsModelsId(item.getBaseGoodsModelsId()); + goodsModelVO.setScrappedName(item.getScrappedName()); + goodsModelList.add(goodsModelVO); + }); + formScrappedGoodsVO.setModels(goodsModelList); + scrappedGoodsVO.add(formScrappedGoodsVO); + + } + scrappedExtend.setScrappedGoods(scrappedGoodsVO); + return scrappedExtend; + } + + /** + * 鎶ュ簾鏄庣粏 + * + * @param param + * @return + */ + public PageUtil queryDetailList(LWhFormScrappedQry param, FinSysTenantUser sysInfo) { + StringBuilder sql = new StringBuilder(QUERY_BF_DETAIL_LIST); + HashMap<String, Object> paramts = new HashMap<>(); + + //鎶ュ簾鍗曞彿 + if (!StringUtils.isEmpty(param.getBusinessFormCode())) { + sql.append("and BUSINESS_FORM_CODE =:BUSINESS_FORM_CODE "); + paramts.put("BUSINESS_FORM_CODE", param.getBusinessFormCode()); + } + //鐗╁搧鍚嶇О + if (!StringUtils.isEmpty(param.getGoodsTemplateName())) { + sql.append("and GOODS_TEMPLATE_NAME like:GOODS_TEMPLATE_NAME "); + paramts.put("GOODS_TEMPLATE_NAME", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); + } + //瑙勬牸鍨嬪彿 + if (param.getBaseGoodsModelsId() != null) { + sql.append("and BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID "); + paramts.put("BASE_GOODS_MODELS_ID", param.getBaseGoodsModelsId()); + } + //鏈烘瀯 + sql.append("and AGENCY_ID like:AGENCY_ID "); + if (param.getAgencyId() != null) { + paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT); + } else { + paramts.put("AGENCY_ID", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT); + } + //鍒涘缓浜� + if (!StringUtils.isEmpty(param.getOperatorName())) { + sql.append("and OPERATOR_NAME =:OPERATOR_NAME "); + paramts.put("OPERATOR_NAME", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT); + } + + //缁撴潫鏃堕棿 + if (param.getStartTime() != null) { + sql.append("and DEAL_TIME >=:dealTimeStart "); + paramts.put("dealTimeStart", param.getStartTime() * 1000000); + } + if (param.getEndTime() != null) { + sql.append("and DEAL_TIME <:dealTimeEnd "); + paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000); + } + + sql.append("ORDER BY DEAL_TIME DESC "); + GenericPager<Map<String, Object>> mapGenericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil()); + PageUtil pageUtil = new PageUtil<>(mapGenericPager); + List<FormScrappedGoodsDetailVO> result = Lists.newArrayList(); + mapGenericPager.getDatas().forEach(item -> { + FormScrappedGoodsDetailVO formScrappedGoodsDetailVO = MapUtils.convertMapToObj(item, FormScrappedGoodsDetailVO.class); + result.add(formScrappedGoodsDetailVO); + }); + pageUtil.setDatas(result); + return pageUtil; + } + + public List<Map<String, Object>> export(Long id) { + + String sql = + "SELECT BUSINESS_FORM_CODE, fs.DEAL_TIME, OPERATOR_NAME, AGENCY_NAME, GOODS_TEMPLATE_NAME, BASE_GOODS_MODELS_NAME, DEPARTMENT_NAME, COUNTS, SCRAPPED_NAME, BEIZ " + + "FROM l_wh_form_scrapped_goods fsg LEFT JOIN l_wh_form_scrapped fs ON fs.id = fsg.FORM_SCRAPPED_ID WHERE " + + "fs.ID = :id and STATES = 1"; + Map<String, Object> param = new HashMap<>(); + param.put("id", id); + List<Map<String, Object>> select = this.select(sql, param, new MapperUtil()); + return select; + } + + /** + * @Description 瀵煎嚭鎶ュ簾鐧昏鍗� + * @Author 鍗㈠簡闃� + * @Date 2023/11/2 + */ +// public LWhFormScrappedExtendVO export(Long id, FinSysTenantUser sysInfo) { +// LWhFormScrappedExtendVO scrappedExtend = new LWhFormScrappedExtendVO(); +// //1.鏌ヨ鎶ュ簾鍗� +// LWhFormScrapped lWhFormScrapped = this.get(new LWhFormScrapped(id)); +// if (lWhFormScrapped != null) { +// lWhFormScrapped.setDealTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); +// lWhFormScrapped.setOperatorName(sysInfo.getUserName()); +// BeanUtils.copyProperties(lWhFormScrapped, scrappedExtend); +// } +// //2.鏌ヨ鎶ュ簾鍗曠墿鍝� +// List<LWhFormScrappedGoods> scrappedGoodsList = this.scrappedGoodsService.getByFormScrappedId(id); +// if (!CollectionUtils.isEmpty(scrappedGoodsList)) { +// scrappedExtend.setScrappedGoodsList(scrappedGoodsList); +// } +// return scrappedExtend; +// } } -- Gitblit v1.9.1