From 02c4da859b8f10ee51f88799c20cbc74e43bb3d2 Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Thu, 11 Jul 2024 17:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5-=E7=BB=9F=E8=AE=A11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 16 ++-- .../admin/order/vo/order/ApiOrderRespVO.java | 1 - .../order/vo/order/OrderGoodsPlateRespVO.java | 8 -- .../order/vo/order/OrderOverdueRespVO.java | 78 +++++++++++++++++++ .../admin/order/vo/order/OrderPageReqVO.java | 2 +- .../admin/order/vo/order/OrderRespVO.java | 2 +- .../admin/order/vo/order/OrderSaveReqVO.java | 2 +- .../executor/dal/mysql/order/OrderMapper.java | 7 ++ .../executor/service/order/OrderService.java | 5 ++ .../service/order/OrderServiceImpl.java | 78 ++++++++++++++----- .../resources/mapper/order/OrderMapper.xml | 66 +++++++++++++++- .../resources/mapper/plate/PlateMapper.xml | 2 +- 12 files changed, 225 insertions(+), 42 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index a886272fe..10feaab5f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -7,6 +7,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRe import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; +import com.cf.imes.module.executor.enums.OrderTypeEnum; import com.cf.imes.module.executor.util.ExcelWriterUtil; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; @@ -286,7 +287,7 @@ public class OrderController { if (list.size() == 0) { orderDO.setStatus(0); } - orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(0).setStatus(1); + orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(OrderTypeEnum.MAIN_ORDER.getStatus()).setStatus(1); String err = ((String) mapOrder.get("error")); if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { @@ -383,10 +384,11 @@ public class OrderController { } // 生产单超期告警 -// @GetMapping("/getOrderOverdue") -// @Operation(summary = "生产单超期告警") -// @PreAuthorize("@ss.hasPermission('productManager:List')") -// public CommonResult> getOrderOverdue() { -// return success(orderService.getOrderOverdue()); -// } + @GetMapping("/getOrderWarn") + @Operation(summary = "生产单警告") + @Parameter(name = "startTerm", description = "时间段选择", required = false, example = "1,3,7") + @PreAuthorize("@ss.hasPermission('productManager:List')") + public CommonResult>> getOrderOverdue(@RequestParam(value = "startTerm", required = false) Integer startTerm) { + return success(orderService.getOrderWarn(startTerm)); + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/ApiOrderRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/ApiOrderRespVO.java index 7aadb20b8..ad6909160 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/ApiOrderRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/ApiOrderRespVO.java @@ -1,6 +1,5 @@ package com.cf.imes.module.executor.controller.admin.order.vo.order; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java index 50c7120f3..173deff3a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java @@ -12,14 +12,6 @@ import java.math.BigDecimal; @NoArgsConstructor @ToString(callSuper = true) public class OrderGoodsPlateRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4109") - private Long id; - - @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12114") - private Long orderId; - - @Schema(description = "设计端商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "832") - private Long rawGoodsId; @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") private Long goodsId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java new file mode 100644 index 000000000..277f8c541 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderOverdueRespVO.java @@ -0,0 +1,78 @@ +package com.cf.imes.module.executor.controller.admin.order.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 生产单逾期列表") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ToString(callSuper = true) +public class OrderOverdueRespVO { + + @Schema(description = "生产单号") + private Long id; + + @Schema(description = "父单号") + private Long parentNo; + + @Schema(description = "源生产单号") + private String apiOrderId; + + @Schema(description = "生产单日期", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime orderDate; + + @Schema(description = "交付日期", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime deliveryDate; + + @Schema(description = "生产单类型,1主单 2子单", example = "1") + private Integer orderType; + + @Schema(description = "生产单排序号") + private Integer orderSort; + + @Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer dataType; + + @Schema(description = "订单状态,订单状态,0空订单1新单2生产中3生产完成", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer status; + + @Schema(description = "自定义单号") + private String customOrderNo; + + @Schema(description = "客户", requiredMode = Schema.RequiredMode.REQUIRED) + private String customer; + + @Schema(description = "客户地址", requiredMode = Schema.RequiredMode.REQUIRED) + private String address; + + @Schema(description = "客户电话", requiredMode = Schema.RequiredMode.REQUIRED) + private String phoneNumber; + + @Schema(description = "经销商", requiredMode = Schema.RequiredMode.REQUIRED) + private String dealer; + + @Schema(description = "经销商电话", requiredMode = Schema.RequiredMode.REQUIRED) + private String dealerPhoneNumber; + + @Schema(description = "业务员") + private String salesman; + + @Schema(description = "拆单员") + private String splitter; + + @Schema(description = "备注", example = "你猜") + private String remark; + + + @Schema(description = "距离到期时间") + private String becomeDue; + + @Schema(description = "逾期时间") + private String beOverdue; +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java index 4c869f3a4..0c12c79e2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java @@ -37,7 +37,7 @@ public class OrderPageReqVO extends PageParam { private LocalDateTime[] deliveryDate; @Schema(description = "生产单类型,1主单 2子单", example = "1") - private Boolean orderType; + private Integer orderType; @Schema(description = "生产单排序号") private Integer orderSort; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java index 2ae140b96..e4209cf2a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java @@ -33,7 +33,7 @@ public class OrderRespVO { @Schema(description = "生产单类型,1主单 2子单", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("生产单类型,1主单 2子单") - private Boolean orderType; + private Integer orderType; @Schema(description = "生产单排序号", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("生产单排序号") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java index fc8f122f0..b06e0c105 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java @@ -30,7 +30,7 @@ public class OrderSaveReqVO { private LocalDateTime deliveryDate; @Schema(description = "生产单类型,1主单 2子单", example = "1") - private Boolean orderType; + private Integer orderType; @Schema(description = "生产单排序号") private Integer orderSort; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index eaef30a72..5cf254f59 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -9,6 +9,7 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; @@ -138,4 +139,10 @@ public interface OrderMapper extends BaseMapperX { // 生产单状态统计 List selectOrderStatusCount(@Param("organId")Long organId, @Param("orderDate") LocalDateTime orderDate); + +// 生产单预警统计 + List selectOrderNear(@Param("today") LocalDateTime today, @Param("orderDate") LocalDateTime orderDate, @Param("organId") Long organId); + +// 生产单逾期统计 + List selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index a322e0537..0c663138c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -181,4 +181,9 @@ public interface OrderService { * 小板数据分析统计 */ List getOrderPlateAnalysisCount(); + + /** + * 生产单超期告警分析统计 + */ + Map> getOrderWarn(Integer startTerm); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index f8fcb7939..985052d13 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -64,6 +64,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.*; import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.regex.Matcher; @@ -286,7 +287,7 @@ public class OrderServiceImpl implements OrderService { List orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class); - return orderBodyMapper.selectRoomAndBody(orderIds,getUserOrganId()); + return orderBodyMapper.selectRoomAndBody(orderIds, getUserOrganId()); } @@ -296,10 +297,10 @@ public class OrderServiceImpl implements OrderService { Integer deleted = getOrderDeleted(orderId); // 模块信息 List orderModuleRespVOList = orderBodyMapper.selectModuleByOrderId(orderId, - SecurityFrameworkUtils.getLoginUser().getOrganId(),deleted); // 模块信息 + SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted); // 模块信息 // 配件 List orderItemDOS = orderItemMapper.selectPartsByOrderId(orderId, - SecurityFrameworkUtils.getLoginUser().getOrganId(),deleted); + SecurityFrameworkUtils.getLoginUser().getOrganId(), deleted); Map> map = new HashMap<>(); map.put("module", orderModuleRespVOList); @@ -425,7 +426,7 @@ public class OrderServiceImpl implements OrderService { orderModelDOs.forEach(orderModelDO -> orderModelDO.setOrderId(order.get(0).getId())); orderInputProcessor.batchSaveModel(orderModelDOs); } - if (partsRemark.size() > 0){ + if (partsRemark.size() > 0) { orderInputProcessor.batchSaveOrderPartsModel(partsRemark); } @@ -552,7 +553,7 @@ public class OrderServiceImpl implements OrderService { public List getApiOrderList(JSONObject orderList) { List apiOrderRespVOS = new ArrayList<>(); JSONArray jsonArray = orderList.getJSONArray("data"); - if (jsonArray != null && jsonArray.size() > 0){ + if (jsonArray != null && jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); int index = jsonObject.getString("order_no").indexOf("@N"); @@ -560,8 +561,8 @@ public class OrderServiceImpl implements OrderService { ApiOrderRespVO apiOrderRespVO = JSON.parseObject(jsonObject.toJSONString(), ApiOrderRespVO.class).setOrder_no(order_no); // 判断是否已经导入 - if (validateOrderNoExists(apiOrderRespVO.getOrder_no(), OrganContextHolder.getOrganId())){ - if (!apiOrderRespVO.getOrder_state().equals(SUBMIT_STATE)){ + if (validateOrderNoExists(apiOrderRespVO.getOrder_no(), OrganContextHolder.getOrganId())) { + if (!apiOrderRespVO.getOrder_state().equals(SUBMIT_STATE)) { apiOrderRespVOS.add(apiOrderRespVO); } } @@ -574,19 +575,25 @@ public class OrderServiceImpl implements OrderService { @Override public List getOrderStatusCount(Integer startTerm) { // 根据开始条件选择 - LocalDateTime orderDate = null; - LocalTime endOfDay = LocalTime.of(00, 00, 00); - switch (startTerm) { - case 1: - orderDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(); - break; - case 2: - orderDate = LocalDate.now().withDayOfMonth(1).atStartOfDay(); - break; - case 3: - orderDate = LocalDate.now().withMonth(1).withDayOfMonth(1).atStartOfDay(); - break; + LocalDateTime orderDate = null; + + if (startTerm != null){ + switch (startTerm) { + case 2: // 月 + orderDate = LocalDate.now().withDayOfMonth(1).atStartOfDay(); + break; + case 3: // 年 + orderDate = LocalDate.now().withMonth(1).withDayOfMonth(1).atStartOfDay(); + break; + default: // 周 + orderDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(); + break; + + } + }else { + orderDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(); } + List orderStatusRespVOS = orderMapper.selectOrderStatusCount(OrganContextHolder.getOrganId(), orderDate); orderStatusRespVOS.removeIf(obj -> obj.getOrderState() == OrderStatusEnum.EMPTY.getStatus()); return orderStatusRespVOS; @@ -599,6 +606,35 @@ public class OrderServiceImpl implements OrderService { return orderGoodsPlateRespVOS; } + @Override + public Map> getOrderWarn(Integer startTerm) { + Map> map = new HashMap<>(); + + LocalDateTime today = LocalDateTime.now(); +// 根据开始条件选择 + LocalDateTime orderDate = null; + + switch (startTerm) { + case 3: + orderDate = LocalDateTime.now().minus(3, ChronoUnit.DAYS); + break; + case 7: + orderDate = LocalDateTime.now().minus(7, ChronoUnit.DAYS); + break; + default: + orderDate = LocalDateTime.now().minus(1, ChronoUnit.DAYS); + break; + + } + // 查询预警单 + List orderNearVOS = orderMapper.selectOrderNear(today, orderDate, OrganContextHolder.getOrganId()); + map.put("orderNearVOS",orderNearVOS); + // 查询超时单 + List orderOverdueVOS = orderMapper.selectOrderOverdue(today, OrganContextHolder.getOrganId()); + map.put("orderOverdueVOS",orderOverdueVOS); + return map; + } + // 判断是否已经导入 private Boolean validateOrderNoExists(String orderNo, Long organId) { if (orderMapper.selectCount(new LambdaQueryWrapper() @@ -673,10 +709,10 @@ public class OrderServiceImpl implements OrderService { // validateCustomOrderNoExists(orderDO.getCustomOrderNo()); orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, null, itemDO, orderDO, goodsDO, plateGoodDOS); - if (orderModelDOS.size() > 0){ + if (orderModelDOS.size() > 0) { orderInputProcessor.batchSaveModel(orderModelDOS); } - if (orderPartsRemarks.size() > 0){ + if (orderPartsRemarks.size() > 0) { orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml index 1ee264a40..a14e05546 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml @@ -88,9 +88,73 @@ from orders o where o.organ_id = #{organId} and DATE(o.order_date) >= #{orderDate} - and o.deleted = false + and o.deleted = 0 group by o.status + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 79833293f..ec3df380d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -505,7 +505,7 @@ LEFT JOIN orders o ON o.id = a.order_id WHERE o.organ_id = #{organId} - AND a.deleted = false + AND a.deleted = 0 AND DATE(o.order_date) >= #{orderDate} GROUP BY g.goods_id