From 74fbc6eddae68b91d862ebd483400e4a3f583e47 Mon Sep 17 00:00:00 2001 From: z Date: Thu, 5 Mar 2026 09:00:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=91=E6=9C=9F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/heli/enums/ErrorCodeConstants.java | 4 +- .../bdgzsomthing/bdgzsomthingController.java | 4 +- .../admin/found/FoundController.java | 95 ++ .../admin/found/vo/FoundPageReqVO.java | 53 + .../admin/found/vo/FoundRespVO.java | 63 + .../admin/found/vo/FoundSaveReqVO.java | 48 + .../admin/master/MasterController.java | 2 +- .../materialplan/MaterialPlanController.java | 2 +- .../MaterialPlanBoomController.java | 4 +- .../admin/monordnum/MonOrdNumController.java | 95 ++ .../monordnum/vo/MonOrdNumPageReqVO.java | 44 + .../admin/monordnum/vo/MonOrdNumRespVO.java | 52 + .../monordnum/vo/MonOrdNumSaveReqVO.java | 43 + .../admin/orderyf/OrderYfController.java | 31 +- .../admin/orderyf/vo/OrderYfRespVO.java | 6 + .../admin/orderys/OrderYsController.java | 12 +- .../admin/process/ProcessController.java | 95 ++ .../admin/process/vo/ProcessPageReqVO.java | 38 + .../admin/process/vo/ProcessRespVO.java | 44 + .../admin/process/vo/ProcessSaveReqVO.java | 33 + .../processbom/ProcessBomController.java | 12 +- .../ProcessDesignController.java | 2 +- .../ProcessDetailController.java | 111 ++ .../vo/ProcessDetailPageReqVO.java | 65 + .../processdetail/vo/ProcessDetailRespVO.java | 76 + .../vo/ProcessDetailSaveReqVO.java | 58 + .../projectorder/ProjectOrderController.java | 17 +- .../projectorder/vo/ProjectOrderExportVO.java | 13 +- .../admin/screen/ScreenController.java | 35 +- .../admin/shenhe/ShenheController.java | 4 +- .../taskreport/TaskReportController.java | 11 +- .../admin/taskreport/vo/TaskReportRespVO.java | 5 +- .../UnqualifiedNotificationController.java | 4 +- .../admin/yearnum/YearNumController.java | 101 ++ .../admin/yearnum/vo/YearNumPageReqVO.java | 38 + .../admin/yearnum/vo/YearNumRespVO.java | 44 + .../admin/yearnum/vo/YearNumSaveReqVO.java | 33 + .../heli/dal/dataobject/found/FoundDO.java | 70 + .../dal/dataobject/monordnum/MonOrdNumDO.java | 59 + .../dal/dataobject/orderyf/OrderYfDO.java | 5 +- .../dal/dataobject/process/ProcessDO.java | 51 + .../processbom/ProcessBomDetailDO.java | 2 + .../processdetail/ProcessDetailDO.java | 90 ++ .../projectorder/ProjectOrderDO.java | 4 + .../PurchaseOrderNoDetailDO.java | 2 + .../taskdispatch/TaskDispatchDetailDO.java | 3 + .../dal/dataobject/yearnum/YearNumDO.java | 51 + .../heli/dal/mysql/found/FoundMapper.java | 47 + .../dal/mysql/monordnum/MonOrdNumMapper.java | 40 + .../heli/dal/mysql/orderys/OrderYsMapper.java | 4 +- .../heli/dal/mysql/plansub/PlanSubMapper.java | 11 + .../heli/dal/mysql/process/ProcessMapper.java | 36 + .../processbom/ProcessBomDetailMapper.java | 46 + .../processdesign/ProcessDesignMapper.java | 15 + .../processdetail/ProcessDetailMapper.java | 87 ++ .../projectorder/ProjectOrderMapper.java | 45 + .../projectorder/ProjectOrderSubMapper.java | 6 +- .../PurchaseOrderNoDetailMapper.java | 12 + .../TaskDispatchDetailMapper.java | 33 + .../heli/dal/mysql/yearnum/YearNumMapper.java | 43 + .../deliverorder/DeliverOrderService.java | 2 + .../deliverorder/DeliverOrderServiceImpl.java | 9 + .../heli/service/found/FoundService.java | 55 + .../heli/service/found/FoundServiceImpl.java | 85 + .../service/monordnum/MonOrdNumService.java | 55 + .../monordnum/MonOrdNumServiceImpl.java | 74 + .../heli/service/process/ProcessService.java | 55 + .../service/process/ProcessServiceImpl.java | 74 + .../service/processbom/ProcessBomService.java | 2 + .../processbom/ProcessBomServiceImpl.java | 5 + .../processdetail/ProcessDetailService.java | 58 + .../ProcessDetailServiceImpl.java | 96 ++ .../heli/service/screen/ScreenService.java | 14 +- .../service/screen/ScreenServiceImpl.java | 720 ++++++++- .../heli/service/yearnum/YearNumService.java | 56 + .../service/yearnum/YearNumServiceImpl.java | 85 + .../resources/mapper/found/FoundMapper.xml | 12 + .../mapper/monordnum/MonOrdNumMapper.xml | 12 + .../mapper/process/ProcessMapper.xml | 12 + .../processdetail/ProcessDetailMapper.xml | 12 + .../mapper/yearnum/YearNumMapper.xml | 12 + .../src/api/heli/found/index.ts | 44 + .../src/api/heli/monordnum/index.ts | 42 + .../src/api/heli/process/index.ts | 40 + .../src/api/heli/processdetail/index.ts | 56 + .../src/api/heli/screen/index.ts | 6 + .../src/api/heli/yearnum/index.ts | 44 + .../DiyEditor/components/mobile/index.ts | 2 +- .../src/router/modules/remaining.ts | 2 +- .../src/views/heli/materialplan/part.vue | 2 +- .../views/heli/materialplan/purchasemake.vue | 16 +- .../views/heli/materialplan/standardbuy.vue | 16 +- .../src/views/heli/orderys/index.vue | 39 +- .../src/views/heli/partpurchase/index.vue | 16 +- .../views/heli/partpurchaseorder/index.vue | 16 +- .../src/views/heli/processdesign/bom.vue | 2 +- .../src/views/heli/projectorder/index.vue | 85 +- .../src/views/heli/screen/index.vue | 1387 +++++------------ .../src/views/heli/screen/index1.vue | 1046 +++++++++++++ .../src/views/heli/shenhe/index.vue | 20 +- .../src/views/heli/taskinreport/index.vue | 20 +- .../src/views/heli/taskreport/index.vue | 4 +- 102 files changed, 5401 insertions(+), 1168 deletions(-) create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/FoundController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/MonOrdNumController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/ProcessController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/ProcessDetailController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/YearNumController.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumPageReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumRespVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumSaveReqVO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/found/FoundDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/monordnum/MonOrdNumDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/process/ProcessDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdetail/ProcessDetailDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/yearnum/YearNumDO.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/found/FoundMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/monordnum/MonOrdNumMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/process/ProcessMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdetail/ProcessDetailMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/yearnum/YearNumMapper.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumService.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumServiceImpl.java create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/found/FoundMapper.xml create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/monordnum/MonOrdNumMapper.xml create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/process/ProcessMapper.xml create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml create mode 100644 mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/yearnum/YearNumMapper.xml create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/found/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/monordnum/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/process/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/processdetail/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/api/heli/yearnum/index.ts create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/screen/index1.vue diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index ccd38fac..595dc556 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -172,5 +172,7 @@ public interface ErrorCodeConstants { ErrorCode THIS_SHIPMENT_CANNOT_BE_INVALIDATED = new ErrorCode(1_013_008 , "该出库不允许作废,请刷新界面"); ErrorCode THERE_EXISTS_WEIGHT_CALCULATION_FORMULA = new ErrorCode(1_013_009 , "该物料类型存在重量计算公式,请确认"); - + ErrorCode FOUND_NOT_EXISTS = new ErrorCode(1_013_010, "数据已过期,请重新修改"); + ErrorCode YEAR_NUM_NOT_EXISTS = new ErrorCode(1_013_011, "数据已过期,请重新修改"); + ErrorCode PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_013_012, "数据已过期,请重新修改"); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 864fa23e..5b10088b 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -159,8 +159,8 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { - selectHasPrice(); - selectSafeStorageAndDeliverOneYear(); +// selectHasPrice(); +// selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/FoundController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/FoundController.java new file mode 100644 index 00000000..ceb1f6fd --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/FoundController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.found; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.found.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.module.heli.service.found.FoundService; + +@Tag(name = "管理后台 - 大屏-可修改单项数据") +@RestController +@RequestMapping("/heli/found") +@Validated +public class FoundController { + + @Resource + private FoundService foundService; + + @PostMapping("/create") + @Operation(summary = "创建大屏-可修改单项数据") + @PreAuthorize("@ss.hasPermission('heli:found:create')") + public CommonResult createFound(@Valid @RequestBody FoundSaveReqVO createReqVO) { + return success(foundService.createFound(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大屏-可修改单项数据") + @PreAuthorize("@ss.hasPermission('heli:found:update')") + public CommonResult updateFound(@Valid @RequestBody FoundSaveReqVO updateReqVO) { + foundService.updateFound(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大屏-可修改单项数据") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:found:delete')") + public CommonResult deleteFound(@RequestParam("id") Long id) { + foundService.deleteFound(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大屏-可修改单项数据") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:found:query')") + public CommonResult getFound(@RequestParam("id") Long id) { + FoundDO found = foundService.getFound(id); + return success(BeanUtils.toBean(found, FoundRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大屏-可修改单项数据分页") + @PreAuthorize("@ss.hasPermission('heli:found:query')") + public CommonResult> getFoundPage(@Valid FoundPageReqVO pageReqVO) { + PageResult pageResult = foundService.getFoundPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, FoundRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大屏-可修改单项数据 Excel") + @PreAuthorize("@ss.hasPermission('heli:found:export')") + @OperateLog(type = EXPORT) + public void exportFoundExcel(@Valid FoundPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = foundService.getFoundPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大屏-可修改单项数据.xls", "数据", FoundRespVO.class, + BeanUtils.toBean(list, FoundRespVO.class)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundPageReqVO.java new file mode 100644 index 00000000..9b01b6bf --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundPageReqVO.java @@ -0,0 +1,53 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.found.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 大屏-可修改单项数据分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class FoundPageReqVO extends PageParam { + + @Schema(description = "日期 格式 YYYYMMDD") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] date; + + @Schema(description = "是否开启mock模式 0 否 1是(针对订单交付准时率)") + private Boolean openMock; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Boolean status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "今日到岗人数") + private Integer numPresent; + + @Schema(description = "今日出差人数") + private Integer numBusinessTrip; + + @Schema(description = "当前设计项目数量") + private Integer numDesign; + + @Schema(description = "当前在制项目数量") + private Integer numInProcess; + + @Schema(description = "订单交付准时率") + private BigDecimal deliRate; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundRespVO.java new file mode 100644 index 00000000..ffa57402 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundRespVO.java @@ -0,0 +1,63 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.found.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 大屏-可修改单项数据 Response VO") +@Data +@ExcelIgnoreUnannotated +public class FoundRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "23355") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "日期 格式 YYYYMMDD") + @ExcelProperty("日期 格式 YYYYMMDD") + private LocalDate date; + + @Schema(description = "是否开启mock模式 0 否 1是(针对订单交付准时率)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否开启mock模式 0 否 1是(针对订单交付准时率)") + private Boolean openMock; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Boolean status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "今日到岗人数") + @ExcelProperty("今日到岗人数") + private Integer numPresent; + + @Schema(description = "今日出差人数") + @ExcelProperty("今日出差人数") + private Integer numBusinessTrip; + + @Schema(description = "当前设计项目数量") + @ExcelProperty("当前设计项目数量") + private Integer numDesign; + + @Schema(description = "当前在制项目数量") + @ExcelProperty("当前在制项目数量") + private Integer numInProcess; + + @Schema(description = "订单交付准时率") + @ExcelProperty("订单交付准时率") + private BigDecimal deliRate; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundSaveReqVO.java new file mode 100644 index 00000000..424ffe6c --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/found/vo/FoundSaveReqVO.java @@ -0,0 +1,48 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.found.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 大屏-可修改单项数据新增/修改 Request VO") +@Data +public class FoundSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "23355") + private Long id; + + @Schema(description = "日期 格式 YYYYMMDD") + private LocalDate date; + + @Schema(description = "是否开启mock模式 0 否 1是(针对订单交付准时率)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否开启mock模式 0 否 1是(针对订单交付准时率)不能为空") + private Integer openMock; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Boolean status; + + @Schema(description = "今日到岗人数") + private Integer numPresent; + + @Schema(description = "今日出差人数") + private Integer numBusinessTrip; + + @Schema(description = "当前设计项目数量") + private Integer numDesign; + + @Schema(description = "当前在制项目数量") + private Integer numInProcess; + + @Schema(description = "订单交付准时率") + private BigDecimal deliRate; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/master/MasterController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/master/MasterController.java index da3b7f73..97766c76 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/master/MasterController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/master/MasterController.java @@ -115,7 +115,7 @@ public class MasterController { @OperateLog(type = EXPORT) public void exportMasterLine(@Valid MasterPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = masterService.getMasterLinePage(pageReqVO).getList(); list.forEach(item -> { if ("1".equals(item.getJyTypes())) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java index b4b1f5c7..4bfa6964 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplan/MaterialPlanController.java @@ -180,7 +180,7 @@ public class MaterialPlanController { @OperateLog(type = EXPORT) public void exportStandardParts(@Valid MaterialPlanPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = materialPlanService.getStandardPartsPages(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "标准件库存.xlsx", "数据", MaterialPlanBoomExcelVo.class, diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/MaterialPlanBoomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/MaterialPlanBoomController.java index 4fcd4156..5356f33a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/MaterialPlanBoomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/MaterialPlanBoomController.java @@ -104,10 +104,10 @@ public class MaterialPlanBoomController { @OperateLog(type = EXPORT) public void exportMaterialPlanBoomExcel(@Valid MaterialPlanBoomPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = materialPlanBoomService.getMaterialPlanBoomPage(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "物料需求计划加工件明细.xls", "数据", MaterialPlanBoomRespVO.class, + ExcelUtils.write(response, "物料需求计划加工件明细.xlsx", "数据", MaterialPlanBoomRespVO.class, BeanUtils.toBean(list, MaterialPlanBoomRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/MonOrdNumController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/MonOrdNumController.java new file mode 100644 index 00000000..7e6daead --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/MonOrdNumController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.monordnum; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.module.heli.service.monordnum.MonOrdNumService; + +@Tag(name = "管理后台 - 大屏-月订单数量") +@RestController +@RequestMapping("/heli/mon-ord-num") +@Validated +public class MonOrdNumController { + + @Resource + private MonOrdNumService monOrdNumService; + + @PostMapping("/create") + @Operation(summary = "创建大屏-月订单数量") + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:create')") + public CommonResult createMonOrdNum(@Valid @RequestBody MonOrdNumSaveReqVO createReqVO) { + return success(monOrdNumService.createMonOrdNum(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大屏-月订单数量") + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:update')") + public CommonResult updateMonOrdNum(@Valid @RequestBody MonOrdNumSaveReqVO updateReqVO) { + monOrdNumService.updateMonOrdNum(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大屏-月订单数量") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:delete')") + public CommonResult deleteMonOrdNum(@RequestParam("id") Long id) { + monOrdNumService.deleteMonOrdNum(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大屏-月订单数量") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:query')") + public CommonResult getMonOrdNum(@RequestParam("id") Long id) { + MonOrdNumDO monOrdNum = monOrdNumService.getMonOrdNum(id); + return success(BeanUtils.toBean(monOrdNum, MonOrdNumRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大屏-月订单数量分页") + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:query')") + public CommonResult> getMonOrdNumPage(@Valid MonOrdNumPageReqVO pageReqVO) { + PageResult pageResult = monOrdNumService.getMonOrdNumPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MonOrdNumRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大屏-月订单数量 Excel") + @PreAuthorize("@ss.hasPermission('heli:mon-ord-num:export')") + @OperateLog(type = EXPORT) + public void exportMonOrdNumExcel(@Valid MonOrdNumPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = monOrdNumService.getMonOrdNumPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大屏-月订单数量.xls", "数据", MonOrdNumRespVO.class, + BeanUtils.toBean(list, MonOrdNumRespVO.class)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumPageReqVO.java new file mode 100644 index 00000000..36fff611 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumPageReqVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 大屏-月订单数量分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MonOrdNumPageReqVO extends PageParam { + + @Schema(description = "年份 格式 YYYY") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] date; + + @Schema(description = "是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "月份") + private String month; + + @Schema(description = "黑色模具数量") + private String blackMold; + + @Schema(description = "有色模具数量") + private String coloredMold; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Boolean status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumRespVO.java new file mode 100644 index 00000000..78ae3217 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumRespVO.java @@ -0,0 +1,52 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 大屏-月订单数量 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MonOrdNumRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "30335") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "年份 格式 YYYY", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("年份 格式 YYYY") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "月份", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("月份") + private String year; + + @Schema(description = "黑色模具数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("黑色模具数量") + private String blackMold; + + @Schema(description = "有色模具数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("有色模具数量") + private String coloredMold; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Boolean status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumSaveReqVO.java new file mode 100644 index 00000000..4ff4568e --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/monordnum/vo/MonOrdNumSaveReqVO.java @@ -0,0 +1,43 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 大屏-月订单数量新增/修改 Request VO") +@Data +public class MonOrdNumSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "30335") + private Long id; + + @Schema(description = "年份 格式 YYYY", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "年份 格式 YYYY不能为空") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否开启mock模式 0 否 1是不能为空") + private Boolean openMock; + + @Schema(description = "月份", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "月份不能为空") + private String year; + + @Schema(description = "黑色模具数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "黑色模具数量不能为空") + private String blackMold; + + @Schema(description = "有色模具数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "有色模具数量不能为空") + private String coloredMold; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Boolean status; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/OrderYfController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/OrderYfController.java index 78ee1345..75ab28c6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/OrderYfController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/OrderYfController.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.orderyf; +import cn.hutool.core.util.ObjectUtil; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -86,15 +87,42 @@ public class OrderYfController { @OperateLog(type = EXPORT) public void exportOrderYfExcel(@Valid OrderYfPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = orderYfService.getOrderYfPage(pageReqVO).getList(); for (OrderYfDO order : list) { BigDecimal cgYifu = order.getCgYifu(); BigDecimal cgYf = order.getCgYf(); + BigDecimal amount = order.getAmount(); + if (ObjectUtil.isEmpty(cgYifu)){ + order.setCgSY(cgYf); + }else { + BigDecimal subtract = cgYf.subtract(cgYifu); + if (subtract.compareTo(BigDecimal.ZERO) < 0){ + order.setSYAmount(BigDecimal.ZERO); + }else { + order.setSYAmount(subtract); + } + } + if (ObjectUtil.isEmpty(amount)){ + order.setSYAmount(cgYf); + }else { + BigDecimal subtract = cgYf.subtract(amount); + if (subtract.compareTo(BigDecimal.ZERO) < 0){ + order.setSYAmount(BigDecimal.ZERO); + }else { + order.setSYAmount(subtract); + } + + + } // 快速失败检查:任一为null或分母为0 if (cgYifu == null || cgYf == null || cgYf.signum() == 0) { order.setYfRatio("0%"); + if (amount == null || cgYf == null || cgYf.signum() == 0) { + order.setYkRatio("0%"); + continue; + } continue; } @@ -106,7 +134,6 @@ public class OrderYfController { int percent = (int) Math.round((numerator / denominator) * 100); order.setYfRatio(percent + "%"); - BigDecimal amount = order.getAmount(); // 快速失败检查:任一为null或分母为0 if (amount == null || cgYf == null || cgYf.signum() == 0) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/vo/OrderYfRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/vo/OrderYfRespVO.java index 05dd3b1e..cd702aea 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/vo/OrderYfRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderyf/vo/OrderYfRespVO.java @@ -41,12 +41,18 @@ public class OrderYfRespVO { @Schema(description = "已付金额") @ExcelProperty("已付金额(元)") private BigDecimal cgYifu; + @Schema(description = "剩余金额(元)") + @ExcelProperty("剩余金额(元)") + private BigDecimal cgSY; @Schema(description = "已付款比例") @ExcelProperty("已付款比例") private String yfRatio; @Schema(description = "已开票金额") @ExcelProperty("已开票金额(元)") private BigDecimal amount; + @Schema(description = "剩余开票金额(元)") + @ExcelProperty("剩余开票金额(元)") + private BigDecimal SYAmount; @Schema(description = "已开票比例") @ExcelProperty("已开票比例") private String ykRatio; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java index fb4767df..d004bc23 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/orderys/OrderYsController.java @@ -90,15 +90,21 @@ public class OrderYsController { @OperateLog(type = EXPORT) public void exportOrderYsExcel(@Valid OrderYsPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = orderYsService.getOrderYsPage(pageReqVO).getList(); for (OrderYsDO order : list) { BigDecimal yishou = order.getCgYishou(); BigDecimal cgYs = order.getCgYs(); + BigDecimal amount = order.getAmount(); // 快速失败检查:任一为null或分母为0 if (yishou == null || cgYs == null || cgYs.signum() == 0) { order.setYsRatio("0%"); + if (amount == null || cgYs == null || cgYs.signum() == 0) { + order.setYkRatio("0%"); + continue; + + } continue; } @@ -110,12 +116,12 @@ public class OrderYsController { int percent = (int) Math.round((numerator / denominator) * 100); order.setYsRatio(percent + "%"); - BigDecimal amount = order.getAmount(); // 快速失败检查:任一为null或分母为0 if (amount == null || cgYs == null || cgYs.signum() == 0) { order.setYkRatio("0%"); continue; + } // 使用double直接计算避免BigDecimal开销 @@ -144,7 +150,7 @@ public class OrderYsController { @OperateLog(type = EXPORT) public void exportDetails(@Valid OrderYsPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = orderYsService.getDetails(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "回款明细查询.xlsx", "数据", OrderYsDOVo.class, diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/ProcessController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/ProcessController.java new file mode 100644 index 00000000..e3596738 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/ProcessController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.process; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.module.heli.service.process.ProcessService; + +@Tag(name = "管理后台 - 大屏-设计、装配、加工进度") +@RestController +@RequestMapping("/heli/process") +@Validated +public class ProcessController { + + @Resource + private ProcessService processService; + + @PostMapping("/create") + @Operation(summary = "创建大屏-设计、装配、加工进度") + @PreAuthorize("@ss.hasPermission('heli:process:create')") + public CommonResult createProcess(@Valid @RequestBody ProcessSaveReqVO createReqVO) { + return success(processService.createProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大屏-设计、装配、加工进度") + @PreAuthorize("@ss.hasPermission('heli:process:update')") + public CommonResult updateProcess(@Valid @RequestBody ProcessSaveReqVO updateReqVO) { + processService.updateProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大屏-设计、装配、加工进度") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:process:delete')") + public CommonResult deleteProcess(@RequestParam("id") Long id) { + processService.deleteProcess(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大屏-设计、装配、加工进度") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process:query')") + public CommonResult getProcess(@RequestParam("id") Long id) { + ProcessDO process = processService.getProcess(id); + return success(BeanUtils.toBean(process, ProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大屏-设计、装配、加工进度分页") + @PreAuthorize("@ss.hasPermission('heli:process:query')") + public CommonResult> getProcessPage(@Valid ProcessPageReqVO pageReqVO) { + PageResult pageResult = processService.getProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大屏-设计、装配、加工进度 Excel") + @PreAuthorize("@ss.hasPermission('heli:process:export')") + @OperateLog(type = EXPORT) + public void exportProcessExcel(@Valid ProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processService.getProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大屏-设计、装配、加工进度.xls", "数据", ProcessRespVO.class, + BeanUtils.toBean(list, ProcessRespVO.class)); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessPageReqVO.java new file mode 100644 index 00000000..af294199 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessPageReqVO.java @@ -0,0 +1,38 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.process.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProcessPageReqVO extends PageParam { + + @Schema(description = "年份 格式 YYYY") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] date; + + @Schema(description = "是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Boolean status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "进度类型(1、设计 2、生产 3、装配 4、采购)", example = "1") + private Boolean processType; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessRespVO.java new file mode 100644 index 00000000..f8662ba8 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessRespVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.process.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "26575") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "年份 格式 YYYY") + @ExcelProperty("年份 格式 YYYY") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "备注", example = "你说的对") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Boolean status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "进度类型(1、设计 2、生产 3、装配 4、采购)", example = "1") + @ExcelProperty("进度类型(1、设计 2、生产 3、装配 4、采购)") + private Boolean processType; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessSaveReqVO.java new file mode 100644 index 00000000..1cbdbc3d --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/process/vo/ProcessSaveReqVO.java @@ -0,0 +1,33 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.process.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度新增/修改 Request VO") +@Data +public class ProcessSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "26575") + private Long id; + + @Schema(description = "年份 格式 YYYY") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否开启mock模式 0 否 1是不能为空") + private Boolean openMock; + + @Schema(description = "备注", example = "你说的对") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Boolean status; + + @Schema(description = "进度类型(1、设计 2、生产 3、装配 4、采购)", example = "1") + private Boolean processType; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java index 3c14fc58..1cb48487 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java @@ -1,6 +1,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.processbom; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.framework.common.enums.BomEditStatusEnum; import com.chanko.yunxi.mes.framework.common.enums.StatusEnum; @@ -172,8 +173,13 @@ public class ProcessBomController { @PreAuthorize("@ss.hasPermission('system:user:import')") @OperateLog(type = EXPORT) public void exportProcessBomExcel(@Valid ProcessBomPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = processBomService.getProcessBomPageNew(pageReqVO).getList(); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + PageResult pageResult = processBomService.getProcessBomPage(pageReqVO); + List collect = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(pageResult.getList())){ + collect = pageResult.getList().stream().map(ProcessBomDO::getId).collect(Collectors.toList()); + } + List list = processBomService.getProcessBomExcel(collect); HashMap unitDictData = processBomService.getUnitDictData(); List excelVOList = list.stream() .map(processBomDO -> { @@ -203,7 +209,7 @@ public class ProcessBomController { .collect(Collectors.toList()); // 导出 Excel try { - ExcelUtils.write(response, "工艺bom.xls", "数据", ProcessBomImportExcelVO.class, BeanUtils.toBean(excelVOList, ProcessBomImportExcelVO.class)); + ExcelUtils.write(response, "工艺bom.xlsx", "数据", ProcessBomImportExcelVO.class, BeanUtils.toBean(excelVOList, ProcessBomImportExcelVO.class)); } catch (Exception e) { e.printStackTrace(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java index 66ebc061..144c620f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdesign/ProcessDesignController.java @@ -124,7 +124,7 @@ public class ProcessDesignController { @OperateLog(type = EXPORT) public void exportProcessDesignExcels(@Valid ProcessDesignPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = processDesignService.getExportExcel(pageReqVO).getList(); // 导出 Excel diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/ProcessDetailController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/ProcessDetailController.java new file mode 100644 index 00000000..c5b2ee98 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/ProcessDetailController.java @@ -0,0 +1,111 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdetail; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.module.heli.service.processdetail.ProcessDetailService; + +@Tag(name = "管理后台 - 大屏-设计、装配、加工进度子") +@RestController +@RequestMapping("/heli/process-detail") +@Validated +public class ProcessDetailController { + + @Resource + private ProcessDetailService processDetailService; + + @PostMapping("/create") + @Operation(summary = "创建大屏-设计、装配、加工进度子") + @PreAuthorize("@ss.hasPermission('heli:process-detail:create')") + public CommonResult createProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO createReqVO) { + return success(processDetailService.createProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大屏-设计、装配、加工进度子") + @PreAuthorize("@ss.hasPermission('heli:process-detail:update')") + public CommonResult updateProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO updateReqVO) { + processDetailService.updateProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大屏-设计、装配、加工进度子") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:process-detail:delete')") + public CommonResult deleteProcessDetail(@RequestParam("id") Long id) { + processDetailService.deleteProcessDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大屏-设计、装配、加工进度子") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-detail:query')") + public CommonResult getProcessDetail(@RequestParam("id") Long id) { + ProcessDetailDO processDetail = processDetailService.getProcessDetail(id); + return success(BeanUtils.toBean(processDetail, ProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大屏-设计、装配、加工进度子分页") + @PreAuthorize("@ss.hasPermission('heli:process-detail:query')") + public CommonResult> getProcessDetailPage(@Valid ProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = processDetailService.getProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大屏-设计、装配、加工进度子 Excel") + @PreAuthorize("@ss.hasPermission('heli:process-detail:export')") + @OperateLog(type = EXPORT) + public void exportProcessDetailExcel(@Valid ProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processDetailService.getProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大屏-设计、装配、加工进度子.xls", "数据", ProcessDetailRespVO.class, + BeanUtils.toBean(list, ProcessDetailRespVO.class)); + } + @GetMapping("/searchProgress") + @Operation(summary = "获得进度") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-detail:query')") + public CommonResult> searchProgress(@RequestParam("type") Integer type) { + List list= processDetailService.searchProgress(type); + return success(list); + } + + @PutMapping("/updateProcessDetail") + @Operation(summary = "更新大屏-设计、装配、加工进度子") + @PreAuthorize("@ss.hasPermission('heli:process-detail:update')") + public CommonResult update(@RequestBody List list) { + processDetailService.update(list); + return success(true); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java new file mode 100644 index 00000000..9435a675 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java @@ -0,0 +1,65 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度子分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProcessDetailPageReqVO extends PageParam { + + @Schema(description = "年份 格式 YYYY") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] date; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Boolean status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "项目名称", example = "王五") + private String projectName; + + @Schema(description = "项目名称简码") + private String projectNameSim; + + @Schema(description = "项目开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] projectStartTime; + + @Schema(description = "项目结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] projectEndTime; + + @Schema(description = "项目进度") + private Integer projectProcess; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", example = "1") + private Boolean deliveryStatus; + + @Schema(description = "是否延期 1-是 0-否") + private String isExten; + + @Schema(description = "是否选择 1-是 0-否") + private String isSelect; + + @Schema(description = "订单日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] ordDate; + + @Schema(description = "项目id", example = "5162") + private Long projectId; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailRespVO.java new file mode 100644 index 00000000..04d4eddf --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailRespVO.java @@ -0,0 +1,76 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessDetailRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18035") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "年份 格式 YYYY") + @ExcelProperty("年份 格式 YYYY") + private String date; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Boolean status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "项目名称", example = "王五") + @ExcelProperty("项目名称") + private String projectName; + + @Schema(description = "项目名称简码") + @ExcelProperty("项目名称简码") + private String projectNameSim; + + @Schema(description = "项目开始时间") + @ExcelProperty("项目开始时间") + private LocalDateTime projectStartTime; + + @Schema(description = "项目结束时间") + @ExcelProperty("项目结束时间") + private LocalDateTime projectEndTime; + + @Schema(description = "项目进度") + @ExcelProperty("项目进度") + private Integer projectProcess; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", example = "1") + @ExcelProperty("发货状态 未发货/部分发货/全部发货") + private Boolean deliveryStatus; + + @Schema(description = "是否延期 1-是 0-否") + @ExcelProperty("是否延期 1-是 0-否") + private String isExten; + + @Schema(description = "是否选择 1-是 0-否") + @ExcelProperty("是否选择 1-是 0-否") + private String isSelect; + + @Schema(description = "订单日期") + @ExcelProperty("订单日期") + private LocalDateTime ordDate; + + @Schema(description = "项目id", example = "5162") + @ExcelProperty("项目id") + private Long projectId; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java new file mode 100644 index 00000000..fa0c330b --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java @@ -0,0 +1,58 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 大屏-设计、装配、加工进度子新增/修改 Request VO") +@Data +public class ProcessDetailSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18035") + private Long id; + + @Schema(description = "年份 格式 YYYY") + private String date; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Boolean status; + + @Schema(description = "项目名称", example = "王五") + private String projectName; + + @Schema(description = "项目名称简码") + private String projectNameSim; + + @Schema(description = "项目开始时间") + private LocalDateTime projectStartTime; + + @Schema(description = "项目结束时间") + private LocalDateTime projectEndTime; + + @Schema(description = "项目进度") + private Integer projectProcess; + + @Schema(description = "发货状态 未发货/部分发货/全部发货", example = "1") + private Boolean deliveryStatus; + + @Schema(description = "是否延期 1-是 0-否") + private String isExten; + + @Schema(description = "是否选择 1-是 0-否") + private String isSelect; + + @Schema(description = "订单日期") + private LocalDateTime ordDate; + + @Schema(description = "项目id", example = "5162") + private Long projectId; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java index e065513b..b77c4684 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/ProjectOrderController.java @@ -34,6 +34,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.parameters.P; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -44,6 +45,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.HashSet; import java.util.List; @@ -259,8 +261,21 @@ public class ProjectOrderController { HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = projectOrderService.getProjectOrderPage(pageReqVO).getList(); + for (ProjectOrderDO projectOrderDO : list) { + if (projectOrderDO.getHasPrice()==1){ + if (ObjectUtil.isNotEmpty(projectOrderDO.getPrice())) { + projectOrderDO.setHasPrices(projectOrderDO.getPrice().toString()); + } + }else{ + projectOrderDO.setHasPrices("否"); + } + DeliverOrderDO deliverOrder = deliverOrderService.getDeliverOrderId(projectOrderDO.getId()); + if (ObjectUtil.isNotEmpty(deliverOrder)){ + projectOrderDO.setMaxDeliverDate(deliverOrder.getDeliverDate()); + } + } // 导出 Excel - ExcelUtils.write(response, "项目订单.xls", "数据", ProjectOrderExportVO.class, + ExcelUtils.write(response, "项目订单.xlsx", "数据", ProjectOrderExportVO.class, BeanUtils.toBean(list, ProjectOrderExportVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderExportVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderExportVO.java index 89f327fe..f400c997 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderExportVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderExportVO.java @@ -36,10 +36,12 @@ public class ProjectOrderExportVO { private String projectName; @Schema(description = "是否有价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "28491") - @ExcelProperty(value = "是否有价格", converter = DictConvert.class) +// @ExcelProperty(value = "是否有价格", converter = DictConvert.class) @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Integer hasPrice; - + @Schema(description = "是否有价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "28491") + @ExcelProperty(value = "是否有价格") + private String hasPrices; @Schema(description = "是否紧急", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty(value = "是否紧急", converter = DictConvert.class) @DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 @@ -62,7 +64,12 @@ public class ProjectOrderExportVO { @ExcelProperty(value = "单据状态", converter = DictConvert.class) @DictFormat("heli_project_order_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Integer orderStatus; - + @Schema(description = "业务员", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("业务员") + private String businessManName; + @Schema(description = "发货日期") + @ExcelProperty(value = "发货日期", converter = TimestampToDateConvert.class) + private LocalDateTime maxDeliverDate; @Schema(description = "发货状态 未发货/部分发货/全部发货", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty(value = "发货状态", converter = DictConvert.class) @DictFormat("heli_delivery_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java index 244cf13c..17cb1f23 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java @@ -12,15 +12,21 @@ import com.chanko.yunxi.mes.framework.tenant.core.aop.TenantIgnore; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenRespVO; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenSaveReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.screen.ScreenDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; import com.chanko.yunxi.mes.module.heli.service.screen.ScreenService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletResponse; @@ -113,25 +119,42 @@ public class ScreenController { BeanUtils.toBean(list, ScreenRespVO.class)); } @GetMapping("/searchUnfinished") - @Operation(summary = "获得未完成设计以及为发货的子项目数量") + @Operation(summary = "查询未完成设计以及为发货的子项目数量") @PermitAll @OperateLog(enable = false) - public CommonResult> searchUnfinished() { + public CommonResult searchUnfinished() { return success(screenService.searchUnfinished()); } @GetMapping("/searchOrderInformation") - @Operation(summary = "获得按月份的订单数量") + @Operation(summary = "查询按月份的订单数量") @PermitAll @OperateLog(enable = false) - public CommonResult>> searchOrderInformation() { + public CommonResult> searchOrderInformation() { return success(screenService.searchOrderInformation()); } @GetMapping("/searchOrderByYear") - @Operation(summary = "获得按年的订单数量") + @Operation(summary = "查询按年的订单数量") @PermitAll @OperateLog(enable = false) - public CommonResult> searchOrderByYear() { + public CommonResult> searchOrderByYear() { return success(screenService.searchOrderByYear()); } + @GetMapping("/searchProgress") + @Operation(summary = "查询进度") + @PermitAll + @OperateLog(enable = false) + public CommonResult> searchOrderByYear(@RequestParam("type") Integer type) { + return success(screenService.searchProgress(type)); + } + /** + * 定时任务更新大屏数据 + */ +// @Scheduled(cron = "0 0 * * * ?") +// @PostConstruct + @Scheduled(cron = "0 0 1 * * ?") + @Operation(summary = "定时任务更新大屏数据") + public void updateLargeScreenData(){ + screenService.updateLargeScreenData(); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/shenhe/ShenheController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/shenhe/ShenheController.java index ccc3ba4e..df8af129 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/shenhe/ShenheController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/shenhe/ShenheController.java @@ -96,10 +96,10 @@ public class ShenheController { @OperateLog(type = EXPORT) public void exportShenheExcel(@Valid ShenhePageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = shenheService.getShenhePage(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "审核.xls", "数据", ShenheRespVO.class, + ExcelUtils.write(response, "审核.xlsx", "数据", ShenheRespVO.class, BeanUtils.toBean(list, ShenheRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java index 93f07e41..24d3f5a3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/TaskReportController.java @@ -94,10 +94,17 @@ public class TaskReportController { @OperateLog(type = EXPORT) public void exportTaskReportExcel(@Valid TaskReportPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = taskReportService.getTaskReportPage(pageReqVO).getList(); + for (TaskReportDO taskReportDO : list) { + if ("2".equals(taskReportDO.getProcedureStatus())){ + taskReportDO.setReportProcess("报工完成"); + }else { + taskReportDO.setReportProcess("已报工"); + } + } // 导出 Excel - ExcelUtils.write(response, "每日报工记录.xls", "数据", TaskReportRespVO.class, + ExcelUtils.write(response, "每日报工记录.xlsx", "数据", TaskReportRespVO.class, BeanUtils.toBean(list, TaskReportRespVO.class)); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/vo/TaskReportRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/vo/TaskReportRespVO.java index 5467d489..09ae4723 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/vo/TaskReportRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskreport/vo/TaskReportRespVO.java @@ -56,6 +56,9 @@ public class TaskReportRespVO { @Schema(description = "报工人") @ExcelProperty("报工人") private String ownerName; + @Schema(description = "报工进度") + @ExcelProperty("报工进度") + private String reportProcess; @Schema(description = "原因说明") @ExcelProperty("原因说明") private String remark; @@ -106,8 +109,6 @@ public class TaskReportRespVO { @Schema(description = "单位") private String unit; - @Schema(description = "报工状态") - private String reportProcess; private String procedureStatus; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java index 9c0445d4..bf1babb3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/unqualifiednotification/UnqualifiedNotificationController.java @@ -287,10 +287,10 @@ public class UnqualifiedNotificationController { @OperateLog(type = EXPORT) public void exportStatisticPage(@Valid UnqualifiedNotificationPageReqVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); +// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = unqualifiedNotificationService.getUnqualifiedNotificationStatisticPage(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "质量异常统计.xls", "数据", QualityStatistics.class, + ExcelUtils.write(response, "质量异常统计.xlsx", "数据", QualityStatistics.class, BeanUtils.toBean(list, QualityStatistics.class)); } @PostMapping("/review") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/YearNumController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/YearNumController.java new file mode 100644 index 00000000..68af7b54 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/YearNumController.java @@ -0,0 +1,101 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.yearnum; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import com.chanko.yunxi.mes.module.heli.service.yearnum.YearNumService; + +@Tag(name = "管理后台 - 大屏-近五年订单数量") +@RestController +@RequestMapping("/heli/year-num") +@Validated +public class YearNumController { + + @Resource + private YearNumService yearNumService; + + @PostMapping("/create") + @Operation(summary = "创建大屏-近五年订单数量") + @PreAuthorize("@ss.hasPermission('heli:year-num:create')") + public CommonResult createYearNum(@Valid @RequestBody YearNumSaveReqVO createReqVO) { + return success(yearNumService.createYearNum(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大屏-近五年订单数量") + @PreAuthorize("@ss.hasPermission('heli:year-num:update')") + public CommonResult updateYearNum(@Valid @RequestBody YearNumSaveReqVO updateReqVO) { + yearNumService.updateYearNum(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大屏-近五年订单数量") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:year-num:delete')") + public CommonResult deleteYearNum(@RequestParam("id") Long id) { + yearNumService.deleteYearNum(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大屏-近五年订单数量") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:year-num:query')") + public CommonResult getYearNum(@RequestParam("id") Long id) { + YearNumDO yearNum = yearNumService.getYearNum(id); + return success(BeanUtils.toBean(yearNum, YearNumRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大屏-近五年订单数量分页") + @PreAuthorize("@ss.hasPermission('heli:year-num:query')") + public CommonResult> getYearNumPage(@Valid YearNumPageReqVO pageReqVO) { + PageResult pageResult = yearNumService.getYearNumPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, YearNumRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大屏-近五年订单数量 Excel") + @PreAuthorize("@ss.hasPermission('heli:year-num:export')") + @OperateLog(type = EXPORT) + public void exportYearNumExcel(@Valid YearNumPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = yearNumService.getYearNumPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大屏-近五年订单数量.xls", "数据", YearNumRespVO.class, + BeanUtils.toBean(list, YearNumRespVO.class)); + } + @PutMapping("/updateYearNum") + @Operation(summary = "更新大屏-近五年订单数量") + @PreAuthorize("@ss.hasPermission('heli:year-num:update')") + public CommonResult updateYearNum(@RequestBody List list) { + yearNumService.update(list); + return success(true); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumPageReqVO.java new file mode 100644 index 00000000..7209f6da --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumPageReqVO.java @@ -0,0 +1,38 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 大屏-近五年订单数量分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class YearNumPageReqVO extends PageParam { + + @Schema(description = "年份 格式 YYYY") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] date; + + @Schema(description = "是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", example = "2") + private Boolean status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "订单数量") + private Integer numOrder; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumRespVO.java new file mode 100644 index 00000000..ca3a97a7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumRespVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 大屏-近五年订单数量 Response VO") +@Data +@ExcelIgnoreUnannotated +public class YearNumRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "31611") + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "年份 格式 YYYY") + @ExcelProperty("年份 格式 YYYY") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否开启mock模式 0 否 1是") + private Boolean openMock; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态,1表示正常,2表示禁用") + private Boolean status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "订单数量") + @ExcelProperty("订单数量") + private Integer numOrder; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumSaveReqVO.java new file mode 100644 index 00000000..a3c607ac --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/yearnum/vo/YearNumSaveReqVO.java @@ -0,0 +1,33 @@ +package com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 大屏-近五年订单数量新增/修改 Request VO") +@Data +public class YearNumSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "31611") + private Long id; + + @Schema(description = "年份 格式 YYYY") + private String date; + + @Schema(description = "是否开启mock模式 0 否 1是", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否开启mock模式 0 否 1是不能为空") + private Boolean openMock; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Boolean status; + + @Schema(description = "订单数量") + private Integer numOrder; + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/found/FoundDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/found/FoundDO.java new file mode 100644 index 00000000..f8bbfdc7 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/found/FoundDO.java @@ -0,0 +1,70 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.found; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 大屏-可修改单项数据 DO + * + * @author 管理员 + */ +@TableName("screen_found") +@KeySequence("screen_found_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FoundDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 日期 格式 YYYYMMDD + */ + private LocalDate date; + /** + * 是否开启mock模式 0 否 1是(针对订单交付准时率) + */ + private Integer openMock; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + /** + * 今日到岗人数 + */ + private Integer numPresent; + /** + * 今日出差人数 + */ + private Integer numBusinessTrip; + /** + * 当前设计项目数量 + */ + private Integer numDesign; + /** + * 当前在制项目数量 + */ + private Integer numInProcess; + /** + * 订单交付准时率 + */ + private BigDecimal deliRate; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/monordnum/MonOrdNumDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/monordnum/MonOrdNumDO.java new file mode 100644 index 00000000..d936f83a --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/monordnum/MonOrdNumDO.java @@ -0,0 +1,59 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 大屏-月订单数量 DO + * + * @author 管理员 + */ +@TableName("screen_mon_ord_num") +@KeySequence("screen_mon_ord_num_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MonOrdNumDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 年份 格式 YYYY + */ + private String date; + /** + * 是否开启mock模式 0 否 1是 + */ + private Integer openMock; + /** + * 月份 + */ + private String Month; + /** + * 黑色模具数量 + */ + private Integer blackMold; + /** + * 有色模具数量 + */ + private Integer coloredMold; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderyf/OrderYfDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderyf/OrderYfDO.java index 20df4bc1..08f24f14 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderyf/OrderYfDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/orderyf/OrderYfDO.java @@ -70,6 +70,9 @@ public class OrderYfDO extends BaseDO { private String yfRatio; @TableField(exist = false) private String ykRatio; - + @TableField(exist = false) + private BigDecimal cgSY; + @TableField(exist = false) + private BigDecimal SYAmount; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/process/ProcessDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/process/ProcessDO.java new file mode 100644 index 00000000..9b154e08 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/process/ProcessDO.java @@ -0,0 +1,51 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.process; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 大屏-设计、装配、加工进度 DO + * + * @author 管理员 + */ +@TableName("screen_process") +@KeySequence("screen_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 年份 格式 YYYY + */ + private String date; + /** + * 是否开启mock模式 0 否 1是 + */ + private Integer openMock; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + /** + * 进度类型(1、设计 2、生产 3、装配 4、采购) + */ + private Integer processType; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java index 1a261a2b..b864e867 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java @@ -205,5 +205,7 @@ public class ProcessBomDetailDO extends BaseDO { private BigDecimal boomAmounts; @TableField(exist = false) private List taskDispatchDetailDOList; + @TableField(exist = false) + private Integer totalAmount; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdetail/ProcessDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdetail/ProcessDetailDO.java new file mode 100644 index 00000000..35eccccf --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processdetail/ProcessDetailDO.java @@ -0,0 +1,90 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 大屏-设计、装配、加工进度子 DO + * + * @author 管理员 + */ +@TableName("screen_process_detail") +@KeySequence("screen_process_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDetailDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 大屏-设计、装配、加工进度id + */ + private Long processId; + /** + * 年份 格式 YYYY + */ + private String date; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + /** + * 项目名称 + */ + private String projectName; + /** + * 项目名称简码 + */ + private String projectNameSim; + /** + * 项目开始时间 + */ + private LocalDateTime projectStartTime; + /** + * 项目结束时间 + */ + private LocalDateTime projectEndTime; + /** + * 项目进度 + */ + private Integer projectProcess; + /** + * 发货状态 未发货/部分发货/全部发货 + */ + private Integer deliveryStatus; + /** + * 是否延期 1-是 0-否 + */ + private String isExten; + /** + * 是否选择 1-是 0-否 + */ + private String isSelect; + /** + * 订单日期 + */ + private LocalDateTime ordDate; + /** + * 项目id + */ + private Long projectId; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java index ecc8538a..d5571fdd 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -306,6 +306,10 @@ public class ProjectOrderDO extends BaseDO { private Integer blackMold; @TableField(exist = false) private Integer coloredMolds; + @TableField(exist = false) + private String hasPrices; + @TableField(exist = false) + private LocalDateTime maxDeliverDate; /** * 变更的字段列表 * */ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java index eb9a8b78..9ea1623f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordernodetail/PurchaseOrderNoDetailDO.java @@ -237,4 +237,6 @@ public class PurchaseOrderNoDetailDO extends BaseDO { private String time; @TableField(exist = false) private String requir; + @TableField(exist = false) + private Integer totalAmount; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index 34165755..157390f9 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -316,4 +316,7 @@ public class TaskDispatchDetailDO extends BaseDO { private BigDecimal price; @TableField(exist = false) private Long compositionId; + @TableField(exist = false) + private Long projectOrderId; + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/yearnum/YearNumDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/yearnum/YearNumDO.java new file mode 100644 index 00000000..e694bbcb --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/yearnum/YearNumDO.java @@ -0,0 +1,51 @@ +package com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 大屏-近五年订单数量 DO + * + * @author 管理员 + */ +@TableName("screen_year_num") +@KeySequence("screen_year_num_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class YearNumDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 年份 格式 YYYY + */ + private String date; + /** + * 是否开启mock模式 0 否 1是 + */ + private Integer openMock; + /** + * 备注 + */ + private String remark; + /** + * 状态,1表示正常,2表示禁用 + */ + private Boolean status; + /** + * 订单数量 + */ + private Integer numOrder; + +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/found/FoundMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/found/FoundMapper.java new file mode 100644 index 00000000..5d6a1d0c --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/found/FoundMapper.java @@ -0,0 +1,47 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.found; + +import java.util.*; + +import cn.hutool.core.date.DateUtil; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.found.vo.*; + +/** + * 大屏-可修改单项数据 Mapper + * + * @author 管理员 + */ +@Mapper +public interface FoundMapper extends BaseMapperX { + + default PageResult selectPage(FoundPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() +// .betweenIfPresent(FoundDO::getDate, reqVO.getDate()) + .eqIfPresent(FoundDO::getOpenMock, reqVO.getOpenMock()) + .eqIfPresent(FoundDO::getRemark, reqVO.getRemark()) + .eqIfPresent(FoundDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(FoundDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(FoundDO::getNumPresent, reqVO.getNumPresent()) + .eqIfPresent(FoundDO::getNumBusinessTrip, reqVO.getNumBusinessTrip()) + .eqIfPresent(FoundDO::getNumDesign, reqVO.getNumDesign()) + .eqIfPresent(FoundDO::getNumInProcess, reqVO.getNumInProcess()) + .eqIfPresent(FoundDO::getDeliRate, reqVO.getDeliRate()) + .orderByDesc(FoundDO::getId)); + } + + default FoundDO searchUnfinished(){ +// return selectList(new LambdaQueryWrapperX().eq(FoundDO::getDate, DateUtil.formatDate(new Date()))); + return selectOne(new LambdaQueryWrapperX().last("limit 1")); + + } + + + default FoundDO selectAll(){ + return selectOne(new LambdaQueryWrapperX().last("limit 1")); + } +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/monordnum/MonOrdNumMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/monordnum/MonOrdNumMapper.java new file mode 100644 index 00000000..3e8f43d5 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/monordnum/MonOrdNumMapper.java @@ -0,0 +1,40 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.monordnum; + +import java.util.*; + +import cn.hutool.core.date.DateUtil; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo.*; + +/** + * 大屏-月订单数量 Mapper + * + * @author 管理员 + */ +@Mapper +public interface MonOrdNumMapper extends BaseMapperX { + + default PageResult selectPage(MonOrdNumPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .betweenIfPresent(MonOrdNumDO::getDate, reqVO.getDate()) + .eqIfPresent(MonOrdNumDO::getOpenMock, reqVO.getOpenMock()) + .eqIfPresent(MonOrdNumDO::getMonth, reqVO.getMonth()) + .eqIfPresent(MonOrdNumDO::getBlackMold, reqVO.getBlackMold()) + .eqIfPresent(MonOrdNumDO::getColoredMold, reqVO.getColoredMold()) + .eqIfPresent(MonOrdNumDO::getRemark, reqVO.getRemark()) + .eqIfPresent(MonOrdNumDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(MonOrdNumDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MonOrdNumDO::getId)); + } + + default List searchOrderInformation(String currentYear){ + return selectList(new LambdaQueryWrapperX() + .eq(MonOrdNumDO::getDate, currentYear) + .orderByAsc(MonOrdNumDO::getMonth)); + } +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java index 4604d181..9a711469 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/orderys/OrderYsMapper.java @@ -38,8 +38,8 @@ public interface OrderYsMapper extends BaseMapperX { .select("p.delivery_status as deliveryStatus") .select("p.id as projectId","p.code as projectCode") .select("p.project_start_time as projectStartTime","p.contract_no as contractNo") - .select("t.cg_ys-t.cg_yishou as remainingYishou") - .select("t.cg_ys-sum(i.amount) as remainingAmount") + .select("GREATEST(t.cg_ys - COALESCE(t.cg_yishou, 0), 0) as remainingYishou") + .select("GREATEST(t.cg_ys - COALESCE(SUM(i.amount), 0), 0) as remainingAmount") .leftJoin( "finance_invoice i ON i.order_code = t.code AND i.deleted=0 and i.tenant_id=2 and i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'") .leftJoin(ProjectOrderDO.class,"p", ProjectOrderDO::getCode, OrderYsDO::getCode) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java index fdbb641b..16df9504 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/plansub/PlanSubMapper.java @@ -336,4 +336,15 @@ public interface PlanSubMapper extends BaseMapperX { query.orderByAsc(ProjectOrderDO::getCode); return selectPage(pageReqVO, query); } + + default PlanSubDO selectPlanSub(Long planId, Long projectSubId){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(PlanSubDO.class); + query.eq(PlanSubDO::getProjectPlanId,planId); + query.eq(PlanSubDO::getProjectSubId,projectSubId); + query.last("limit 1"); + return selectOne(query); + + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/process/ProcessMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/process/ProcessMapper.java new file mode 100644 index 00000000..e2e9ff5e --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/process/ProcessMapper.java @@ -0,0 +1,36 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.process; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.process.vo.*; + +/** + * 大屏-设计、装配、加工进度 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessMapper extends BaseMapperX { + + default PageResult selectPage(ProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .betweenIfPresent(ProcessDO::getDate, reqVO.getDate()) + .eqIfPresent(ProcessDO::getOpenMock, reqVO.getOpenMock()) + .eqIfPresent(ProcessDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ProcessDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProcessDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ProcessDO::getProcessType, reqVO.getProcessType()) + .orderByDesc(ProcessDO::getId)); + } + + default ProcessDO selectType(Integer type){ + return selectOne(new LambdaQueryWrapperX() + .eqIfPresent(ProcessDO::getProcessType, type) + .last("limit 1")); + } +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java index 41dfff9c..b2c9a0ec 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java @@ -2,6 +2,8 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.processbom; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import cn.smallbun.screw.core.util.CollectionUtils; +import com.alibaba.druid.sql.visitor.functions.Left; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,6 +29,8 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Delete; @@ -38,6 +42,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -318,4 +323,45 @@ public interface ProcessBomDetailMapper extends BaseMapperX "" + "") void deleteOrderId(@Param("idList") List idList); + + default List selectByProjectOrderIds(List projectOrderIds){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessBomDetailDO.class) + .select("g.project_id as projectId","SUM(COALESCE(taskDetail.amount, 0) + \n" + + " CASE WHEN taskDetail.id IS NULL THEN t.amount * sub.amount ELSE 0 END\n" + + ") as totalAmount") + .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) + .leftJoin(TaskDispatchDO.class,"task",TaskDispatchDO::getBomDetailId,ProcessBomDetailDO::getId) + .leftJoin(ProjectOrderSubDO.class,"sub",ProjectOrderSubDO::getId,ProcessBomDO::getProjectSubId) + .leftJoin(TaskDispatchDetailDO.class,"taskDetail",TaskDispatchDetailDO::getDispatchId,TaskDispatchDO::getId) + .groupBy(ProcessBomDO::getProjectId); + query.in(ProcessBomDO::getProjectId,projectOrderIds); + query.eq(ProcessBomDetailDO::getType,"2"); + + return selectList(query); + + } + + default List getProcessBomExcel(List collect){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessBomDetailDO.class) + .select("e.project_sub_code as bomCode", "e.project_sub_code as projectSubCode") + .select("a.plan_no as planCode", "b.code as projectCode", "c.name as customerName", "b.project_name as projectName") + .select("d.name as projectSubName,f.name as compositionName") + + .leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId) + .leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId) + .leftJoin(PlanSubDO.class, "e", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId) + .leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId) + .leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId) + .leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId) + .leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId) + .orderByDesc(ProcessBomDO::getId) + .disableSubLogicDel() + ; + query.in(ProcessBomDO::getId,collect); + + + return selectList( query); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java index 95ad4424..75216951 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdesign/ProcessDesignMapper.java @@ -425,4 +425,19 @@ public interface ProcessDesignMapper extends BaseMapperX { "WHERE pd.project_sub_id = #{projectSubId} \n" + " AND pd.process_design_type IN ('BLUEPRINT_3D', 'BLUEPRINT_2D', 'BLUEPRINT_WORKBLANK')") List selectWithDetailExists(@Param("projectSubId") Long projectSubId); + @Select("") + List selectWithDetail(@Param("projectOrderIds")List projectOrderIds); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdetail/ProcessDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdetail/ProcessDetailMapper.java new file mode 100644 index 00000000..5a69ea60 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processdetail/ProcessDetailMapper.java @@ -0,0 +1,87 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.processdetail; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +/** + * 大屏-设计、装配、加工进度子 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .betweenIfPresent(ProcessDetailDO::getDate, reqVO.getDate()) + .eqIfPresent(ProcessDetailDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ProcessDetailDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProcessDetailDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(ProcessDetailDO::getProjectName, reqVO.getProjectName()) + .eqIfPresent(ProcessDetailDO::getProjectNameSim, reqVO.getProjectNameSim()) + .betweenIfPresent(ProcessDetailDO::getProjectStartTime, reqVO.getProjectStartTime()) + .betweenIfPresent(ProcessDetailDO::getProjectEndTime, reqVO.getProjectEndTime()) + .eqIfPresent(ProcessDetailDO::getProjectProcess, reqVO.getProjectProcess()) + .eqIfPresent(ProcessDetailDO::getDeliveryStatus, reqVO.getDeliveryStatus()) + .eqIfPresent(ProcessDetailDO::getIsExten, reqVO.getIsExten()) + .eqIfPresent(ProcessDetailDO::getIsSelect, reqVO.getIsSelect()) + .betweenIfPresent(ProcessDetailDO::getOrdDate, reqVO.getOrdDate()) + .eqIfPresent(ProcessDetailDO::getProjectId, reqVO.getProjectId()) + .orderByDesc(ProcessDetailDO::getId)); + } + + default List selectProcessIdAndIsSelect(Long id){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProcessDetailDO::getProcessId, id) + .eqIfPresent(ProcessDetailDO::getIsSelect, 1) + .orderByDesc(ProcessDetailDO::getOrdDate) + .last("limit 6")); + } + + default List selectProcessId(Long id){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(ProcessDetailDO::getProcessId, id) + .orderByDesc(ProcessDetailDO::getOrdDate) + .last("limit 6") + ); + } + @Delete("delete from screen_process_detail where process_id = #{id}") + void deleteByProcessId(@Param("id") Long id); + + default List searchProgress(Integer type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(ProcessDetailDO.class) + .leftJoin(ProcessDO.class, "a", ProcessDO::getId, ProcessDetailDO::getProcessId) + .eq(ProcessDO::getProcessType,type) + .orderByDesc(ProcessDetailDO::getOrdDate); + return selectList(query); + + } + @Update({ + "" + }) + void updateProcessDetailDOBatch(@Param("list") List list); +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java index 29e8a009..64adb75c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderMapper.java @@ -1,11 +1,14 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderCostPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.ProjectOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; @@ -16,8 +19,15 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.util.StringUtils; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + /** * 项目订单 Mapper * @@ -76,6 +86,7 @@ public interface ProjectOrderMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(ProjectOrderDO.class) .select("u.nickname as businessManName", "d.name as businessDeptName", "e.name as customerName") + .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan) .leftJoin(DeptDO.class, "d", DeptDO::getId, ProjectOrderDO::getBusinessDeptId) .leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId) @@ -141,4 +152,38 @@ public interface ProjectOrderMapper extends BaseMapperX { } @Delete("delete from project_sale_order where id = #{id}") void deleteOrderId(@Param("id") Long id); + + /** + * 查询当前年销售订单按时完成百分比 + */ + @Select("SELECT\n" + + " COALESCE(\n" + + " ROUND(\n" + + " SUM(\n" + + " CASE\n" + + " \n" + + " WHEN (pso.delivery_status = 3 AND (pdos_max.max_create_time IS NULL OR pdos_max.max_create_time <= pso.project_end_time)) \n" + + " OR (pso.delivery_status != 3 AND CURDATE() <= pso.project_end_time) THEN\n" + + " 1 ELSE 0 \n" + + " END) * 100.0 / NULLIF(COUNT(*), 0),\n" + + " 1),\n" + + " 0) AS completionRate \n" + + " FROM\n" + + " project_sale_order pso\n" + + " LEFT JOIN (SELECT sale_order_id, MAX(create_time) AS max_create_time FROM project_deliver_order_sub WHERE deleted = 0 AND tenant_id = 2 GROUP BY sale_order_id) pdos_max ON pso.id = pdos_max.sale_order_id \n" + + " WHERE\n" + + " YEAR(pso.project_start_time) = YEAR(CURDATE()) \n" + + " AND pso.deleted = 0 \n" + + " AND pso.tenant_id =2") + Map getOnTimeCompletionRate(); + + default List selectOrder(){ + LocalDateTime startTime = LocalDate.of(2025, 6, 1).atStartOfDay(); // 2025-06-01 00:00:00 + return selectList(new LambdaQueryWrapper() + .ne(ProjectOrderDO::getDeliveryStatus,3) + .eq(ProjectOrderDO::getIsSnapshot,0) + .ge(ProjectOrderDO::getCreateTime,startTime) + + ); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java index aa86f506..352e3863 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java @@ -163,12 +163,12 @@ public interface ProjectOrderSubMapper extends BaseMapperX { " COUNT(*) = 3 \n" + " AND SUM(CASE WHEN is_over_process = 1 THEN 1 ELSE 0 END) = 3 \n" + ") and sub.create_time >='2025-06-01' and sub.tenant_id='2' and sub.deleted=0") - Long searchUnfinished(); + Integer searchUnfinished(); @Select("SELECT COUNT(*)\n" + "FROM project_sale_order_sub sub\n" + "LEFT JOIN project_deliver_order_sub deliver ON sub.id = deliver.sale_order_sub_id and deliver.tenant_id='2' and deliver.deleted=0 \n" + "WHERE deliver.sale_order_sub_id IS NULL and sub.tenant_id='2' and sub.deleted=0 ") - Long searchNotDispatched(); +Integer searchNotDispatched(); @Select("SELECT \n" + " MONTH(create_time) AS month,\n" + " SUM(CASE WHEN business_line = 2 THEN 1 ELSE 0 END) AS blackMold,\n" + @@ -186,5 +186,5 @@ public interface ProjectOrderSubMapper extends BaseMapperX { "WHERE YEAR(create_time) >= YEAR(CURDATE()) - 4 and tenant_id=2 and deleted=0\n" + "GROUP BY YEAR(create_time)\n" + "ORDER BY year;") - List> searchOrderByYear(); + List> searchOrderByYear(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java index c4f6b218..8c3e0e4a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordernodetail/PurchaseOrderNoDetailMapper.java @@ -334,4 +334,16 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX 0, PurchaseOrderNoDetailDO::getId, ids); return selectList(query); } + + default List selectByProjectOrderIds(List projectOrderIds){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query + .select("t.project_id as projectId","COALESCE(SUM(t.purchase_amount), 0) as totalAmount"); + query.in(PurchaseOrderNoDetailDO::getProjectId, projectOrderIds); + query.eq(PurchaseOrderNoDetailDO::getReceivingStatus, 3); + query.isNotNull(PurchaseOrderNoDetailDO::getBoomDetailId); + query.groupBy(PurchaseOrderNoDetailDO::getProjectId); + return selectList(query); + } } + diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 884cdf9a..2000eb32 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -1048,4 +1048,37 @@ public interface TaskDispatchDetailMapper extends BaseMapperX cuttingMaterialsBatch(@Param("bomDetailIds")List bomDetailIds); + + default List selectByProjectOrderIds(List projectOrderIds,String type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.select("a.project_id as projectOrderId","COALESCE(SUM(e.amount), 0) as totalAmount") + .leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId) + .leftJoin(TaskReportDO.class,"e",TaskReportDO::getDispatchDetailId,TaskDispatchDetailDO::getId) + .groupBy(TaskDispatchDO::getProjectId); + query.in(TaskDispatchDO::getProjectId,projectOrderIds); + query.eq(TaskDispatchDO::getDispatchType,type); + query.eq(TaskReportDO::getHasReport,1); + return selectList(query); + } + default List selectByProjectOrderIdsAssembly(List projectOrderIds,String type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.select("a.project_id as projectOrderId","COALESCE(SUM(e.work_time), 0) as totalWorkTime") + .leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId) + .leftJoin(TaskReportDO.class,"e",TaskReportDO::getDispatchDetailId,TaskDispatchDetailDO::getId) + .groupBy(TaskDispatchDO::getProjectId); + query.in(TaskDispatchDO::getProjectId,projectOrderIds); + query.eq(TaskDispatchDO::getDispatchType,type); + query.eq(TaskReportDO::getHasReport,1); + return selectList(query); + } + default List selectByProjectOrderIdsAmount(List projectOrderIds, String type){ + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.select("a.project_id as projectOrderId","COALESCE(SUM(t.work_time), 0) as totalWorkTime") + .leftJoin(TaskDispatchDO.class,"a",TaskDispatchDO::getId,TaskDispatchDetailDO::getDispatchId) + .groupBy(TaskDispatchDO::getProjectId); + query.in(TaskDispatchDO::getProjectId,projectOrderIds); + query.eq(TaskDispatchDO::getDispatchType,type); + return selectList(query); + } + } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/yearnum/YearNumMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/yearnum/YearNumMapper.java new file mode 100644 index 00000000..d61f935f --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/yearnum/YearNumMapper.java @@ -0,0 +1,43 @@ +package com.chanko.yunxi.mes.module.heli.dal.mysql.yearnum; + +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.*; + +import cn.hutool.core.date.DateUtil; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo.*; + +/** + * 大屏-近五年订单数量 Mapper + * + * @author 管理员 + */ +@Mapper +public interface YearNumMapper extends BaseMapperX { + + default PageResult selectPage(YearNumPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .betweenIfPresent(YearNumDO::getDate, reqVO.getDate()) + .eqIfPresent(YearNumDO::getOpenMock, reqVO.getOpenMock()) + .eqIfPresent(YearNumDO::getRemark, reqVO.getRemark()) + .eqIfPresent(YearNumDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(YearNumDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(YearNumDO::getNumOrder, reqVO.getNumOrder()) + .orderByDesc(YearNumDO::getId)); + } + + + + default List searchOrderByYear(String currentYear,String startYear){ + + + return selectList(new LambdaQueryWrapperX() + .between(YearNumDO::getDate, currentYear, startYear) + ); + } +} \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java index b4f33e89..1c122cf1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderService.java @@ -76,4 +76,6 @@ public interface DeliverOrderService { BigDecimal getListYf(Long id, Long projectSubId); List getListYfDetails(Long id, Long projectSubId); + + DeliverOrderDO getDeliverOrderId(Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java index 6f1b09a2..4dbd1f12 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java @@ -435,6 +435,15 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { return deliverOrderSubDOS; } + @Override + public DeliverOrderDO getDeliverOrderId(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(DeliverOrderDO::getSaleOrderIds, id); + queryWrapper.orderByDesc(DeliverOrderDO::getDeliverDate); + queryWrapper.last("limit 1"); + return deliverOrderMapper.selectOne(queryWrapper); + } + private void createDeliverOrderSubList(Long deliveryOrderId, List list) { list.forEach(o -> o.setDeliveryOrderId(deliveryOrderId)); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundService.java new file mode 100644 index 00000000..4b491654 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.found; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.found.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 大屏-可修改单项数据 Service 接口 + * + * @author 管理员 + */ +public interface FoundService { + + /** + * 创建大屏-可修改单项数据 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createFound(@Valid FoundSaveReqVO createReqVO); + + /** + * 更新大屏-可修改单项数据 + * + * @param updateReqVO 更新信息 + */ + void updateFound(@Valid FoundSaveReqVO updateReqVO); + + /** + * 删除大屏-可修改单项数据 + * + * @param id 编号 + */ + void deleteFound(Long id); + + /** + * 获得大屏-可修改单项数据 + * + * @param id 编号 + * @return 大屏-可修改单项数据 + */ + FoundDO getFound(Long id); + + /** + * 获得大屏-可修改单项数据分页 + * + * @param pageReqVO 分页查询 + * @return 大屏-可修改单项数据分页 + */ + PageResult getFoundPage(FoundPageReqVO pageReqVO); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundServiceImpl.java new file mode 100644 index 00000000..b3cf9023 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/found/FoundServiceImpl.java @@ -0,0 +1,85 @@ +package com.chanko.yunxi.mes.module.heli.service.found; + +import cn.hutool.core.util.ObjectUtil; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.found.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.found.FoundMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 大屏-可修改单项数据 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class FoundServiceImpl implements FoundService { + + @Resource + private FoundMapper foundMapper; + + @Override + public Long createFound(FoundSaveReqVO createReqVO) { + // 插入 + FoundDO found = BeanUtils.toBean(createReqVO, FoundDO.class); + foundMapper.insert(found); + // 返回 + return found.getId(); + } + + @Override + public void updateFound(FoundSaveReqVO updateReqVO) { + // 校验存在 + validateFoundExists(updateReqVO.getId()); + // 更新 + FoundDO updateObj = BeanUtils.toBean(updateReqVO, FoundDO.class); + if (ObjectUtil.isEmpty(updateObj.getNumBusinessTrip())){ + updateObj.setNumBusinessTrip(0); + } + if (ObjectUtil.isEmpty(updateObj.getNumPresent())){ + updateObj.setNumPresent(0); + } + if (ObjectUtil.isEmpty(updateObj.getDeliRate())){ + updateObj.setDeliRate(BigDecimal.ZERO); + } + foundMapper.updateById(updateObj); + } + + @Override + public void deleteFound(Long id) { + // 校验存在 + validateFoundExists(id); + // 删除 + foundMapper.deleteById(id); + } + + private void validateFoundExists(Long id) { + if (foundMapper.selectById(id) == null) { + throw exception(FOUND_NOT_EXISTS); + } + } + + @Override + public FoundDO getFound(Long id) { + return foundMapper.selectById(id); + } + + @Override + public PageResult getFoundPage(FoundPageReqVO pageReqVO) { + return foundMapper.selectPage(pageReqVO); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumService.java new file mode 100644 index 00000000..0d4b1cc2 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.monordnum; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 大屏-月订单数量 Service 接口 + * + * @author 管理员 + */ +public interface MonOrdNumService { + + /** + * 创建大屏-月订单数量 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMonOrdNum(@Valid MonOrdNumSaveReqVO createReqVO); + + /** + * 更新大屏-月订单数量 + * + * @param updateReqVO 更新信息 + */ + void updateMonOrdNum(@Valid MonOrdNumSaveReqVO updateReqVO); + + /** + * 删除大屏-月订单数量 + * + * @param id 编号 + */ + void deleteMonOrdNum(Long id); + + /** + * 获得大屏-月订单数量 + * + * @param id 编号 + * @return 大屏-月订单数量 + */ + MonOrdNumDO getMonOrdNum(Long id); + + /** + * 获得大屏-月订单数量分页 + * + * @param pageReqVO 分页查询 + * @return 大屏-月订单数量分页 + */ + PageResult getMonOrdNumPage(MonOrdNumPageReqVO pageReqVO); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumServiceImpl.java new file mode 100644 index 00000000..f9152e48 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/monordnum/MonOrdNumServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.service.monordnum; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.monordnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.monordnum.MonOrdNumMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 大屏-月订单数量 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class MonOrdNumServiceImpl implements MonOrdNumService { + + @Resource + private MonOrdNumMapper monOrdNumMapper; + + @Override + public Long createMonOrdNum(MonOrdNumSaveReqVO createReqVO) { + // 插入 + MonOrdNumDO monOrdNum = BeanUtils.toBean(createReqVO, MonOrdNumDO.class); + monOrdNumMapper.insert(monOrdNum); + // 返回 + return monOrdNum.getId(); + } + + @Override + public void updateMonOrdNum(MonOrdNumSaveReqVO updateReqVO) { + // 校验存在 + validateMonOrdNumExists(updateReqVO.getId()); + // 更新 + MonOrdNumDO updateObj = BeanUtils.toBean(updateReqVO, MonOrdNumDO.class); + monOrdNumMapper.updateById(updateObj); + } + + @Override + public void deleteMonOrdNum(Long id) { + // 校验存在 + validateMonOrdNumExists(id); + // 删除 + monOrdNumMapper.deleteById(id); + } + + private void validateMonOrdNumExists(Long id) { + if (monOrdNumMapper.selectById(id) == null) { +// throw exception(MON_ORD_NUM_NOT_EXISTS); + } + } + + @Override + public MonOrdNumDO getMonOrdNum(Long id) { + return monOrdNumMapper.selectById(id); + } + + @Override + public PageResult getMonOrdNumPage(MonOrdNumPageReqVO pageReqVO) { + return monOrdNumMapper.selectPage(pageReqVO); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessService.java new file mode 100644 index 00000000..2f27e9cc --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.heli.service.process; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 大屏-设计、装配、加工进度 Service 接口 + * + * @author 管理员 + */ +public interface ProcessService { + + /** + * 创建大屏-设计、装配、加工进度 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcess(@Valid ProcessSaveReqVO createReqVO); + + /** + * 更新大屏-设计、装配、加工进度 + * + * @param updateReqVO 更新信息 + */ + void updateProcess(@Valid ProcessSaveReqVO updateReqVO); + + /** + * 删除大屏-设计、装配、加工进度 + * + * @param id 编号 + */ + void deleteProcess(Long id); + + /** + * 获得大屏-设计、装配、加工进度 + * + * @param id 编号 + * @return 大屏-设计、装配、加工进度 + */ + ProcessDO getProcess(Long id); + + /** + * 获得大屏-设计、装配、加工进度分页 + * + * @param pageReqVO 分页查询 + * @return 大屏-设计、装配、加工进度分页 + */ + PageResult getProcessPage(ProcessPageReqVO pageReqVO); + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessServiceImpl.java new file mode 100644 index 00000000..0698bc28 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/process/ProcessServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.heli.service.process; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.process.ProcessMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 大屏-设计、装配、加工进度 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessServiceImpl implements ProcessService { + + @Resource + private ProcessMapper processMapper; + + @Override + public Long createProcess(ProcessSaveReqVO createReqVO) { + // 插入 + ProcessDO process = BeanUtils.toBean(createReqVO, ProcessDO.class); + processMapper.insert(process); + // 返回 + return process.getId(); + } + + @Override + public void updateProcess(ProcessSaveReqVO updateReqVO) { + // 校验存在 + validateProcessExists(updateReqVO.getId()); + // 更新 + ProcessDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDO.class); + processMapper.updateById(updateObj); + } + + @Override + public void deleteProcess(Long id) { + // 校验存在 + validateProcessExists(id); + // 删除 + processMapper.deleteById(id); + } + + private void validateProcessExists(Long id) { + if (processMapper.selectById(id) == null) { +// throw exception(PROCESS_NOT_EXISTS); + } + } + + @Override + public ProcessDO getProcess(Long id) { + return processMapper.selectById(id); + } + + @Override + public PageResult getProcessPage(ProcessPageReqVO pageReqVO) { + return processMapper.selectPage(pageReqVO); + } + +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index 53a9189d..ae74a0a6 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -120,4 +120,6 @@ public interface ProcessBomService { CommonResult updateById(String code); CommonResult selectPlanTaskStatus(String id); + + List getProcessBomExcel(List collect); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index b6d47db7..19823ff0 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -1699,6 +1699,11 @@ public class ProcessBomServiceImpl implements ProcessBomService { return success(false); } + @Override + public List getProcessBomExcel(List collect) { + return processBomDetailMapper.getProcessBomExcel( collect); + } + private void createProcessBomDetailList(String bomCode,Long bomId, List list,Integer num) { LocalDateTime now = LocalDateTime.now(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailService.java new file mode 100644 index 00000000..3e239cae --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailService.java @@ -0,0 +1,58 @@ +package com.chanko.yunxi.mes.module.heli.service.processdetail; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 大屏-设计、装配、加工进度子 Service 接口 + * + * @author 管理员 + */ +public interface ProcessDetailService { + + /** + * 创建大屏-设计、装配、加工进度子 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcessDetail(@Valid ProcessDetailSaveReqVO createReqVO); + + /** + * 更新大屏-设计、装配、加工进度子 + * + * @param updateReqVO 更新信息 + */ + void updateProcessDetail(@Valid ProcessDetailSaveReqVO updateReqVO); + + /** + * 删除大屏-设计、装配、加工进度子 + * + * @param id 编号 + */ + void deleteProcessDetail(Long id); + + /** + * 获得大屏-设计、装配、加工进度子 + * + * @param id 编号 + * @return 大屏-设计、装配、加工进度子 + */ + ProcessDetailDO getProcessDetail(Long id); + + /** + * 获得大屏-设计、装配、加工进度子分页 + * + * @param pageReqVO 分页查询 + * @return 大屏-设计、装配、加工进度子分页 + */ + PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO); + + List searchProgress(Integer type); + + void update(List list); +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailServiceImpl.java new file mode 100644 index 00000000..80e2e328 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processdetail/ProcessDetailServiceImpl.java @@ -0,0 +1,96 @@ +package com.chanko.yunxi.mes.module.heli.service.processdetail; + +import cn.hutool.core.util.ObjectUtil; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import com.chanko.yunxi.mes.module.heli.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdetail.ProcessDetailMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 大屏-设计、装配、加工进度子 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessDetailServiceImpl implements ProcessDetailService { + + @Resource + private ProcessDetailMapper processDetailMapper; + + @Override + public Long createProcessDetail(ProcessDetailSaveReqVO createReqVO) { + // 插入 + ProcessDetailDO processDetail = BeanUtils.toBean(createReqVO, ProcessDetailDO.class); + processDetailMapper.insert(processDetail); + // 返回 + return processDetail.getId(); + } + + @Override + public void updateProcessDetail(ProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateProcessDetailExists(updateReqVO.getId()); + // 更新 + ProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDetailDO.class); + processDetailMapper.updateById(updateObj); + } + + @Override + public void deleteProcessDetail(Long id) { + // 校验存在 + validateProcessDetailExists(id); + // 删除 + processDetailMapper.deleteById(id); + } + + private void validateProcessDetailExists(Long id) { + if (processDetailMapper.selectById(id) == null) { + throw exception(PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ProcessDetailDO getProcessDetail(Long id) { + return processDetailMapper.selectById(id); + } + + @Override + public PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO) { + return processDetailMapper.selectPage(pageReqVO); + } + + @Override + public List searchProgress(Integer type) { + return processDetailMapper.searchProgress(type); + } + + @Override + public void update(List list) { + if (ObjectUtil.isNotEmpty(list)){ + Set idSet = list.stream() + .map(ProcessDetailDO::getId) + .collect(Collectors.toSet()); + + List existingDOs = processDetailMapper.selectBatchIds(new ArrayList<>(idSet)); + if (idSet.size() != existingDOs.size()){ + throw exception(PROCESS_DETAIL_NOT_EXISTS); + } + processDetailMapper.updateProcessDetailDOBatch(list); + } + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java index 786e730e..b31743c7 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java @@ -3,7 +3,11 @@ package com.chanko.yunxi.mes.module.heli.service.screen; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenSaveReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.screen.ScreenDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; import javax.validation.Valid; import java.util.List; @@ -58,9 +62,13 @@ public interface ScreenService { void updateScreenAll(List updateReqVOList); - Map searchUnfinished(); + FoundDO searchUnfinished(); - Map> searchOrderInformation(); + List searchOrderInformation(); - Map searchOrderByYear(); + List searchOrderByYear(); + + List searchProgress(Integer type); + + void updateLargeScreenData(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java index 2f68739e..91a84576 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java @@ -1,6 +1,7 @@ package com.chanko.yunxi.mes.module.heli.service.screen; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; @@ -10,39 +11,56 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.screen.vo.ScreenSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.found.FoundDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.monordnum.MonOrdNumDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.process.ProcessDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdetail.ProcessDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.screen.ScreenDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskreport.TaskReportDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.equipmanufacture.EquipManufactureMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.found.FoundMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.monordnum.MonOrdNumMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.process.ProcessMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignProgressMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdetail.ProcessDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.screen.ScreenMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.yearnum.YearNumMapper; import com.chanko.yunxi.mes.module.heli.enums.*; +import com.chanko.yunxi.mes.module.heli.service.found.FoundService; import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; +import org.yaml.snakeyaml.events.Event; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.Year; -import java.time.ZoneOffset; +import java.time.*; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -80,6 +98,22 @@ public class ScreenServiceImpl implements ScreenService { private ProcessDesignMapper processDesignMapper; @Resource private PlanSubMapper planSubMapper; + @Resource + private FoundMapper foundMapper; + @Resource + private YearNumMapper yearNumMapper; + @Resource + private MonOrdNumMapper monOrdNumMapper; + @Resource + private ProcessMapper processMapper; + @Resource + private ProcessDetailMapper processDetailMapper; + @Resource + private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; + @Resource + private ProcessBomDetailMapper processBomDetailMapper; + @Resource + private ProcessDesignProgressMapper processDesignProgressMapper; @Override public Long createScreen(ScreenSaveReqVO createReqVO) { @@ -98,15 +132,15 @@ public class ScreenServiceImpl implements ScreenService { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String today = sdf.format(calendar.getTime()); boolean insert = false; - if(!updateReqVO.getDate().equals(today)){ + if (!updateReqVO.getDate().equals(today)) { updateReqVO.setId(null); updateReqVO.setDate(today); - insert = true; + insert = true; } ScreenDO updateObj = BeanUtils.toBean(updateReqVO, ScreenDO.class); - if(insert){ + if (insert) { screenMapper.insert(updateObj); - }else{ + } else { // 更新 screenMapper.updateById(updateObj); @@ -125,18 +159,18 @@ public class ScreenServiceImpl implements ScreenService { String today = sdf.format(calendar.getTime()); boolean insert = false; for (ScreenSaveReqVO screenSaveReqVO : updateReqVOList) { - if(!screenSaveReqVO.getDate().equals(today)){ + if (!screenSaveReqVO.getDate().equals(today)) { screenSaveReqVO.setId(null); screenSaveReqVO.setDate(today); - if(!insert){ + if (!insert) { insert = true; } } } - if(insert){ + if (insert) { screenMapper.insertBatch(BeanUtils.toBean(updateReqVOList, ScreenDO.class)); - }else{ + } else { // 更新 screenMapper.updateBatch(BeanUtils.toBean(updateReqVOList, ScreenDO.class)); } @@ -144,75 +178,623 @@ public class ScreenServiceImpl implements ScreenService { } @Override - public Map searchUnfinished() { - Map map = new HashMap<>(); - Long unfinished= projectOrderSubMapper.searchUnfinished(); - Long notDispatched =projectOrderSubMapper.searchNotDispatched(); - map.put("unfinished",unfinished); - map.put("notDispatched",notDispatched); - return map; + public FoundDO searchUnfinished() { +// Map map = new HashMap<>(); +// Long unfinished= projectOrderSubMapper.searchUnfinished(); +// Long notDispatched =projectOrderSubMapper.searchNotDispatched(); +// map.put("unfinished",unfinished); +// map.put("notDispatched",notDispatched); + return foundMapper.searchUnfinished(); } @Override - public Map> searchOrderInformation() { - Map> resultMap = new LinkedHashMap<>(); - for (int i = 1; i <= 12; i++) { - String monthKey = String.valueOf(i); - // 创建内层Map并设置默认值 - Map innerMap = new HashMap<>(); - innerMap.put("blackMold", 0); - innerMap.put("coloredMolds", 0); - resultMap.put(monthKey, innerMap); + public List searchOrderInformation() { +// Map> resultMap = new LinkedHashMap<>(); +// for (int i = 1; i <= 12; i++) { +// String monthKey = String.valueOf(i); +// // 创建内层Map并设置默认值 +// Map innerMap = new HashMap<>(); +// innerMap.put("blackMold", 0); +// innerMap.put("coloredMolds", 0); +// resultMap.put(monthKey, innerMap); +// } +// List projectOrderDOS = projectOrderSubMapper.searchOrderInformation(); +// for (ProjectOrderDO order : projectOrderDOS) { +// String month = order.getMonth(); +// Map innerMap = resultMap.get(month); +// if (ObjectUtil.isNotEmpty(innerMap)){ +// innerMap.put("blackMold", order.getBlackMold()); +// innerMap.put("coloredMolds",order.getColoredMolds()); +// } +// } + // 获取当前年份 + String currentYear = DateUtil.format(new Date(), "yyyy"); + return monOrdNumMapper.searchOrderInformation(currentYear); + } + + @Override + public List searchOrderByYear() { +// int currentYear = Year.now().getValue(); +// +// // 初始化近5年的年份 map,value 为 null +// Map map = IntStream.range(currentYear - 4, currentYear + 1) +// .boxed() +// .collect( +// TreeMap::new, +// (m, year) -> m.put(String.valueOf(year), null), +// Map::putAll +// ); +// +// // 假设这个 list 是从数据库查询出来的,key 是年份,value 是订单数量 +// List> list = projectOrderSubMapper.searchOrderByYear(); +// Map dataMap=new HashMap<>(); +// list.forEach(item->{ +// dataMap.put(String.valueOf(item.get("year")),item.get("amount")); +// }); +// // 第一步:用 list 中的数据赋值 +// for (Map.Entry entry : dataMap.entrySet()) { +// String year = entry.getKey(); +// Integer amount = Integer.parseInt(String.valueOf(entry.getValue())); +// if (map.containsKey(year)) { +// map.put(year, amount); +// } +// } +// // 第二步:处理 map 中 value 为 null 的年份,且不是当前年份的 +// for (Map.Entry entry : map.entrySet()) { +// String year = entry.getKey(); +// if (ObjectUtil.isEmpty(entry.getValue()) && Integer.parseInt(year) != currentYear) { +//// String defaultUserName = userMapper.selectFirstUserName(); +//// map.put(year, defaultUserName); +// } +// } + // 获取当前年份 + int currentYear = DateUtil.year(new Date()); + // 计算起始年份(近5年) + int startYear = currentYear - 4; + return yearNumMapper.searchOrderByYear(String.valueOf(startYear), String.valueOf(currentYear)); + } + + @Override + public List searchProgress(Integer type) { + ProcessDO processDO = processMapper.selectType(type); + if (ObjectUtil.isNotEmpty(processDO)) { + List processDetailDOS = processDetailMapper.selectProcessIdAndIsSelect(processDO.getId()); + if (ObjectUtil.isNotEmpty(processDetailDOS)) { + return processDetailDOS; + } + return processDetailMapper.selectProcessId(processDO.getId()); + } + return new ArrayList<>(); + } + + public void syncYearData() { + + // 获取当前年份 + int currentYear = DateUtil.year(new Date()); + // 计算起始年份(近5年) + int startYear = currentYear - 4; + int[] recentYears = new int[5]; + for (int i = 0; i < 5; i++) { + recentYears[i] = currentYear - (4 - i); + } + List allData = yearNumMapper.searchOrderByYear(String.valueOf(startYear), String.valueOf(currentYear)); + // 创建年份到对象的映射 + Map yearDataMap = allData.stream() + .collect(Collectors.toMap( + YearNumDO::getDate, // 假设有getYear方法 + Function.identity(), + (oldValue, newValue) -> oldValue // 如果有重复,取第一个 + )); + + // 检查并补全 + List missingData = new ArrayList<>(); + + for (int year : recentYears) { + if (!yearDataMap.containsKey(year)) { + YearNumDO newData = buildDefaultYearData(year); + missingData.add(newData); + } + } + + // 批量插入缺失数据 + if (!missingData.isEmpty()) { + // 批量插入 + yearNumMapper.insertBatch(missingData); + } + } + + private YearNumDO buildDefaultYearData(int year) { + YearNumDO data = new YearNumDO(); + data.setDate(String.valueOf(year)); + data.setNumOrder(0); + return data; + } + private ProcessDO getProcess( Integer type) { + ProcessDO processDO = processMapper.selectType(type); + if (ObjectUtil.isEmpty(processDO)) { + processDO = new ProcessDO(); + processDO.setProcessType(type); + processMapper.insert(processDO); + processDO = processMapper.selectType(type); + } + return processDO; + } + + @Override + @Transactional + public void updateLargeScreenData() { + //可修改单项数据 + updateFound(); + //当前年按月份的订单数量 + updateOrderInformation(); + //近5年的订单数量 + updateOrderByYear(); + //生产进度 + updateProgressTrackingOfProduction(); + //装配进度 + updateProgressTrackingOfAssembly(); + //设计进度 + updateProgressTrackingOfDesign(); + + + + + } + + private void updateProgressTrackingOfDesign() { + ProcessDO process = getProcess(1); + List projectOrderDOS =projectOrderMapper.selectOrder(); + List processDetailDOS = processDetailMapper.selectProcessIdAndIsSelect(process.getId()); + //删除现有数据 + deleteProcessDetail(process.getId()); + List addList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(projectOrderDOS)){ + List projectOrderIds = projectOrderDOS.stream().map(ProjectOrderDO::getId).collect(Collectors.toList()); + Map completedProcessMap; + // 1. 查询已完成的工艺设计 + List completedProcessDesigns = getCompletedProcessDesigns(projectOrderIds); + completedProcessMap = completedProcessDesigns.stream() + .collect(Collectors.groupingBy( + ProcessDesignDO::getProjectId, + Collectors.collectingAndThen( + Collectors.toList(), + list -> list.stream().allMatch(pd -> ObjectUtil.isNotEmpty(pd.getIsOverProcess()) && pd.getIsOverProcess() == 1) + ) + )); + Map> groupedMap = completedProcessDesigns.stream() + .collect(Collectors.groupingBy(ProcessDesignDO::getProjectId)); + for (ProjectOrderDO projectOrderDO : projectOrderDOS) { + List matchingDetails = processDetailDOS.stream() + .filter(detail -> ObjectUtil.isNotEmpty(detail.getProjectId()) + && Objects.equals(detail.getProjectId(), projectOrderDO.getId())) + .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(matchingDetails)){ + ProcessDetailDO processDetailDO = matchingDetails.get(0); + processDetailDO = createProcessDetailDesign(projectOrderDO, process, processDetailDO, completedProcessMap, groupedMap); + }else { + ProcessDetailDO processDetailDO = new ProcessDetailDO(); + processDetailDO = createProcessDetailDesign(projectOrderDO, process, processDetailDO, completedProcessMap, groupedMap); + addList.add(processDetailDO); + } + } + addList.addAll(processDetailDOS); + }else{ + if (ObjectUtil.isNotEmpty(processDetailDOS)) { + addList=processDetailDOS; + } + } + processDetailMapper.insertBatch(addList); + } + + private ProcessDetailDO createProcessDetailDesign(ProjectOrderDO projectOrderDO, ProcessDO process, ProcessDetailDO processDetailDO, Map completedProcessMap, Map> groupedMap) { + processDetailDO.setDate(String.valueOf(projectOrderDO.getOrderTime().getYear())); + processDetailDO.setProjectName(projectOrderDO.getProjectName()); + processDetailDO.setProjectNameSim(projectOrderDO.getProjectNameSim()); + processDetailDO.setProjectId(projectOrderDO.getId()); + processDetailDO.setOrdDate(projectOrderDO.getOrderTime()); + processDetailDO.setProjectStartTime(projectOrderDO.getProjectStartTime()); + processDetailDO.setProjectEndTime(projectOrderDO.getProjectEndTime()); + processDetailDO.setDeliveryStatus(projectOrderDO.getDeliveryStatus()); + processDetailDO.setProcessId(process.getId()); + if (LocalDateTime.now().toLocalDate().isAfter(projectOrderDO.getOrderTime().toLocalDate())) { + processDetailDO.setIsExten("1"); + } + Long id = projectOrderDO.getId(); + Boolean isCompleted = completedProcessMap.get(id); + if (ObjectUtil.isNotEmpty(isCompleted)&&isCompleted){ + processDetailDO.setProjectProcess(100); + return processDetailDO; + } + List processDesigns = groupedMap.get(id); + if (ObjectUtil.isEmpty(processDesigns)) { + processDetailDO.setProjectProcess(0); + return processDetailDO; + } + List collect = processDesigns.stream() + .filter(processDesignDO -> processDesignDO.getIsOverProcess() != 1).collect(Collectors.toList()); + List collect1 = processDesigns.stream() + .filter(processDesignDO -> processDesignDO.getIsOverProcess() == 1).collect(Collectors.toList()); + List processDesignIds = processDesigns.stream() + .filter(processDesignDO -> processDesignDO.getIsOverProcess() !=1) + .map(ProcessDesignDO::getId) + .collect(Collectors.toList()); + List ids = processDesigns.stream() + .map(ProcessDesignDO::getId) + .collect(Collectors.toList()); + + // 获取工艺设计进度列表 + List progressList = getProcessDesignProgressList(processDesignIds); + List processDesignProgressDOS = getProcessDesignProgressList(ids); + + if (ObjectUtil.isEmpty(processDesignProgressDOS)) { + processDetailDO.setProjectProcess(0); + return processDetailDO; + } + if (ObjectUtil.isNotEmpty(processDesignProgressDOS)) { + // 计算总工时和当前工时 + BigDecimal totalWorkTime = calculateTotalWorkTime(progressList); + BigDecimal currentTime = calculateCurrentTime(collect); + for (ProcessDesignDO processDesignDO : collect1) { + PlanSubDO subDO = planSubMapper.selectPlanSub(processDesignDO.getPlanId(), processDesignDO.getProjectSubId()); + if ("BLUEPRINT_3D".equals(processDesignDO.getProcessDesignType())) { + if (ObjectUtil.isNotEmpty(subDO.getThreeDimNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getThreeDimNum().toString())); + totalWorkTime = totalWorkTime.add(new BigDecimal(subDO.getThreeDimNum().toString()).multiply(new BigDecimal("8"))); + } + } + if ("BLUEPRINT_WORKBLANK".equals(processDesignDO.getProcessDesignType())) { + if (ObjectUtil.isNotEmpty(subDO.getBlankNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getBlankNum().toString())); + totalWorkTime = totalWorkTime.add(new BigDecimal(subDO.getBlankNum().toString()).multiply(new BigDecimal("8"))); + } + } + if ("BLUEPRINT_2D".equals(processDesignDO.getProcessDesignType())) { + if (ObjectUtil.isNotEmpty(subDO.getTwoDimNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getTwoDimNum().toString())); + totalWorkTime = totalWorkTime.add(new BigDecimal(subDO.getTwoDimNum().toString()).multiply(new BigDecimal("8"))); + } + } + } + currentTime = currentTime.multiply(new BigDecimal("8")); + // 计算完成百分比 + Integer percentage = calculatePercentage(totalWorkTime, currentTime); + + processDetailDO.setProjectProcess(percentage); + return processDetailDO; + } + processDetailDO.setProjectProcess(0); + return processDetailDO; + } + /** + * 计算百分比 + */ + private Integer calculatePercentage(BigDecimal currentTime, BigDecimal totalWorkTime) { + if (totalWorkTime == null || totalWorkTime.compareTo(BigDecimal.ZERO) == 0) { + return 0; + } + + return currentTime.multiply(new BigDecimal("100")) + .divide(totalWorkTime, 0, RoundingMode.HALF_UP) + .intValue(); + } + private List getCompletedProcessDesigns(List projectOrderIds) { + return processDesignMapper.selectWithDetail(projectOrderIds); + } + /** + * 计算当前工时(将三个数值相加) + */ + private BigDecimal calculateCurrentTime(List collect) { + BigDecimal currentTime = BigDecimal.ZERO; + for (ProcessDesignDO processDesignDO : collect) { + PlanSubDO subDO = planSubMapper.selectPlanSub(processDesignDO.getPlanId(), processDesignDO.getProjectSubId()); + if ("BLUEPRINT_3D".equals(processDesignDO.getProcessDesignType())){ + if (ObjectUtil.isNotEmpty(subDO.getThreeDimNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getThreeDimNum().toString())); + } + } + if ("BLUEPRINT_WORKBLANK".equals(processDesignDO.getProcessDesignType())){ + if (ObjectUtil.isNotEmpty(subDO.getBlankNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getBlankNum().toString())); + } + } + if ("BLUEPRINT_2D".equals(processDesignDO.getProcessDesignType())){ + if (ObjectUtil.isNotEmpty(subDO.getTwoDimNum())) { + currentTime = currentTime.add(new BigDecimal(subDO.getTwoDimNum().toString())); + } + } + } + return currentTime; + } + /** + * 计算总工时 + */ + private BigDecimal calculateTotalWorkTime(List progressList) { + return progressList.stream() + .map(ProcessDesignProgressDO::getWorkTime) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + /** + * 获取工艺设计进度列表 + */ + private List getProcessDesignProgressList(List processDesignIds) { + if (ObjectUtil.isEmpty(processDesignIds)) { + return Collections.emptyList(); + } + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ProcessDesignProgressDO::getProcessDesignId, processDesignIds); + return processDesignProgressMapper.selectList(queryWrapper); + } + private void updateProgressTrackingOfAssembly() { + ProcessDO process = getProcess(3); + List projectOrderDOS =projectOrderMapper.selectOrder(); + List processDetailDOS = processDetailMapper.selectProcessIdAndIsSelect(process.getId()); + //删除现有数据 + deleteProcessDetail(process.getId()); + List addList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(projectOrderDOS)){ + List projectOrderIds = projectOrderDOS.stream().map(ProjectOrderDO::getId).collect(Collectors.toList()); + Map dispatchDetailMap=new HashMap<>(); + Map taskReportMap=new HashMap<>(); + //查询所有订单已报工完成数量 + List taskReportDOList = taskDispatchDetailMapper.selectByProjectOrderIdsAssembly(projectOrderIds,"ASSEMBLE"); + if (ObjectUtil.isNotEmpty(taskReportDOList)){ + taskReportMap = taskReportDOList.stream().collect(Collectors.toMap(TaskDispatchDetailDO::getProjectOrderId, TaskDispatchDetailDO::getTotalWorkTime, (oldValue, newValue) -> oldValue)); + } + //查询所有订单的派工数量 + List taskDispatchDetailDOList = taskDispatchDetailMapper.selectByProjectOrderIdsAmount(projectOrderIds,"ASSEMBLE"); + if (ObjectUtil.isNotEmpty(taskDispatchDetailDOList)){ + dispatchDetailMap = taskDispatchDetailDOList.stream().collect(Collectors.toMap(TaskDispatchDetailDO::getProjectOrderId, TaskDispatchDetailDO::getTotalWorkTime, (oldValue, newValue) -> oldValue)); + } + for (ProjectOrderDO projectOrderDO : projectOrderDOS) { + List matchingDetails = processDetailDOS.stream() + .filter(detail -> ObjectUtil.isNotEmpty(detail.getProjectId()) + && Objects.equals(detail.getProjectId(), projectOrderDO.getId())) + .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(matchingDetails)){ + ProcessDetailDO processDetailDO = matchingDetails.get(0); + processDetailDO = createProcessDetailAssembly(projectOrderDO, process, processDetailDO, dispatchDetailMap, taskReportMap); + + }else { + ProcessDetailDO processDetailDO = new ProcessDetailDO(); + processDetailDO = createProcessDetailAssembly(projectOrderDO, process, processDetailDO, dispatchDetailMap, taskReportMap); + addList.add(processDetailDO); + } + } + addList.addAll(processDetailDOS); + }else{ + if (ObjectUtil.isNotEmpty(processDetailDOS)) { + addList=processDetailDOS; + } + } + processDetailMapper.insertBatch(addList); + } + + private ProcessDetailDO createProcessDetailAssembly(ProjectOrderDO projectOrderDO, ProcessDO process, ProcessDetailDO processDetailDO, Map dispatchDetailMap, Map taskReportMap) { + // 设置年份(假设 orderTime 不为 null,否则会抛 NPE) + processDetailDO.setDate(String.valueOf(projectOrderDO.getOrderTime().getYear())); + processDetailDO.setProjectName(projectOrderDO.getProjectName()); + processDetailDO.setProjectNameSim(projectOrderDO.getProjectNameSim()); + processDetailDO.setProjectId(projectOrderDO.getId()); + processDetailDO.setOrdDate(projectOrderDO.getOrderTime()); + processDetailDO.setProjectStartTime(projectOrderDO.getProjectStartTime()); + processDetailDO.setProjectEndTime(projectOrderDO.getProjectEndTime()); + processDetailDO.setDeliveryStatus(projectOrderDO.getDeliveryStatus()); + processDetailDO.setProcessId(process.getId()); + if (LocalDateTime.now().toLocalDate().isAfter(projectOrderDO.getOrderTime().toLocalDate())) { + processDetailDO.setIsExten("1"); + } + Long id = projectOrderDO.getId(); + + // 从 Map 中获取值,如果为 null 则用 0 代替(分母需要特殊处理) + BigDecimal dispatchCount = taskReportMap.getOrDefault(id, BigDecimal.ZERO); + BigDecimal baseCount = dispatchDetailMap.get(id); // 基数(分母) + + // 处理分母为空或为零的情况 + if (ObjectUtil.isEmpty(baseCount)||baseCount.compareTo(BigDecimal.ZERO) == 0) { + processDetailDO.setProjectProcess(0); + return processDetailDO; + } + + // 计算分子和分母,使用 double 避免整数除法 + BigDecimal percentage = dispatchCount + .multiply(new BigDecimal(100)) + .divide(baseCount, 10, RoundingMode.HALF_UP); + + // 四舍五入取整(保留 0 位小数) + int result = percentage.setScale(0, RoundingMode.HALF_UP).intValue(); + processDetailDO.setProjectProcess(result); + return processDetailDO; + } + + private void updateProgressTrackingOfProduction() { + ProcessDO process = getProcess(2); + List projectOrderDOS =projectOrderMapper.selectOrder(); + List processDetailDOS = processDetailMapper.selectProcessIdAndIsSelect(process.getId()); + //删除现有数据 + deleteProcessDetail(process.getId()); + List addList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(projectOrderDOS)){ + List projectOrderIds = projectOrderDOS.stream().map(ProjectOrderDO::getId).collect(Collectors.toList()); + Map dispatchDetailMap=new HashMap<>(); + Map orderNoDetailMap=new HashMap<>();; + Map processBomDetailMap=new HashMap<>(); + //查询所有订单的已报工完成数量 + List dispatchDetailDOList = taskDispatchDetailMapper.selectByProjectOrderIds(projectOrderIds,"PRODUCTION"); + + if (ObjectUtil.isNotEmpty(dispatchDetailDOList)){ + dispatchDetailMap = dispatchDetailDOList.stream().collect(Collectors.toMap(TaskDispatchDetailDO::getProjectOrderId, TaskDispatchDetailDO::getTotalAmount, (oldValue, newValue) -> oldValue)); + } + + //查询所有订单已收货的数量 + List orderNoDetailDOS = purchaseOrderNoDetailMapper.selectByProjectOrderIds(projectOrderIds); + if (ObjectUtil.isNotEmpty(orderNoDetailDOS)){ + orderNoDetailMap = orderNoDetailDOS.stream().collect(Collectors.toMap(PurchaseOrderNoDetailDO::getProjectId, PurchaseOrderNoDetailDO::getTotalAmount, (oldValue, newValue) -> oldValue)); + } + //查询零件总数量 + List processBomDetailDOS = processBomDetailMapper.selectByProjectOrderIds(projectOrderIds); + if (ObjectUtil.isNotEmpty(processBomDetailDOS)){ + processBomDetailMap = processBomDetailDOS.stream().collect(Collectors.toMap(ProcessBomDetailDO::getProjectId, ProcessBomDetailDO::getTotalAmount, (oldValue, newValue) -> oldValue)); + } + for (ProjectOrderDO projectOrderDO : projectOrderDOS) { + List matchingDetails = processDetailDOS.stream() + .filter(detail -> ObjectUtil.isNotEmpty(detail.getProjectId()) + && Objects.equals(detail.getProjectId(), projectOrderDO.getId())) + .collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(matchingDetails)){ + ProcessDetailDO processDetailDO = matchingDetails.get(0); + processDetailDO = createProcessDetail(projectOrderDO, process, processDetailDO, dispatchDetailMap, orderNoDetailMap, processBomDetailMap); + + }else { + ProcessDetailDO processDetailDO = new ProcessDetailDO(); + processDetailDO = createProcessDetail(projectOrderDO, process, processDetailDO, dispatchDetailMap, orderNoDetailMap, processBomDetailMap); + addList.add(processDetailDO); + } + } + addList.addAll(processDetailDOS); + }else { + if (ObjectUtil.isNotEmpty(processDetailDOS)) { + addList=processDetailDOS; + } + } + processDetailMapper.insertBatch(addList); + } + private ProcessDetailDO createProcessDetail(ProjectOrderDO projectOrderDO, ProcessDO process,ProcessDetailDO processDetailDO,Map dispatchDetailMap, Map orderNoDetailMap,Map processBomDetailMap) { + + + // 设置年份(假设 orderTime 不为 null,否则会抛 NPE) + processDetailDO.setDate(String.valueOf(projectOrderDO.getOrderTime().getYear())); + processDetailDO.setProjectName(projectOrderDO.getProjectName()); + processDetailDO.setProjectNameSim(projectOrderDO.getProjectNameSim()); + processDetailDO.setProjectId(projectOrderDO.getId()); + processDetailDO.setOrdDate(projectOrderDO.getOrderTime()); + processDetailDO.setProjectStartTime(projectOrderDO.getProjectStartTime()); + processDetailDO.setProjectEndTime(projectOrderDO.getProjectEndTime()); + processDetailDO.setDeliveryStatus(projectOrderDO.getDeliveryStatus()); + processDetailDO.setProcessId(process.getId()); + if (LocalDateTime.now().toLocalDate().isAfter(projectOrderDO.getOrderTime().toLocalDate())) { + processDetailDO.setIsExten("1"); + } + Long id = projectOrderDO.getId(); + + // 从 Map 中获取值,如果为 null 则用 0 代替(分母需要特殊处理) + Integer dispatchCount = dispatchDetailMap.getOrDefault(id, 0); + Integer orderDetailCount = orderNoDetailMap.getOrDefault(id, 0); + Integer baseCount = processBomDetailMap.get(id); // 基数(分母) + + // 处理分母为空或为零的情况 + if (ObjectUtil.isEmpty(baseCount)) { + processDetailDO.setProjectProcess(0); + return processDetailDO; + } + + // 计算分子和分母,使用 double 避免整数除法 + double numerator = (double) (dispatchCount +orderDetailCount); + double denominator = (double) baseCount; + double percentage = (numerator / denominator) * 100; + + // 四舍五入取整 + Integer result = (int) Math.round(percentage); + processDetailDO.setProjectProcess(result); + return processDetailDO; + } + private void deleteProcessDetail(Long id) { + processDetailMapper.deleteByProcessId(id); + } + + private void updateOrderByYear() { + // 获取当前年份 + int currentYear = DateUtil.year(new Date()); + // 计算起始年份(近5年) + int startYear = currentYear - 4; + List yearNumDOS = yearNumMapper.searchOrderByYear(String.valueOf(startYear), String.valueOf(currentYear)); + if (ObjectUtil.isEmpty(yearNumDOS) || yearNumDOS.size() < 5) { + syncYearData(); + yearNumDOS = yearNumMapper.searchOrderByYear(String.valueOf(startYear), String.valueOf(currentYear)); + } + List> list = projectOrderSubMapper.searchOrderByYear(); + + // 将 list 转换为 Map,以年份为键,数量为值 + Map orderAmountMap = list.stream() + .collect(Collectors.toMap( + item -> String.valueOf(item.get("year")), // 确保类型一致 + item -> item.get("amount").intValue(), + (existing, replacement) -> replacement // 如果有重复键,使用新值 + )); + + // 直接遍历 yearNumDOS,从 Map 中获取值 + for (YearNumDO yearNumDO : yearNumDOS) { + if (ObjectUtil.isNotEmpty(yearNumDO)&&0==yearNumDO.getOpenMock()) { + Integer amount = orderAmountMap.get(yearNumDO.getDate()); + if (ObjectUtil.isNotEmpty(amount)) { + yearNumDO.setNumOrder(amount); + } else { + yearNumDO.setNumOrder(0); // 如果没有对应数据,设置为0 + } + yearNumMapper.updateById(yearNumDO); + } + } + } + + + private void updateOrderInformation() { + String currentYear = DateUtil.format(new Date(), "yyyy"); + List monOrdNumDOS = monOrdNumMapper.searchOrderInformation(currentYear); + if (ObjectUtil.isEmpty(monOrdNumDOS)){ + monOrdNumDOS=new ArrayList<>(); + for (int i = 1; i <= 12; i++) { + MonOrdNumDO monOrdNumDO = new MonOrdNumDO(); + monOrdNumDO.setDate(currentYear); + monOrdNumDO.setMonth(String.valueOf(i)); + monOrdNumDO.setBlackMold(0); + monOrdNumDO.setColoredMold(0); + monOrdNumDOS.add(monOrdNumDO); + } + monOrdNumMapper.insertBatch(monOrdNumDOS); + monOrdNumDOS = monOrdNumMapper.searchOrderInformation(currentYear); } List projectOrderDOS = projectOrderSubMapper.searchOrderInformation(); for (ProjectOrderDO order : projectOrderDOS) { - String month = order.getMonth(); - Map innerMap = resultMap.get(month); - if (ObjectUtil.isNotEmpty(innerMap)){ - innerMap.put("blackMold", order.getBlackMold()); - innerMap.put("coloredMolds",order.getColoredMolds()); + MonOrdNumDO monOrdNumDO = monOrdNumDOS.stream().filter(item -> item.getMonth().equals(order.getMonth())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(monOrdNumDO)&&0==monOrdNumDO.getOpenMock()){ + monOrdNumDO.setBlackMold(order.getBlackMold()); + monOrdNumDO.setColoredMold(order.getColoredMolds()); + monOrdNumMapper.updateById(monOrdNumDO); } } - return resultMap; + } - @Override - public Map searchOrderByYear() { - int currentYear = Year.now().getValue(); - - // 初始化近5年的年份 map,value 为 null - Map map = IntStream.range(currentYear - 4, currentYear + 1) - .boxed() - .collect( - TreeMap::new, - (m, year) -> m.put(String.valueOf(year), null), - Map::putAll - ); - - // 假设这个 list 是从数据库查询出来的,key 是年份,value 是订单数量 - List> list = projectOrderSubMapper.searchOrderByYear(); - Map dataMap=new HashMap<>(); - list.forEach(item->{ - dataMap.put(String.valueOf(item.get("year")),item.get("amount")); - }); - // 第一步:用 list 中的数据赋值 - for (Map.Entry entry : dataMap.entrySet()) { - String year = entry.getKey(); - Integer amount = Integer.parseInt(String.valueOf(entry.getValue())); - if (map.containsKey(year)) { - map.put(year, amount); - } + private void updateFound() { + //标识位判断是更新还是插入 + boolean flag=false; + //获得当前修改数据 + FoundDO foundDO = foundMapper.selectAll(); + if (ObjectUtil.isEmpty(foundDO)){ + foundDO=new FoundDO(); + foundDO.setNumPresent(0); + foundDO.setNumBusinessTrip(0); + foundDO.setOpenMock(0); + flag=true; } - // 第二步:处理 map 中 value 为 null 的年份,且不是当前年份的 - for (Map.Entry entry : map.entrySet()) { - String year = entry.getKey(); - if (ObjectUtil.isEmpty(entry.getValue()) && Integer.parseInt(year) != currentYear) { -// String defaultUserName = userMapper.selectFirstUserName(); -// map.put(year, defaultUserName); - } + foundDO.setDate(LocalDate.now()); + //未完成设计的子项目数量 + Integer unfinished= projectOrderSubMapper.searchUnfinished(); + //未发货的子项目数量 + Integer notDispatched =projectOrderSubMapper.searchNotDispatched(); + foundDO.setNumDesign(unfinished); + foundDO.setNumInProcess(notDispatched); + if (0==foundDO.getOpenMock()){ + //订单交付准时率 + Map onTimeCompletionRate = projectOrderMapper.getOnTimeCompletionRate(); + foundDO.setDeliRate(onTimeCompletionRate.get("completionRate")); + } + if ( flag){ + foundMapper.insert(foundDO); + }else{ + foundMapper.updateById(foundDO); } - - return map; } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumService.java new file mode 100644 index 00000000..a7aa7ec4 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumService.java @@ -0,0 +1,56 @@ +package com.chanko.yunxi.mes.module.heli.service.yearnum; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 大屏-近五年订单数量 Service 接口 + * + * @author 管理员 + */ +public interface YearNumService { + + /** + * 创建大屏-近五年订单数量 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createYearNum(@Valid YearNumSaveReqVO createReqVO); + + /** + * 更新大屏-近五年订单数量 + * + * @param updateReqVO 更新信息 + */ + void updateYearNum(@Valid YearNumSaveReqVO updateReqVO); + + /** + * 删除大屏-近五年订单数量 + * + * @param id 编号 + */ + void deleteYearNum(Long id); + + /** + * 获得大屏-近五年订单数量 + * + * @param id 编号 + * @return 大屏-近五年订单数量 + */ + YearNumDO getYearNum(Long id); + + /** + * 获得大屏-近五年订单数量分页 + * + * @param pageReqVO 分页查询 + * @return 大屏-近五年订单数量分页 + */ + PageResult getYearNumPage(YearNumPageReqVO pageReqVO); + + void update(List list); +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumServiceImpl.java new file mode 100644 index 00000000..0b600ae8 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/yearnum/YearNumServiceImpl.java @@ -0,0 +1,85 @@ +package com.chanko.yunxi.mes.module.heli.service.yearnum; + +import cn.hutool.core.util.ObjectUtil; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.heli.controller.admin.yearnum.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.yearnum.YearNumDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.heli.dal.mysql.yearnum.YearNumMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 大屏-近五年订单数量 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class YearNumServiceImpl implements YearNumService { + + @Resource + private YearNumMapper yearNumMapper; + + @Override + public Long createYearNum(YearNumSaveReqVO createReqVO) { + // 插入 + YearNumDO yearNum = BeanUtils.toBean(createReqVO, YearNumDO.class); + yearNumMapper.insert(yearNum); + // 返回 + return yearNum.getId(); + } + + @Override + public void updateYearNum(YearNumSaveReqVO updateReqVO) { + // 校验存在 + validateYearNumExists(updateReqVO.getId()); + // 更新 + YearNumDO updateObj = BeanUtils.toBean(updateReqVO, YearNumDO.class); + yearNumMapper.updateById(updateObj); + } + + @Override + public void deleteYearNum(Long id) { + // 校验存在 + validateYearNumExists(id); + // 删除 + yearNumMapper.deleteById(id); + } + + private void validateYearNumExists(Long id) { + if (yearNumMapper.selectById(id) == null) { + throw exception(YEAR_NUM_NOT_EXISTS); + } + } + + @Override + public YearNumDO getYearNum(Long id) { + return yearNumMapper.selectById(id); + } + + @Override + public PageResult getYearNumPage(YearNumPageReqVO pageReqVO) { + return yearNumMapper.selectPage(pageReqVO); + } + + @Override + public void update(List list) { + for (YearNumDO yearNumDO : list) { + validateYearNumExists(yearNumDO.getId()); + if (ObjectUtil.isEmpty(yearNumDO.getNumOrder())){ + yearNumDO.setNumOrder(0); + } + } + yearNumMapper.updateBatch(list); + } +} diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/found/FoundMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/found/FoundMapper.xml new file mode 100644 index 00000000..65b89fa9 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/found/FoundMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/monordnum/MonOrdNumMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/monordnum/MonOrdNumMapper.xml new file mode 100644 index 00000000..079833e3 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/monordnum/MonOrdNumMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/process/ProcessMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/process/ProcessMapper.xml new file mode 100644 index 00000000..96027c0f --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/process/ProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml new file mode 100644 index 00000000..0eb34410 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/yearnum/YearNumMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/yearnum/YearNumMapper.xml new file mode 100644 index 00000000..504bbba3 --- /dev/null +++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/yearnum/YearNumMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/found/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/found/index.ts new file mode 100644 index 00000000..10d5d5e8 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/found/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export interface FoundVO { + id: number + date: localdate + openMock: boolean + remark: string + status: boolean + numPresent: number + numBusinessTrip: number + numDesign: number + numInProcess: number + deliRate: number +} + +// 查询大屏-可修改单项数据分页 +export const getFoundPage = async (params) => { + return await request.get({ url: `/heli/found/page`, params }) +} + +// 查询大屏-可修改单项数据详情 +export const getFound = async (id: number) => { + return await request.get({ url: `/heli/found/get?id=` + id }) +} + +// 新增大屏-可修改单项数据 +export const createFound = async (data: FoundVO) => { + return await request.post({ url: `/heli/found/create`, data }) +} + +// 修改大屏-可修改单项数据 +export const updateFound = async (data: FoundVO) => { + return await request.put({ url: `/heli/found/update`, data }) +} + +// 删除大屏-可修改单项数据 +export const deleteFound = async (id: number) => { + return await request.delete({ url: `/heli/found/delete?id=` + id }) +} + +// 导出大屏-可修改单项数据 Excel +export const exportFound = async (params) => { + return await request.download({ url: `/heli/found/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/monordnum/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/monordnum/index.ts new file mode 100644 index 00000000..780b941d --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/monordnum/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface MonOrdNumVO { + id: number + date: string + openMock: boolean + year: string + blackMold: string + coloredMold: string + remark: string + status: boolean +} + +// 查询大屏-月订单数量分页 +export const getMonOrdNumPage = async (params) => { + return await request.get({ url: `/heli/mon-ord-num/page`, params }) +} + +// 查询大屏-月订单数量详情 +export const getMonOrdNum = async (id: number) => { + return await request.get({ url: `/heli/mon-ord-num/get?id=` + id }) +} + +// 新增大屏-月订单数量 +export const createMonOrdNum = async (data: MonOrdNumVO) => { + return await request.post({ url: `/heli/mon-ord-num/create`, data }) +} + +// 修改大屏-月订单数量 +export const updateMonOrdNum = async (data: MonOrdNumVO) => { + return await request.put({ url: `/heli/mon-ord-num/update`, data }) +} + +// 删除大屏-月订单数量 +export const deleteMonOrdNum = async (id: number) => { + return await request.delete({ url: `/heli/mon-ord-num/delete?id=` + id }) +} + +// 导出大屏-月订单数量 Excel +export const exportMonOrdNum = async (params) => { + return await request.download({ url: `/heli/mon-ord-num/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/process/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/process/index.ts new file mode 100644 index 00000000..27720c44 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/process/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface ProcessVO { + id: number + date: string + openMock: boolean + remark: string + status: boolean + processType: boolean +} + +// 查询大屏-设计、装配、加工进度分页 +export const getProcessPage = async (params) => { + return await request.get({ url: `/heli/process/page`, params }) +} + +// 查询大屏-设计、装配、加工进度详情 +export const getProcess = async (id: number) => { + return await request.get({ url: `/heli/process/get?id=` + id }) +} + +// 新增大屏-设计、装配、加工进度 +export const createProcess = async (data: ProcessVO) => { + return await request.post({ url: `/heli/process/create`, data }) +} + +// 修改大屏-设计、装配、加工进度 +export const updateProcess = async (data: ProcessVO) => { + return await request.put({ url: `/heli/process/update`, data }) +} + +// 删除大屏-设计、装配、加工进度 +export const deleteProcess = async (id: number) => { + return await request.delete({ url: `/heli/process/delete?id=` + id }) +} + +// 导出大屏-设计、装配、加工进度 Excel +export const exportProcess = async (params) => { + return await request.download({ url: `/heli/process/export-excel`, params }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/processdetail/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdetail/index.ts new file mode 100644 index 00000000..a6a0b49f --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/processdetail/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +export interface ProcessDetailVO { + id: number + date: string + remark: string + status: boolean + projectName: string + projectNameSim: string + projectStartTime: Date + projectEndTime: Date + projectProcess: number + deliveryStatus: boolean + isExten: string + isSelect: string + ordDate: Date + projectId: number +} + +// 查询大屏-设计、装配、加工进度子分页 +export const getProcessDetailPage = async (params) => { + return await request.get({ url: `/heli/process-detail/page`, params }) +} + +// 查询大屏-设计、装配、加工进度子详情 +export const getProcessDetail = async (id: number) => { + return await request.get({ url: `/heli/process-detail/get?id=` + id }) +} + +// 新增大屏-设计、装配、加工进度子 +export const createProcessDetail = async (data: ProcessDetailVO) => { + return await request.post({ url: `/heli/process-detail/create`, data }) +} + +// 修改大屏-设计、装配、加工进度子 +export const updateProcessDetail = async (data: ProcessDetailVO) => { + return await request.put({ url: `/heli/process-detail/update`, data }) +} + +// 删除大屏-设计、装配、加工进度子 +export const deleteProcessDetail = async (id: number) => { + return await request.delete({ url: `/heli/process-detail/delete?id=` + id }) +} + +// 导出大屏-设计、装配、加工进度子 Excel +export const exportProcessDetail = async (params) => { + return await request.download({ url: `/heli/process-detail/export-excel`, params }) +} +// 查询大屏-设计、装配、加工进度子详情 +export const searchProgress = async (type: number) => { + return await request.get({ url: `/heli/process-detail/searchProgress?type=` + type }) +} +// 修改大屏-设计、装配、加工进度子 +export const update = async (data: ProcessDetailVO) => { + return await request.put({ url: `/heli/process-detail/updateProcessDetail`, data }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/screen/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/screen/index.ts index 8d974a3e..a8281a3d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/screen/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/screen/index.ts @@ -50,3 +50,9 @@ export const updateScreenAll = async (data) => { return await request.put({ url: `/heli/screen/updateAll`, data}) } +export const searchUnfinished = async () => { + return await request.get({ url: `/heli/screen/searchUnfinished`}) +} +export const searchOrderByYear = async () => { + return await request.get({ url: `/heli/screen/searchOrderByYear`}) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/yearnum/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/yearnum/index.ts new file mode 100644 index 00000000..ef4907ae --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/yearnum/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export interface YearNumVO { + id: number + date: string + openMock: boolean + remark: string + status: boolean + numOrder: number +} + +// 查询大屏-近五年订单数量分页 +export const getYearNumPage = async (params) => { + return await request.get({ url: `/heli/year-num/page`, params }) +} + +// 查询大屏-近五年订单数量详情 +export const getYearNum = async (id: number) => { + return await request.get({ url: `/heli/year-num/get?id=` + id }) +} + +// 新增大屏-近五年订单数量 +export const createYearNum = async (data: YearNumVO) => { + return await request.post({ url: `/heli/year-num/create`, data }) +} + +// 修改大屏-近五年订单数量 +export const updateYearNum = async (data: YearNumVO) => { + return await request.put({ url: `/heli/year-num/update`, data }) +} + +// 删除大屏-近五年订单数量 +export const deleteYearNum = async (id: number) => { + return await request.delete({ url: `/heli/year-num/delete?id=` + id }) +} + +// 导出大屏-近五年订单数量 Excel +export const exportYearNum = async (params) => { + return await request.download({ url: `/heli/year-num/export-excel`, params }) +} +// 修改大屏-近五年订单数量 +export const update = async (data) => { + return await request.put({ url: `/heli/year-num/updateYearNum`, data }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/components/DiyEditor/components/mobile/index.ts b/mes-ui/mes-ui-admin-vue3/src/components/DiyEditor/components/mobile/index.ts index c0dc67da..3422ea1d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/components/DiyEditor/components/mobile/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/components/DiyEditor/components/mobile/index.ts @@ -4,7 +4,7 @@ * 组件规范: * 1. 每个子目录就是一个独立的组件,每个目录包括以下三个文件: * 2. config.ts:组件配置,必选,用于定义组件、组件默认的属性、定义属性的类型 - * 3. index.vue:组件展示,用于展示组件的渲染效果。可以不提供,如 Page(页面设置),只需要属性配置表单即可 + * 3. index1.vue:组件展示,用于展示组件的渲染效果。可以不提供,如 Page(页面设置),只需要属性配置表单即可 * 4. property.vue:组件属性表单,用于配置组件,必选, * * 注: diff --git a/mes-ui/mes-ui-admin-vue3/src/router/modules/remaining.ts b/mes-ui/mes-ui-admin-vue3/src/router/modules/remaining.ts index 4b57cc70..0030cb31 100644 --- a/mes-ui/mes-ui-admin-vue3/src/router/modules/remaining.ts +++ b/mes-ui/mes-ui-admin-vue3/src/router/modules/remaining.ts @@ -227,7 +227,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ }, // { // path: '/manager/model/edit', - // component: () => import('@/views/bpm/model/editor/index.vue'), + // component: () => import('@/views/bpm/model/editor/index1.vue'), // name: 'BpmModelEditor', // meta: { // noCache: true, diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue index 0dfc47df..bfef7576 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue @@ -1,7 +1,7 @@