From c26b357f1436c156ac40a88dc0702ce0660b3b68 Mon Sep 17 00:00:00 2001 From: lym <1994302445@qq.com> Date: Thu, 20 Feb 2025 16:27:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=9D=BF=E4=BB=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=86=99=E5=85=A5,bug1255=EF=BC=8C1225?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/handler/GlobalExceptionHandler.java | 21 +++ .../executor/enums/ErrorCodeConstants.java | 7 +- .../order/vo/type/PartsByRoomBodyRespVO.java | 31 ++++ .../order/vo/type/PlateByGoodsDetRespVO.java | 41 +++++ .../vo/type/PlateByRoomBodyDetRespVO.java | 36 ++++ .../orderParts/vo/OrderPartsPrintRespVO.java | 59 +++++++ .../executor/dal/mysql/goods/GoodsMapper.java | 7 + .../mysql/orderParts/OrderPartsMapper.java | 7 + .../dal/mysql/plate/PlateGoodMapper.java | 17 ++ .../executor/dal/mysql/plate/PlateMapper.java | 14 ++ .../service/order/OrderInputProcessor.java | 2 +- .../service/order/OrderServiceImpl.java | 165 +++++++++++++++--- .../mapper/orderParts/OrderPartsMapper.xml | 25 +++ .../resources/mapper/plate/PlateMapper.xml | 105 +++++++++++ .../admin/parts/vo/PartsRespVO.java | 81 ++++----- .../service/parts/PartsServiceImpl.java | 2 +- .../service/plate/PlateServiceImpl.java | 3 + .../remainplaten/RemainPlateServiceImpl.java | 4 + .../system/enums/ErrorCodeConstants.java | 9 +- .../system/service/dept/DeptServiceImpl.java | 4 + 20 files changed, 565 insertions(+), 75 deletions(-) create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PartsByRoomBodyRespVO.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByGoodsDetRespVO.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByRoomBodyDetRespVO.java create mode 100644 cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPrintRespVO.java diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java index 0ae4cfe59..a1d448b6d 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java @@ -11,6 +11,7 @@ import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.servlet.ServletUtils; import com.cf.imes.module.infra.api.logger.ApiErrorLogApi; import com.cf.imes.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DuplicateKeyException; @@ -31,9 +32,12 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.ValidationException; +import java.io.IOException; import java.time.LocalDateTime; import java.util.Map; import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.*; @@ -213,6 +217,23 @@ public class GlobalExceptionHandler { @ExceptionHandler(value = HttpMessageNotReadableException.class) public CommonResult httpMessageNotReadableExceptionHandler(HttpServletRequest req, HttpMessageNotReadableException ex) { log.warn("[httpMessageNotReadableExceptionHandler]", ex); + + Throwable rootCause = ex.getRootCause(); + // 无效格式异常处理。 + if (rootCause instanceof MismatchedInputException) { + return CommonResult.error(BAD_REQUEST.getCode(), "参数格式异常无法解读,请按照对应格式上传"); + } + // 文件格式错误处理 + if (rootCause instanceof IOException ) { + // 使用正则提取数值 + Pattern pattern = Pattern.compile("Numeric value \\((\\d+)\\) out of range"); + Matcher matcher = pattern.matcher(rootCause.getMessage()); + if (matcher.find()) { + String invalidValue = matcher.group(1); + return CommonResult.error(BAD_REQUEST.getCode(), String.format("参数校验失败:'%s' 超出范围", invalidValue)); + } + } + return CommonResult.error(BAD_REQUEST.getCode(), "请求参数不合法"); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 9c02f71b3..0616172dc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -61,14 +61,15 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_DATE_ERR = new ErrorCode(1_002_029_008, "获取订单列表,时间超出范围,请在30天范围内选择"); public static final ErrorCode ORDER_TIME_ERR = new ErrorCode(1_002_029_009, "获取订单列表,时间格式输入出错,请更换格式"); public static final ErrorCode FILE_TYPE_ERR = new ErrorCode(1_002_029_010, "当前文件类型尚未开发,敬请期待"); - public static final ErrorCode ORDER_DETAIL_DATE_ERR = new ErrorCode(1_002_029_006, "板件生产数据缺失,请确认数据源中是否存在相关数据"); + public static final ErrorCode ORDER_DETAIL_DATE_ERR = new ErrorCode(1_002_029_011, "板件生产数据缺失,请确认数据源中是否存在相关数据"); public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败"); - public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_002_029_006, "生产单删除失败"); - public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_002_029_006, "生产单还原失败"); + public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_002_029_014, "生产单删除失败"); + public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_002_029_015, "生产单还原失败"); public static final ErrorCode LOCK_ERR = new ErrorCode(1_002_030_001, "当前存在导入情况,请稍后"); public static final ErrorCode API_MES_ERR = new ErrorCode(1_002_031_001, "MES接口数据出错:{}"); public static final ErrorCode CHANGE_DETAILS_ITEM_ERROR = new ErrorCode(1_002_032_001, "明细转换失败"); + public static final ErrorCode ORDER_MATCH_NOT = new ErrorCode(1_002_033_001, "板材库缺少相关板材,请在板材库中进行添加之后再进行导入"); // ========== 自定义板编号生成 ========== public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORDERNO_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_002_030_001, "自定义版编号生产单序号规则中存在不支持的复位类型:{}"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PartsByRoomBodyRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PartsByRoomBodyRespVO.java new file mode 100644 index 000000000..502a34314 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PartsByRoomBodyRespVO.java @@ -0,0 +1,31 @@ +package com.cf.imes.module.executor.controller.admin.order.vo.type; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsPrintRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * 房间-柜体 -- 配件 + */ +@Schema(description = "管理后台 - 房间-柜体 -- 配件 Response VO") +@Data +@ExcelIgnoreUnannotated +@Builder +public class PartsByRoomBodyRespVO { + + @Schema(description = "房间名称") + private String roomName ; + + @Schema(description = "柜体名称") + private String bodyName ; + + @Schema(description = "配件集合") + private List partsRespVO ; + + @Schema(description = "小计") + private Double total ; +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByGoodsDetRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByGoodsDetRespVO.java new file mode 100644 index 000000000..66b36a575 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByGoodsDetRespVO.java @@ -0,0 +1,41 @@ +package com.cf.imes.module.executor.controller.admin.order.vo.type; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 板材 -- 小板明细 + */ +@Schema(description = "管理后台 - 板材 -- 小板明细 Response VO") +@Data +@ExcelIgnoreUnannotated +@Builder +public class PlateByGoodsDetRespVO { + + @Schema(description = "商品编号") + private String goodsId ; + + @Schema(description = "板材名称") + private String name ; + + @Schema(description = "板材颜色") + private String color ; + + @Schema(description = "板材厚度") + private BigDecimal thickness; + + @Schema(description = "小计") + private Integer number ; + + @Schema(description = "小板集合") + private List plateRespVO ; + + @Schema(description = "小计面积") + private BigDecimal totalArea ; +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByRoomBodyDetRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByRoomBodyDetRespVO.java new file mode 100644 index 000000000..09fcb4cee --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/type/PlateByRoomBodyDetRespVO.java @@ -0,0 +1,36 @@ +package com.cf.imes.module.executor.controller.admin.order.vo.type; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 房间-柜体 -- 小板明细 + */ +@Schema(description = "管理后台 - 房间-柜体 -- 小板明细 Response VO") +@Data +@ExcelIgnoreUnannotated +@Builder +public class PlateByRoomBodyDetRespVO { + + @Schema(description = "房间名称") + private String roomName ; + + @Schema(description = "柜体名称") + private String bodyName ; + + @Schema(description = "小计") + private Integer number ; + + @Schema(description = "小板集合") + private List plateRespVO ; + + @Schema(description = "小计面积") + private BigDecimal totalArea ; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPrintRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPrintRespVO.java new file mode 100644 index 000000000..51873da44 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPrintRespVO.java @@ -0,0 +1,59 @@ +package com.cf.imes.module.executor.controller.admin.orderParts.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +/** + * 总价 -- 配件明细 + */ +@Schema(description = "管理后台 - 总价 -- 配件明细 Response VO") +@Data +@ExcelIgnoreUnannotated +@Builder +public class OrderPartsPrintRespVO { + + @Schema(description = "配件id") + private Long id; + + @Schema(description = "配件编号") + private String goodsId; + + @Schema(description = "配件名称") + private String name; + + @Schema(description = "配件材质") + private String material; + + @Schema(description = "配件类型") + private String category; + + @Schema(description = "型号") + private String model; + + @Schema(description = "规格") + private String spec; + + @Schema(description = "品牌") + private String brand; + + @Schema(description = "厂家") + private String factory; + + @Schema(description = "单位") + private String unit; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "单价") + private Double price; + + @Schema(description = "金额") + private Double amount; + + @Schema(description = "数量") + private Double num; + +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java index 8d56d936f..80fc94ee0 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java @@ -202,4 +202,11 @@ public interface GoodsMapper extends BaseMapperX { List selectInsertGoodsIds(@Param("orderIds") List orderIds,@Param("goodsIds") List goodsIds,@Param("organId") Long organId); + // 通过orderId查找板材 + default List selectGoodsByOrderId(Long orderId, Long organId, Integer deleted) { + return selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrderId, orderId) + .eq(GoodsDO::getDeleted, deleted) + .eq(GoodsDO::getOrganId, organId)); + } } \ 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/dal/mysql/orderParts/OrderPartsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java index cb76f4f38..defb860c8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java @@ -6,6 +6,7 @@ import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsPageReqVO; +import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsPrintRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.PartGoodsRespVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO; import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; @@ -104,4 +105,10 @@ public interface OrderPartsMapper extends BaseMapperX { .select(OrderPartsDO::getId)); } + // 柜体查找配件 + List selectOrderPartsListByBody(@Param("orderId")Long orderId, + @Param("organId")Long organId, + @Param("deleted")Integer deleted, + @Param("roomId")Long roomId, + @Param("bodyId")Long bodyId); } \ 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/dal/mysql/plate/PlateGoodMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateGoodMapper.java index f89e315e0..5054cf0eb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateGoodMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateGoodMapper.java @@ -50,6 +50,23 @@ public interface PlateGoodMapper extends BaseMapperX { } + default List selectGood(String material, String color, BigDecimal thickness, + String brand, String goodsName, Long organId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(PlateGoodDO::getGoodsName, goodsName) + .eq(PlateGoodDO::getMaterial, material) + .eq(PlateGoodDO::getColor, color) + .eq(PlateGoodDO::getThickness, thickness) + .eq(PlateGoodDO::getDeleted, 0) + .eq(PlateGoodDO::getOrganId, organId); + if (brand == null) { + queryWrapper.eq(PlateGoodDO::getBrand,""); + }else { + queryWrapper.eq(PlateGoodDO::getBrand, brand); + } + return selectList(queryWrapper); + } + default PageResult selectGoodsPage(GoodsPlateFilterPageReqVO pageReqVO, Long organId) { return selectPage(pageReqVO, new LambdaQueryWrapperX() .eq(PlateGoodDO::getOrganId,organId) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index 706577ad2..045133041 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -281,4 +281,18 @@ public interface PlateMapper extends BaseMapperX { } + List selectOrderPlateList(@Param("orderId") Long orderId, + @Param("organId") Long organId, + @Param("deleted") Integer deleted, + @Param("roomId")Long roomId, + @Param("bodyId")Long bodyId, + @Param("plateId")Long goodsId); // 明细 + + List selectOrderPlateListSummary(@Param("orderId") Long orderId, + @Param("organId") Long organId, + @Param("deleted") Integer deleted, + @Param("roomId")Long roomId, + @Param("bodyId")Long bodyId, + @Param("plateId")Long goodsId); // 汇总 + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java index 4e2784aae..d29a18854 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderInputProcessor.java @@ -166,7 +166,7 @@ public class OrderInputProcessor { insertInBatches(plateDOS, 1000, (batch, index) -> plateMapper.insertBatch((Collection) batch)); insertInBatches(itemDOS, 1000, (batch, index) -> orderItemMapper.insertBatch((Collection) batch)); insertInBatches(goodsDOS, 1000, (batch, index) -> goodsMapper.insertBatch((Collection) batch)); - insertInBatches(plateGoodDOS, 1000, (batch, index) -> plateGoodMapper.insertBatch((Collection) batch)); +// insertInBatches(plateGoodDOS, 1000, (batch, index) -> plateGoodMapper.insertBatch((Collection) batch)); insertInBatches(partsDOS, 1000, (batch, index) -> partsMapper.insertBatch((Collection) batch)); } 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 8e4a645fd..b732ddf91 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 @@ -20,9 +20,14 @@ import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.executor.controller.admin.order.vo.order.*; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; +import com.cf.imes.module.executor.controller.admin.order.vo.type.PartsByRoomBodyRespVO; +import com.cf.imes.module.executor.controller.admin.order.vo.type.PlateByGoodsDetRespVO; +import com.cf.imes.module.executor.controller.admin.order.vo.type.PlateByRoomBodyDetRespVO; +import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsPrintRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy; +import com.cf.imes.module.executor.controller.admin.plate.vo.PlateGoodsRespVO; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; @@ -48,7 +53,6 @@ import com.cf.imes.module.executor.dal.mysql.orderParts.PartsMapper; import com.cf.imes.module.executor.dal.mysql.pack.OrderPackageMapper; import com.cf.imes.module.executor.dal.mysql.pack.OrderPrepackagedMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; -import com.cf.imes.module.executor.dal.mysql.planItem.PlanItemMapper; 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; @@ -56,10 +60,8 @@ import com.cf.imes.module.executor.enums.CategoryEnum; import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService; -import com.cf.imes.module.executor.service.plan.PlanService; import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants; import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; -import com.cf.imes.module.executor.util.elasticsearch.EsUtils; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataTypeVo; import org.springframework.aop.framework.AopContext; @@ -71,6 +73,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -134,9 +137,6 @@ public class OrderServiceImpl implements OrderService { @Resource private OrderPrepackagedMapper orderPrepackagedMapper; - @Resource - private PlanItemMapper planItemMapper; - @Resource private OrderInputProcessor orderInputProcessor; @@ -152,8 +152,6 @@ public class OrderServiceImpl implements OrderService { @Resource private CustomPlateNoGenerateService customPlateNoGenerateService; - @Resource - private EsUtils esUtils; private static final String SUBMIT_STATE = "1"; // 空订单 原生产系统 @@ -164,9 +162,6 @@ public class OrderServiceImpl implements OrderService { String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; - @Resource - private PlanService planService; - @Override public void updateOrder(OrderSaveReqVO updateReqVO) { // 校验存在, 生产单未删除 @@ -590,6 +585,7 @@ public class OrderServiceImpl implements OrderService { throw exception(ORDER_NOT_EXISTS); } return getDataByOrderIdAndType(orderDO, type, OrderDeletedEnum.NOT_DELETED.getStatus()); +// return getDataByOrderIdAndTypeDetail(orderDO, type, OrderDeletedEnum.NOT_DELETED.getStatus()); } @Override @@ -803,9 +799,12 @@ public class OrderServiceImpl implements OrderService { if (goodsDO.getGoodsId() != null && !goodsDO.getGoodsId().isEmpty()) { // 有goodsId plateGoodDO = getPlateGood(goodsDO.getGoodsId(), OrganContextHolder.getOrganId()); } else { // 没有goodsId 其他信息匹配 - plateGoodDOS = plateGoodMapper.selectGood(goodsDO.getGoodsName(), goodsDO.getMaterial(), goodsDO.getColor(), - goodsDO.getTexture(), goodsDO.getWidth(), goodsDO.getThickness(), goodsDO.getHeight(), goodsDO.getBrand(), - goodsDO.getSpec(), OrganContextHolder.getOrganId()); +// plateGoodDOS = plateGoodMapper.selectGood(goodsDO.getGoodsName(), goodsDO.getMaterial(), goodsDO.getColor(), +// goodsDO.getTexture(), goodsDO.getWidth(), goodsDO.getThickness(), goodsDO.getHeight(), goodsDO.getBrand(), +// goodsDO.getSpec(), OrganContextHolder.getOrganId()); + + plateGoodDOS = plateGoodMapper.selectGood(goodsDO.getMaterial(), goodsDO.getColor(), goodsDO.getThickness(), + goodsDO.getBrand(),goodsDO.getGoodsName(), OrganContextHolder.getOrganId()); } @@ -815,20 +814,23 @@ public class OrderServiceImpl implements OrderService { goodsDO.setGoodsId(plateGoodDO.getGoodsId()); } else { // 不存在板材 - long plateNo = idWorker.nextId(); - long obtainingTime = idWorker.obtainingTime(); + throw exception(ORDER_MATCH_NOT); - String goodsId = goodsDO.getGoodsId() == null ? (obtainingTime) + Long.toString(plateNo).substring(2) : goodsDO.getGoodsId(); - goodsDO.setGoodsId(goodsId); - - - Long plateGoods = (Long) identifierGenerator.nextId(null); - - plateGoodDO = BeanUtils.toBean(goodsDO, PlateGoodDO.class) - .setId(plateGoods) - .setGoodsId(goodsId); - - plateGoodLists.add(plateGoodDO); +// 添加板材库数据 +// long plateNo = idWorker.nextId(); +// long obtainingTime = idWorker.obtainingTime(); +// +// String goodsId = goodsDO.getGoodsId() == null ? (obtainingTime) + Long.toString(plateNo).substring(2) : goodsDO.getGoodsId(); +// goodsDO.setGoodsId(goodsId); +// +// +// Long plateGoods = (Long) identifierGenerator.nextId(null); +// +// plateGoodDO = BeanUtils.toBean(goodsDO, PlateGoodDO.class) +// .setId(plateGoods) +// .setGoodsId(goodsId); +// +// plateGoodLists.add(plateGoodDO); } } @@ -1050,6 +1052,115 @@ public class OrderServiceImpl implements OrderService { return map; } + // 根据ype 与 orderId获取相关信息 + public Map getDataByOrderIdAndTypeDetail(OrderDO orderDO, String type, Integer deleted) { + String tableKey = "table"; + String plateCountKey = "plateCount"; + Map map = new HashMap<>(); + map.put("orderDO", orderDO); + switch (type) { + case "配件明细1-模板.xlsx":// 配件明细 + // 以房间柜体为维度获取配件明细 + map.put("partsListDetail", getOrderGoods(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
配件明细单
生产单号:数据源自定义单号:数据源经销商:数据源订单日期:数据源
客户:数据源收货电话:数据源收货地址:数据源收货日期:数据源
备注:数据源
房间名数据源柜体名表数据源
名称品牌厂家型号规格数量单位备注
数据源数据源数据源数据源数据源数据源数据源数据源
"); + break; + case "配件汇总1-模板.xlsx":// 配件汇总 + map.put("partsSummary", orderPartsMapper.selectPartAll(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
配件汇总单
生产单号:自定单号:经销商:订单日期
客户:收货电话:收货地址:收货日期:
备注:
名称型号规格数量单位品牌备注
"); + break; + case "板材明细-按房间-模板.xlsx": + map.put("plateListDetail", getOrderBody(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
板材明细单
生产单号:自定单号:经销商:订单日期
客户:收货电话:收货地址:收货日期:
备注:
房间名数据源柜体数据源列表条数表达式
板编号板名称材料颜色厚度面积异形造型左/右/上/下开门类型备注
小计:小计面积表达式
合计:合计面积表达式
"); +// map.put(plateCountKey, plateMapper.countPlateByOrderId(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + break; + case "板材明细-按板材-模板.xlsx": + map.put("plateListDetail", getOrderPlate(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
板材明细单
生产单号:自定单号:经销商:订单日期
客户:收货电话:收货地址:收货日期:
备注:
板材名称数据源板材颜色数据源板材厚度数据源列表条数表达式
房名柜名板编号板名称厚度面积异形造型左/右/上/下开门类型备注
小计:小计面积表达式
合计:合计面积表达式
"); +// map.put(plateCountKey, plateMapper.countPlateByOrderId(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + break; + case "板材汇总-按房间-模板.xlsx": + map.put("plateSummary", plateMapper.selectPlateGoodsListSummary(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
板材汇总单
生产单号:自定单号:经销商:订单日期
客户:收货电话:收货地址:收货日期:
备注:
房间名称数据源柜体数据源列表条数表达式
板名称材料颜色厚度数量面积开门类型
小计:数量表达式面积表达式
合计:数量表达式面积表达式
"); + map.put(plateCountKey, plateMapper.countPlateByOrderId(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + break; + case "板材汇总-按板材-模板.xlsx": + map.put("plateSummary", plateMapper.selectPlateGoodsListSummary(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + map.put(tableKey, "SheetJS Table Export
板材汇总单
生产单号:数据源自定义单号:数据源经销商:数据源订单日期:数据源
客户:数据源收货电话:数据源收货地址:数据源收货日期:数据源
备注:数据源
板材名称数据源板材颜色数据源板材厚度数据源列表条数表达式
房名柜名板名称数量面积开门类型备注
数据源数据源数据源数据源数据源数据源数据源数据源数据源
小计:数量表达式面积表达式
合计:数量表达式面积表达式
"); + map.put(plateCountKey, plateMapper.countPlateByOrderId(orderDO.getId(), OrganContextHolder.getOrganId(), deleted)); + break; + default: + throw exception(FILE_TYPE_ERR); + } + return map; + } + + // 以房间柜体为维度获取配件明细 + private List getOrderGoods(Long orderId, Long organId, Integer deleted) { + List partsByRoomBodyRespVOS = new ArrayList<>(); + // 获取房间柜体 + List orderBodyDOList = orderBodyMapper.selectList(orderId, deleted, organId); + for (OrderBodyDO orderBodyDO : orderBodyDOList) { + List orderPartsDOList = orderPartsMapper.selectOrderPartsListByBody(orderId, organId, deleted, orderBodyDO.getRoomId(),orderBodyDO.getId()); + if (orderPartsDOList.isEmpty()) { + continue; + } + partsByRoomBodyRespVOS.add(PartsByRoomBodyRespVO.builder() + .roomName(orderBodyDO.getRoomName()) + .bodyName(orderBodyDO.getName()) + .partsRespVO(orderPartsDOList) + .total(orderPartsDOList.stream().mapToDouble(OrderPartsPrintRespVO::getPrice).sum()) + .build()); + } + return partsByRoomBodyRespVOS; + } + + // 以房间柜体为维度获取板材明细 + private List getOrderBody(Long orderId, Long organId, Integer deleted) { + List plateByRoomBodyDetRespVOS = new ArrayList<>(); + // 获取房间柜体 + List orderBodyDOList = orderBodyMapper.selectList(orderId, deleted, organId); + for (OrderBodyDO orderBodyDO : orderBodyDOList) { + List plateDOList = plateMapper.selectOrderPlateList(orderId, organId, deleted, orderBodyDO.getRoomId(), orderBodyDO.getId(),null); + if (plateDOList.isEmpty()) { + continue; + } + plateByRoomBodyDetRespVOS.add(PlateByRoomBodyDetRespVO.builder() + .roomName(orderBodyDO.getRoomName()) + .bodyName(orderBodyDO.getName()) + .plateRespVO(plateDOList) + .totalArea(plateDOList.stream() + .map(PlateGoodsRespVO::getArea) + .reduce(BigDecimal.ZERO, BigDecimal::add)) + .number(plateDOList.size()) + .build()); + } + return plateByRoomBodyDetRespVOS; + } + + // 板材信息为维度获取板材明细 + private List getOrderPlate(Long orderId, Long organId, Integer deleted) { + List plateByGoodsDetRespVOS = new ArrayList<>(); + // 获得板材信息 + List plateDOList = goodsMapper.selectGoodsByOrderId(orderId, organId, deleted); + for (GoodsDO goodsDO : plateDOList) { + List plateGoodsRespVOS = plateMapper.selectOrderPlateList(orderId, organId, deleted, null, null, goodsDO.getId()); + if (plateGoodsRespVOS.isEmpty()) { + continue; + } + plateByGoodsDetRespVOS.add(PlateByGoodsDetRespVO.builder() + .goodsId(goodsDO.getGoodsId()) + .name(goodsDO.getGoodsName()) + .color(goodsDO.getColor()) + .thickness(goodsDO.getThickness()) + .plateRespVO(plateGoodsRespVOS) + .totalArea(plateGoodsRespVOS.stream() + .map(PlateGoodsRespVO::getArea) + .reduce(BigDecimal.ZERO, BigDecimal::add)) + .number(plateGoodsRespVOS.size()) + .build()); + } + return plateByGoodsDetRespVOS; + } // 判断是否已经导入 private boolean validateOrderNoExists(String orderNo, Long organId) { if (orderMapper.selectCount(new LambdaQueryWrapper() diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml index 6dcf74b58..c7aac0c47 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml @@ -220,4 +220,29 @@ + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 3aac53ff8..d198412db 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -730,5 +730,110 @@ + + + \ 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/parts/vo/PartsRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/parts/vo/PartsRespVO.java index ce1442d15..5c71cc601 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/parts/vo/PartsRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/parts/vo/PartsRespVO.java @@ -27,18 +27,15 @@ public class PartsRespVO { @ExcelProperty("配件编号") private String goodsId; - @Schema(description = "配件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @ExcelProperty("配件名称") - private String name; + @Schema(description = "是否复合部件:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "是否复合部件", converter = DictConvert.class) + @DictFormat(DictTypeConstants.BOOLEAN_STRING) + private Boolean isComposite; - @Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED) - @Size(max = 32, message = "颜色长度不能超过32个字符") - @ExcelProperty("颜色") - private String color; - - @Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("材质") - private String material; + @Schema(description = "子配件ID列表,复合部件时记录子配件ID,半角逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") +// @ExcelProperty("子配件ID列表") + @ExcelIgnore + private String subparts; @Schema(description = "配件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("配件类型") @@ -49,14 +46,39 @@ public class PartsRespVO { @ExcelProperty("配件子类") private String type; + @Schema(description = "配件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("配件名称") + private String name; + @Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("型号") private String model; - @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED) - @NumberValid(name = "价格") - @ExcelProperty("价格") - private Double price; + @Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("材质") + private String material; + + @Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED) + @Size(max = 32, message = "颜色长度不能超过32个字符") + @ExcelProperty("颜色") + private String color; + + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("单位") + private String unit; + + @Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规格") + private String spec; + + @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("品牌") + private String brand; + + @Schema(description = "厂家", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("厂家") + private String factory; + @Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED) @NumberValid(name = "宽度") @@ -73,31 +95,10 @@ public class PartsRespVO { @ExcelProperty("厚度") private Double thickness; - @Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("规格") - private String spec; - - @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("品牌") - private String brand; - - @Schema(description = "厂家", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("厂家") - private String factory; - - @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("单位") - private String unit; - - @Schema(description = "是否复合部件:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty(value = "是否复合部件", converter = DictConvert.class) - @DictFormat(DictTypeConstants.BOOLEAN_STRING) - private Boolean isComposite; - - @Schema(description = "子配件ID列表,复合部件时记录子配件ID,半角逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") -// @ExcelProperty("子配件ID列表") - @ExcelIgnore - private String subparts; + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED) + @NumberValid(name = "价格") + @ExcelProperty("价格") + private Double price; @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对") @ExcelProperty("备注") diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/parts/PartsServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/parts/PartsServiceImpl.java index 5f6df763b..da509abbf 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/parts/PartsServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/parts/PartsServiceImpl.java @@ -226,7 +226,7 @@ public class PartsServiceImpl implements PartsService { // 必填字段判断 private void validateFieldExists(PartsSaveReqVO partsSaveReqVO) { if (!CategoryEnum.OTHER.getValue().equals(partsSaveReqVO.getCategory())) { // 不为其他 - if (partsSaveReqVO.getUnit() == null) { + if (partsSaveReqVO.getUnit() == null || partsSaveReqVO.getUnit().isEmpty()) { throw exception(PARTS_UNIT_NOT_NULL); } if (CategoryEnum.EDGING.getValue().equals(partsSaveReqVO.getCategory())) { // 为封边 diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java index 6d6742b9d..58b700b7c 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java @@ -74,6 +74,9 @@ public class PlateServiceImpl implements PlateService { public void updatePlate(PlateSaveReqVO updateReqVO) { // 校验存在 Long organId = getOrganId(BASE_PLATE_UPDATE_PERMISSION, getLoginUser().getId(), updateReqVO.getOrganId()); + if (updateReqVO.getId() == null) { + throw exception(ErrorCodeConstants.PLATE_NOT_EXISTS); + } validatePlateExists(Long.valueOf(updateReqVO.getId()), organId); PlateDO updateObj = BeanUtils.toBean(updateReqVO, PlateDO.class); // 校验板材goods_id是否相同 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 d737addd0..51b94410a 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 @@ -39,6 +39,10 @@ public class RemainPlateServiceImpl implements RemainPlateService { @Override public Boolean createRemainPlate(RemainPlateSaveReqVO createReqVO) { List remainPlates = new ArrayList<>(); + // 限制新增数量不能超过999 + if (createReqVO.getCount() > 999) { + throw exception(REMAIN_PLATE_COUNT_MAX); + } // 插入 if (createReqVO.getCount() >= 1) { for (int i = 0; i < createReqVO.getCount(); i++) { 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 149025974..07c9fb4de 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 @@ -70,9 +70,10 @@ public class ErrorCodeConstants { public static final ErrorCode DEPT_EXISTS_USER = new ErrorCode(1_002_004_005, "部门中存在员工,无法删除"); public static final ErrorCode DEPT_NOT_ENABLE = new ErrorCode(1_002_004_006, "部门({})不处于开启状态,不允许选择"); public static final ErrorCode DEPT_PARENT_IS_CHILD = new ErrorCode(1_002_004_007, "不能设置自己的子部门为父部门"); - public static final ErrorCode DEPT_USER_OPER_NOT_ALLOW = new ErrorCode(1_002_015_008, "不允许操作用户自身部门"); - public static final ErrorCode PARENT_DEPT_USER_OPER_NOT_ALLOW = new ErrorCode(1_002_015_008, "不允许操作用户自身部门及其上级部门"); - public static final ErrorCode DEPT_DISABLE = new ErrorCode(1_002_004_006, "部门({})已被禁用"); + public static final ErrorCode DEPT_USER_OPER_NOT_ALLOW = new ErrorCode(1_002_004_008, "不允许操作用户自身部门"); + public static final ErrorCode PARENT_DEPT_USER_OPER_NOT_ALLOW = new ErrorCode(1_002_004_009, "不允许操作用户自身部门及其上级部门"); + public static final ErrorCode DEPT_DISABLE = new ErrorCode(1_002_004_010, "部门({})已被禁用"); + public static final ErrorCode DEPT_EXITS_USER = new ErrorCode(1_002_004_011, "当前部门存在用户,无法删除"); // ========== 岗位模块 1-002-005-000 ========== public static final ErrorCode POST_NOT_FOUND = new ErrorCode(1_002_005_000, "当前岗位不存在"); @@ -260,6 +261,7 @@ public class ErrorCodeConstants { public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_033_005, "板材不存在"); public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在"); public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空"); + public static final ErrorCode PLATE_NOT_EXISTS = new ErrorCode(1_002_033_008, "板材标识代号禁止空"); public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_002_033_009, "板材商品编号存在,请重新命名商品编号"); public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "小板:{} 为源小板,无法删除"); public static final ErrorCode PLAN_GOODS_IS_FILTER_DATA_ERROR = new ErrorCode(1_002_033_011, "当前排单为非混单,无法添加颜色的筛选条件"); @@ -349,6 +351,7 @@ public class ErrorCodeConstants { public static final ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_006, "未选中余料板,请选择余料板"); public static final ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_038_007, "应用信息不存在"); public static final ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_038_008, "应用登陆失败"); + public static final ErrorCode REMAIN_PLATE_COUNT_MAX = new ErrorCode(1_002_038_009, "每次新增余料板数量,最大为999"); //=========== 用户的系统配置 1-002-039-000 ============ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java index f391c6fef..b748f945f 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/dept/DeptServiceImpl.java @@ -114,6 +114,10 @@ public class DeptServiceImpl implements DeptService { } // 校验部门内用户操作 checkCurrentWhenOperate(id); + // 校验部门内是否存在用户,存在用户则禁止删除 + if (!userService.getUserListByDeptIds(Collections.singletonList(id)).isEmpty()) { + throw ServiceExceptionUtil.exception(ErrorCodeConstants.DEPT_EXITS_USER); + } // 删除部门 deptMapper.deleteById(id); // 删除关联的用户