From e8b422510f67add640ae4fd8ab41f31afe913024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Tue, 4 Mar 2025 17:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 + .../com/ruoyi/bst/order/domain/OrderVO.java | 28 +++++++-- .../bst/order/service/OrderAssembler.java | 5 ++ .../service/impl/OrderAssemblerImpl.java | 62 +++++++++++-------- .../order/service/impl/OrderServiceImpl.java | 4 +- .../ruoyi/bst/orderProd/domain/OrderProd.java | 2 +- .../bst/orderProd/domain/OrderProdQuery.java | 3 + .../domain/vo/OrderProdGroupNameVO.java | 31 ++++++++++ .../bst/orderProd/mapper/OrderProdMapper.java | 5 ++ .../bst/orderProd/mapper/OrderProdMapper.xml | 15 +++++ .../orderProd/service/IOrderProdService.java | 8 +++ .../orderProd/service/OrderProdAssembler.java | 12 ++++ .../service/impl/OrderProdAssemblerImpl.java | 50 ++++++++++++++- .../service/impl/OrderProdServiceImpl.java | 5 ++ .../prodProcess/mapper/ProdProcessMapper.java | 6 ++ .../prodProcess/mapper/ProdProcessMapper.xml | 30 ++++++++- .../com/ruoyi/bst/store/domain/Store.java | 9 ++- .../ruoyi/bst/store/mapper/StoreMapper.xml | 4 +- .../domain/sum/ProdProcessSumVO.java | 20 ++++++ .../service/ProdProcessDashboardService.java | 38 ++++++++++++ .../com/ruoyi/web/bst/OrderController.java | 7 +-- .../ruoyi/web/bst/OrderProdController.java | 30 ++++++++- .../DashboardProdProcessController.java | 24 +++++++ 23 files changed, 355 insertions(+), 46 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/vo/OrderProdGroupNameVO.java create mode 100644 common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/domain/sum/ProdProcessSumVO.java create mode 100644 common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/service/ProdProcessDashboardService.java create mode 100644 ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardProdProcessController.java diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7b016a8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java index b32f1df..8980774 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderVO.java @@ -21,22 +21,40 @@ public class OrderVO extends Order{ @ApiModelProperty("最终产品ID") private Long finalProdId; - @ApiModelProperty("最终工序总上报数") + @ApiModelProperty("产品总上报数") private BigDecimal reportNum; - @ApiModelProperty("最终工序有效清点数") + @ApiModelProperty("产品有效清点数") private BigDecimal storeNum; - @ApiModelProperty("总数量") + @ApiModelProperty("产品总数") private BigDecimal totalNum; - @ApiModelProperty("进度") + @ApiModelProperty("成品总上报数") + private BigDecimal endReportNum; + + @ApiModelProperty("成品有效清点数") + private BigDecimal endStoreNum; + + @ApiModelProperty("生产进度") public BigDecimal getProgress() { - if (this.storeNum == null || this.getNum() == null) { + if (this.storeNum == null || this.getTotalNum() == null) { return BigDecimal.ZERO; } return this.storeNum + .subtract(this.getNum()) .multiply(new BigDecimal(100)) .divide(this.getTotalNum(), 2, RoundingMode.HALF_UP); } + + @ApiModelProperty("产品进度") + public BigDecimal getEndProgress() { + if (this.endStoreNum == null || this.getNum() == null) { + return BigDecimal.ZERO; + } + return this.endStoreNum + .multiply(new BigDecimal(100)) + .divide(this.getNum(), 2, RoundingMode.HALF_UP); + + } } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/OrderAssembler.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/OrderAssembler.java index 22613e2..5450117 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/OrderAssembler.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/OrderAssembler.java @@ -27,4 +27,9 @@ public interface OrderAssembler { */ void assembleProdProcessList(List list); + /** + * 拼接成为VO + * @param list + */ + void assembleVO(List list); } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderAssemblerImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderAssemblerImpl.java index b34027e..8d1d101 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderAssemblerImpl.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderAssemblerImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.common.utils.collection.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -39,15 +40,6 @@ public class OrderAssemblerImpl implements OrderAssembler { query.setOrderIds(CollectionUtils.map(list, OrderVO::getId)); List prodList = orderProdService.selectOrderProdList(query); - // 拼接进度 - if (assembleProgress) { - orderProdAssembler.assembleProgress(prodList); - } - - // 拼接明细 - if (assembleProcess) { - } - // 分组 Map> group = prodList.stream().collect(Collectors.groupingBy(OrderProdVO::getOrderId)); @@ -59,23 +51,6 @@ public class OrderAssemblerImpl implements OrderAssembler { } vo.setProdList(productList); } - - - } - - @Override - public void assembleProgress(List list) { - if (CollectionUtils.isEmptyElement(list)) { - return; - } - - this.assembleProdList(list); - - for (OrderVO order : list) { - order.setTotalNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getNum)); - order.setReportNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getReportNum)); - order.setStoreNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getStoreNum)); - } } @Override @@ -86,4 +61,39 @@ public class OrderAssemblerImpl implements OrderAssembler { List prodList = list.stream().map(OrderVO::getProdList).flatMap(List::stream).collect(Collectors.toList()); orderProdAssembler.assembleProcessList(prodList); } + + @Override + public void assembleVO(List list) { + this.assembleProdList(list); + this.assembleProdProcessList(list); + this.assembleProgress(list); + } + + @Override + public void assembleProgress(List list) { + if (CollectionUtils.isEmptyElement(list)) { + return; + } + List prodList = list.stream().map(OrderVO::getProdList).flatMap(List::stream).collect(Collectors.toList()); + orderProdAssembler.assembleProgress(prodList); + + for (OrderVO order : list) { + order.setTotalNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getNum)); + order.setReportNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getReportNum)); + order.setStoreNum(CollectionUtils.sumDecimal(order.getProdList(), OrderProdVO::getStoreNum)); + + // 成品 + OrderProdVO endProd = order.getProdList().stream() + .filter(item -> item.getIsEnd() != null && item.getIsEnd()) + .findFirst() + .orElse(null); + if (endProd != null) { + order.setEndReportNum(endProd.getReportNum()); + order.setEndStoreNum(endProd.getStoreNum()); + } else { + order.setEndReportNum(BigDecimal.ZERO); + order.setEndStoreNum(BigDecimal.ZERO); + } + } + } } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java index 5134e9b..e41d050 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderServiceImpl.java @@ -238,8 +238,8 @@ public class OrderServiceImpl implements OrderService ServiceUtil.assertion(!OrderStatus.canFinished().contains(old.getStatus()), "当前订单状态不允许完工"); List list = Collections.singletonList(old); - orderAssembler.assembleProgress(list); - ServiceUtil.assertion(old.getProgress().compareTo(new BigDecimal("100")) < 0, "当前订单进度:%s%%,暂不满足完工条件:100%%", old.getProgress()); + orderAssembler.assembleVO(list); + ServiceUtil.assertion(old.getEndProgress().compareTo(new BigDecimal("100")) < 0, "当前订单进度:%s%%,暂不满足完工条件:100%%", old.getEndProgress()); // 更新订单状态 Order data = new Order(); diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProd.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProd.java index 1a0ea4c..ece69ed 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProd.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProd.java @@ -25,9 +25,9 @@ public class OrderProd extends BaseEntity { private static final long serialVersionUID = 1L; + @Excel(name = "ID") private Long id; - @Excel(name = "订单ID") @ApiModelProperty("订单ID") private Long orderId; diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProdQuery.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProdQuery.java index 69e15d8..473647a 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProdQuery.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/OrderProdQuery.java @@ -17,4 +17,7 @@ public class OrderProdQuery extends OrderProdVO{ @ApiModelProperty("是否拼接明细") private Boolean assembleProcessList; + + @ApiModelProperty("产品名称列表") + private List eqNames; } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/vo/OrderProdGroupNameVO.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/vo/OrderProdGroupNameVO.java new file mode 100644 index 0000000..fbbac94 --- /dev/null +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/domain/vo/OrderProdGroupNameVO.java @@ -0,0 +1,31 @@ +package com.ruoyi.bst.orderProd.domain.vo; + +import com.ruoyi.bst.orderProd.domain.OrderProdVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author wjh + * 2025/3/4 + */ +@Data +public class OrderProdGroupNameVO { + + @ApiModelProperty("产品名称") + private String name; + + @ApiModelProperty("数量") + private BigDecimal totalNum; + + @ApiModelProperty("上报数量") + private BigDecimal reportNum; + + @ApiModelProperty("清点数量") + private BigDecimal storeNum; + + @ApiModelProperty("产品列表") + private List prodList; +} diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.java index 95251a2..8a42699 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.java @@ -79,4 +79,9 @@ public interface OrderProdMapper int logicDel(@Param("ids") List ids); int logicDelByOrderId(@Param("orderId") Long orderId); + + /** + * 查询产品名称列表 + */ + List selectNameList(@Param("query") OrderProdQuery query); } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.xml b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.xml index 70ca565..608c2d3 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.xml +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/mapper/OrderProdMapper.xml @@ -51,6 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bop.cover_color like concat('%', #{query.coverColor}, '%') and bop.no like concat('%', #{query.no}, '%') and bop.work_name like concat('%', #{query.workName}, '%') + + and bop.name in + + #{item} + + and bop.order_id in @@ -72,6 +78,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + insert into bst_order_prod diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/IOrderProdService.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/IOrderProdService.java index 1b24e97..1bedbcc 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/IOrderProdService.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/IOrderProdService.java @@ -83,4 +83,12 @@ public interface IOrderProdService int batchLogicDel(List list); int logicDelByOrderId(Long orderId); + + /** + * 查询订单产品列表 + * + * @param query 订单产品列表 + * @return + */ + List selectNameList(OrderProdQuery query); } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/OrderProdAssembler.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/OrderProdAssembler.java index f099c5a..a1f7014 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/OrderProdAssembler.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/OrderProdAssembler.java @@ -1,6 +1,8 @@ package com.ruoyi.bst.orderProd.service; +import com.ruoyi.bst.orderProd.domain.OrderProdQuery; import com.ruoyi.bst.orderProd.domain.OrderProdVO; +import com.ruoyi.bst.orderProd.domain.vo.OrderProdGroupNameVO; import java.util.List; @@ -20,4 +22,14 @@ public interface OrderProdAssembler { */ void assembleProgress(List list); + /** + * 拼接产品列表 + */ + void assembleProdList(List list, OrderProdQuery query); + + /** + * 汇总数量 + */ + void assembleTotalNum(List list); + } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdAssemblerImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdAssemblerImpl.java index 22f25e8..6ab2402 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdAssemblerImpl.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdAssemblerImpl.java @@ -1,7 +1,10 @@ package com.ruoyi.bst.orderProd.service.impl; +import com.ruoyi.bst.orderProd.domain.OrderProdQuery; import com.ruoyi.bst.orderProd.domain.OrderProdVO; import com.ruoyi.bst.orderProd.domain.enums.OrderProdWorkType; +import com.ruoyi.bst.orderProd.domain.vo.OrderProdGroupNameVO; +import com.ruoyi.bst.orderProd.service.IOrderProdService; import com.ruoyi.bst.orderProd.service.OrderProdAssembler; import com.ruoyi.bst.prodProcess.domain.ProdProcess; import com.ruoyi.bst.prodProcess.domain.ProdProcessQuery; @@ -32,6 +35,9 @@ public class OrderProdAssemblerImpl implements OrderProdAssembler { @Autowired private ProdProcessAssembler prodProcessAssembler; + @Autowired + private IOrderProdService orderProdService; + @Override public void assembleProcessList(List list) { if (CollectionUtils.isEmptyElement(list)) { @@ -67,7 +73,9 @@ public class OrderProdAssemblerImpl implements OrderProdAssembler { for (OrderProdVO prod : list) { // 自加工 if (OrderProdWorkType.SELF.getType().equals(prod.getWorkType())) { - ProdProcessVO process = processList.stream().filter(item -> Objects.equals(item.getOrderProdId(), prod.getId())).findFirst().orElse(null); + ProdProcessVO process = processList.stream() + .filter(item -> Objects.equals(item.getOrderProdId(), prod.getId())) + .findFirst().orElse(null); if (process == null) { prod.setReportNum(BigDecimal.ZERO); prod.setStoreNum(BigDecimal.ZERO); @@ -84,4 +92,44 @@ public class OrderProdAssemblerImpl implements OrderProdAssembler { } } } + + @Override + public void assembleProdList(List list, OrderProdQuery query) { + if (CollectionUtils.isEmptyElement(list)) { + return; + } + + query.setEqNames(CollectionUtils.map(list, OrderProdGroupNameVO::getName)); + List prodList = orderProdService.selectOrderProdList(query); + this.assembleProcessList(prodList); + this.assembleProgress(prodList); + Map> group = prodList.stream().collect(Collectors.groupingBy(OrderProdVO::getName)); + + for (OrderProdGroupNameVO vo : list) { + List groupList = group.get(vo.getName()); + if (groupList == null) { + groupList = new ArrayList<>(); + } + vo.setProdList(groupList); + } + + } + + @Override + public void assembleTotalNum(List list) { + if (CollectionUtils.isEmptyElement(list)) { + return; + } + List prodList = list.stream() + .map(OrderProdGroupNameVO::getProdList) + .flatMap(List::stream).collect(Collectors.toList()); + + this.assembleProgress(prodList); + + for (OrderProdGroupNameVO vo : list) { + vo.setTotalNum(CollectionUtils.sumDecimal(vo.getProdList(), OrderProdVO::getNum)); + vo.setReportNum(CollectionUtils.sumDecimal(vo.getProdList(), OrderProdVO::getReportNum)); + vo.setStoreNum(CollectionUtils.sumDecimal(vo.getProdList(), OrderProdVO::getStoreNum)); + } + } } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdServiceImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdServiceImpl.java index 1be37b4..f83bfeb 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdServiceImpl.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/orderProd/service/impl/OrderProdServiceImpl.java @@ -148,4 +148,9 @@ public class OrderProdServiceImpl implements IOrderProdService } return orderProdMapper.logicDelByOrderId(orderId); } + + @Override + public List selectNameList(OrderProdQuery query) { + return orderProdMapper.selectNameList(query); // 新增的方法实现 + } } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.java index bd43331..183ffe9 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.java @@ -6,6 +6,7 @@ import com.ruoyi.bst.prodProcess.domain.ProdProcessVO; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 产品工序Mapper接口 @@ -76,4 +77,9 @@ public interface ProdProcessMapper int logicDel(@Param("ids") List ids); int logicDelByOrderId(Long orderId); + + /** + * 查询汇总 + */ + public List> selectSum(@Param("query")ProdProcessQuery query, @Param("groupBy")List groupBy); } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.xml b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.xml index 866d4ed..f1e8307 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.xml +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/prodProcess/mapper/ProdProcessMapper.xml @@ -41,7 +41,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bo.content_num as order_content_num, bo.package_size as order_package_size, sd.dept_name as dept_name - from bst_prod_process bpp + from + + + + bst_prod_process bpp left join bst_order_prod bop on bop.id = bpp.order_prod_id left join bst_order bo on bo.id = bop.order_id left join sys_dept sd on sd.dept_id = bpp.dept_id @@ -315,4 +319,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + + diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/domain/Store.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/domain/Store.java index 3390f66..f28d018 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/domain/Store.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/domain/Store.java @@ -70,8 +70,15 @@ public class Store extends BaseEntity @Size(max = 200, message = "备注长度不能超过200个字符") private String remark; - @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 10) + @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd", sort = 10) @ApiModelProperty("上报时间") private Date createTime; + public Date getCreateTime() { + return this.createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } } diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/mapper/StoreMapper.xml b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/mapper/StoreMapper.xml index 1378944..a7b427c 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/mapper/StoreMapper.xml +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/store/mapper/StoreMapper.xml @@ -107,7 +107,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" num, store_num, create_id, - create_time, `status`, store_user_id, store_time, @@ -115,13 +114,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_by, store_by, remark, + create_time, #{processId}, #{num}, #{storeNum}, #{createId}, - #{createTime}, #{status}, #{storeUserId}, #{storeTime}, @@ -129,6 +128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{createBy}, #{storeBy}, #{remark}, + now(), diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/domain/sum/ProdProcessSumVO.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/domain/sum/ProdProcessSumVO.java new file mode 100644 index 0000000..8155d80 --- /dev/null +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/domain/sum/ProdProcessSumVO.java @@ -0,0 +1,20 @@ +package com.ruoyi.dashboard.prodProcess.domain.sum; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ProdProcessSumVO { + + @ApiModelProperty("总数量") + private BigDecimal num; + + @ApiModelProperty("上报数量") + private BigDecimal reportNum; + + @ApiModelProperty("清点数量") + private BigDecimal storeNum; + +} diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/service/ProdProcessDashboardService.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/service/ProdProcessDashboardService.java new file mode 100644 index 0000000..183d35a --- /dev/null +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/dashboard/prodProcess/service/ProdProcessDashboardService.java @@ -0,0 +1,38 @@ +package com.ruoyi.dashboard.prodProcess.service; + +import com.alibaba.fastjson2.JSON; +import com.ruoyi.bst.prodProcess.domain.ProdProcessQuery; +import com.ruoyi.bst.prodProcess.mapper.ProdProcessMapper; +import com.ruoyi.dashboard.prodProcess.domain.sum.ProdProcessSumVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Service +public class ProdProcessDashboardService { + + + @Autowired + private ProdProcessMapper prodProcessMapper; + + // 查询数量汇总, 并分组 + public List selectSum(ProdProcessQuery query, List groupBy, Class clazz) { + List> list = prodProcessMapper.selectSum(query, groupBy); + if (list.isEmpty()) { + return Collections.emptyList(); + } + return JSON.parseArray(JSON.toJSONString(list), clazz); + } + + // 查询数量汇总 + public ProdProcessSumVO selectSum(ProdProcessQuery query) { + List list = selectSum(query, null, ProdProcessSumVO.class); + if (list.isEmpty()) { + return null; + } + return list.get(0); + } +} diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java index 0117a66..3180334 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderController.java @@ -52,9 +52,7 @@ public class OrderController extends BaseController startPage(); startOrderBy(); List list = orderService.selectOrderList(query); - orderAssembler.assembleProdList(list); - orderAssembler.assembleProdProcessList(list); - orderAssembler.assembleProgress(list); + orderAssembler.assembleVO(list); return getDataTable(list); } @@ -80,8 +78,7 @@ public class OrderController extends BaseController { OrderVO vo = orderService.selectOrderById(id); List list = Collections.singletonList(vo); - orderAssembler.assembleProdList(list, true, true); - orderAssembler.assembleProgress(list); + orderAssembler.assembleVO(list); return success(vo); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderProdController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderProdController.java index 63a90fe..f4af837 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderProdController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/OrderProdController.java @@ -3,6 +3,7 @@ package com.ruoyi.web.bst; import com.ruoyi.bst.orderProd.domain.OrderProd; import com.ruoyi.bst.orderProd.domain.OrderProdQuery; import com.ruoyi.bst.orderProd.domain.OrderProdVO; +import com.ruoyi.bst.orderProd.domain.vo.OrderProdGroupNameVO; import com.ruoyi.bst.orderProd.service.IOrderProdService; import com.ruoyi.bst.orderProd.service.OrderProdAssembler; import com.ruoyi.common.annotation.Log; @@ -16,6 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.List; /** @@ -44,9 +46,9 @@ public class OrderProdController extends BaseController startPage(); startOrderBy(); List list = orderProdService.selectOrderProdList(query); - orderProdAssembler.assembleProgress(list); if (query.getAssembleProcessList() != null && query.getAssembleProcessList()) { - orderProdAssembler.assembleProcessList(list, true); + orderProdAssembler.assembleProcessList(list); + orderProdAssembler.assembleProgress(list); } return getDataTable(list); } @@ -59,6 +61,7 @@ public class OrderProdController extends BaseController @PostMapping("/export") public void export(HttpServletResponse response, OrderProdQuery query) { + startPage(); List list = orderProdService.selectOrderProdList(query); ExcelUtil util = new ExcelUtil(OrderProdVO.class); util.exportExcel(response, list, "订单产品数据"); @@ -106,4 +109,27 @@ public class OrderProdController extends BaseController { return toAjax(orderProdService.deleteOrderProdByIds(ids)); } + + /** + * 根据产品名称分组查询列表 + */ + @PreAuthorize("@ss.hasPermi('bst:orderProd:list')") + @GetMapping("/groupByName") + public TableDataInfo groupByName(OrderProdQuery query) + { + startPage(); + List list = orderProdService.selectNameList(query); + List groupList = new ArrayList<>(); + for (String name : list) { + OrderProdGroupNameVO vo = new OrderProdGroupNameVO(); + vo.setName(name); + groupList.add(vo); + } + + // 拼接明细 + orderProdAssembler.assembleProdList(groupList, query); + // 汇总数量 + orderProdAssembler.assembleTotalNum(groupList); + return getDataTable(groupList); + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardProdProcessController.java b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardProdProcessController.java new file mode 100644 index 0000000..5be523f --- /dev/null +++ b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardProdProcessController.java @@ -0,0 +1,24 @@ +package com.ruoyi.web.dashboard; + +import com.ruoyi.bst.prodProcess.domain.ProdProcessQuery; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.dashboard.prodProcess.service.ProdProcessDashboardService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/dashboard/prodProcess") +public class DashboardProdProcessController extends BaseController { + + @Autowired + private ProdProcessDashboardService prodProcessDashboardService; + + @GetMapping("/sum") + public AjaxResult sum(ProdProcessQuery query) { + return success(prodProcessDashboardService.selectSum(query)); + } + +}