From b4adff68a07b783fc90da1c9370d8be5f383e700 Mon Sep 17 00:00:00 2001 From: 黎星凯 <13949086503@163.com> Date: 星期三, 08 五月 2024 13:46:34 +0800 Subject: [PATCH] 20240528修改: bug41、42、43修改 领用单(分发单),调拨单,流程优化 --- consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java | 216 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 150 insertions(+), 66 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java index a28a846..ba8e8dc 100644 --- a/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java +++ b/consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java @@ -9,19 +9,18 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; - import javax.servlet.http.HttpServletResponse; - +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.consum.base.util.ExcelStyleUtil; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.ObjectUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; import com.consum.base.BaseController; import com.consum.base.core.WhBusinessEnum; import com.consum.base.core.type.StatesType; @@ -62,7 +61,6 @@ import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.DateUtils; import com.walker.web.ResponseValue; - import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.util.ReflectUtil; @@ -104,6 +102,7 @@ @ApiOperation(value = "鍗曟嵁鏂板", notes = "鍗曟嵁鏂板") @ApiImplicitParam(name = "param", value = "鍗曟嵁鏂板", required = true, dataType = "LWhFormTransferParam") @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) public ResponseValue add() throws Exception { LWhFormTransferParam param = CommonUtil.getObjFromReqBody(LWhFormTransferParam.class); LWhFormTransferParam param2 = new LWhFormTransferParam(); @@ -118,24 +117,31 @@ if (CollectionUtils.isEmpty(transferGoods)) { return ResponseValue.error("璋冩嫧鍗曚笉鑳戒负绌�"); } - long id = this.lWhFormTransferService.add(param, this.getSysInfo()); + long id = this.lWhFormTransferService.add(param, this.getSysInfo(), StrUtil.isEmpty(param.getProcureDoc())); + if(id == -1L){ + return ResponseValue.error("鎮ㄤ笉鏄簱绠″憳"); + } + if(id == -2L){ + return ResponseValue.error("浠撳簱涓嶅瓨鍦�"); + } Integer transferBusinessType = param.getTransferBusinessType(); // 閮ㄩ棬鍒嗗彂涓氬姟闇�瑕佸鐞� - if (transferBusinessType == 1) { + // todo 鎷嗗垎 鏂伴�昏緫 + if (transferBusinessType == 1 && !StrUtil.isEmpty(param.getProcureDoc())) { // 鍏堝嚭搴擄紝鍐嶅叆搴� // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱 List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.BUMENFENFA, id); Set<Long> baseModelIds = - modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet()); + modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet()); FinSysTenantUser sysTenantUser = this.getSysInfo(); String agencyId = sysTenantUser.getTenantId(); List<BaseWarehouse> baseWarehouseList = - baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue()); + baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue()); Set<Long> wareHouseIds = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toSet()); // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆 - List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds,null); + List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds, null); GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null); if (ObjectUtils.isEmpty(goodsInfoDTO)) { return ResponseValue.error("璇ュ瀷鍙锋病鏈夊簱瀛樺彲浣跨敤"); @@ -147,27 +153,101 @@ lWhFormTransfer.setOutWarehouseId(wareHouseId); lWhFormTransfer.setOutWarehouseName(warehouseName); lWhFormTransferService.update(lWhFormTransfer); - lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA); - + Long l = lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA); + if(l == -1L){ + return ResponseValue.error("浠撳簱鏁伴噺涓嶈冻"); + } lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), param.getOperatorName()); } return ResponseValue.success(); } + + /** + * 涓婁紶鍒嗗彂鍗曪紙娴佺▼淇敼锛� + * + * @param idStr 璋冩嫧鍗昳d json + * @return + * @throws Exception + */ + @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"),}) + @Transactional(rollbackFor = Exception.class) + @PostMapping("import") + public ResponseValue upload(@RequestBody String idStr) throws Exception { + Map<String, Object> map = JSONObject.parseObject(idStr, Map.class); + String type = map.get("type").toString(); + Long id = Convert.toLong(map.get("idStr")); + String procureDoc = map.get("procureDoc").toString(); + // [璋冩嫧] + if ("0".equals(type)) { + // 淇敼 + LWhFormTransfer addLWhFormTransfer = new LWhFormTransfer(); + addLWhFormTransfer.setId(id); + addLWhFormTransfer.setProcureDoc(procureDoc); + int update = lWhFormTransferService.update(addLWhFormTransfer); + if (update < 1) { + return ResponseValue.error(); + } + return ResponseValue.success(); + } + + // [鍒嗗彂] + Long opTime = Convert.toLong(map.get("opTime")); + // 淇敼琛ㄧ殑鏂囦欢閫昏緫 + LWHFromTransferExtendVO lwhFromTransferExtendVO = lWhFormTransferService.getById(id); + // 淇敼 + LWhFormTransfer addLWhFormTransfer = new LWhFormTransfer(); + addLWhFormTransfer.setId(id); + addLWhFormTransfer.setProcureDoc(procureDoc); + addLWhFormTransfer.setInTime(opTime); + addLWhFormTransfer.setOutputTime(opTime); + int update = lWhFormTransferService.update(addLWhFormTransfer); + if (update < 1) { + return ResponseValue.error(); + } + // 涓诲垎鍙戦�昏緫 + // 鍏堝嚭搴擄紝鍐嶅叆搴� + // 鍑哄簱鍓� 璁剧疆鍑哄簱浠撳簱 + List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.BUMENFENFA, id); + Set<Long> baseModelIds = + modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet()); + FinSysTenantUser sysTenantUser = this.getSysInfo(); + String agencyId = sysTenantUser.getTenantId(); + List<BaseWarehouse> baseWarehouseList = + baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue()); + Set<Long> wareHouseIds = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toSet()); + // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆 + List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds, null); + GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null); + if (ObjectUtils.isEmpty(goodsInfoDTO)) { + return ResponseValue.error("璇ュ瀷鍙锋病鏈夊簱瀛樺彲浣跨敤"); + } + Long wareHouseId = goodsInfoDTO.getWarehouseId(); + String warehouseName = goodsInfoDTO.getWarehouseName(); + LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id); + lWhFormTransfer.setOutWarehouseId(wareHouseId); + lWhFormTransfer.setOutWarehouseName(warehouseName); + lWhFormTransferService.update(lWhFormTransfer); + lWhFormTransferCoreService.doTransferOutPutNew(id, getCurrentUser(), WhBusinessEnum.BUMENFENFA); + lWhFormTransferCoreService.doTransferInPut(id, getCurrentUser(), lwhFromTransferExtendVO.getOperatorName()); + return ResponseValue.success(); + } + + /** * @Description 鍒楄〃鏌ヨ(璋冩嫧鏄庣粏) * @Author 鍗㈠簡闃� * @Date 2023/10/30 - * <p> - * 1.鏌ヨ璋冩嫧鍗� - * <p> - * 2.鏌ヨ鐗╁搧鍨嬪彿 + * <p> + * 1.鏌ヨ璋冩嫧鍗� + * <p> + * 2.鏌ヨ鐗╁搧鍨嬪彿 */ @ApiOperation(value = "鍗曟嵁鍒楄〃鏌ヨ", notes = "鍗曟嵁鍒楄〃鏌ヨ") @ApiImplicitParams({@ApiImplicitParam(name = "page", value = "椤电爜", required = true, dataType = "int"), - @ApiImplicitParam(name = "size", value = "姣忛〉鏉℃暟", required = true, dataType = "int"), - @ApiImplicitParam(name = "param", value = "鏉′欢鍙傛暟", required = true, dataType = "TransferQry"),}) + @ApiImplicitParam(name = "size", value = "姣忛〉鏉℃暟", required = true, dataType = "int"), + @ApiImplicitParam(name = "param", value = "鏉′欢鍙傛暟", required = true, dataType = "TransferQry"),}) @GetMapping("/list") public ResponseValue queryFormTransferList() { TransferQry param = CommonUtil.getObjFromReq(TransferQry.class); @@ -190,7 +270,7 @@ // 鏌ヨ鍨嬪彿鏁伴噺 List<GoodsTemplateCountVO> goodsTemplateCount = - lWhProcureModelService.getGoodsTemplateCountByBusinessId(item.getId()); + lWhProcureModelService.getGoodsTemplateCountByBusinessId(item.getId()); formTransferVO.setFromTransferTemplateInfoList(goodsTemplateCount); result.add(formTransferVO); @@ -293,16 +373,16 @@ List<LWhProcureModel> modelByForm = lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id); Set<Long> baseModelIds = - modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet()); + modelByForm.stream().map(LWhProcureModel::getBaseGoodsModelsId).collect(Collectors.toSet()); FinSysTenantUser sysTenantUser = this.getSysInfo(); String agencyId = sysTenantUser.getTenantId(); List<BaseWarehouse> baseWarehouseList = - baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue()); + baseWarehouseService.getBaseWareHouseList(Long.valueOf(agencyId), StatesType.NORMAL.getValue()); Set<Long> wareHouseIds = baseWarehouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toSet()); // 閫氳繃璋冩嫧鍗曚腑鐨勫瀷鍙穒d鏌ヨ鍑鸿鍨嬪彿鐗╁搧鎵�鍦ㄧ殑浠撳簱浣嶇疆 - List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds,1); + List<GoodsInfoDTO> goodsInfoDTOS = lWhGoodsService.queryGoodsInfo(baseModelIds, wareHouseIds, 1); GoodsInfoDTO goodsInfoDTO = goodsInfoDTOS.stream().findFirst().orElse(null); if (ObjectUtils.isEmpty(goodsInfoDTO)) { return ResponseValue.error("璇ュ瀷鍙锋病鏈夊簱瀛樺彲浣跨敤"); @@ -320,26 +400,30 @@ @ApiOperation(value = "璋冩嫧鍗曞鍑�", notes = "璋冩嫧鍗曞鍑�") @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "璋冩嫧鍗昳d", required = true, dataType = "Long"), - @ApiImplicitParam(name = "type", value = "瀵煎嚭绫诲瀷 1 鍏ュ簱 2 鍑哄簱", required = true, dataType = "Integer"),}) + @ApiImplicitParam(name = "type", value = "瀵煎嚭绫诲瀷 1 鍏ュ簱 2 鍑哄簱", required = true, dataType = "Integer"),}) @GetMapping("/list/export") public ResponseValue<String> export(Long id, Integer type, HttpServletResponse response) throws Exception { TemplateExportParams params; String fileName; - if (type == 1) { + if (type == 0) { params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�.xls"); + fileName = "璋冩嫧鍏ュ簱鍗�"; + }else if (type == 1) { + params = new TemplateExportParams("import/璋冩嫧鍏ュ簱鍗�1.xls"); fileName = "璋冩嫧鍏ュ簱鍗�"; } else { params = new TemplateExportParams("import/璋冩嫧鍑哄簱鍗�.xls"); fileName = "璋冩嫧鍑哄簱鍗�"; } params.setHeadingStartRow(2); + params.setStyle(ExcelStyleUtil.class); List<TransferExcelTemplate> export = this.lWhFormTransferService.export(id, type); int countNum = - export.stream().filter(item -> item.getNum() != null).mapToInt(TransferExcelTemplate::getNum).sum(); + export.stream().filter(item -> item.getNum() != null).mapToInt(TransferExcelTemplate::getNum).sum(); double totalAmount = export.stream().filter(item -> item.getTotalAmount() != null) - .mapToDouble(TransferExcelTemplate::getAmount).sum(); + .mapToDouble(TransferExcelTemplate::getAmount).sum(); Optional<TransferExcelTemplate> first = export.stream().findFirst(); TransferExcelTemplate entity = first.get(); String businessFormCode = entity.getBusinessFormCode(); @@ -385,7 +469,7 @@ param.setOutAgencyId(Long.valueOf(tenantId)); } GenericPager<Map<String, Object>> transferInfoDetailsVoGenericPager = - this.lWhFormTransferService.queryTransferInfo(param); + this.lWhFormTransferService.queryTransferInfo(param); return ResponseValue.success(transferInfoDetailsVoGenericPager); } @@ -408,7 +492,7 @@ } Map<Long, List<ProcureModelInfoParam>> collect = param.getRecordInfoList().stream() - .collect(Collectors.groupingBy(ProcureModelInfoParam::getBaseGoodModelId)); + .collect(Collectors.groupingBy(ProcureModelInfoParam::getBaseGoodModelId)); for (Map.Entry<Long, List<ProcureModelInfoParam>> entry : collect.entrySet()) { Long baseGoodModelId = entry.getKey(); @@ -441,7 +525,7 @@ // 璁剧疆涓�涓嬪湪鐢ㄦ暟閲� Long oldProcureModelId = item.getOldProcureModelId(); LWhProcureModelUser oldInfo = - lWhProcureModelUserService.get(new LWhProcureModelUser(oldProcureModelId)); + lWhProcureModelUserService.get(new LWhProcureModelUser(oldProcureModelId)); lWhProcureModelUser.setUseCount(oldInfo.getUseCount()); procureModelUserList.add(lWhProcureModelUser); } @@ -476,52 +560,52 @@ } List<GoodsUseRecordVO> goodsUseRecordList = useRecordDTOList.stream() - .collect(Collectors.groupingBy(UseRecordDTO::getId)).entrySet().stream().map(entry -> { - Long id = entry.getKey(); - List<UseRecordDTO> useRecordList = entry.getValue(); - UseRecordDTO useRecordDto = useRecordList.get(0); + .collect(Collectors.groupingBy(UseRecordDTO::getId)).entrySet().stream().map(entry -> { + Long id = entry.getKey(); + List<UseRecordDTO> useRecordList = entry.getValue(); + UseRecordDTO useRecordDto = useRecordList.get(0); - GoodsUseRecordVO goodsUseRecordVO = new GoodsUseRecordVO(); - goodsUseRecordVO.setId(id); - goodsUseRecordVO.setUpdateUserName(useRecordDto.getUpdateUserName()); - goodsUseRecordVO.setUpdateTime(useRecordDto.getUpdateTime()); + GoodsUseRecordVO goodsUseRecordVO = new GoodsUseRecordVO(); + goodsUseRecordVO.setId(id); + goodsUseRecordVO.setUpdateUserName(useRecordDto.getUpdateUserName()); + goodsUseRecordVO.setUpdateTime(useRecordDto.getUpdateTime()); - List<UseRecordSkuVO> useRecordSkuList = - useRecordList.stream().collect(Collectors.groupingBy(UseRecordDTO::getProcureModelId)).values() - .stream().map(recordList -> { - UseRecordDTO useRecordDTO = recordList.get(0); - UseRecordSkuVO useRecordSkuVO = new UseRecordSkuVO(); - useRecordSkuVO.setBaseGoodModelId(useRecordDTO.getBaseGoodsModelsId()); - useRecordSkuVO.setBaseGoodModelName(useRecordDTO.getBaseGoodsModelsName()); - useRecordSkuVO.setUnit(useRecordDTO.getUnit()); - useRecordSkuVO.setProcureModelId(useRecordDTO.getProcureModelId()); + List<UseRecordSkuVO> useRecordSkuList = + useRecordList.stream().collect(Collectors.groupingBy(UseRecordDTO::getProcureModelId)).values() + .stream().map(recordList -> { + UseRecordDTO useRecordDTO = recordList.get(0); + UseRecordSkuVO useRecordSkuVO = new UseRecordSkuVO(); + useRecordSkuVO.setBaseGoodModelId(useRecordDTO.getBaseGoodsModelsId()); + useRecordSkuVO.setBaseGoodModelName(useRecordDTO.getBaseGoodsModelsName()); + useRecordSkuVO.setUnit(useRecordDTO.getUnit()); + useRecordSkuVO.setProcureModelId(useRecordDTO.getProcureModelId()); - List<RecordUserInfoVO> recordUserInfoList = recordList.stream().map(userInfo -> { - RecordUserInfoVO recordUserInfoVO = new RecordUserInfoVO(); - recordUserInfoVO.setOldProcureModelId(userInfo.getOldProcureModelId()); - recordUserInfoVO.setUseName(userInfo.getUseName()); - recordUserInfoVO.setPhone(userInfo.getPhone()); - recordUserInfoVO.setNum(userInfo.getNum()); - return recordUserInfoVO; - }).collect(Collectors.toList()); + List<RecordUserInfoVO> recordUserInfoList = recordList.stream().map(userInfo -> { + RecordUserInfoVO recordUserInfoVO = new RecordUserInfoVO(); + recordUserInfoVO.setOldProcureModelId(userInfo.getOldProcureModelId()); + recordUserInfoVO.setUseName(userInfo.getUseName()); + recordUserInfoVO.setPhone(userInfo.getPhone()); + recordUserInfoVO.setNum(userInfo.getNum()); + return recordUserInfoVO; + }).collect(Collectors.toList()); - useRecordSkuVO.setRecordUserInfos(recordUserInfoList); - return useRecordSkuVO; - }).collect(Collectors.toList()); + useRecordSkuVO.setRecordUserInfos(recordUserInfoList); + return useRecordSkuVO; + }).collect(Collectors.toList()); - goodsUseRecordVO.setRecordSkuDtoList(useRecordSkuList); - return goodsUseRecordVO; + goodsUseRecordVO.setRecordSkuDtoList(useRecordSkuList); + return goodsUseRecordVO; - }).sorted(Comparator.comparing(GoodsUseRecordVO::getUpdateTime, Comparator.nullsFirst(Long::compareTo)) - .reversed()) - .collect(Collectors.toList()); + }).sorted(Comparator.comparing(GoodsUseRecordVO::getUpdateTime, Comparator.nullsFirst(Long::compareTo)) + .reversed()) + .collect(Collectors.toList()); return ResponseValue.success(goodsUseRecordList); } @ApiOperation(value = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�", notes = "鏌ヨ閮ㄩ棬涓嬬殑鍒嗗彂鍗�") @ApiImplicitParams({ - @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")}) + @ApiImplicitParam(name = "agencyId", value = "鏈烘瀯id", required = true, dataType = "Long", paramType = "query")}) @GetMapping("/query/transfList") public ResponseValue queryDepartmentTransferOrderList() { -- Gitblit v1.9.1