From 91d224b18c3f5497ab13fefacdc7d58c0d43509c Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Sat, 24 Aug 2024 15:18:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=EF=BC=9A?= =?UTF-8?q?=201.=E5=A2=9E=E5=8A=A0CLC=E9=9C=80=E6=B1=82=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wms/controller/ExcelController.java | 42 +++++++++++++++- .../controller/KateWorkQueryController.java | 50 +++++++++++-------- .../excel/vo/ClcKanbanRequirementExcelVo.java | 1 + .../com/wms/utils/excel/vo/KanbanExcelVo.java | 34 +++++++++++++ 4 files changed, 105 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/wms/controller/ExcelController.java b/src/main/java/com/wms/controller/ExcelController.java index 2799582..67fb5b5 100644 --- a/src/main/java/com/wms/controller/ExcelController.java +++ b/src/main/java/com/wms/controller/ExcelController.java @@ -10,6 +10,8 @@ import com.wms.annotation.MyLog; import com.wms.constants.enums.*; import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.dto.PageDto; +import com.wms.entity.app.dto.StockOfGoodsDto; +import com.wms.entity.app.dto.extend.KanbanEntity; import com.wms.entity.app.request.*; import com.wms.entity.app.vo.FileVo; import com.wms.entity.app.vo.LocationVo; @@ -36,10 +38,14 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Objects; import static com.wms.utils.HttpUtils.getIpAddr; import static com.wms.utils.StringUtils.convertJsonString; @@ -309,7 +315,41 @@ public class ExcelController { // 获取导出结果 List clcKanbanRequirementExcelVoList = new ArrayList<>(); // TODO 需要处理获得数据 - EasyExcel.write(response.getOutputStream(), StockExcelVo.class) + // 查询物料库存信息 + List stockOfGoodsDtoList = stockService.selectSumOfGoods(""); + if (stockOfGoodsDtoList == null || stockOfGoodsDtoList.isEmpty()) { + clcKanbanRequirementExcelVoList = Collections.emptyList(); + } else { + for (StockOfGoodsDto stockOfGoodsDto : stockOfGoodsDtoList) { + if (Objects.equals(stockOfGoodsDto.getFeedType(), "PULL")) { + // 剩余数量少于补货点时,需要补货 + if (stockOfGoodsDto.getRemainNumSum().compareTo(stockOfGoodsDto.getFeedPoint()) <= 0) { + ClcKanbanRequirementExcelVo tempClcKanbanRequirementExcelVo = new ClcKanbanRequirementExcelVo(); + // 目标数量 + BigDecimal targetNum = stockOfGoodsDto.getNumOfKanban().multiply(stockOfGoodsDto.getNumOfPerKanban()); + // 计算需要多少个看板 + BigDecimal needKanbanQuantity = targetNum.subtract(stockOfGoodsDto.getRemainNumSum()).divide(stockOfGoodsDto.getNumOfPerKanban(), 2, RoundingMode.CEILING); + // 设定物流数据 + tempClcKanbanRequirementExcelVo.setGoodsId(stockOfGoodsDto.getGoodsId()); + tempClcKanbanRequirementExcelVo.setRequireNum(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); + // 设定看板 + List needKanbanList = new ArrayList<>(); + for (KanbanEntity kanbanEntity : stockOfGoodsDto.getKanbanList()) { + if (needKanbanQuantity.compareTo(BigDecimal.ZERO) <= 0) { + break; + } + needKanbanList.add(kanbanEntity); + } + if (!needKanbanList.isEmpty()) { + tempClcKanbanRequirementExcelVo.setKanban(needKanbanList); + } + clcKanbanRequirementExcelVoList.add(tempClcKanbanRequirementExcelVo); + } + } + } + } + + EasyExcel.write(response.getOutputStream(), ClcKanbanRequirementExcelVo.class) .excelType(ExcelTypeEnum.XLSX) .registerWriteHandler(horizontalCellStyleStrategy) .sheet("CLC看板需求") diff --git a/src/main/java/com/wms/controller/KateWorkQueryController.java b/src/main/java/com/wms/controller/KateWorkQueryController.java index d755ff5..ef75a68 100644 --- a/src/main/java/com/wms/controller/KateWorkQueryController.java +++ b/src/main/java/com/wms/controller/KateWorkQueryController.java @@ -1,22 +1,18 @@ package com.wms.controller; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.fasterxml.jackson.annotation.JsonProperty; import com.wms.annotation.MyLog; import com.wms.constants.enums.ResponseCode; import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.dto.PageDto; -import com.wms.entity.app.dto.StockDto; import com.wms.entity.app.dto.StockOfGoodsDto; import com.wms.entity.app.request.*; import com.wms.entity.app.vo.*; import com.wms.entity.table.KateDBS; import com.wms.entity.table.KateOrders; -import com.wms.entity.table.Stock; import com.wms.entity.table.WorkStationConfig; import com.wms.service.KateDBSService; import com.wms.service.KateOrdersService; @@ -24,7 +20,6 @@ import com.wms.service.StockService; import com.wms.service.WorkStationConfigService; import com.wms.utils.HttpUtils; import com.wms.utils.StringUtils; -import com.wms.utils.WmsUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; @@ -39,9 +34,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.math.RoundingMode; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Objects; @@ -498,29 +491,44 @@ public class KateWorkQueryController { TotalNumOfPc = TotalNumOfPc.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); TotalNumOfBox = TotalNumOfBox.add(needKanbanQuantity); if (stockOfGoodsDto.getBoxType().contains("810")) { - + NumOfTypeOf810 = NumOfTypeOf810.add(BigDecimal.ONE); + NumOfPcOf810 = NumOfPcOf810.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); + NumOfBoxOf810 = NumOfBoxOf810.add(needKanbanQuantity); } else if (stockOfGoodsDto.getBoxType().contains("811")) { - + NumOfTypeOf811 = NumOfTypeOf811.add(BigDecimal.ONE); + NumOfPcOf811 = NumOfPcOf811.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); + NumOfBoxOf811 = NumOfBoxOf811.add(needKanbanQuantity); } else if (stockOfGoodsDto.getBoxType().contains("911")) { - + NumOfTypeOf911 = NumOfTypeOf911.add(BigDecimal.ONE); + NumOfPcOf911 = NumOfPcOf911.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); + NumOfBoxOf911 = NumOfBoxOf911.add(needKanbanQuantity); } else if (stockOfGoodsDto.getBoxType().contains("822")) { - - } - } - switch (stockOfGoodsDto.getBoxType()) { - case "810": - NumOfTypeOf810 = NumOfTypeOf810.add(BigDecimal.ONE); - NumOfPcOf810 = NumOfPcOf810.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); - NumOfBoxOf810 = NumOfBoxOf810.add(needKanbanQuantity); - break; + NumOfTypeOf822 = NumOfTypeOf822.add(BigDecimal.ONE); + NumOfPcOf822 = NumOfPcOf822.add(needKanbanQuantity.multiply(stockOfGoodsDto.getNumOfPerKanban())); + NumOfBoxOf822 = NumOfBoxOf822.add(needKanbanQuantity); } } } } + // 设定Vo实体 + clcKanbanVo.setTotalNumOfType(TotalNumOfType); + clcKanbanVo.setTotalNumOfPc(TotalNumOfPc); + clcKanbanVo.setTotalNumOfBox(TotalNumOfBox); + clcKanbanVo.setNumOfBoxOf811(NumOfBoxOf811); + clcKanbanVo.setNumOfBoxOf810(NumOfBoxOf810); + clcKanbanVo.setNumOfBoxOf911(NumOfBoxOf911); + clcKanbanVo.setNumOfBoxOf822(NumOfBoxOf822); + clcKanbanVo.setNumOfPcOf811(NumOfPcOf811); + clcKanbanVo.setNumOfPcOf810(NumOfPcOf810); + clcKanbanVo.setNumOfPcOf911(NumOfPcOf911); + clcKanbanVo.setNumOfPcOf822(NumOfPcOf822); + clcKanbanVo.setNumOfTypeOf811(NumOfTypeOf811); + clcKanbanVo.setNumOfTypeOf810(NumOfTypeOf810); + clcKanbanVo.setNumOfTypeOf911(NumOfTypeOf911); + clcKanbanVo.setNumOfTypeOf822(NumOfTypeOf822); } - - + logger.info("获取CLC看板需求成功。"); response.setCode(ResponseCode.OK.getCode()); response.setMessage("获取CLC看板需求成功。"); response.setReturnData(clcKanbanVo); diff --git a/src/main/java/com/wms/utils/excel/vo/ClcKanbanRequirementExcelVo.java b/src/main/java/com/wms/utils/excel/vo/ClcKanbanRequirementExcelVo.java index 689304f..f414e95 100644 --- a/src/main/java/com/wms/utils/excel/vo/ClcKanbanRequirementExcelVo.java +++ b/src/main/java/com/wms/utils/excel/vo/ClcKanbanRequirementExcelVo.java @@ -1,6 +1,7 @@ package com.wms.utils.excel.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.wms.entity.app.dto.extend.KanbanEntity; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/com/wms/utils/excel/vo/KanbanExcelVo.java b/src/main/java/com/wms/utils/excel/vo/KanbanExcelVo.java index 426a936..9c9ea8f 100644 --- a/src/main/java/com/wms/utils/excel/vo/KanbanExcelVo.java +++ b/src/main/java/com/wms/utils/excel/vo/KanbanExcelVo.java @@ -1,8 +1,13 @@ package com.wms.utils.excel.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.wms.entity.app.dto.extend.KanbanEntity; import lombok.Data; +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; + /** * 看板导入 */ @@ -108,4 +113,33 @@ public class KanbanExcelVo { private String KANBAN49; @ExcelProperty("KANBAN#50") private String KANBAN50; + + /** + * 设定看板 + * @param kanbanList 看板列表 + */ + public void setKanban(List kanbanList) { + for (Field field : this.getClass().getDeclaredFields()) { + if (field.getName().startsWith("KANBAN")) { + int sortNum = -1; + try { + // 获取id排序 + sortNum = Integer.parseInt(field.getName().split("#")[1]); + } catch (Exception e) { + continue; + } + if (sortNum != -1) { + try { + if (kanbanList.size() >= sortNum) { + field.setAccessible(true); + field.set(this, kanbanList.get(sortNum - 1).getKanbanId()); + } + } catch (IllegalAccessException e) { + // 捕捉异常 + System.out.println("设置看板发生异常:" + e.getMessage()); + } + } + } + } + } }