From 3be9cfcb6b59366b936821966d20a998a6895f9f Mon Sep 17 00:00:00 2001 From: 黎星凯 <13949086503@163.com> Date: 星期二, 30 四月 2024 14:38:13 +0800 Subject: [PATCH] bug41、42修改 --- consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java | 190 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 142 insertions(+), 48 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java index f5a6218..e6538a8 100644 --- a/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java +++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java @@ -1,5 +1,6 @@ package com.consum.base.controller; +import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; @@ -18,27 +19,32 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.alibaba.excel.EasyExcelFactory; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.exception.ExcelDataConvertException; import com.consum.base.BaseController; import com.consum.base.core.utils.CommonUtil; -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.LWhFormProcureGoodsInfoParam; import com.consum.base.pojo.LWhFormProcureParam; +import com.consum.base.pojo.dto.GoodModelInfoDTO; +import com.consum.base.pojo.excel.ImportProcureOrderTemplate; import com.consum.base.pojo.excel.ProcureExcelTemplate; import com.consum.base.pojo.query.FormProcureQry; import com.consum.base.pojo.response.FormProcureVO; import com.consum.base.pojo.response.GoodsModelVO; import com.consum.base.pojo.response.GoodsTemplateCountVO; +import com.consum.base.pojo.response.GoodsTemplateInfoVO; import com.consum.base.pojo.response.LWhFormProcureExtendVO; -import com.consum.base.pojo.response.LWhFormProcureGoodsVO; -import com.consum.base.service.BaseGoodsTemplateService; -import com.consum.base.service.LWhFormProcureCoreService; +import com.consum.base.service.BaseCategoryService; import com.consum.base.service.LWhFormProcureGoodsService; import com.consum.base.service.LWhFormProcureService; import com.consum.base.service.LWhProcureModelService; -import com.consum.model.po.BaseGoodsTemplate; +import com.consum.base.service.core.LWhFormProcureCoreService; +import com.consum.model.po.BaseCategory; import com.consum.model.po.FinSysTenantUser; import com.consum.model.po.LWhFormProcure; import com.consum.model.po.LWhFormProcureGoods; @@ -74,9 +80,9 @@ @Resource private LWhFormProcureCoreService lWhFormProcureCoreService; @Resource - private BaseGoodsTemplateService baseGoodsTemplateService; - @Resource private LWhProcureModelService lWhProcureModelService; + @Resource + private BaseCategoryService baseCategoryService; /** * @Description 鏂板 @@ -145,8 +151,6 @@ } try { Field fieldDatas = GenericPager.class.getDeclaredField("datas"); - // fieldDatas.setAccessible(true); - // fieldDatas.set(genericPager, result); ReflectUtil.setFieldValue(genericPager, fieldDatas, result); } catch (Exception e) { e.printStackTrace(); @@ -212,7 +216,7 @@ * 鏍规嵁id鏌ヨ璇︽儏 */ @GetMapping("/detail") - public ResponseValue getById(Long id) throws IllegalAccessException { + public ResponseValue getById(Long id) throws Exception { if (id == null) { return ResponseValue.error("閲囪喘鍗昳d涓虹┖"); } @@ -228,43 +232,47 @@ lWhFormProcureGoods.setWhFormProcureId(id); List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsServiceImpl.select(lWhFormProcureGoods); - // Field fieldModels = null; - // try { - // fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models"); - // } catch (NoSuchFieldException e) { - // e.printStackTrace(); - // } - // fieldModels.setAccessible(true); - ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>(); + List<GoodsTemplateInfoVO> goodsTemplateInfoList = new ArrayList<>(); for (LWhFormProcureGoods formProcureGood : formProcureGoods) { - LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO(); - BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsVO); + GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO(); + BeanUtils.copyProperties(formProcureGood, goodsTemplateInfoVO); - Long baseGoodsTemplateId = formProcureGood.getBaseGoodsTemplateId(); - BaseGoodsTemplate queryEntity = new BaseGoodsTemplate(); - queryEntity.setId(baseGoodsTemplateId); - BaseGoodsTemplate baseGoodsTemplate = baseGoodsTemplateService.get(queryEntity); - lWhFormProcureGoodsVO.setBaseCategoryName(baseGoodsTemplate.getCategoryName()); - // 鏌ヨ鍨嬪彿鏁伴噺 - Map<String, Object> paramMap = new HashMap<>(); - paramMap.put("formProcureGoodId", formProcureGood.getId()); - String sql = "SELECT\n" - + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit " - + "FROM\n" + "\tl_wh_procure_model pm\n" - + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId"; - List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil()); - List<GoodsModelVO> goodsModelVOList = Lists.newArrayList(); - procureModelList.forEach(item -> { - GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class); - goodsModelVOList.add(goodsModelVO); - }); - // fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList); - ReflectUtil.setFieldValue(lWhFormProcureGoodsVO, "models", goodsModelVOList); + List<GoodModelInfoDTO> goodsModelInfoList = + lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId()); + if (CollectionUtils.isEmpty(goodsModelInfoList)) { + continue; + } + GoodModelInfoDTO goodModelInfoDTO = goodsModelInfoList.stream().findFirst().orElse(null); + if (goodModelInfoDTO != null) { + goodsTemplateInfoVO.setBaseCategoryName(goodModelInfoDTO.getCategoryName()); + } + List<GoodsModelVO> goodsModelList = Lists.newArrayList(); + for (GoodModelInfoDTO goodModelInfo : goodsModelInfoList) { + GoodsModelVO goodsModelVO = getGoodsModelVO(goodModelInfo); + goodsModelList.add(goodsModelVO); + } - procureGoodsVOList.add(lWhFormProcureGoodsVO); + ReflectUtil.setFieldValue(goodsTemplateInfoVO, "models", goodsModelList); + + goodsTemplateInfoList.add(goodsTemplateInfoVO); } - lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList); + lWhFormProcureExtendVO.setProcureGoods(goodsTemplateInfoList); return ResponseValue.success("鏌ヨ鎴愬姛!", lWhFormProcureExtendVO); + } + + private GoodsModelVO getGoodsModelVO(GoodModelInfoDTO goodModelInfo) { + GoodsModelVO goodsModelVO = new GoodsModelVO(); + + goodsModelVO.setId(goodModelInfo.getId()); + goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName()); + goodsModelVO.setUnit(goodModelInfo.getUnit()); + goodsModelVO.setCounts(goodModelInfo.getCounts()); + goodsModelVO.setTotalAmount( + goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null); + goodsModelVO.setWorehouseCount(goodModelInfo.getWorehouseCount()); + goodsModelVO.setPrice(goodModelInfo.getPrice()); + goodsModelVO.setBaseGoodsModelsId(goodModelInfo.getBaseGoodsModelsId()); + return goodsModelVO; } @ApiOperation(value = "閲囪喘鍗曟槑缁嗘煡璇�", notes = "閲囪喘鍗曟槑缁嗘煡璇�") @@ -277,11 +285,11 @@ CommonUtil.copyProperties(formProcureQry, param2); formProcureQry = param2; - S_user_core currentUser = this.getCurrentUser(); - if (currentUser == null) { + FinSysTenantUser sysInfo = this.getSysInfo(); + if (sysInfo == null) { return ResponseValue.error("鐧诲綍鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); } - + // formProcureQry.setAgencyId(Long.valueOf(sysInfo.getTenantId())); GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(formProcureQry); return ResponseValue.success(genericPager); } @@ -290,7 +298,7 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "閲囪喘鍗昳d", required = true, dataType = "Long", paramType = "query")}) @GetMapping("/list/export") - public void export(Long id, HttpServletResponse response) throws Exception { + public ResponseValue<String> export(Long id, HttpServletResponse response) throws Exception { TemplateExportParams params = new TemplateExportParams("import/閲囪喘鍏ュ簱鍗�.xls"); params.setHeadingStartRow(2); FinSysTenantUser sysInfo = this.getSysInfo(); @@ -321,7 +329,93 @@ map.put("totalAmount", totalAmount); Workbook workbook = ExcelExportUtil.exportExcel(params, ProcureExcelTemplate.class, exportList, map); - downLoadExcel("閲囪喘鍏ュ簱鍗�", response, workbook); + String filePath = downLoadExcel("閲囪喘鍏ュ簱鍗�", workbook); + return ResponseValue.success("瀵煎嚭鎴愬姛", filePath); } + + @ApiOperation(value = "閲囪喘鍗曞鍏�", notes = "閲囪喘鍗曞鍏�") + @PostMapping("/import") + public ResponseValue upload(MultipartFile file) throws IOException { + String originalFilename = file.getOriginalFilename(); + if (!".xls".endsWith(originalFilename)) { + return ResponseValue.error("鏂囦欢鏍煎紡鏈夎!"); + } + FinSysTenantUser sysInfo = this.getSysInfo(); + if (sysInfo == null) { + return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖"); + } + EasyExcelFactory.read(file.getInputStream(), ImportProcureOrderTemplate.class, + new AnalysisEventListener<ImportProcureOrderTemplate>() { + List<LWhFormProcureParam> list = Lists.newArrayList(); + + @Override + public void invoke(ImportProcureOrderTemplate data, AnalysisContext analysisContext) { + String categoryOne = data.getCategoryOne(); + String categoryTwo = data.getCategoryTwo(); + String categoryThree = data.getCategoryThree(); + String goodsName = data.getGoodsName(); + String goodModelName = data.getGoodModelName(); + String unit = data.getUnit(); + String type = data.getType(); + String agencyName = data.getAgencyName(); + String warehouseName = data.getWarehouseName(); + String supplierName = data.getSupplierName(); + String price = data.getPrice(); + String num = data.getNum(); + + BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree); + Long categoryId = baseCategory.getId(); + + // Optional<BaseGoodsTemplateParam> optional = + // list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst(); + // + // if (optional.isPresent()) { + // BaseGoodsModels baseGoodsModels = new BaseGoodsModels(); + // baseGoodsModels.setModelName(goodModelName); + // baseGoodsModels.setUnit(unit); + // optional.get().getModels().add(baseGoodsModels); + // } else { + // BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam(); + // baseGoodsTemplate.setCategoryId(categoryId); + // baseGoodsTemplate.setGoodsName(goodsName); + // baseGoodsTemplate.setStates(1); + // FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName); + // baseGoodsTemplate.setAgencyId(finSysTenant.getId()); + // baseGoodsTemplate.setAgencyName(agencyName); + // + // List<BaseGoodsModels> models = new ArrayList<>(); + // BaseGoodsModels baseGoodsModels = new BaseGoodsModels(); + // baseGoodsModels.setModelName(goodModelName); + // baseGoodsModels.setUnit(unit); + // models.add(baseGoodsModels); + // baseGoodsTemplate.setModels(models); + // + // list.add(baseGoodsTemplate); + // } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + for (LWhFormProcureParam procureParam : list) { + // lWhFormProcureService.add(procureParam, null); + } + } + + @Override + public void onException(Exception exception, AnalysisContext analysisContext) throws Exception { + if (exception instanceof ExcelDataConvertException) { + ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception; + Integer row = excelDataConvertException.getRowIndex() + 1; + Integer column = excelDataConvertException.getColumnIndex() + 1; + throw new RuntimeException("绗�" + row + "琛岋紝绗�" + column + "鍒楄В鏋愬紓甯革紝璇锋纭~鍐�"); + } else { + throw new RuntimeException(exception.getMessage()); + } + } + }).sheet(0).doRead(); + + return ResponseValue.success("瀵煎叆鎴愬姛!"); + } + } -- Gitblit v1.9.1