diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderStatusEnum.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderStatusEnum.java new file mode 100644 index 000000000..a931da8f2 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderStatusEnum.java @@ -0,0 +1,24 @@ +package com.cf.imes.module.executor.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum OrderStatusEnum { + EMPTY(0, "空生产单"), + NEW_ORDER(1, "新单"), + IN_PRODUCTION(2, "生产中"), + FINISH_PRODUCTION(3, "生产完成"); + + private final Integer status; + private String description; + + public boolean equals(Integer status) { + return this.status .equals(status) ; + } + + public boolean equals(OrderStatusEnum enableStatusEnum) { + return enableStatusEnum != null && enableStatusEnum.status .equals(this.getStatus()) ; + } +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 7ca0def77..4c44ec833 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -302,13 +302,26 @@ public class OrderController { return success(orderService.importTemplate(file,type)); } - @GetMapping("/printing") - @Operation(summary = "打印/导出") + @GetMapping("/printingZip") + @Operation(summary = "打印/导出(多文件)") @Parameter(name = "type", description = "文件类型", required = true, example = "0") @PreAuthorize("@ss.hasPermission('executor:order:query')") @OperateLog(type = EXPORT) - public void getOrderPrinting(@Valid OrderPageReqVO pageReqVO, @RequestParam("type") String type, - HttpServletResponse response) throws IOException { - orderService.getPrintData(pageReqVO,type,response); + public void getOrderPrintingZip(@Valid OrderPageReqVO pageReqVO, + @RequestParam("type") String type, + HttpServletResponse response) throws IOException { + orderService.getPrintDataZip(pageReqVO,type,response); + } + + @GetMapping("/printing") + @Operation(summary = "打印/导出(单文件)") + @Parameter(name = "type", description = "文件类型", required = true, example = "0") + @PreAuthorize("@ss.hasPermission('executor:order:query')") + @OperateLog(type = EXPORT) + public void getOrderPrinting( +// @RequestParam("orderId") Long orderId, + @RequestParam("type") String type, + HttpServletResponse response) throws IOException { + orderService.getPrintData(1797937673478864896L,type,response); } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/PartGoodsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/PartGoodsRespVO.java index 00ecd8ed2..ea6002ac2 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/PartGoodsRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/PartGoodsRespVO.java @@ -74,4 +74,7 @@ public class PartGoodsRespVO { @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507") private Double num; + + @Schema(description = "金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507") + private Double totalPrice; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index e2b6eea0e..c9e79cedb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -114,4 +114,13 @@ public interface OrderMapper extends BaseMapperX { .eq(OrderDO::getDeleted, 0) .eq(OrderDO::getOrganId, organId)); } + + // 查询单个生产单 + default OrderDO selectOrderOne(Long id,Long organId) { + return selectOne(new LambdaQueryWrapper() + .select(OrderDO::getStatus) + .eq(OrderDO::getId, id) + .eq(OrderDO::getDeleted, 0) + .eq(OrderDO::getOrganId, organId)); + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index 23d6caeb8..1b7473ecc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -155,9 +155,14 @@ public interface OrderService { void exportTemplate(HttpServletResponse response, String value); /** - * 打印/导出数据获取 + * 打印/导出数据获取 (多文件) */ - void getPrintData(OrderPageReqVO orderPageReqVO, String type,HttpServletResponse response) throws IOException; + void getPrintDataZip(OrderPageReqVO orderPageReqVO, String type,HttpServletResponse response) throws IOException; + + /** + * 打印/导出数据获取 (单文件) + */ + void getPrintData(Long orderId, String type,HttpServletResponse response) throws IOException; default String getSavePath() { ApplicationHome applicationHome = new ApplicationHome(this.getClass()); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index a9093cc00..4114db3e4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -35,11 +35,13 @@ import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper; +import com.cf.imes.module.executor.enums.OrderStatusEnum; import com.cf.imes.module.executor.util.ExcelWriterUtil; import com.cf.imes.module.executor.util.deviseData.dataTwo.PlateDetail; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataProduction; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize; +import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.system.api.application.ApplicationApi; import com.cf.imes.module.system.api.dict.DictDataApi; import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO; @@ -275,13 +277,14 @@ public class OrderServiceImpl implements OrderService { public void deleteBodyByOrder(Long orderId, Collection bodyIds) { validateOrderExists(orderId); // 校验生产单的状态 1 为新单状态,才可以修改 - if (orderMapper.selectOne(new LambdaQueryWrapper().eq(OrderDO::getId, orderId).eq(OrderDO::getStatus, 1)).getStatus() == 1) { + if (orderMapper.selectOrderOne(orderId, OrganContextHolder.getOrganId()).getStatus() != + OrderStatusEnum.NEW_ORDER.getStatus()) { throw exception(ORDER_STATUS_ERROR); } if (CollectionUtils.isNotEmpty(bodyIds)) { bodyIds.forEach(bodyId -> { // 校验存在 - validateOrderBodyExists(orderId, bodyId); + validateOrderBodyExists(orderId, bodyId, OrganContextHolder.getOrganId()); // 删除 orderBodyMapper.deleteAllByOrderId(orderId, bodyId); }); @@ -444,11 +447,9 @@ public class OrderServiceImpl implements OrderService { } } - DictDataRespDTO typographyDTO = dictDataApi.getDictData(DictTypeConstants.TYPOGRAPHY_TYPE, String.valueOf(goodsDO.getGoodsId())).getData();// 排版面 Long plateGoods = (Long) identifierGenerator.nextId(null); PlateGoodDO plateGoodDO = BeanUtils.toBean(goodsDO, PlateGoodDO.class) .setId(plateGoods) - .setTexture(typographyDTO.getLabel()) .setGoodsId(String.valueOf(goodsDO.getGoodsId())); goodsDO.setGoodsId(plateGoodDO.getId()); plateGoodLists.add(plateGoodDO); @@ -458,15 +459,16 @@ public class OrderServiceImpl implements OrderService { return map; } - private void validateOrderBodyExists(Long orderId, Long bodyId) { - if (orderBodyMapper.selectCount(new LambdaQueryWrapper().eq(OrderBodyDO::getOrderId, orderId).eq(OrderBodyDO::getId, bodyId)) == 0) { + private void validateOrderBodyExists(Long orderId, Long bodyId, Long organId) { + if (orderBodyMapper.selectCount(new LambdaQueryWrapper() + .eq(OrderBodyDO::getOrderId, orderId) + .eq(OrderBodyDO::getId, bodyId) + .eq(OrderBodyDO::getOrganId, organId)) == 0) { throw exception(ORDER_BODY_NOT_EXISTS); } } private LocalDateTime getAfterDate(LocalDateTime date) { - // 获取当前日期类型 2024-03-06 16:50:15 - // 获取当前日期,明确指定时区为业务所在时区,例如Asia/Shanghai ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); LocalDateTime localDateTime = now.toLocalDateTime(); @@ -474,12 +476,10 @@ public class OrderServiceImpl implements OrderService { // 添加30天 LocalDateTime futureDate = localDateTime.plusDays(DEFAULT_DAYS_TO_ADD); try { - // 考虑到异常处理,使用try-catch块 return futureDate; } catch (DateTimeParseException e) { // 在实际应用中应该有更详细的错误处理逻辑 System.err.println("Error parsing future date: " + e.getMessage()); - // 根据业务需求,这里可以选择记录日志、抛出自定义异常或进行其他处理 } } return date; @@ -630,7 +630,7 @@ public class OrderServiceImpl implements OrderService { } @Override - public void getPrintData(OrderPageReqVO orderPageReqVO, String type, HttpServletResponse response) throws IOException { + public void getPrintDataZip(OrderPageReqVO orderPageReqVO, String type, HttpServletResponse response) throws IOException { orderPageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); PageResult pageResult = orderMapper.selectPage(orderPageReqVO.setOrganId(SecurityFrameworkUtils.getLoginUser().getOrganId())); List orderDOList = pageResult.getList(); @@ -642,7 +642,19 @@ public class OrderServiceImpl implements OrderService { for (OrderDO orderDO : orderDOList) { map.putAll(getDataByOrderIdAndType(orderDO, type)); } - ExcelWriterUtil.exportExcel(response, map, getSavePath() + "\\" + type, type); + ExcelWriterUtil.exportExcelZip(response, map, getSavePath() + "\\" + type, type); + } + + @Override + public void getPrintData(Long orderId, String type, HttpServletResponse response) throws IOException { + // 查询生产单 + OrderDO orderDO = orderMapper.selectById(orderId); + if (orderDO == null) { + ExcelWriterUtil.writeErr(response, "生产单查找结果为空", getSavePath() + "\\" + "错误文件.xlsx"); + } + + Map map = getDataByOrderIdAndType(orderId, type); + ExcelWriterUtil.exportExcel(response, orderDO, (List) map.get(orderDO.getId()), getSavePath(), type); } // 根据ype 与 orderId获取相关信息 @@ -673,6 +685,34 @@ public class OrderServiceImpl implements OrderService { return map; } + // 根据ype 与 orderId获取相关信息 + public Map getDataByOrderIdAndType(Long orderId, String type) { + Map map = new HashMap<>(); + switch (type) { + case "配件明细1-模板.xlsx":// 配件明细 + map.put(orderId, orderPartsMapper.selectPartDetail(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId())); + break; + case "配件汇总1-模板.xlsx":// 配件汇总 + map.put(orderId, orderPartsMapper.selectPartAll(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId())); + break; + case "板材明细-按房间-模板.xlsx": + break; + case "板材明细-按板材-模板.xlsx": + map.put(orderId, plateMapper.selectPlateGoodsList(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId())); + + break; + case "板材汇总-按房间-模板.xlsx": + break; + case "板材汇总-按板材-模板.xlsx": + map.put(orderId, plateMapper.selectPlateGoodsList(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId())); + break; + default: + // 处理默认情况,可以选择忽略或者做其他处理 + break; + } + return map; + } + public String getRandomNumber(int length) { StringBuilder sb = new StringBuilder(); Random random = new Random(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java index 928a6777f..6a6490176 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java @@ -69,7 +69,7 @@ public class OrderProcessServiceImpl implements OrderProcessService { private OrderBodyMapper orderBodyMapper; @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public Long createOrderProcess(OrderProcessSaveReqVO createReqVO) { // 当生产不为删除时,校验生产单存在 if (orderMapper.selectOrder(createReqVO.getOrderId(), SecurityFrameworkUtils.getLoginUser().getOrganId()).isEmpty()) { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java index 0b8de12aa..e10e047f0 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java @@ -15,6 +15,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; +import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; @@ -97,7 +98,7 @@ public class ExcelWriterUtil { outputStream.close(); } - public static void exportExcel(HttpServletResponse response, Map map, String filePathErr, String type) throws IOException { + public static void exportExcelZip(HttpServletResponse response, Map map, String filePathErr, String type) throws IOException { ServletOutputStream outputStream = response.getOutputStream(); ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); @@ -136,10 +137,49 @@ public class ExcelWriterUtil { } } + public static void exportExcel(HttpServletResponse response, + OrderDO orderDO, + List list, + String filePathErr, + String type) throws IOException { + //输入流 + InputStream inputStream = ResourceUtils.getURL(filePathErr+ "\\" + type).openStream(); + ServletOutputStream outputStream = response.getOutputStream(); + + + //设置输出流和模板信息 + ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(inputStream).build(); + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + + //开启自动换行,自动换行表示每次写入一条list数据是都会重新生成一行空行,此选项默认是关闭的,需要提前设置为true + FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); + + //准备单组和数据 + Map mapOrder = fillOrderData(orderDO); + + excelWriter.fill(mapOrder, writeSheet); + + //列表 + excelWriter.fill(list, fillConfig, writeSheet); + + //设置文件名的编码格式,防止文件名乱码 + String fileName = URLEncoder.encode(type.replace("模板",String.valueOf(orderDO.getId())), "UTF-8"); + //固定写法,设置响应头 + response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx"); + + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + //关流 + excelWriter.finish(); + inputStream.close(); + outputStream.close(); + } + // 填充订单数据 private static Map fillOrderData(OrderDO order) { Map orderMap = new HashMap<>(); orderMap.put("customOrderNo", order.getCustomOrderNo()); + orderMap.put("orderId", order.getId().toString()); + orderMap.put("orderData", order.getOrderDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); orderMap.put("customer", order.getCustomer()); orderMap.put("address", order.getAddress()); orderMap.put("phoneNumber", order.getPhoneNumber()); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index 3dc647fc5..23c6fe39c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -113,7 +113,7 @@ from order_goods a left join order_plate b on a.goods_id = b.goods_id left join order_item c on c.order_id = b.order_id - left join order_remain_plate d on a.goods_id = d.goods_id and d.plan_id = c.plan_id + left join order_remain_plate d on a.goods_id = d.goods_id and d.plan_id = c.plan_id where c.plan_id = #{planId} GROUP BY a.id, d.id diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx index 8f98befc8..ad259bfdc 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/生产单Excel导入错误导出模板.xlsx differ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件明细1-模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件明细1-模板.xlsx index 0b0e00c8d..3921cec10 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件明细1-模板.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件明细1-模板.xlsx differ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件汇总1-模板.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件汇总1-模板.xlsx index 07b3c5271..980f1ad90 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件汇总1-模板.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/配件汇总1-模板.xlsx differ diff --git a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java new file mode 100644 index 000000000..76d11d931 --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/RemainPlateUseTypeEnum.java @@ -0,0 +1,24 @@ +package com.cf.imes.module.manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum RemainPlateUseTypeEnum { + + TYPE_ONE(0, "核销"), + TYPE_TWO(1, "排单"), + TYPE_THREE(2, "补板"); + + private final Integer status; + private String description; + + public boolean equals(Integer status) { + return this.status .equals(status) ; + } + + public boolean equals(RemainPlateUseTypeEnum enableStatusEnum) { + return enableStatusEnum != null && enableStatusEnum.status .equals(this.getStatus()) ; + } +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java index 2dcba5a0c..e2a61cf88 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/RemainPlateController.java @@ -3,6 +3,7 @@ package com.cf.imes.module.manage.controller.admin.plate; import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlatePageReqVO; import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlateRespVO; import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlateSaveReqVO; +import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlateUptReqVO; import com.cf.imes.module.manage.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.manage.service.remainplaten.RemainPlateService; import io.swagger.v3.oas.annotations.Parameters; @@ -41,12 +42,19 @@ public class RemainPlateController { private RemainPlateService remainPlateService; @PostMapping("/create") - @Operation(summary = "创建生产单余料板表") + @Operation(summary = "创建生产单余料板表(单个)") @PreAuthorize("@ss.hasPermission('manage:remain-plate:create')") public CommonResult createRemainPlate(@Valid @RequestBody RemainPlateSaveReqVO createReqVO) { return success(remainPlateService.createRemainPlate(createReqVO)); } + @PostMapping("/createMultiple") + @Operation(summary = "创建生产单余料板表(多个)") + @PreAuthorize("@ss.hasPermission('manage:remain-plate:create')") + public CommonResult createRemainPlateMultiple(@Valid @RequestBody Set createReqVOS) { + return success(remainPlateService.createRemainPlateMultiple(createReqVOS)); + } + @PutMapping("/update") @Operation(summary = "更新生产单余料板表") @PreAuthorize("@ss.hasPermission('manage:remain-plate:update')") @@ -57,31 +65,20 @@ public class RemainPlateController { @PutMapping("/updateStatus") @Operation(summary = "余料板批量核销") - @Parameters({ - @Parameter(name = "id", description = "余料板id集", required = true), - @Parameter(name = "status", description = "修改的状态", required = true , example = "1"), - @Parameter(name = "useType", description = "使用类型,0核销,1排单,2补板", required = true , example = "1"), - @Parameter(name = "planId", description = "排单 ID", example = "1") - }) @PreAuthorize("@ss.hasPermission('manage:remain-plate:update')") - public CommonResult updateRemainPlate(@RequestParam("id") Set ids, - @RequestParam("status") Integer status, - @RequestParam("useType") Integer useType, - @RequestParam("planId") Long planId) { - remainPlateService.updateRemainPlateStatus(ids,status,useType,planId); + public CommonResult updateRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { + remainPlateService.updateRemainPlateStatus(updateReqVO.getIds(), + updateReqVO.getStatus(), + updateReqVO.getUseType(), + updateReqVO.getPlanId()); return success(true); } @PutMapping("/revertUpdate") @Operation(summary = "余料板批量释放") - @Parameters({ - @Parameter(name = "id", description = "余料板id集", required = true), - @Parameter(name = "status", description = "修改的状态", required = true , example = "1") - }) @PreAuthorize("@ss.hasPermission('manage:remain-plate:update')") - public CommonResult updateRemainPlate(@RequestParam("id") Set ids, - @RequestParam("status") Integer status) { - remainPlateService.revertRemainPlateStatus(ids,status); + public CommonResult revertRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { + remainPlateService.revertRemainPlateStatus(updateReqVO.getIds(),updateReqVO.getStatus()); return success(true); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlatePageReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlatePageReqVO.java index 04ba05ee4..3d9fb2019 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlatePageReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlatePageReqVO.java @@ -16,6 +16,9 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH @ToString(callSuper = true) public class RemainPlatePageReqVO extends PageParam { + @Schema(description = "ID", example = "16628") + private Long id; + @Schema(description = "排单 ID", example = "16628") private Long planId; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java index ddd6083b0..981fa1339 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateSaveReqVO.java @@ -23,8 +23,7 @@ public class RemainPlateSaveReqVO { @Schema(description = "初始排单 ID") private Long initPlanId; - @Schema(description = "余料板状态,0未使用,1使用中,2已使用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "余料板状态,0未使用,1使用中,2已使用不能为空") + @Schema(description = "余料板状态,0未使用,1使用中,2已使用", example = "1") private Integer status; @Schema(description = "是否为开料添加,0否,1是", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @@ -34,12 +33,10 @@ public class RemainPlateSaveReqVO { @Schema(description = "使用类型,0核销,1排单,2补板", example = "0") private Integer useType; - @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7425") - @NotEmpty(message = "商品 ID不能为空") + @Schema(description = "商品 ID", example = "7425") private String goodsId; - @Schema(description = "商品名", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") - @NotEmpty(message = "商品名不能为空") + @Schema(description = "商品名", example = "晨丰") private String name; @Schema(description = "材料", requiredMode = Schema.RequiredMode.REQUIRED) @@ -78,8 +75,7 @@ public class RemainPlateSaveReqVO { @Schema(description = "备注", example = "随便") private String remark; - @Schema(description = "轮廊数据,Json 串", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "轮廊数据,Json 串不能为空") + @Schema(description = "轮廊数据,Json 串") private String outLineJson; } \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java new file mode 100644 index 000000000..45081e13f --- /dev/null +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/plate/vo/remain/RemainPlateUptReqVO.java @@ -0,0 +1,23 @@ +package com.cf.imes.module.manage.controller.admin.plate.vo.remain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Set; + +@Schema(description = "管理后台 - 生产单余料板表 order_remain_plate_{N} Response VO") +@Data +public class RemainPlateUptReqVO { + + @Schema(description = "余料板集", requiredMode = Schema.RequiredMode.REQUIRED, example = "16470") + private Set ids; + + @Schema(description = "余料板状态,0未使用,1使用中", example = "1") + private Integer status; + + @Schema(description = "使用类型,0核销,1排单,2补板", example = "0") + private Integer useType; + + @Schema(description = "排单 ID", example = "6628") + private Long planId; +} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java index 99546599e..d6ece6124 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateService.java @@ -23,6 +23,14 @@ public interface RemainPlateService { */ Long createRemainPlate(@Valid RemainPlateSaveReqVO createReqVO); + /** + * 创建生产单余料板表 + * + * @param createReqVOS 创建信息 + * @return 编号 + */ + Boolean createRemainPlateMultiple(@Valid Set createReqVOS); + /** * 批量核销 * diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java index 298f310a1..977fbcae7 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/remainplaten/RemainPlateServiceImpl.java @@ -6,6 +6,7 @@ import com.cf.imes.module.manage.controller.admin.plate.vo.remain.RemainPlateSav import com.cf.imes.module.manage.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.manage.dal.mysql.remainplaten.RemainPlateMapper; import com.cf.imes.module.manage.enums.RemainPlateStatusEnum; +import com.cf.imes.module.manage.enums.RemainPlateUseTypeEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import com.cf.imes.framework.common.pojo.PageResult; @@ -15,6 +16,7 @@ import com.cf.imes.framework.common.util.object.BeanUtils; import javax.annotation.Resource; +import java.util.Collections; import java.util.Set; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -41,19 +43,31 @@ public class RemainPlateServiceImpl implements RemainPlateService { return remainPlate.getId(); } + @Override + public Boolean createRemainPlateMultiple(Set createReqVOS) { + // 批量插入 + return remainPlateMapper.insertBatch(Collections.singleton(BeanUtils.toBean(createReqVOS, RemainPlateDO.class))); + } + @Override public void updateRemainPlateStatus(Set ids, Integer status, Integer useType,Long planId) { //判断是否符合核销标准 - validateRemainPlateStatus(ids,RemainPlateStatusEnum.UNUSED.getStatus()); + validateRemainPlateStatus(ids,RemainPlateStatusEnum.IN_USE.getStatus()); //以id为条件批量修改余料库中的状态 remainPlateMapper.updateRemainPlateStatus(ids, status, useType, OrganContextHolder.getOrganId(),planId); } @Override public void revertRemainPlateStatus(Set ids, Integer status) { - // 判断余料的状态 为使用中 - validateRemainPlateStatus(ids,RemainPlateStatusEnum.IN_USE.getStatus()); - remainPlateMapper.updateRemainPlateStatus(ids, status, null, OrganContextHolder.getOrganId(),null); + // 判断余料的状态是否存在使用中 + validateRemainPlateStatus(ids,RemainPlateStatusEnum.UNUSED.getStatus()); + // 判断使用类型是否为核销 + for (Long id : ids) { + if (validateRemainPlateUseType(id) != RemainPlateUseTypeEnum.TYPE_ONE.getStatus()) { + throw exception(REMAIN_PLATE_USR_TYPE); + } + } + remainPlateMapper.updateRemainPlateStatus(ids, status, null, OrganContextHolder.getOrganId(),0L); } @Override @@ -77,7 +91,7 @@ public class RemainPlateServiceImpl implements RemainPlateService { @Override public void deleteRemainPlate(Set ids) { - // 判断余料的状态 为使用中 + // 判断余料的状态是否存在使用中 validateRemainPlateStatus(ids,RemainPlateStatusEnum.IN_USE.getStatus()); // 删除 remainPlateMapper.deleteBatchIds(ids); diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index f52d99d21..97fcb6bb4 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -259,4 +259,5 @@ public interface ErrorCodeConstants { ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_001, "余料板正在使用中,禁止修改"); ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_001, "余料板未使用"); + ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_001, "余料板使用类型为不可核销类型"); }