1、executor微服务错误码整理;2、分堆打包mycat环境封包异常修复;3、订单包裹详情分页新结构适配;4、板材管理移除权限校验;

This commit is contained in:
gaoqr
2026-04-28 10:43:48 +08:00
parent 8cebcf15fa
commit e11f8a40e0
90 changed files with 346 additions and 5108 deletions
@@ -1,22 +0,0 @@
package com.cf.imes.module.executor.api.orderProcess;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.executor.enums.ApiConstants;
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.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 多组织")
public interface OrderProcessApi {
String PREFIX = ApiConstants.PREFIX + "/order-process";
@GetMapping(PREFIX +"/apiGet")
@Operation(summary = "获得订单中的加工组信息表")
@Parameter(name = "processGroupId", description = "加工组id", required = true, example = "1024")
CommonResult<Boolean> getOrderProcessByProcessGroupId(@RequestParam("processGroupId") Long id);
}
@@ -15,47 +15,39 @@ public class ErrorCodeConstants {
public static final ErrorCode PLAN_NOT_ALLOW_DELETE = new ErrorCode(1_003_107_001, "排单号:{},已开料不予许删除");
public static final ErrorCode PLATE_ERROR = new ErrorCode(1_003_107_005, "当前新增的板材非同一类型的板材,禁止更改");
public static final ErrorCode PLAN_PLATE_IS_ALL_CUT = new ErrorCode(1_003_107_006, "排单号:{} 的板材已全部开料,禁止删除!");
public static final ErrorCode PLAN_NOT_DATA_EXISTS = new ErrorCode(1_003_107_007, "排单号:{} 不存在,无法进行操作,请检查排单数据");
public static final ErrorCode PLAN_PLATE_IS_CUTTING = new ErrorCode(1_003_107_008, "当前排单已有板材开料,无法开启混单");
public static final ErrorCode PLAN_IS_MIXED_ERROR = new ErrorCode(1_003_107_009, "当前排单为混单,无法开启混单配置");
public static final ErrorCode CREATE_PLAN_ORDER_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_010, "创建排单失败:订单号【{}】板件数量已发生改变,请刷新后重新创建单排");
public static final ErrorCode CREATE_PLAN_GOODS_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_011, "创建排单失败:材质【{}】板件数量已发生改变,请刷新后重新创建单排");
public static final ErrorCode ORDER_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_012, "更新订单状态失败:订单号【{}】板件数量已发生改变,请刷新后重新操作");
public static final ErrorCode GOODS_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_013, "更新材质状态失败:材质【{}】板件数量已发生改变,请刷新后重新操作");
public static final ErrorCode BODY_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_014, "更新柜体状态失败:柜体【{}】板件数量已发生改变,请刷新后重新操作");
public static final ErrorCode CREATE_PLAN_ORDER_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_010, "create.plan.order.update.concurrency.error");
public static final ErrorCode CREATE_PLAN_GOODS_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_011, "create.plan.goods.update.concurrency.error");
public static final ErrorCode ORDER_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_012, "order.plate.update.concurrency.error");
public static final ErrorCode GOODS_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_013, "goods.plate.update.concurrency.error");
public static final ErrorCode BODY_PLATE_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_003_107_014, "body.plate.update.concurrency.error");
// ========== 订单商品 1_003_108_000 ==========
public static final ErrorCode GOODS_NOT_EXISTS = new ErrorCode(1_003_108_000, "订单商品不存在");
// ========== 订单 1_003_109_000 ==========
public static final ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_003_109_000, "订单不存在");
public static final ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1_003_109_001, "订单以进入生产状态,无法作废");
public static final ErrorCode PLATE_IS_PLAN = new ErrorCode(1_003_109_002, "删除对象中有已排单板件,请将该对象从排单中移除后再选择删除!");
public static final ErrorCode ORDER_ERROR = new ErrorCode(1_003_109_003, "当前订单柜体,房间已全部删除!");
public static final ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_003_109_000, "order.not.exists");
public static final ErrorCode ORDER_CAN_NOT_CANCEL = new ErrorCode(1_003_109_001, "order.can.not.cancel");
public static final ErrorCode PLATE_IS_PLAN = new ErrorCode(1_003_109_002, "order.plate.is.plan");
public static final ErrorCode ORDER_BODY_DEL_NO_TARGET = new ErrorCode(1_003_109_003, "order.body.del.no.target");
public static final ErrorCode ORDER_DATA_ERROR = new ErrorCode(1_003_109_004, "订单/排单的数据已无法使用,请删除重新");
public static final ErrorCode ORDER_PLAN_ID_NOT_NULL = new ErrorCode(1_003_109_005, "订单或排单ID至少传入一个");
public static final ErrorCode ORDER_PLAN_ID_IS_ONE = new ErrorCode(1_003_109_006, "订单id与排单id与大板分类ID只能传一个");
public static final ErrorCode PARENT_ORDER_NOT_EXISTS = new ErrorCode(1_003_109_007, "上级订单{}不存在");
public static final ErrorCode PARENT_ORDER_NOT_EXISTS = new ErrorCode(1_003_109_007, "parent.order.not.exists");
// ========== 订单 1_003_110_000 ==========
public static final ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_003_110_000, "模块不存在");
// ========== 订单板件 1_003_113_000 ==========
public static final ErrorCode PLATE_NOT_EXISTS = new ErrorCode(1_003_113_000, "order.plate.not.exists");
// ========== 订单 1_003_113_000 ==========
public static final ErrorCode PLATE_NOT_EXISTS = new ErrorCode(1_003_113_000, "板材不存在");
// ========== 订单 1_003_115_000 ==========
public static final ErrorCode ORDER_PARTS_NOT_EXISTS = new ErrorCode(1_003_115_000, "订单配件不存在");
// ========== 订单配件 1_003_115_000 ==========
public static final ErrorCode ORDER_PARTS_NOT_EXISTS = new ErrorCode(1_003_115_000, "order.parts.not.exists");
// ========== 订单 1_003_116_000 ==========
public static final ErrorCode PHONE_NOT_LAWFUL = new ErrorCode(1_003_116_000, "手机号不合法");
public static final ErrorCode CUSTOM_ORDER_EXISTS = new ErrorCode(1_003_117_000, "自定义订单号存在");
public static final ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_003_119_001, "工序组不存在");
public static final ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_003_119_002, "该订单工序组已经存在");
public static final ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_003_029_003, "工序组不存在");
public static final ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_003_029_004, "当前柜体不存在");
public static final ErrorCode CUSTOM_ORDER_EXISTS = new ErrorCode(1_003_117_000, "order.check.customno.exists");
public static final ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_003_029_004, "order.body.not.exists");
public static final ErrorCode RAW_GOODS_NOT_USED_IN_ORDER = new ErrorCode(1_003_029_005, "订单中未用到此板材");
public static final ErrorCode ORDER_NOT_FOUND = new ErrorCode(1_003_029_006, "订单不存在");
public static final ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_003_029_007, "token获取失败");
@@ -64,25 +56,24 @@ public class ErrorCodeConstants {
public static final ErrorCode GOODS_DATA_ERROR = new ErrorCode(1_003_029_010, "存在小板情况下,缺少板材数据,请确认数据源是否完整");
public static final ErrorCode PLATE_DATA_ERROR = new ErrorCode(1_003_029_011, "小板获取为空");
public static final ErrorCode PLATE_PRODUCE_DATA_ERROR = new ErrorCode(1_003_029_012, "小板生产数据获取为空");
public static final ErrorCode ORDER_STATUS_CONFLICT = new ErrorCode(1_003_029_013, "订单状态冲突,禁止投入生产");
public static final ErrorCode ORDER_READ_ERR = new ErrorCode(1_003_029_014, "订单列表获取失败,请刷新重试");
public static final ErrorCode ORDER_DATE_ERR = new ErrorCode(1_003_029_015, "获取订单列表,时间超出范围,请在30天范围内选择");
public static final ErrorCode ORDER_TIME_ERR = new ErrorCode(1_003_029_016, "获取订单列表,时间格式输入出错,请更换格式");
public static final ErrorCode FILE_TYPE_ERR = new ErrorCode(1_003_029_017, "当前文件类型尚未开发,敬请期待");
public static final ErrorCode ORDER_DETAIL_DATE_ERR = new ErrorCode(1_003_029_018, "板件生产数据缺失,请确认数据源中是否存在相关数据");
public static final ErrorCode ORDER_SUBTYPE_NOT_SUPPORT = new ErrorCode(1_003_029_019, "不支持的子单类型,请重新选择");
public static final ErrorCode ORDER_SUBTYPE_NOT_SUPPORT = new ErrorCode(1_003_029_019, "order.sub.type.not.support");
public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_003_029_019, "源数据查询失败");
public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_003_029_020, "订单删除失败");
public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_003_029_021, "订单还原失败");
public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_003_029_019, "order.source.query.error");
public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_003_029_020, "order.del.error");
public static final ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_003_029_021, "order.restore.error");
public static final ErrorCode API_MES_ERR = new ErrorCode(1_003_029_022, "MES接口数据出错:{}");
public static final ErrorCode CHANGE_DETAILS_ITEM_ERROR = new ErrorCode(1_003_029_023, "明细转换失败");
// ========== 自定义板编号生成 1_003_030_ ==========
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORDERNO_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_001, "自定义版编号订单序号规则中存在不支持的复位类型:{}");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_BODY_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_002, "自定义版编号柜体序号规则中存在不支持的复位类型:{}");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_PLATE_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_003, "自定义版编号板件序号规则中存在不支持的复位类型:{}");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORG_CUSTOM_PLATENO_SEQ_MODIFY_ERROR = new ErrorCode(1_003_030_004, "保存组织下自定义板编号序号配置失败,请联系客服处理");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORDERNO_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_001, "order.custom.plateno.generate.orderno.rule.not.support.resetmode");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_BODY_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_002, "order.custom.plateno.generate.body.rule.not.support.resetmode");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_PLATE_RULE_NOT_SUPPORT_RESETMODE = new ErrorCode(1_003_030_003, "order.custom.plateno.generate.plate.rule.not.support.resetmode");
public static final ErrorCode CUSTOM_PLATENO_GENERATE_ORG_CUSTOM_PLATENO_SEQ_MODIFY_ERROR = new ErrorCode(1_003_030_004, "order.custom.plateno.generate.org.custom.plateno.seq.modify.error");
// ========== 订单导入 1_003_031 ==========
public static final ErrorCode ORDER_IMPORT_TYPE_NOT_SUPPORT = new ErrorCode(1_003_031_001, "不支持的订单导入类型:{}");
@@ -122,58 +113,50 @@ public class ErrorCodeConstants {
//=========== 包裹信息 1-003-006-000 ============
public static final ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_003_006_000, "当前包裹类型错误");
public static final ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_003_006_001, "已经是{}一条了");
public static final ErrorCode ORDER_ALREADY_PACKAGED = new ErrorCode(1_003_006_002, "order.already.packaged");
//=========== 生产信息 1-003-007-000 ============
public static final ErrorCode ORDER_DATE_ERROR = new ErrorCode(1_003_007_000, "订单信息不存在,请重新进入或切换订单");
public static final ErrorCode ORDER_PLATE_ERROR = new ErrorCode(1_003_007_001, "订单对应的板材数据为空,请检查是否为空单或重新导入订单");
public static final ErrorCode ORDER_PLAN_DATE_ERROR = new ErrorCode(1_003_007_002, "排单信息不存在,请重新进入或切换排单");
public static final ErrorCode ORDER_PLATE_EMPTY = new ErrorCode(1_003_007_001, "order.plate.empty");
public static final ErrorCode ORDER_PLAN_DATA_ERROR = new ErrorCode(1_003_007_002, "order.plan.data.error");
public static final ErrorCode ORDER_PLAN_OPTIMIZE_ERROR = new ErrorCode(1_003_007_003, "当前排单对应的优化数据为空,请重新进行优化");
public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_003_007_004, "订单对应的板材造型数据为空,请重新导入订单");
public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_003_007_005, "当前排单对应的板材数据有异常,请查看板材信息");
public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_003_007_006, "当前排单对应的订单数据为空,请删掉排单并重新创建排单");
public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_003_007_005, "order.plan.plate.error");
public static final ErrorCode ORDER_PLAN_ORDERS_EMPTY = new ErrorCode(1_003_007_006, "order.plan.orders.empty");
public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_003_007_007, "当前排单对应的板材造型数据为空,请重新导入订单并排单");
public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_003_007_008, "当前大板数据异常,请重新导入该订单");
public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_003_007_009, "当前包裹数据为空,请重新查看包裹数据");
public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_003_007_008, "order.goods.data.error");
public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_003_007_009, "order.pack.data.null.error");
public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR = new ErrorCode(1_003_007_010, "当前排单还未保存优化结果,无法对开料结果进行修改");
public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_003_007_011, "订单信息为空,请检查订单信息");
public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_003_007_012, "当前订单信息有误,请重新选择包裹");
public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_003_007_013, "当前包裹信息有误,请重新选择包裹");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_003_007_014, "当前筛选的配置有误,请重新进行配置");
public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_003_007_014, "advanced.screening.config.error");
public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_003_007_015, "当前排单未保存大板和小板信息,请重新进行排单");
public static final ErrorCode PLAN_PLATE_IS_CUTTED = new ErrorCode(1_003_007_016, "当前删除的小板中已有小板开料,无法删除!");
public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_003_007_017, "当前组织没有默认的加工方案组,请在系统配置中进行配置");
public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_003_007_017, "process.config.default.data.error");
public static final ErrorCode THIS_PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_003_007_018, "当前选择的加工方案组配置有误,请选择其他方案组或重新配置该方案组");
public static final ErrorCode CREAT_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_019, "当前选择部分小板已排单,请重新查询未排单信息后再次创建排单");
public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_020, "当前排单没有选择板材数据,请进行选择");
public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_021, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单");
public static final ErrorCode CREAT_PLAN_PLATE_PART_PLANNED = new ErrorCode(1_003_007_019, "create.plan.plate.part.planned");
public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_020, "create.plan.plate.empty");
public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_021, "del.plan.plate.data.error");
public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_003_007_022, "当前排单对应的优化数据异常,请重新进行优化");
public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_003_007_023, "当前选择的订单数据为空,请检查订单信息或者重新导入订单");
public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_003_007_024, "当前排单对应的板材数据为空,请重新进行排单或检查订单对应的板材信息");
public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_003_007_025, "排单:{} 对应的方案组为空,请进行配置");
public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_003_007_026, "当前所选排单对应的方案组配置均为空,请重新进行方案组配置");
public static final ErrorCode THIS_PLAN_PROCESS_SCHEME_IS_LOCK = new ErrorCode(1_003_007_027, "当前排单已被锁定,无法修改方案组,请解锁后再进行修改");
public static final ErrorCode THIS_PLAN_OPTIMIZE_DATA_ERROR = new ErrorCode(1_003_007_028, "当前排单已全部开料,无法进行再次优化");
public static final ErrorCode THIS_PLAN_PLATE_IS_CUT = new ErrorCode(1_003_007_029, "当前排单已有板材开料,无法修改");
public static final ErrorCode THIS_ORDER_NOT_PLATE_DATA = new ErrorCode(1_003_007_030, "当前订单无板材数据,无法进行用板量计算");
public static final ErrorCode THIS_PLAN_SCHEME_DATA_ERROR = new ErrorCode(1_003_007_031, "当前方案组的优化信息有误,请重新选择方案组或重新导入排单再进行优化");
public static final ErrorCode PLAN_SORT_DATA_ERROR = new ErrorCode(1_003_007_032, "已无可进行排序的数据,无法进行排序");
public static final ErrorCode THIS_PLATE_IS_OPTIMIZE = new ErrorCode(1_003_007_033, "小板:{},已开料,无法删除,请重新选择小板再删除");
public static final ErrorCode PART_PACK_DATA_ERROR = new ErrorCode(1_003_007_034, "当前包裹数据为空,无法进行操作,请删除包裹");
public static final ErrorCode ORDER_PLAN_DATA_ERROR = new ErrorCode(1_003_007_035, "订单/排单数据有误,请查看对应的数据");
public static final ErrorCode ORDER_PLAN_CREATE_PLATE_NUM_REACH_THRESHOLD_ERROR = new ErrorCode(1_003_007_036, "达到排单板件上限{}片,请减少选择板件数量后创建排单");
public static final ErrorCode ORDER_PLAN_PLATE_DATA_EMPTY = new ErrorCode(1_003_007_024, "order.plan.plate.data.empty");
public static final ErrorCode PLAN_PROCESS_CONFIG_IS_NULL = new ErrorCode(1_003_007_025, "plan.process.config.is.null");
public static final ErrorCode PLAN_PROCESS_CONFIG_ALL_IS_NULL = new ErrorCode(1_003_007_026, "plan.process.config.all.is.null");
public static final ErrorCode PLAN_PROCESS_SCHEME_IS_LOCK = new ErrorCode(1_003_007_027, "plan.process.scheme.is.lock");
public static final ErrorCode PLAN_OPTIMIZE_DATA_ALL_OPENED = new ErrorCode(1_003_007_028, "plan.optimize.data.all.opened");
public static final ErrorCode PLAN_PLATE_IS_CUT = new ErrorCode(1_003_007_029, "plan.plate.is.cut");
public static final ErrorCode PLAN_SCHEME_DATA_ERROR = new ErrorCode(1_003_007_031, "plan.scheme.data.error");
public static final ErrorCode PLAN_SORT_DATA_ERROR = new ErrorCode(1_003_007_032, "plan.sort.data.error");
public static final ErrorCode PLATE_IS_OPTIMIZE = new ErrorCode(1_003_007_033, "plate.is.optimize");
public static final ErrorCode PACK_DATA_NULL = new ErrorCode(1_003_007_034, "pack.data.null");
public static final ErrorCode ORDER_PLAN_CREATE_PLATE_NUM_REACH_THRESHOLD_ERROR = new ErrorCode(1_003_007_036, "order.plan.create.plate.num.reach.threshold.error");
//=========== 板材信息 1-003-008-000 ============
public static final ErrorCode PLATE_EXISTS = new ErrorCode(1_003_008_000, "商品编号已存在");
public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_003_008_001, "板材不存在");
public static final ErrorCode PLATE_EXISTS = new ErrorCode(1_003_008_000, "plate.exists");
public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_003_008_001, "remain.plate.not.exists");
public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_003_008_002, "设计板材不存在");
public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_003_008_003, "生产板材导入数据不可以为空");
public static final ErrorCode PLATE_ID_NULL_ERROR = new ErrorCode(1_003_008_004, "板材标识代号禁止空");
public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_003_008_005, "板材商品编号存在,请重新命名商品编号");
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_003_008_006, "小板:{} 为源小板,无法删除");
public static final ErrorCode PLATE_ATTR_GROUP_EXISTS = new ErrorCode(1_003_008_007, "当前名称、材质、颜色、厚度、品牌的组合已存在,请检查后提交");
public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_003_008_005, "plate.goods.id.not.same");
public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_003_008_006, "plate.is.source");
public static final ErrorCode PLATE_ATTR_GROUP_EXISTS = new ErrorCode(1_003_008_007, "plate.attr.group.exists");
//=========== 贴皮管理 1-003-009-000 ============
public static final ErrorCode VENEER_NOT_EXIST = new ErrorCode(1_003_009_000, "veneer.not.exist");
@@ -1,31 +0,0 @@
package com.cf.imes.module.executor.api.orderProcess;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.module.executor.service.process.OrderProcessService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import jakarta.annotation.Resource;
import java.util.List;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class OrderProcessApiImpl implements OrderProcessApi{
@Resource
private OrderProcessService orderProcessService;
@Override
public CommonResult<Boolean> getOrderProcessByProcessGroupId(Long id) {
List<OrderProcessDO> plateDOS = orderProcessService.getOrderProcessByProcessGroupId(id);
if (plateDOS.size() == 0) {
return success(false);
}
return success(true);
}
}
@@ -75,7 +75,7 @@ public class PlateManageController {
@PreAuthorize("@ss.hasAnyPermissions('manage:plate:delete','base:plate:delete')")
public CommonResult<Boolean> deletePlate(@RequestParam("id") Long id,
@RequestParam(value = "organId",required = false, defaultValue = "0") Long organId) {
plateService.deletePlate(id,organId);
plateService.deletePlate(id, organId);
return success(true);
}
@@ -1,95 +0,0 @@
package com.cf.imes.module.executor.controller.admin.module;
import org.springframework.web.bind.annotation.*;
import jakarta.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 jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.controller.admin.module.vo.*;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
import com.cf.imes.module.executor.service.module.ModuleService;
@Tag(name = "管理后台 - 订单模块")
@RestController
@RequestMapping("/executor/module")
@Validated
public class ModuleController {
@Resource
private ModuleService moduleService;
@PostMapping("/create")
@Operation(summary = "创建订单模块")
@PreAuthorize("@ss.hasPermission('executor:module:create')")
public CommonResult<Long> createModule(@Valid @RequestBody ModuleSaveReqVO createReqVO) {
return success(moduleService.createModule(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新订单模块")
@PreAuthorize("@ss.hasPermission('executor:module:update')")
public CommonResult<Boolean> updateModule(@Valid @RequestBody ModuleSaveReqVO updateReqVO) {
moduleService.updateModule(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除订单模块")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:module:delete')")
public CommonResult<Boolean> deleteModule(@RequestParam("id") Long id) {
moduleService.deleteModule(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得订单模块")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:module:query')")
public CommonResult<ModuleRespVO> getModule(@RequestParam("id") Long id) {
ModuleDO module = moduleService.getModule(id);
return success(BeanUtils.toBean(module, ModuleRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得订单模块分页")
@PreAuthorize("@ss.hasPermission('executor:module:query')")
public CommonResult<PageResult<ModuleRespVO>> getModulePage(@Valid ModulePageReqVO pageReqVO) {
PageResult<ModuleDO> pageResult = moduleService.getModulePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ModuleRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出订单模块 Excel")
@PreAuthorize("@ss.hasPermission('executor:module:export')")
@OperateLog(type = EXPORT)
public void exportModuleExcel(@Valid ModulePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModuleDO> list = moduleService.getModulePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "订单模块.xls", "数据", ModuleRespVO.class,
BeanUtils.toBean(list, ModuleRespVO.class));
}
}
@@ -1,67 +0,0 @@
package com.cf.imes.module.executor.controller.admin.module.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.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 ModulePageReqVO extends PageParam {
@Schema(description = "订单号")
private Long orderId;
@Schema(description = "模块名称", example = "张三")
private String name;
@Schema(description = "父节点 ID,模块间根据module_type构成树形结构", example = "11108")
private Long parentId;
@Schema(description = "模块组 ID", example = "19999")
private Long groupId;
@Schema(description = "报价项目 ID", example = "26198")
private Integer offerId;
@Schema(description = "模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名", example = "1")
private Integer type;
@Schema(description = "模块宽度")
private Double width;
@Schema(description = "模块高度")
private Double height;
@Schema(description = "模块深度")
private Double depth;
@Schema(description = "模块复制数量")
private Short multiNum;
@Schema(description = "源模块 ID,模块是复制的,则为源模块ID,否则为0", example = "19669")
private Long sourceId;
@Schema(description = "板材数量")
private Short plateNum;
@Schema(description = "异型数量")
private Short unregularNum;
@Schema(description = "文件名", example = "赵六")
private String filename;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -1,84 +0,0 @@
package com.cf.imes.module.executor.controller.admin.module.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 ModuleRespVO {
@Schema(description = "模块 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17730")
@ExcelProperty("模块 ID")
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单号")
private Long orderNo;
@Schema(description = "模块名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("模块名称")
private String name;
@Schema(description = "父节点 ID,模块间根据module_type构成树形结构", requiredMode = Schema.RequiredMode.REQUIRED, example = "11108")
@ExcelProperty("父节点 ID,模块间根据module_type构成树形结构")
private Long parentId;
@Schema(description = "模块组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19999")
@ExcelProperty("模块组 ID")
private Long groupId;
@Schema(description = "报价项目 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26198")
@ExcelProperty("报价项目 ID")
private Integer offerId;
@Schema(description = "模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名")
private Integer type;
@Schema(description = "模块宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块宽度")
private Double width;
@Schema(description = "模块高度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块高度")
private Double height;
@Schema(description = "模块深度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块深度")
private Double depth;
@Schema(description = "模块复制数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块复制数量")
private Short multiNum;
@Schema(description = "源模块 ID,模块是复制的,则为源模块ID,否则为0", requiredMode = Schema.RequiredMode.REQUIRED, example = "19669")
@ExcelProperty("源模块 ID,模块是复制的,则为源模块ID,否则为0")
private Long sourceId;
@Schema(description = "板材数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("板材数量")
private Short plateNum;
@Schema(description = "异型数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("异型数量")
private Short unregularNum;
@Schema(description = "文件名", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("文件名")
private String filename;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
@@ -1,75 +0,0 @@
package com.cf.imes.module.executor.controller.admin.module.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
@Schema(description = "管理后台 - 订单模块新增/修改 Request VO")
@Data
public class ModuleSaveReqVO {
@Schema(description = "模块 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17730")
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单号不能为空")
private Long orderNo;
@Schema(description = "模块名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "模块名称不能为空")
private String name;
@Schema(description = "父节点 ID,模块间根据module_type构成树形结构", requiredMode = Schema.RequiredMode.REQUIRED, example = "11108")
@NotNull(message = "父节点 ID,模块间根据module_type构成树形结构不能为空")
private Long parentId;
@Schema(description = "模块组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19999")
@NotNull(message = "模块组 ID不能为空")
private Long groupId;
@Schema(description = "报价项目 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26198")
@NotNull(message = "报价项目 ID不能为空")
private Integer offerId;
@Schema(description = "模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名不能为空")
private Integer type;
@Schema(description = "模块宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "模块宽度不能为空")
private Double width;
@Schema(description = "模块高度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "模块高度不能为空")
private Double height;
@Schema(description = "模块深度", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "模块深度不能为空")
private Double depth;
@Schema(description = "模块复制数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "模块复制数量不能为空")
private Short multiNum;
@Schema(description = "源模块 ID,模块是复制的,则为源模块ID,否则为0", requiredMode = Schema.RequiredMode.REQUIRED, example = "19669")
@NotNull(message = "源模块 ID,模块是复制的,则为源模块ID,否则为0不能为空")
private Long sourceId;
@Schema(description = "板材数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "板材数量不能为空")
private Short plateNum;
@Schema(description = "异型数量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "异型数量不能为空")
private Short unregularNum;
@Schema(description = "文件名", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "文件名不能为空")
private String filename;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
@NotEmpty(message = "备注不能为空")
private String remark;
}
@@ -1,63 +0,0 @@
package com.cf.imes.module.executor.controller.admin.process;
import org.springframework.web.bind.annotation.*;
import jakarta.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 jakarta.validation.*;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.module.executor.controller.admin.process.vo.*;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.module.executor.service.process.OrderProcessService;
@Tag(name = "管理后台 - 订单工序")
@RestController
@RequestMapping("/executor/order-process")
@Validated
public class OrderProcessController {
@Resource
private OrderProcessService orderProcessService;
@PostMapping("/create")
@Operation(summary = "创建订单工序组")
@PreAuthorize("@ss.hasPermission('production:manager-list:putInto')")
public CommonResult<Long> createOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO createReqVO) {
return success(orderProcessService.createOrderProcess(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新订单工序组")
@PreAuthorize("@ss.hasPermission('executor:order-process:update')")
public CommonResult<Boolean> updateOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO updateReqVO) {
orderProcessService.updateOrderProcess(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除订单工序组")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:order-process:delete')")
public CommonResult<Boolean> deleteOrderProcess(@RequestParam("id") Long id) {
orderProcessService.deleteOrderProcess(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得订单工序组")
@Parameter(name = "orderId", description = "订单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:order-process:query')")
public CommonResult<OrderProcessRespVO> getOrderProcess(@RequestParam("orderId") Long orderId) {
OrderProcessDO orderProcess = orderProcessService.getOrderProcess(orderId);
return success(BeanUtils.toBean(orderProcess, OrderProcessRespVO.class));
}
}
@@ -1,40 +0,0 @@
package com.cf.imes.module.executor.controller.admin.process.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.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 OrderProcessPageReqVO extends PageParam {
@Schema(description = "订单号")
private Long orderId;
@Schema(description = "工序名", example = "张三")
private String name;
@Schema(description = "工序组 ID", example = "4356")
private Long groupId;
@Schema(description = "工序状态,0未加工,1已加工", example = "2")
private Boolean status;
@Schema(description = "板材大小")
private Double size;
@Schema(description = "下一工序 ID", example = "24046")
private Long nextStepId;
@Schema(description = "创建日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -1,48 +0,0 @@
package com.cf.imes.module.executor.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 OrderProcessRespVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31600")
@ExcelProperty("工序 ID")
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单号")
private Long orderId;
@Schema(description = "工序名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("工序名")
private String name;
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4356")
@ExcelProperty("工序组 ID")
private Long groupId;
@Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("工序状态,0未加工,1已加工")
private Boolean status;
@Schema(description = "板材大小", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("板材大小")
private Double size;
@Schema(description = "下一工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24046")
@ExcelProperty("下一工序 ID")
private Long nextStepId;
@Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建日期")
private LocalDateTime createTime;
}
@@ -1,36 +0,0 @@
package com.cf.imes.module.executor.controller.admin.process.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
@Schema(description = "管理后台 - 订单工序新增/修改 Request VO")
@Data
public class OrderProcessSaveReqVO {
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单号不能为空")
private Long orderId;
@Schema(description = "工序名", example = "张三")
private String name;
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4356")
@NotNull(message = "工序组 ID不能为空")
private Long groupId;
@Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "工序状态,0未加工,1已加工不能为空")
private Boolean status;
@Schema(description = "板材大小", example = "0")
private Double size;
@Schema(description = "下一工序 ID", example = "24046")
private Long nextStepId;
private Long organId;
}
@@ -1,82 +0,0 @@
package com.cf.imes.module.executor.controller.admin.processStep;
import org.springframework.web.bind.annotation.*;
import jakarta.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 jakarta.validation.constraints.*;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.controller.admin.processStep.vo.*;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.module.executor.service.processStep.ProcessStepService;
@Tag(name = "管理后台 - 订单工序步骤")
@RestController
@RequestMapping("/executor/process-step")
@Validated
public class ProcessStepController {
@Resource
private ProcessStepService processStepService;
@PostMapping("/create")
@Operation(summary = "创建订单工序步骤")
@PreAuthorize("@ss.hasPermission('executor:process-step:create')")
public CommonResult<Long> createProcessStep(@Valid @RequestBody ProcessStepSaveReqVO createReqVO) {
return success(processStepService.createProcessStep(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新订单工序步骤")
@PreAuthorize("@ss.hasPermission('executor:process-step:update')")
public CommonResult<Boolean> updateProcessStep(@Valid @RequestBody ProcessStepSaveReqVO updateReqVO) {
processStepService.updateProcessStep(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除订单工序步骤")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:process-step:delete')")
public CommonResult<Boolean> deleteProcessStep(@RequestParam("id") Long id) {
processStepService.deleteProcessStep(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得订单工序步骤")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:process-step:query')")
public CommonResult<ProcessStepRespVO> getProcessStep(@RequestParam("id") Long id) {
ProcessStepDO processStep = processStepService.getProcessStep(id);
return success(BeanUtils.toBean(processStep, ProcessStepRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得订单工序步骤分页")
@PreAuthorize("@ss.hasPermission('executor:process-step:query')")
public CommonResult<PageResult<ProcessStepRespVO>> getProcessStepPage(@Valid ProcessStepPageReqVO pageReqVO) {
PageResult<ProcessStepDO> pageResult = processStepService.getProcessStepPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessStepRespVO.class));
}
}
@@ -1,67 +0,0 @@
package com.cf.imes.module.executor.controller.admin.processStep.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.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 ProcessStepPageReqVO extends PageParam {
@Schema(description = "订单号")
private Long orderId;
@Schema(description = "完成时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] finishTime;
@Schema(description = "工序状态,0未加工,1已加工", example = "1")
private Boolean status;
@Schema(description = "加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材", example = "1")
private Integer type;
@Schema(description = "计件工资")
private Double pieceRate;
@Schema(description = "计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比", example = "1")
private Integer pieceType;
@Schema(description = "排序优先级")
private Integer sort;
@Schema(description = "工序名称", example = "李四")
private String name;
@Schema(description = "工序 ID", example = "20663")
private Long processinfoId;
@Schema(description = "订单工序 ID", example = "9384")
private Long orderProcessId;
@Schema(description = "计划日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] scheduleDate;
@Schema(description = "工序处理时长")
private Double duration;
@Schema(description = "工序负责人")
private String manager;
@Schema(description = "工序处理日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] processDate;
@Schema(description = "创建日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -1,80 +0,0 @@
package com.cf.imes.module.executor.controller.admin.processStep.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 ProcessStepRespVO {
@Schema(description = "步骤 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16284")
@ExcelProperty("步骤 ID")
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("订单号")
private Long orderId;
@Schema(description = "完成时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("完成时间")
private LocalDateTime finishTime;
@Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("工序状态,0未加工,1已加工")
private Boolean status;
@Schema(description = "加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材")
private Integer type;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计件工资")
private Double pieceRate;
@Schema(description = "计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比")
private Integer pieceType;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排序优先级")
private Integer sort;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@ExcelProperty("工序名称")
private String name;
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20663")
@ExcelProperty("工序 ID")
private Long processinfoId;
@Schema(description = "订单工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9384")
@ExcelProperty("订单工序 ID")
private Long orderProcessId;
@Schema(description = "计划日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计划日期")
private LocalDateTime scheduleDate;
@Schema(description = "工序处理时长", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工序处理时长")
private Double duration;
@Schema(description = "工序负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工序负责人")
private String manager;
@Schema(description = "工序处理日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工序处理日期")
private LocalDateTime processDate;
@Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建日期")
private LocalDateTime createTime;
}
@@ -1,73 +0,0 @@
package com.cf.imes.module.executor.controller.admin.processStep.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 订单工序步骤新增/修改 Request VO")
@Data
public class ProcessStepSaveReqVO {
@Schema(description = "步骤 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16284")
private Long id;
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单号不能为空")
private Long orderId;
@Schema(description = "完成时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "完成时间不能为空")
private LocalDateTime finishTime;
@Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "工序状态,0未加工,1已加工不能为空")
private Boolean status;
@Schema(description = "加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材不能为空")
private Integer type;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "计件工资不能为空")
private Double pieceRate;
@Schema(description = "计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比不能为空")
private Integer pieceType;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排序优先级不能为空")
private Integer sort;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
@NotEmpty(message = "工序名称不能为空")
private String name;
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20663")
@NotNull(message = "工序 ID不能为空")
private Long processinfoId;
@Schema(description = "订单工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9384")
@NotNull(message = "订单工序 ID不能为空")
private Long orderProcessId;
@Schema(description = "计划日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "计划日期不能为空")
private LocalDateTime scheduleDate;
@Schema(description = "工序处理时长", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "工序处理时长不能为空")
private Double duration;
@Schema(description = "工序负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "工序负责人不能为空")
private String manager;
@Schema(description = "工序处理日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "工序处理日期不能为空")
private LocalDateTime processDate;
}
@@ -1,95 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.module;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 订单模块 DO
*
* @author 晨丰科技
*/
@TableName("order_module")
@KeySequence("order_module_n_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModuleDO extends BaseDO {
/**
* 模块 ID
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 订单号
*/
private Long orderId;
/**
* 模块名称
*/
private String name;
/**
* 父节点 ID,模块间根据module_type构成树形结构
*/
private Long parentId;
/**
* 模块组 ID
*/
private Long groupId;
/**
* 报价项目 ID
*/
private Integer offerId;
/**
* 模块类型,1 房间 2 柜体 3 加工组类型 4 加工组名
*/
private Integer type;
/**
* 模块宽度
*/
private Double width;
/**
* 模块高度
*/
private Double height;
/**
* 模块深度
*/
private Double depth;
/**
* 模块复制数量
*/
private Short multiNum;
/**
* 源模块 ID,模块是复制的,则为源模块ID,否则为0
*/
private Long sourceId;
/**
* 板材数量
*/
private Short plateNum;
/**
* 异型数量
*/
private Short unregularNum;
/**
* 文件名
*/
private String filename;
/**
* 备注
*/
private String remark;
}
@@ -87,7 +87,7 @@ public class PlateGoodDO extends BaseDO {
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private Long organId;
}
@@ -1,65 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.process;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 订单工序 DO
*
* @author 晨丰科技
*/
@TableName("order_process")
@KeySequence("order_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderProcessDO extends BaseDO {
/**
* 工序 ID
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 订单号
*/
private Long orderId;
/**
* 工序名
*/
private String name;
/**
* 工序组 ID
*/
private Long groupId;
/**
* 工序状态,0未加工,1已加工
*/
private Boolean status;
/**
* 板材大小
*/
private BigDecimal size;
/**
* 下一工序 ID
*/
private Long nextStepId;
/**
* 是否删除
*/
private Boolean deleted;
}
@@ -1,98 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.processStep;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
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.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 订单工序步骤 DO
*
* @author 晨丰科技
*/
@TableName("order_process_step")
@KeySequence("order_process_step_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessStepDO extends BaseDO {
/**
* 步骤 ID
*/
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 订单号
*/
private Long orderId;
/**
* 完成时间
*/
private LocalDateTime finishTime;
/**
* 工序状态,0未加工,1已加工
*/
private Boolean status;
/**
* 加工类型,0全部加工,1开料,2部件加工,3异形封边,4分堆,5打包,6出库,7组件加工,8板材
*/
private Integer type;
/**
* 计件工资
*/
private Double pieceRate;
/**
* 计件工资类型,1数量,2长度,3平方,4宽,5高,6体积,7订单金额百分比
*/
private Integer pieceType;
/**
* 排序优先级
*/
private Integer sort;
/**
* 工序名称
*/
private String name;
/**
* 工序 ID
*/
private Long processinfoId;
/**
* 订单工序 ID
*/
private Long orderProcessId;
/**
* 计划日期
*/
private LocalDateTime scheduleDate;
/**
* 工序处理时长
*/
private Double duration;
/**
* 工序负责人
*/
private String manager;
/**
* 工序处理日期
*/
private LocalDateTime processDate;
/**
* 是否删除
*/
private Boolean deleted;
}
@@ -1,53 +0,0 @@
package com.cf.imes.module.executor.dal.dataobject.processStepItem;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.*;
@TableName(value = "order_process_step_item", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderProcessStepItemDO {
@TableId
private Long id;
// 组织 ID
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
// 工序项目名
private String name;
// 订单工序 id
private Long orderProcessId;
// 工序状态
private Boolean status;
// 工序步骤 id
private Long processStepId;
// 工序组名
private String groupName;
// 柜体 ID
private Long bodyId;
// 加工组 ID
private Long groupId;
private Long dataId;
}
@@ -1,44 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.module;
import java.util.*;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
import org.apache.ibatis.annotations.Mapper;
import com.cf.imes.module.executor.controller.admin.module.vo.*;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
/**
* 订单模块 Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface ModuleMapper extends BaseMapperX<ModuleDO> {
default PageResult<ModuleDO> selectPage(ModulePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ModuleDO>()
.eq(ModuleDO::getOrganId,getUserOrganId())
.eqIfPresent(ModuleDO::getOrderId, reqVO.getOrderId())
.likeIfPresent(ModuleDO::getName, reqVO.getName())
.eqIfPresent(ModuleDO::getParentId, reqVO.getParentId())
.eqIfPresent(ModuleDO::getGroupId, reqVO.getGroupId())
.eqIfPresent(ModuleDO::getOfferId, reqVO.getOfferId())
.eqIfPresent(ModuleDO::getType, reqVO.getType())
.eqIfPresent(ModuleDO::getWidth, reqVO.getWidth())
.eqIfPresent(ModuleDO::getHeight, reqVO.getHeight())
.eqIfPresent(ModuleDO::getDepth, reqVO.getDepth())
.eqIfPresent(ModuleDO::getMultiNum, reqVO.getMultiNum())
.eqIfPresent(ModuleDO::getSourceId, reqVO.getSourceId())
.eqIfPresent(ModuleDO::getPlateNum, reqVO.getPlateNum())
.eqIfPresent(ModuleDO::getUnregularNum, reqVO.getUnregularNum())
.likeIfPresent(ModuleDO::getFilename, reqVO.getFilename())
.eqIfPresent(ModuleDO::getRemark, reqVO.getRemark())
.betweenIfPresent(ModuleDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ModuleDO::getId));
}
}
@@ -162,43 +162,6 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
void deleteOtherParts(@Param("partsId") Long partsId,@Param("orderId") Long orderId,@Param("organId") Long organId);
/**
* 更新板件item的包裹id
*
* @param plateNos
* @param packageNo
* @param orderIds
*/
void updatePlatesItemPackageId(@Param("plateNos") List<Long> plateNos, @Param("packageNo") String packageNo, @Param("orderIds") List<Long> orderIds);
/**
* 更新配件item的包裹id
*
* @param addPartsList
* @param packageNo
* @param orderIds
*/
void updatePartsItemPackageId(@Param("addPartsList") List<Long> addPartsList, @Param("packageNo") String packageNo, @Param("orderIds") List<Long> orderIds);
/**
* 更新板件item解包package_id = 0
*
* @param plateNos
* @param packageNo
* @param orderIds
*/
void updatePlatesItemUnPackageId(@Param("plateNos") List<Long> plateNos, @Param("packageNo") String packageNo, @Param("orderIds") List<Long> orderIds);
/**
* 更新配件item解包package_id = 0
*
* @param deletePartsList
* @param packageNo
* @param orderIds
*/
void updatePartsItemUnPackageId(@Param("deletePartsList") List<Long> deletePartsList, @Param("packageNo") String packageNo, @Param("orderIds") List<Long> orderIds);
/**
* 更新板件item的分堆状态
*
@@ -1,6 +1,5 @@
package com.cf.imes.module.executor.dal.mysql.plate;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
@@ -21,7 +20,6 @@ import java.util.List;
* @author 晨丰科技
*/
@Mapper
@DS("imes_prod")
public interface PlateGoodMapper extends BaseMapperX<PlateGoodDO> {
// goodsId匹配
@@ -102,8 +100,8 @@ public interface PlateGoodMapper extends BaseMapperX<PlateGoodDO> {
.in(PlateGoodDO::getGoodsId, goodsId));
}
default PlateGoodDO selectByGoodID(String goodId , Long organId, boolean deleted) {
return selectOne(PlateGoodDO::getGoodsId, goodId, PlateGoodDO::getOrganId, organId, PlateGoodDO::getDeleted, deleted);
default PlateGoodDO selectByGoodID(String goodId, boolean deleted) {
return selectOne(PlateGoodDO::getGoodsId, goodId, PlateGoodDO::getDeleted, deleted);
}
default PageResult<PlateGoodDO> selectPage(PlatePageReqVO reqVO) {
@@ -167,11 +165,10 @@ public interface PlateGoodMapper extends BaseMapperX<PlateGoodDO> {
return selectList(PlateGoodDO::getGoodsId, goodId, PlateGoodDO::getOrganId, organId).size() > 0;
}
default Boolean isByGoodIDAndId(String goodId , Long organId , Long id) {
default Boolean isByGoodIDAndId(String goodId , Long id) {
return selectCount(new LambdaQueryWrapper<PlateGoodDO>()
.ne(PlateGoodDO::getId, id)
.eq(PlateGoodDO::getGoodsId, goodId)
.eq(PlateGoodDO::getOrganId, organId)) > 0;
.eq(PlateGoodDO::getGoodsId, goodId)) > 0;
}
default List<PlateGoodDO> getAllByOrganId(Long organId) {
@@ -1,39 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.process;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
/**
* 订单工序 Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface OrderProcessMapper extends BaseMapperX<OrderProcessDO> {
// 校验是否已经存在该订单对应工序组
default Boolean getOrderProcess(Long orderId,Long organId) {
return selectCount(new LambdaQueryWrapperX<OrderProcessDO>()
.eq(OrderProcessDO::getOrderId, orderId)
.eq(OrderProcessDO::getOrganId, organId)
.eq(OrderProcessDO::getDeleted, 0)) > 0;
}
// 批量修改删除状态
default int updateOrderDeleted(Long id, Integer deleted, Long organId) {
LambdaUpdateWrapper<OrderProcessDO> wrapper = new LambdaUpdateWrapper<OrderProcessDO>()
.set(OrderProcessDO::getDeleted, deleted)
.eq(OrderProcessDO::getOrderId, id)
.eq(OrderProcessDO::getOrganId, organId);
if (deleted == 0)
wrapper.eq(OrderProcessDO::getDeleted, 1);
return update(wrapper);
}
}
@@ -1,92 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.processStep;
import java.math.BigDecimal;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepSalaryIds;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import org.apache.ibatis.annotations.Mapper;
import com.cf.imes.module.executor.controller.admin.processStep.vo.*;
import org.apache.ibatis.annotations.Param;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
/**
* 订单工序步骤 Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface ProcessStepMapper extends BaseMapperX<ProcessStepDO> {
default PageResult<ProcessStepDO> selectPage(ProcessStepPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessStepDO>()
.eqIfPresent(ProcessStepDO::getOrderId, reqVO.getOrderId())
.eq(ProcessStepDO::getOrganId,getUserOrganId())
.betweenIfPresent(ProcessStepDO::getFinishTime, reqVO.getFinishTime())
.eqIfPresent(ProcessStepDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProcessStepDO::getType, reqVO.getType())
.eqIfPresent(ProcessStepDO::getPieceRate, reqVO.getPieceRate())
.eqIfPresent(ProcessStepDO::getPieceType, reqVO.getPieceType())
.eqIfPresent(ProcessStepDO::getSort, reqVO.getSort())
.likeIfPresent(ProcessStepDO::getName, reqVO.getName())
.eqIfPresent(ProcessStepDO::getProcessinfoId, reqVO.getProcessinfoId())
.eqIfPresent(ProcessStepDO::getOrderProcessId, reqVO.getOrderProcessId())
.betweenIfPresent(ProcessStepDO::getScheduleDate, reqVO.getScheduleDate())
.eqIfPresent(ProcessStepDO::getDuration, reqVO.getDuration())
.eqIfPresent(ProcessStepDO::getManager, reqVO.getManager())
.betweenIfPresent(ProcessStepDO::getProcessDate, reqVO.getProcessDate())
.betweenIfPresent(ProcessStepDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ProcessStepDO::getId));
}
// 批量修改删除状态
default int updateOrderDeleted(Long id, Integer deleted, Long organId) {
LambdaUpdateWrapper<ProcessStepDO> wrapper = new LambdaUpdateWrapper<ProcessStepDO>()
.set(ProcessStepDO::getDeleted, deleted)
.eq(ProcessStepDO::getOrderId, id)
.eq(ProcessStepDO::getOrganId, organId);
if (deleted == 0)
wrapper.eq(ProcessStepDO::getDeleted, 1);
return update(wrapper);
}
default List<ProcessStepDO> selectOrderList(List<Long> orderIds,Long organId) {
return selectList(new LambdaQueryWrapperX<ProcessStepDO>()
.eq(ProcessStepDO::getOrganId, organId)
.inIfPresent(ProcessStepDO::getOrderId, orderIds));
}
List<ProcessStepSalaryIds> calculateSalary(@Param("processStepAreaIds") List<ProcessStepAreaIds> processStepAreaIds, @Param("organId") Long organId);
void updateStatus(@Param("processStepSalaryIds") List<ProcessStepSalaryIds> processStepSalaryIds,@Param("nickname") String nickname);
default List<ProcessStepDO> selectOrderStatus(Long orderId, Long organId) {
return selectList(new LambdaQueryWrapperX<ProcessStepDO>()
.eqIfPresent(ProcessStepDO::getOrganId, organId)
.eqIfPresent(ProcessStepDO::getOrderId, orderId)
.eqIfPresent(ProcessStepDO::getStatus,false));
}
default List<ProcessStepDO> selectProcessIds(List<Long> orderIds, Long organId,Integer number) {
return selectList(new LambdaQueryWrapperX<ProcessStepDO>()
.eqIfPresent(ProcessStepDO::getOrganId, organId)
.inIfPresent(ProcessStepDO::getOrderId, orderIds)
.eqIfPresent(ProcessStepDO::getType,number));
}
}
@@ -1,21 +0,0 @@
package com.cf.imes.module.executor.dal.mysql.processStepItem;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessStepAreaIds;
import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ProcessStepItemMapper extends BaseMapperX<OrderProcessStepItemDO> {
List<ProcessStepAreaIds> selectAreaByProcessStepId(@Param("processStepId") List<Long> processStepId, @Param("organId") Long organId);
void updateStatus(@Param("processStepIds") List<Long> processStepIds);
}
@@ -9,8 +9,6 @@ import com.cf.imes.module.system.api.dict.DictDataApi;
import com.cf.imes.module.system.api.machine.MachineApi;
import com.cf.imes.module.system.api.organ.OrganApi;
import com.cf.imes.module.system.api.permission.PermissionApi;
import com.cf.imes.module.system.api.process.ProcessApi;
import com.cf.imes.module.system.api.process.ProcessGroupApi;
import com.cf.imes.module.system.api.setting.SettingApi;
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
import com.cf.imes.module.system.api.user.AdminUserApi;
@@ -22,8 +20,8 @@ import org.springframework.context.annotation.Configuration;
*/
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, DictDataApi.class,
FileApi.class, ProcessGroupApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class,
ProcessApi.class, OrganApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class, PermissionApi.class, SettingApi.class,
FileApi.class, FileApi.class, DataSourceApi.class, ApplicationApi.class,
OrganApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class, PermissionApi.class, SettingApi.class,
AssemblyConfigApi.class})
public class RpcConfiguration {
}
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.manage.pack;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -16,6 +17,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.*;
import com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO;
@@ -62,16 +64,13 @@ import static com.cf.imes.framework.common.util.string.SearchUtil.insertSeparato
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_ALREADY_PACKAGED;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_DATE_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_DATA_NULL_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PACK_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PARTS_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PACK_DATA_NULL;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PARTS_PACK_ITEM_SOURCE_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PARTS_PACK_NUM_NOT_ENOUGH;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PART_PACK_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_NOT_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_PLATE_ERROR;
@Service
@@ -161,28 +160,11 @@ public class PackServiceImpl implements PackService {
PageDTO<OrderPackagDO> page = new PageDTO<>(reqVO.getPageNo(), reqVO.getPageSize());
List<Long> packId = null;
Long orderId = Long.valueOf(reqVO.getOrderId());
String packageNo = reqVO.getPackageNo();
if (CharSequenceUtil.isNotEmpty(packageNo)) {
List<Long> plateId = orderPlateMapper.selectplateByPlateNoList(reqVO.getPlateNo(), orderId, getUserOrganId())
.stream().map(PlateDO::getId).toList();
if (plateId.isEmpty()) {
return null;
}
packId = orderItemMapper.selectPackByPlateId(plateId, orderId, getUserOrganId()).stream().map(OrderItemDO::getPackageId).distinct().toList();
}
IPage<OrderPackagDO> orderPackagDOs = orderPackageMapper.selectPage(page, new LambdaQueryWrapperX<OrderPackagDO>()
.eq(OrderPackagDO::getOrderId, orderId)
.likeIfPresent(OrderPackagDO::getPackageNo, packageNo)
.eqIfPresent(OrderPackagDO::getPackageNo, packId)
.likeIfPresent(OrderPackagDO::getPackageNo, reqVO.getPackageNo())
.eqIfPresent(OrderPackagDO::getStatus, reqVO.getPackStatus())
.orderByDesc(OrderPackagDO::getCreateTime)
);
@@ -236,7 +218,7 @@ public class PackServiceImpl implements PackService {
@Override
@Transactional(rollbackFor = Exception.class)
public OrderPackRespVO updatePack(OrderPackReqVO packageVO) {
Long organId = SecurityFrameworkUtils.getUserOrganId();
String packNo = packageVO.getPackNo();
List<Long> orderIds = packageVO.getOrderIds();
List<Long> addPlateNos = packageVO.getAddPlateNoList();
@@ -257,6 +239,7 @@ public class PackServiceImpl implements PackService {
orderPackageDO.setPackageNo(packageNo);
orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus()));
orderPackageDO.setRemark(packageVO.getRemark());
orderPackageDO.setOrganId(organId);
orderPackageDOS.add(orderPackageDO);
}
orderPackageMapper.insertBatch(orderPackageDOS);
@@ -264,7 +247,21 @@ public class PackServiceImpl implements PackService {
List<List<Long>> split = CollUtil.split(addPlateNos, 1000);
if (CollUtil.isNotEmpty(split)) {
for (List<Long> batch : split) {
orderItemMapper.updatePlatesItemPackageId(batch, packageNo, orderIds);
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
.in(PlateDO::getPlateNo, batch)
.in(PlateDO::getOrderId, orderIds)
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.select(PlateDO::getId)
).stream().map(PlateDO::getId).toList();
if (CollectionUtil.isEmpty(plateIds)) {
continue;
}
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIds)
.eq(OrderItemDO::getPackageId, 0L)
.set(OrderItemDO::getPackageId, packageNo)
);
}
}
@@ -286,7 +283,7 @@ public class PackServiceImpl implements PackService {
if (CollUtil.isEmpty(addPlateNos) && CollUtil.isEmpty(addPartsList)
&& CollUtil.isEmpty(deletePlateNos) && CollUtil.isEmpty(delPartsList)) {
throw new ServiceException(PART_PACK_DATA_ERROR);
throw new ServiceException(PACK_DATA_NULL);
}
String existPackageNo = existPackageDO.getPackageNo();
@@ -294,7 +291,21 @@ public class PackServiceImpl implements PackService {
List<List<Long>> split = CollUtil.split(addPlateNos, 1000);
if (CollUtil.isNotEmpty(split)) {
for (List<Long> batch : split) {
orderItemMapper.updatePlatesItemPackageId(batch, existPackageNo, orderIds);
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
.in(PlateDO::getPlateNo, batch)
.in(PlateDO::getOrderId, orderIds)
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.select(PlateDO::getId)
).stream().map(PlateDO::getId).toList();
if (CollectionUtil.isEmpty(plateIds)) {
continue;
}
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIds)
.eq(OrderItemDO::getPackageId, 0L)
.set(OrderItemDO::getPackageId, existPackageNo)
);
}
}
@@ -302,7 +313,21 @@ public class PackServiceImpl implements PackService {
List<List<Long>> split3 = CollUtil.split(deletePlateNos, 1000);
if (CollUtil.isNotEmpty(split3)) {
for (List<Long> batch : split3) {
orderItemMapper.updatePlatesItemUnPackageId(batch, existPackageNo, orderIds);
List<Long> plateIds = orderPlateMapper.selectList(new LambdaQueryWrapper<PlateDO>()
.in(PlateDO::getPlateNo, batch)
.in(PlateDO::getOrderId, orderIds)
.eq(PlateDO::getDeleted, DeletedCodeEnum.NOT_DELETED.getStatus())
.select(PlateDO::getId)
).stream().map(PlateDO::getId).toList();
if (CollectionUtil.isEmpty(plateIds)) {
continue;
}
orderItemMapper.update(new LambdaUpdateWrapper<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderIds)
.in(OrderItemDO::getPlateId, plateIds)
.eq(OrderItemDO::getPackageId, existPackageNo)
.set(OrderItemDO::getPackageId, 0L)
);
}
}
@@ -823,12 +848,12 @@ public class PackServiceImpl implements PackService {
private OrderPackagDO validateOrdersExists(List<Long> orderIds, String packNo) {
List<OrderDO> orderDO = ordersMapper.selectByIds(orderIds);
AssertUtils.notEmpty(orderDO, ORDER_PACK_ERROR);
AssertUtils.notEmpty(orderDO, ORDER_NOT_EXISTS);
if (CharSequenceUtil.isNotEmpty(packNo)) {
List<OrderPackagDO> orderPackageDOS = orderPackageMapper.selectList(new LambdaQueryWrapper<OrderPackagDO>()
.eq(OrderPackagDO::getPackageNo, packNo));
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_ERROR);
AssertUtils.notEmpty(orderPackageDOS, ORDER_PACK_DATA_NULL_ERROR);
return orderPackageDOS.get(0);
}
@@ -869,7 +894,7 @@ public class PackServiceImpl implements PackService {
IPage<PackRespVO> packRespVOS = new PageDTO<>();
OrderDO order = ordersMapper.selectById(pageReqVO.getOrderId());
AssertUtils.notEmpty(order, ORDER_DATE_ERROR);
AssertUtils.notEmpty(order, ORDER_NOT_EXISTS);
List<PackRespVO> packRespVOList = Boolean.TRUE.equals(isUp) ?
ordersMapper.selectOrderIdsTrue(order.getCreateTime().toString(), getUserOrganId(), order.getId()) :
@@ -4,12 +4,11 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.manage.plate.vo.plate.PlateImportExcelVO;
import com.cf.imes.module.executor.controller.admin.manage.plate.vo.plate.PlatePageReqVO;
import com.cf.imes.module.executor.controller.admin.manage.plate.vo.plate.PlateSaveReqVO;
@@ -17,9 +16,6 @@ import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodBatchMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.util.file.FileHelperUtil;
import com.cf.imes.module.system.api.organ.OrganApi;
import com.cf.imes.module.system.api.permission.PermissionApi;
import com.cf.imes.module.system.enums.ErrorCodeConstants;
import org.apache.commons.lang.StringUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
@@ -41,7 +37,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_ATTR_GROUP_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_EXISTS;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_GOODS_ID_NOT_SAME;
@@ -63,64 +58,47 @@ public class PlateManageServiceImpl implements PlateManageService {
@Resource
private PlateGoodMapper plateGoodMapper;
@Resource
private OrganApi organApi;
@Resource
private PermissionApi permissionApi;
@Resource
private PlateGoodBatchMapper plateGoodBatchMapper;
@Resource(name = EXECUTOR_IMPOT_THREAD_POOL_TASK_EXECUTOR)
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
private final static String BASE_PLATE_IMPORT_PERMISSION = "base:plate:import"; // 导入板材
private final static String BASE_PLATE_DELETE_PERMISSION = "base:plate:delete"; // 删除板材信息
private final static String BASE_PLATE_CREATE_PERMISSION = "base:plate:create"; // 创建板材信息
private final static String BASE_PLATE_UPDATE_PERMISSION = "base:plate:update"; // 更新板材信息
private final static String BASE_PLATE_QUERY_PERMISSION = "base:plate:query"; // 获得板材信息
private static final String EMPTY_STRING = new String();
public static final Double ZERO = 0.0;
@Override
@OrganIgnore
public Long createPlate(PlateSaveReqVO createReqVO) {
PlateGoodDO plate = BeanUtils.toBean(createReqVO, PlateGoodDO.class);
Long organId = getOrganId(BASE_PLATE_CREATE_PERMISSION, getLoginUserId(), plate.getOrganId());
// 判断板材是否存在
validateGoodExists(plate.getGoodsId(), organId);
// 判断板材是否存在
validateGoodExists(plate.getGoodsId());
// 校验板材名称、材质、颜色、厚度、品牌在组织内唯一
validateGoodAttr(plate, organId);
validateGoodAttr(plate);
plateGoodMapper.insert(plate);// 组织id未传输
plateGoodMapper.insert(plate);
// 返回
return plate.getId();
}
@Override
@OrganIgnore
@Transactional(rollbackFor = Exception.class)
public void updatePlate(PlateSaveReqVO updateReqVO) {
// 校验存在
Long organId = getOrganId(BASE_PLATE_UPDATE_PERMISSION, getLoginUserId(), updateReqVO.getOrganId());
if (updateReqVO.getId() == null) {
throw new ServiceException(PLATE_ID_NULL_ERROR);
}
validatePlateExists(updateReqVO.getId(), organId);
validatePlateExists(updateReqVO.getId());
PlateGoodDO updateObj = BeanUtils.toBean(updateReqVO, PlateGoodDO.class);
// 校验板材goods_id是否相同
if (plateGoodMapper.isByGoodIDAndId(updateReqVO.getGoodsId(), organId, Long.valueOf(updateReqVO.getId()))) {
if (plateGoodMapper.isByGoodIDAndId(updateReqVO.getGoodsId(), Long.valueOf(updateReqVO.getId()))) {
throw new ServiceException(PLATE_GOODS_ID_NOT_SAME);
}
// 校验板材名称、材质、颜色、厚度、品牌在组织内唯一
validateGoodAttr(updateObj, organId);
validateGoodAttr(updateObj);
plateGoodMapper.updateById(updateObj);
}
@@ -129,10 +107,9 @@ public class PlateManageServiceImpl implements PlateManageService {
*
* @param plate
*/
private void validateGoodAttr(PlateGoodDO plate, Long organId) {
private void validateGoodAttr(PlateGoodDO plate) {
Long count = plateGoodMapper.selectCount(new LambdaQueryWrapperX<PlateGoodDO>()
.eq(PlateGoodDO::getGoodsName, plate.getGoodsName())
.eq(PlateGoodDO::getOrganId, organId)
.eq(PlateGoodDO::getMaterial, plate.getMaterial())
.eq(PlateGoodDO::getColor, plate.getColor())
.eq(PlateGoodDO::getThickness, plate.getThickness())
@@ -144,24 +121,20 @@ public class PlateManageServiceImpl implements PlateManageService {
}
@Override
@OrganIgnore
@Transactional(rollbackFor = Exception.class)
public void deletePlate(Long id, Long organId) {
// 校验存在
validatePlateExists(id,
getOrganId(BASE_PLATE_DELETE_PERMISSION, getLoginUserId(), organId));
validatePlateExists(id);
// 删除
plateGoodMapper.deleteById(id);
}
private void validatePlateExists(Long id, Long organId) {
if (plateGoodMapper.selectOneById(id, organId) == null) {
private void validatePlateExists(Long id) {
if (plateGoodMapper.selectOneById(id, SecurityFrameworkUtils.getUserOrganId()) == null) {
throw new ServiceException(REMAIN_PLATE_NOT_EXISTS);
}
}
@Override
@OrganIgnore
public PlateGoodDO getPlate(Long id, Long organId) {
PlateGoodDO plate = plateGoodMapper.selectOneById(id, organId);
return plate.setWidth(Objects.equals(plate.getWidth(), ZERO) ? null : plate.getWidth())
@@ -170,23 +143,11 @@ public class PlateManageServiceImpl implements PlateManageService {
@Override
public PlateGoodDO getPlateGoods(String id) {
Long organId = getOrganId(BASE_PLATE_QUERY_PERMISSION, getLoginUserId(), null);
return plateGoodMapper.selectByGoodID(id, organId , false);
return plateGoodMapper.selectByGoodID(id , false);
}
@Override
@OrganIgnore
public PageResult<PlateGoodDO> getPlatePage(PlatePageReqVO pageReqVO) {
// if (permissionApi.hasRoles(getLoginUser().getId(), BASE_PLATE_QUERY_PERMISSION).getData()) {
// if (pageReqVO.getOrganId() != null && pageReqVO.getOrganId() != 0) {
// validateOrganExists(pageReqVO.getOrganId());
// }
// } else {
// pageReqVO.setOrganId(OrganContextHolder.getOrganId());
// }
// if (pageReqVO.getOrganId() == null || pageReqVO.getOrganId() == 0) {
pageReqVO.setOrganId(getOrganId(BASE_PLATE_QUERY_PERMISSION, getLoginUserId(), pageReqVO.getOrganId()));
// }
PageResult<PlateGoodDO> plateGoodDOPageResult = plateGoodMapper.selectPage(pageReqVO);
plateGoodDOPageResult.getList().forEach(plateGoodDO -> plateGoodDO.setWidth(Objects.equals(plateGoodDO.getWidth(), ZERO) ? null : plateGoodDO.getWidth())
.setHeight(Objects.equals(plateGoodDO.getHeight(), ZERO) ? null : plateGoodDO.getHeight())
@@ -201,12 +162,8 @@ public class PlateManageServiceImpl implements PlateManageService {
@Override
@OrganIgnore
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public void importPlateList(List<PlateImportExcelVO> importPlates, boolean isUpdateSupport, Long organId) {
organId = getOrganId(BASE_PLATE_IMPORT_PERMISSION, getLoginUserId(), organId);
// 批量插入集合
List<PlateGoodDO> insertList = new CopyOnWriteArrayList<>();
// 批量更新集合
@@ -376,7 +333,6 @@ public class PlateManageServiceImpl implements PlateManageService {
}
@Override
@OrganIgnore
public void exportTemplate(HttpServletResponse response, String value) {
String rootPath = getSavePath();
FileHelperUtil.getFile(rootPath, response, value);
@@ -388,49 +344,23 @@ public class PlateManageServiceImpl implements PlateManageService {
}
@Override
@OrganIgnore
public Set<String> getOrgPlateGoodsId(Long organId) {
return plateGoodMapper.selectList(new LambdaQueryWrapper<PlateGoodDO>()
.eq(PlateGoodDO::getOrganId, getOrganId(BASE_PLATE_IMPORT_PERMISSION, getLoginUserId(), organId))
.eq(PlateGoodDO::getOrganId, organId)
.eq(PlateGoodDO::getDeleted, false)
.select(PlateGoodDO::getGoodsId))
.stream().map(PlateGoodDO::getGoodsId).collect(Collectors.toSet());
}
@Override
@OrganIgnore
public List<LinkedHashMap<String, Object>> getOrgAttrGroup(Long organId) {
return plateGoodMapper.getOrgAttrGroup(organId);
}
private void validateOrganExists(Long organId) {
CommonResult<Boolean> index = organApi.validOrgan(organId);
if (!index.isSuccess()) {
throw new ServiceException(ErrorCodeConstants.ORGAN_NOT_EXISTS);
}
}
// 当前组织中板材是否存在
private void validateGoodExists(String goodsId, Long organId) {
if (plateGoodMapper.selectByGoodID(goodsId, organId, false) != null) {
private void validateGoodExists(String goodsId) {
if (plateGoodMapper.selectByGoodID(goodsId, false) != null) {
throw new ServiceException(PLATE_EXISTS);
}
}
// 组织id返回
private Long getOrganId(String type, Long userId, Long organId) {
boolean hasPermission = permissionApi.hasRoles(userId, type).getData();
Long organIdDefault = OrganContextHolder.getOrganId();
if (hasPermission && organId != null && organId != 0) {
validateOrganExists(organId);
organIdDefault = organId;
}
return organIdDefault;
}
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.executor.service.module;
import java.util.*;
import jakarta.validation.*;
import com.cf.imes.module.executor.controller.admin.module.vo.*;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
/**
* 订单模块 Service 接口
*
* @author 晨丰科技
*/
public interface ModuleService {
/**
* 创建订单模块
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createModule(@Valid ModuleSaveReqVO createReqVO);
/**
* 更新订单模块
*
* @param updateReqVO 更新信息
*/
void updateModule(@Valid ModuleSaveReqVO updateReqVO);
/**
* 删除订单模块
*
* @param id 编号
*/
void deleteModule(Long id);
/**
* 获得订单模块
*
* @param id 编号
* @return 订单模块
*/
ModuleDO getModule(Long id);
/**
* 获得订单模块分页
*
* @param pageReqVO 分页查询
* @return 订单模块分页
*/
PageResult<ModuleDO> getModulePage(ModulePageReqVO pageReqVO);
}
@@ -1,72 +0,0 @@
package com.cf.imes.module.executor.service.module;
import com.cf.imes.framework.common.exception.ServiceException;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.cf.imes.module.executor.controller.admin.module.vo.*;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.module.ModuleMapper;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
/**
* 订单模块 Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class ModuleServiceImpl implements ModuleService {
@Resource
private ModuleMapper moduleMapper;
@Override
public Long createModule(ModuleSaveReqVO createReqVO) {
// 插入
ModuleDO module = BeanUtils.toBean(createReqVO, ModuleDO.class);
moduleMapper.insert(module);
// 返回
return module.getId();
}
@Override
public void updateModule(ModuleSaveReqVO updateReqVO) {
// 校验存在
validateModuleExists(updateReqVO.getId());
// 更新
ModuleDO updateObj = BeanUtils.toBean(updateReqVO, ModuleDO.class);
moduleMapper.updateById(updateObj);
}
@Override
public void deleteModule(Long id) {
// 校验存在
validateModuleExists(id);
// 删除
moduleMapper.deleteById(id);
}
private void validateModuleExists(Long id) {
if (moduleMapper.selectById(id) == null) {
throw new ServiceException(MODULE_NOT_EXISTS);
}
}
@Override
public ModuleDO getModule(Long id) {
return moduleMapper.selectById(id);
}
@Override
public PageResult<ModuleDO> getModulePage(ModulePageReqVO pageReqVO) {
return moduleMapper.selectPage(pageReqVO);
}
}
@@ -217,7 +217,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 校验订单信息和获取 orderId
String orderNos = Optional.ofNullable(planDO.getOrderNos()).orElseThrow(() -> new ServiceException(ORDER_PLAN_ERROR));
String orderNos = Optional.ofNullable(planDO.getOrderNos()).orElseThrow(() -> new ServiceException(ORDER_PLAN_ORDERS_EMPTY));
List<Long> orderIds = new ArrayList<>(JSON.parseArray(orderNos).toJavaList(Long.class).stream().distinct().toList());
@@ -301,11 +301,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<GoodsReqVO> goodsDOS = goodsMapper.selectGoodsList(orderId,getUserOrganId());
AssertUtils.notEmpty(goodsDOS,THIS_ORDER_NOT_PLATE_DATA);
AssertUtils.notEmpty(goodsDOS, ORDER_PLATE_EMPTY);
List<PlateDetailRespVO> plateDOS = plateMapper.selectPlateListByGoodsIds(orderId,getUserOrganId());
AssertUtils.notEmpty(plateDOS,ORDER_PLATE_ERROR);
AssertUtils.notEmpty(plateDOS, ORDER_PLATE_EMPTY);
List<OrderModelDO> orderModelDOS = getOrderModels(ListUtil.of(orderId), goodsDOS.stream().map(GoodsReqVO::getId).collect(Collectors.toList()));
@@ -368,7 +368,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
// 查询排单对应的小板信息
List<PlateDetailRespVO> plateDetailRespVOS = planItemMapper.selectPlanPlateDetailList(planId,getUserOrganId());
AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLAN_PLATE_ERROR);
AssertUtils.notEmpty(plateDetailRespVOS, ORDER_PLAN_PLATE_ERROR);
for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) {
StringBuilder name = new StringBuilder();
@@ -386,7 +386,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
// 需要查询小板造型信息的板材ID
List<Long> plateIds = plateDetailRespVOS.stream().map(PlateDetailRespVO::getPlateId).toList();
@@ -477,10 +477,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
PlanDO planDO = planMapper.selectById(planId);
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATA_ERROR);
if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw new ServiceException(THIS_PLAN_OPTIMIZE_DATA_ERROR);
throw new ServiceException(PLAN_OPTIMIZE_DATA_ALL_OPENED);
}
@@ -558,9 +558,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<SaveProcessSchemeModelDO> schemeModelDOS = new ArrayList<>(modelDOList.stream().filter(Objects::nonNull).toList());
SaveProcessSchemeModelDO saveProcessSchemeModelDO = Optional.ofNullable(schemeModelDOS.get(0)).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR));
SaveProcessSchemeModelDO saveProcessSchemeModelDO = Optional.ofNullable(schemeModelDOS.get(0)).orElseThrow(() -> new ServiceException(PLAN_SCHEME_DATA_ERROR));
Long planId = Optional.ofNullable(saveProcessSchemeModelDO.getPlanId()).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR));
Long planId = Optional.ofNullable(saveProcessSchemeModelDO.getPlanId()).orElseThrow(() -> new ServiceException(PLAN_SCHEME_DATA_ERROR));
PlanDO planDO = planMapper.selectById(planId);
@@ -580,7 +580,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(!planDO.getProcessId().equals(processId)){
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw new ServiceException(THIS_PLAN_PLATE_IS_CUT);
throw new ServiceException(PLAN_PLATE_IS_CUT);
}
// 保存排单对应的加工方案组的配置信息
@@ -762,19 +762,19 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
@Override
public OrderSource getNoPlanPlateData(NoPlanFilterPlateReqVO reqVO) {
List<Long> orderIds = Optional.ofNullable(reqVO.getOrderIds()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR));
List<Long> orderIds = reqVO.getOrderIds();
List<String> goodsIdList = Optional.ofNullable(reqVO.getGoodsIdList()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR));
List<String> goodsIdList = reqVO.getGoodsIdList();
List<GoodsReqVO> goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(orderIds,goodsIdList, getUserOrganId());
AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR);
AssertUtils.notEmpty(goodsReqVOS, ORDER_GOODS_DATA_ERROR);
List<Long> orderGoodsIds = goodsReqVOS.stream().map(GoodsReqVO::getId).toList();
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,THIS_ORDER_PLATE_DATA_ERROR);
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
// 查询未排单的小板数量
Long unplanPlateNum = plateMapper.selectCount(new LambdaQueryWrapper<PlateDO>()
@@ -788,7 +788,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
List<PlateDetailRespVO> plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds, orderGoodsIds, getUserOrganId());
AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_ERROR);
AssertUtils.notEmpty(plateDetailRespVOS, ORDER_PLATE_EMPTY);
// todo 数据结构改后,可以增加排单ID作为筛选,只查为 0 的
List<OrderModelDO> orderModelDOS = getOrderModels(orderIds, orderGoodsIds);
@@ -901,7 +901,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
AdvancedScreeningConfig filterConfigs = parseObject(pageReqVO.getConfig(), AdvancedScreeningConfig.class);
AssertUtils.notEmpty(filterConfigs,ADVANCED_SCREENING_CONFIG_ERROR);
AssertUtils.notEmpty(filterConfigs, ADVANCED_SCREENING_CONFIG_ERROR);
boolean isPlateFilter = CharSequenceUtil.isNotBlank(filterConfigs.getPlateDataFilter());
@@ -1526,7 +1526,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
}
List<PlateDO> plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId());
AssertUtils.notEmpty(plateDOS, THIS_PLAN_PLATE_DATA_ERROR);
AssertUtils.notEmpty(plateDOS, ORDER_PLAN_PLATE_DATA_EMPTY);
if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){
@@ -1583,7 +1583,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
planDO.setProduceTime(null);
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus()));
@@ -1663,7 +1663,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
if(CollUtil.isNotEmpty(orderIds)){
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds);
AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR);
AssertUtils.notEmpty(orderDOS, ORDER_PLAN_ORDERS_EMPTY);
orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus()));
orderMapper.updateBatch(orderDOS);
@@ -1698,7 +1698,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
private void validatePlanStatus(PlanDO planDO,List<Boolean> isLocks){
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw new ServiceException(THIS_PLAN_PLATE_IS_CUT);
throw new ServiceException(PLAN_PLATE_IS_CUT);
}
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
@@ -1707,7 +1707,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService {
Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData();
if(Boolean.TRUE.equals(planDO.getIsScheduled()) && isLocks.contains(true) && Boolean.FALSE.equals(data)){
throw new ServiceException(THIS_PLAN_PROCESS_SCHEME_IS_LOCK);
throw new ServiceException(PLAN_PROCESS_SCHEME_IS_LOCK);
}
}
@@ -97,8 +97,6 @@ import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString;
@@ -191,8 +189,6 @@ public class OrderServiceImpl implements OrderService {
@Override
public Long createOrder(OrderSaveReqVO createReqVO) {
//校验手机号是否合法
validatePhoneNumber(createReqVO.getPhoneNumber());
Long parentId = createReqVO.getParentId();
// 校验上级订单是否存在
validateParentOrderExists(parentId);
@@ -226,9 +222,6 @@ public class OrderServiceImpl implements OrderService {
// 校验存在, 订单未删除
OrderDO orderDO = validateOrderExists(updateReqVO.getId(), getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
//校验手机号是否合法
validatePhoneNumber(updateReqVO.getPhoneNumber());
//验证自定义单号是否存在, 订单未删除
validateCustomOrderNoExists(updateReqVO.getCustomOrderNo(), updateReqVO.getId());
@@ -829,7 +822,7 @@ public class OrderServiceImpl implements OrderService {
// 状态排除
if (!Objects.equals(orderDO.getStatus(), OrderStatusEnum.EMPTY.getStatus()) &&
!Objects.equals(orderDO.getStatus(), OrderStatusEnum.NEW_ORDER.getStatus()))
throw new ServiceException(ORDER_NOT_CANCEL);
throw new ServiceException(ORDER_CAN_NOT_CANCEL);
return orderMapper.updateOrderDeleted(orderId, deleted, getUserOrganId());
}
@@ -885,23 +878,6 @@ public class OrderServiceImpl implements OrderService {
AssertUtils.notEmpty(orderMapper.selectById(parentOrderId), PARENT_ORDER_NOT_EXISTS, parentOrderId);
}
// 校验手机号是否合法
private void validatePhoneNumber(String phoneNumber) {
// 定义手机号正则表达式
String regex = "^1[3-9]\\d{9}$";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建 Matcher 对象
Matcher matcher = pattern.matcher(phoneNumber);
// 判断手机号是否匹配正则表达式
if (!matcher.matches()) {
throw new ServiceException(PHONE_NOT_LAWFUL);
}
}
// 验证自定义单号是否存在---去除本单
private void validateCustomOrderNoExists(String customOrderNo, Long orderId) {
if (customOrderNo != null) {
@@ -1414,7 +1390,7 @@ public class OrderServiceImpl implements OrderService {
throw new ServiceException(ORDER_NOT_EXISTS);
if (CollUtil.isEmpty(roomIds) && ObjectUtils.isEmpty(bodyId)) {
throw new ServiceException(ORDER_ERROR);
throw new ServiceException(ORDER_BODY_DEL_NO_TARGET);
}
// 判断小板是否已开料,已开料不允许删除
@@ -1629,7 +1605,7 @@ public class OrderServiceImpl implements OrderService {
}
AssertUtils.notEmpty(orderIds, ORDER_PLAN_DATA_ERROR);
AssertUtils.notEmpty(orderIds, ORDER_PLAN_ORDERS_EMPTY);
// 订单信息
@@ -226,7 +226,7 @@ public class PlanServiceImpl implements PlanService {
if(updateReqVO.getProcessId() != null){
if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){
throw new ServiceException(THIS_PLAN_PLATE_IS_CUT);
throw new ServiceException(PLAN_PLATE_IS_CUT);
}
planDO.setProcessId(updateReqVO.getProcessId());
@@ -1121,7 +1121,7 @@ public class PlanServiceImpl implements PlanService {
PlanDO planDO = planMapper.selectById(pageReqVO.getId());
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATA_ERROR);
List<PlanDO> plan;
@@ -1195,20 +1195,20 @@ public class PlanServiceImpl implements PlanService {
List<Long> deletePlateIds = deleteOrderPlateIds.stream().map(OrderPlateIds::getPlateId).toList();
AssertUtils.notEmpty(deletePlateIds,DELETE_PLAN_PLATE_DATA_ERROR);
AssertUtils.notEmpty(deletePlateIds, DELETE_PLAN_PLATE_DATA_ERROR);
Set<Long> deleteOrderIds = deleteOrderPlateIds.stream().map(OrderPlateIds::getOrderId).collect(Collectors.toSet());
AssertUtils.notEmpty(deleteOrderIds,DELETE_PLAN_PLATE_DATA_ERROR);
AssertUtils.notEmpty(deleteOrderIds, DELETE_PLAN_PLATE_DATA_ERROR);
// 查询需要删除的小板对应的信息
List<PlateDO> plateDOS = plateMapper.selectBatchIds(deletePlateIds);
AssertUtils.notEmpty(plateDOS,DELETE_PLAN_PLATE_DATA_ERROR);
AssertUtils.notEmpty(plateDOS, DELETE_PLAN_PLATE_DATA_ERROR);
List<PlateDO> plateDOList = plateDOS.stream().filter(f -> plateStatus.contains(f.getIsCutted())).toList();
AssertUtils.empty(plateDOList,PLAN_PLATE_IS_CUTTED);
AssertUtils.empty(plateDOList, PLAN_PLATE_IS_CUTTED);
// 移除排单板件 & 重新计算订单和材质下的数量和面积
removePlanOrderAndGoodsPlate(plateDOS, deleteOrderIds);
@@ -1412,7 +1412,7 @@ public class PlanServiceImpl implements PlanService {
.eq(PlateDO::getPlanId, 0L)
.set(PlateDO::getPlanId, planId));
if (updatePlateNum != plateIdList.size()) {
throw new ServiceException(CREAT_PLAN_PLATE_DATA_ERROR);
throw new ServiceException(CREAT_PLAN_PLATE_PART_PLANNED);
}
int version = goodsDO.getVersion();
@@ -1465,7 +1465,7 @@ public class PlanServiceImpl implements PlanService {
.set(PlateDO::getPlanId, 0L)
.set(PlateDO::getIsOptimized, false));
if (updatePlateNum != plateIdList.size()) {
throw new ServiceException(CREAT_PLAN_PLATE_DATA_ERROR);
throw new ServiceException(CREAT_PLAN_PLATE_PART_PLANNED);
}
}
@@ -2004,7 +2004,7 @@ public class PlanServiceImpl implements PlanService {
.eq(PlateDO::getPlanId, 0)
.set(PlateDO::getPlanId, planId));
if (updatePlateNum != plateIdList.size()) {
throw new ServiceException(CREAT_PLAN_PLATE_DATA_ERROR);
throw new ServiceException(CREAT_PLAN_PLATE_PART_PLANNED);
}
}
@@ -185,7 +185,7 @@ public class PlateServiceImpl implements PlateService {
PlanDO planDO = planMapper.selectById(planId);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATE_ERROR);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATA_ERROR);
List<PlateDO> plateDOS = plateMapper.selectByIds(plateIds);
@@ -200,7 +200,7 @@ public class PlateServiceImpl implements PlateService {
if (!plateDO.getIsCutted().equals(OrderPlateCutStatusEnum.NOCUTTING.getStatus())) {
throw new ServiceException(THIS_PLATE_IS_OPTIMIZE, plateDO.getPlateNo());
throw new ServiceException(PLATE_IS_OPTIMIZE, plateDO.getPlateNo());
}
}
@@ -533,7 +533,7 @@ public class PlateServiceImpl implements PlateService {
Long planId = Optional.ofNullable(reqVO.get(0).getPlanId()).orElseThrow(() -> new ServiceException(ORDER_PLAN_PLATE_ERROR));
PlanDO planDO = planMapper.selectById(planId);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATE_ERROR);
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATA_ERROR);
List<Long> orderIds = reqVO.stream().map(OptimizationSavePlateReqVO::getOrderId).distinct().toList();
@@ -1,54 +0,0 @@
package com.cf.imes.module.executor.service.process;
import jakarta.validation.*;
import com.cf.imes.module.executor.controller.admin.process.vo.*;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import java.util.List;
/**
* 订单工序 Service 接口
*
* @author 晨丰科技
*/
public interface OrderProcessService {
/**
* 创建订单工序
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createOrderProcess(@Valid OrderProcessSaveReqVO createReqVO);
/**
* 更新订单工序
*
* @param updateReqVO 更新信息
*/
void updateOrderProcess(@Valid OrderProcessSaveReqVO updateReqVO);
/**
* 删除订单工序
*
* @param id 编号
*/
void deleteOrderProcess(Long id);
/**
* 获得订单工序
*
* @param orderId 订单编号
* @return 订单工序
*/
OrderProcessDO getOrderProcess(Long orderId);
/**
* 获得订单中工序
*
* @param processGroupId 工序组Id
* @return 订单工序
*/
List<OrderProcessDO> getOrderProcessByProcessGroupId(Long processGroupId);
}
@@ -1,314 +0,0 @@
package com.cf.imes.module.executor.service.process;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.module.executor.dal.dataobject.processStepItem.OrderProcessStepItemDO;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.enums.ProcessTypeEnum;
import com.cf.imes.module.system.api.process.ProcessGroupApi;
import com.cf.imes.module.system.api.process.dto.ProcessListReqDTO;
import com.cf.imes.module.system.api.process.dto.ProcessRespDTO;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.executor.controller.admin.process.vo.*;
import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.process.OrderProcessMapper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.ProcessTypeEnum.TYPE_SEVEN;
/**
* 订单工序 Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class OrderProcessServiceImpl implements OrderProcessService {
@Resource
private OrderProcessMapper orderProcessMapper;
@Resource
private ProcessGroupApi processGroupApi;
@Resource
private OrderMapper orderMapper;
@Resource
private IdentifierGenerator identifierGenerator;
@Resource
private ProcessStepMapper processStepMapper;
@Resource
private ProcessStepItemMapper processStepItemMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private PlateMapper plateMapper;
@Resource
private GoodsMapper goodsMapper;
// 订单状态检测
private void checkOrderStatus(Long orderId, Long organId, Integer status) {
OrderDO order = orderMapper.selectOrderOne(orderId, organId, status);
// 当生产不为删除时,校验订单存在
if (order == null) {
throw new ServiceException(ORDER_NOT_EXISTS);
}else {
// 校验订单状态
if (order.getStatus() != OrderStatusEnum.NEW_ORDER.getStatus()) {
throw new ServiceException(ORDER_STATUS_CONFLICT);
}
}
}
// 校验工序组存在
private void checkProcessGroup(Long id) {
if (!processGroupApi.getProcessGroup(id)) {
throw new ServiceException(PROCESS_GROUP_NOT_EXISTS);
}
}
// 校验是否已经存在该订单对应的工序组
private void checkOrderProcessExists(Long orderId, Long organId) {
if (orderProcessMapper.getOrderProcess(orderId, organId)) {
throw new ServiceException(ORDER_PROCESS_EXISTS);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long createOrderProcess(OrderProcessSaveReqVO createReqVO) {
checkOrderStatus(createReqVO.getOrderId(), OrganContextHolder.getOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
// 校验工序组存在
checkProcessGroup(createReqVO.getGroupId());
// 校验是否已经存在该订单对应的工序组
checkOrderProcessExists(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
// 插入
Long orderProcessId = (Long) identifierGenerator.nextId(null);
// 查询当前订单对应的总板材大小
BigDecimal size = plateMapper.selectPlateSize(createReqVO.getOrderId());
OrderProcessDO orderProcess = BeanUtils.toBean(createReqVO, OrderProcessDO.class).setId(orderProcessId).setSize(size);
List<ProcessStepDO> processStepDOS = new ArrayList<>();
List<OrderProcessStepItemDO> orderProcessStepItemDOS = new ArrayList<>();
// 需要获取工序组的具体信息,以及工序组中工序的信息,然后将工序组中工序的信息插入到订单工序步骤表中
ProcessListReqDTO processListReqDTO = processGroupApi.getProcessGroupDetail(createReqVO.getGroupId());
AtomicInteger INDEX = new AtomicInteger(0);
processListReqDTO.getLists().forEach(processRespDTO -> {
Long processStepDOId = (Long) identifierGenerator.nextId(null);
ProcessStepDO processStepDO = BeanUtils.toBean(processRespDTO, ProcessStepDO.class).setId(processStepDOId).setOrderId(createReqVO.getOrderId())
.setStatus(false).setProcessinfoId(processRespDTO.getId()).setOrderProcessId(orderProcess.getId()).setFinishTime(null).setSort(INDEX.getAndIncrement());// 计划日期没有填写
processStepDOS.add(processStepDO);
// 订单中是否存在加工组,若存在加工组,需要逐条加工组信息写入到订单工序步骤表
// if (processRespDTO.getType() == ProcessTypeEnum.TYPE_SEVEN.getStatus()) {
// List<OrderGroupDO> orderGroupDOS = orderGroupMapper.getOrderGroupByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
// if (orderGroupDOS.size() != 0) { // 有加工组
// for (int i = 0; i < orderGroupDOS.size(); i++) {
// OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
// .name(orderGroupDOS.get(i).getName()) // 加工组的名称
// .processStepId(processStepDOId)
// .orderProcessId(orderProcessId)
// .status(false)
// .groupName(processListReqDTO.getName())
// .bodyId(orderGroupDOS.get(i).getBodyId())
// .groupId(orderGroupDOS.get(i).getId())
// .build();// 查模块id,柜体id,加工组id
// orderProcessStepItemDOS.add(orderProcessStepItemDO);
// }
// }
// } else if (processRespDTO.getType() == ProcessTypeEnum.TYPE_EIGHT.getStatus()) { // 若工序类型为板材
// List<GoodsDO> goodsDOS = goodsMapper.selectGoodsByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
// if (goodsDOS.size() != 0) { // 有板材
// for (int i = 0; i < goodsDOS.size(); i++) {
// OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
// .name(goodsDOS.get(i).getGoodsName()) // 板块的名称
// .processStepId(processStepDOId)
// .orderProcessId(orderProcessId)
// .status(false)
// .groupName(processListReqDTO.getName())
// .bodyId(goodsDOS.get(i).getId())
// .groupId(0L)
// .build();
// orderProcessStepItemDOS.add(orderProcessStepItemDO);
// }
// }
// } else {
// List<OrderBodyDO> orderBodyDOS = orderBodyMapper.getOrderBodyByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
// for (int i = 0; i < orderBodyDOS.size(); i++) {
// OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
// .name(processRespDTO.getName())
// .processStepId(processStepDOId)
// .orderProcessId(orderProcessId)
// .status(false)
// .groupName(orderBodyDOS.get(i).getName())
// .bodyId(orderBodyDOS.get(i).getId())
// .groupId(0L)
// .build();// 查模块id,柜体id,加工组id
// orderProcessStepItemDOS.add(orderProcessStepItemDO);
// }
// }
handleProcessType(processRespDTO, createReqVO, processStepDOId, orderProcessId, processListReqDTO, orderProcessStepItemDOS);
});
INDEX.set(0);
// 修改订单的状态
orderMapper.updateOrderStatus(createReqVO.getOrderId(), OrderStatusEnum.SORTED.getStatus(), OrganContextHolder.getOrganId());
// 批量插入
orderProcessMapper.insert(orderProcess.setNextStepId(processListReqDTO.getLists().get(0).getId()).setStatus(false));
processStepMapper.insertBatch(processStepDOS);
processStepItemMapper.insertBatch(orderProcessStepItemDOS);
// 返回
return orderProcess.getId();
}
private void handleProcessType(ProcessRespDTO processRespDTO, OrderProcessSaveReqVO createReqVO, Long processStepDOId, Long orderProcessId, ProcessListReqDTO processListReqDTO, List<OrderProcessStepItemDO> orderProcessStepItemDOS) {
if (Objects.equals(processRespDTO.getType(), TYPE_SEVEN.getStatus())) {
handleTypeSeven(createReqVO, processStepDOId, orderProcessId, processListReqDTO, orderProcessStepItemDOS);
} else if (Objects.equals(processRespDTO.getType(), ProcessTypeEnum.TYPE_EIGHT.getStatus())) {
handleTypeEight(createReqVO, processStepDOId, orderProcessId, processListReqDTO, orderProcessStepItemDOS);
} else {
handleDefaultType(createReqVO, processRespDTO.getName(), processStepDOId, orderProcessId, orderProcessStepItemDOS);
}
}
private void handleTypeSeven(OrderProcessSaveReqVO createReqVO, Long processStepDOId, Long orderProcessId, ProcessListReqDTO processListReqDTO, List<OrderProcessStepItemDO> orderProcessStepItemDOS) {
List<OrderGroupDO> orderGroupDOS = orderGroupMapper.getOrderGroupByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
if (!orderGroupDOS.isEmpty()) {
orderGroupDOS.forEach(orderGroupDO -> {
OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
.name(orderGroupDO.getName()) // 加工组的名称
.processStepId(processStepDOId)
.orderProcessId(orderProcessId)
.status(false)
.groupName(processListReqDTO.getName())
.bodyId(orderGroupDO.getBodyId())
.groupId(orderGroupDO.getId())
.build();
orderProcessStepItemDOS.add(orderProcessStepItemDO);
});
}
}
private void handleTypeEight(OrderProcessSaveReqVO createReqVO, Long processStepDOId, Long orderProcessId, ProcessListReqDTO processListReqDTO, List<OrderProcessStepItemDO> orderProcessStepItemDOS) {
List<GoodsDO> goodsDOS = goodsMapper.selectGoodsByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
if (!goodsDOS.isEmpty()) {
goodsDOS.forEach(goodsDO -> {
OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
.name(goodsDO.getGoodsName()) // 板块的名称
.processStepId(processStepDOId)
.orderProcessId(orderProcessId)
.status(false)
.groupName(processListReqDTO.getName())
.bodyId(goodsDO.getId())
.groupId(0L)
.build();
orderProcessStepItemDOS.add(orderProcessStepItemDO);
});
}
}
private void handleDefaultType(OrderProcessSaveReqVO createReqVO, String name, Long processStepDOId, Long orderProcessId, List<OrderProcessStepItemDO> orderProcessStepItemDOS) {
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.getOrderBodyByOrderId(createReqVO.getOrderId(), OrganContextHolder.getOrganId());
orderBodyDOS.forEach(orderBodyDO -> {
OrderProcessStepItemDO orderProcessStepItemDO = OrderProcessStepItemDO.builder()
.name(name)
.processStepId(processStepDOId)
.orderProcessId(orderProcessId)
.status(false)
.groupName(orderBodyDO.getName())
.bodyId(orderBodyDO.getId())
.groupId(0L)
.build();
orderProcessStepItemDOS.add(orderProcessStepItemDO);
});
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateOrderProcess(OrderProcessSaveReqVO updateReqVO) {
// 校验存在
validateOrderProcessExists(updateReqVO.getId());
// 更新
OrderProcessDO updateObj = BeanUtils.toBean(updateReqVO, OrderProcessDO.class);
orderProcessMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteOrderProcess(Long id) {
// 校验存在
validateOrderProcessExists(id);
// 删除
orderProcessMapper.deleteById(id);
}
private void validateOrderProcessExists(Long id) {
if (orderProcessMapper.selectById(id) == null) {
throw new ServiceException(ORDER_PROCESS_NOT_EXISTS);
}
}
// 通过订单Id和工序id查询是否存在
private OrderProcessDO validateOrderProcessExists(Long orderId, Long groupId) {
return orderProcessMapper.selectOne("order_id", orderId, "group_id", groupId);
}
@Override
public OrderProcessDO getOrderProcess(Long orderId) {
return orderProcessMapper.selectOne("order_id", orderId, "organ_id", getUserOrganId());
}
@Override
public List<OrderProcessDO> getOrderProcessByProcessGroupId(Long processGroupId) {
return orderProcessMapper.selectList(new LambdaUpdateWrapper<OrderProcessDO>()
.eq(OrderProcessDO::getGroupId, processGroupId)
.eq(OrderProcessDO::getOrganId, getUserOrganId()));
}
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.executor.service.processStep;
import java.util.*;
import jakarta.validation.*;
import com.cf.imes.module.executor.controller.admin.processStep.vo.*;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
/**
* 订单工序步骤 Service 接口
*
* @author 晨丰科技
*/
public interface ProcessStepService {
/**
* 创建订单工序步骤
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcessStep(@Valid ProcessStepSaveReqVO createReqVO);
/**
* 更新订单工序步骤
*
* @param updateReqVO 更新信息
*/
void updateProcessStep(@Valid ProcessStepSaveReqVO updateReqVO);
/**
* 删除订单工序步骤
*
* @param id 编号
*/
void deleteProcessStep(Long id);
/**
* 获得订单工序步骤
*
* @param id 编号
* @return 订单工序步骤
*/
ProcessStepDO getProcessStep(Long id);
/**
* 获得订单工序步骤分页
*
* @param pageReqVO 分页查询
* @return 订单工序步骤分页
*/
PageResult<ProcessStepDO> getProcessStepPage(ProcessStepPageReqVO pageReqVO);
}
@@ -1,72 +0,0 @@
package com.cf.imes.module.executor.service.processStep;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.cf.imes.module.executor.controller.admin.processStep.vo.*;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
/**
* 订单工序步骤 Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class ProcessStepServiceImpl implements ProcessStepService {
@Resource
private ProcessStepMapper processStepMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createProcessStep(ProcessStepSaveReqVO createReqVO) {
// 插入
ProcessStepDO processStep = BeanUtils.toBean(createReqVO, ProcessStepDO.class);
processStepMapper.insert(processStep);
// 返回
return processStep.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateProcessStep(ProcessStepSaveReqVO updateReqVO) {
// 校验存在
validateProcessStepExists(updateReqVO.getId());
// 更新
ProcessStepDO updateObj = BeanUtils.toBean(updateReqVO, ProcessStepDO.class);
processStepMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteProcessStep(Long id) {
// 校验存在
validateProcessStepExists(id);
// 删除
processStepMapper.deleteById(id);
}
private void validateProcessStepExists(Long id) {
if (processStepMapper.selectById(id) == null) {
// throw new ServiceException(PROCESS_STEP_NOT_EXISTS);
}
}
@Override
public ProcessStepDO getProcessStep(Long id) {
return processStepMapper.selectById(id);
}
@Override
public PageResult<ProcessStepDO> getProcessStepPage(ProcessStepPageReqVO pageReqVO) {
return processStepMapper.selectPage(pageReqVO);
}
}
@@ -87,7 +87,7 @@
<!-- 本地环境 -->
<springProfile name="local">
<root level="INFO">
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ASYNC"/> <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
<appender-ref ref="ERROR_FILE"/>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.module.ModuleMapper">
</mapper>
@@ -386,67 +386,6 @@
</delete>
<update id="updatePlatesItemPackageId">
UPDATE order_item oi
JOIN order_plate op ON oi.order_id = op.order_id AND oi.plate_id = op.id
SET package_id = #{packageNo}
where oi.order_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
AND op.plate_no IN
<foreach item="plateNo" collection="plateNos" open="(" separator="," close=")">
#{plateNo}
</foreach>
</update>
<update id="updatePartsItemPackageId">
update order_item oi
set package_id = #{packageNo}
where order_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
and parts_id in
<foreach item="id" collection="addPartsList" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="updatePlatesItemUnPackageId">
UPDATE order_item oi
JOIN order_plate op ON oi.order_id = op.order_id AND oi.plate_id = op.id
SET package_id = 0
where oi.order_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
AND op.plate_no IN
<foreach item="plateNo" collection="plateNos" open="(" separator="," close=")">
#{plateNo}
</foreach>
AND oi.package_id = #{packageNo}
</update>
<update id="updatePartsItemUnPackageId">
update order_item oi
set package_id = 0
where order_id IN
<foreach item="orderId" collection="orderIds" open="(" separator="," close=")">
#{orderId}
</foreach>
and package_id = #{packageNo}
and parts_id in
<foreach item="id" collection="deletePartsList" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="updatePlatesItemHeapSplitStatus">
UPDATE order_item oi
JOIN order_plate op ON oi.order_id = op.order_id AND oi.plate_id = op.id
@@ -1,5 +1,6 @@
inEnum.message=必须在指定范围 {0}
inScope.message={0}不合法
telephone.valid.message=电话格式不正确
veneer.export.head.veneerNo=贴皮编号
veneer.export.head.classificationName=分类名称
@@ -1,5 +1,6 @@
inEnum.message=必須在指定範圍 {0}
inScope.message={0}不合法
telephone.valid.message=電話格式不正確
veneer.export.head.veneerNo=貼皮編號
veneer.export.head.classificationName=分類名稱
@@ -1,5 +1,6 @@
inEnum.message=Must be within the specified range {0}
inScope.message={0} is illegal
telephone.valid.message=The phone format is incorrect
veneer.export.head.veneerNo=veneerNo
veneer.export.head.classificationName=classificationName
@@ -13,6 +13,59 @@ global.org.product.not.exist=账号登录异常,套餐信息不存在,请重
global.org.product.expired=组织产品套餐已过期,请续费后继续使用
global.not.login=账号未登录
order.not.exists=订单不存在
parent.order.not.exists=上级订单{0}不存在
order.can.not.cancel=订单已进入生产状态,无法作废
order.plate.is.plan=目标订单中存在已排单板件,请从排单中移除后再选择删除
order.check.customno.exists=自定义订单号已存在
order.body.not.exists=当前柜体不存在
order.body.del.no.target=请选择要删除的柜体
order.sub.type.not.support=不支持的子单类型,请重新选择
order.del.error=订单删除失败
order.restore.error=订单还原失败
order.source.query.error=订单源数据查询失败
order.plate.not.exists=板材不存在
order.parts.not.exists=订单配件不存在
order.custom.plateno.generate.orderno.rule.not.support.resetmode=自定义版编号订单序号规则中存在不支持的复位类型:{0}
order.custom.plateno.generate.body.rule.not.support.resetmode=自定义版编号柜体序号规则中存在不支持的复位类型:{0}
order.custom.plateno.generate.plate.rule.not.support.resetmode=自定义版编号板件序号规则中存在不支持的复位类型:{0}
order.custom.plateno.generate.org.custom.plateno.seq.modify.error=保存组织下自定义板编号序号配置失败,请联系客服处理
create.plan.order.update.concurrency.error=创建排单失败:订单号[{0}]板件数量已发生改变,请刷新后重新创建单排
create.plan.goods.update.concurrency.error=创建排单失败:材质[{0}]板件数量已发生改变,请刷新后重新创建单排
order.plate.update.concurrency.error=更新订单状态失败:订单号[{0}]板件数量已发生改变,请刷新后重新操作
goods.plate.update.concurrency.error=更新材质状态失败:材质[{0}]板件数量已发生改变,请刷新后重新操作
body.plate.update.concurrency.error=更新柜体状态失败:柜体[{0}]板件数量已发生改变,请刷新后重新操作
order.plate.empty=订单对应的板材数据为空,请检查是否为空单或重新拆单
order.plan.data.error=排单信息不存在,请重新进入或切换排单
order.plan.plate.error=当前排单对应的板材数据有异常,请查看板材信息
order.plan.orders.empty=当前排单对应的订单数据为空,请删除排单并重新创建排单
order.plan.plate.data.empty=当前排单对应的板材数据为空,请重新进行排单或检查订单对应的板材信息
order.plan.create.plate.num.reach.threshold.error=达到排单板件上限{}片,请减少选择板件数量后创建排单
order.goods.data.error=当前大板数据异常,请重新导入该订单
order.pack.data.null.error=当前包裹数据为空,请重新查看包裹数据
advanced.screening.config.error=当前筛选的配置有误,请重新进行配置
create.plan.plate.part.planned=当前选择部分小板已排单,请重新查询未排单信息后再次创建排单
create.plan.plate.empty=当前排单没有选择板材数据,请进行选择
del.plan.plate.data.error=当前删除的小板信息有误,请检查小板是否存在或重新创建排单
plan.process.config.is.null=排单:{0} 对应的方案组为空,请进行配置
plan.process.config.all.is.null=当前所选排单对应的方案组配置均为空,请重新进行方案组配置
plan.process.scheme.is.lock=当前排单已被锁定,无法修改方案组,请解锁后再进行修改
plan.optimize.data.all.opened=当前排单已全部开料,无法进行再次优化
plan.plate.is.cut=当前排单已有板材开料,无法修改
plan.scheme.data.error=当前方案组的优化信息有误,请重新选择方案组或重新导入排单再进行优化
plan.sort.data.error=已无可进行排序的数据,无法进行排序
plate.is.optimize=小板:{0},已开料,无法删除,请重新选择小板再删除
pack.data.null=当前包裹数据为空,无法进行操作,请删除包裹
plate.exists=商品编号已存在
remain.plate.not.exists=板材不存在
plate.goods.id.not.same=板材商品编号存在,请重新命名商品编号
plate.is.source=小板:{0} 为源小板,无法删除
plate.attr.group.exists=当前名称、材质、颜色、厚度、品牌的组合已存在,请检查后提交
veneer.not.exist=贴皮不存在
veneer.no.exist=贴皮编号已存在
@@ -13,6 +13,59 @@ global.org.product.not.exist=帳號登入異常,套餐資訊不存在,請重
global.org.product.expired=組織產品套餐已過期,請續費後繼續使用
global.not.login=賬號未登錄
order.not.exists=訂單不存在
parent.order.not.exists=上級訂單{0}不存在
order.can.not.cancel=訂單已進入生產狀態,無法作廢
order.plate.is.plan=目標訂單中存在已排單板件,請從排單中移除後再選擇刪除
order.check.customno.exists=自定義訂單號已存在
order.body.not.exists=當前櫃體不存在
order.body.del.no.target=請選擇要刪除的櫃體
order.sub.type.not.support=不支援的子單類型,請重新選擇
order.del.error=訂單刪除失敗
order.restore.error=訂單還原失敗
order.source.query.error=訂單來源資料查詢失敗
order.plate.not.exists=板材不存在
order.parts.not.exists=訂單配件不存在
order.custom.plateno.generate.orderno.rule.not.support.resetmode=自定義板編號訂單序號規則中存在不支援的重置類型:{0}
order.custom.plateno.generate.body.rule.not.support.resetmode=自定義板編號櫃體序號規則中存在不支援的重置類型:{0}
order.custom.plateno.generate.plate.rule.not.support.resetmode=自定義板編號板件序號規則中存在不支援的重置類型:{0}
order.custom.plateno.generate.org.custom.plateno.seq.modify.error=儲存組織下自定義板編號序號配置失敗,請聯繫客服處理
create.plan.order.update.concurrency.error=建立排單失敗:訂單號[{0}]板件數量已發生變更,請重新整理後再建立排單
create.plan.goods.update.concurrency.error=建立排單失敗:材質[{0}]板件數量已發生變更,請重新整理後再建立排單
order.plate.update.concurrency.error=更新訂單狀態失敗:訂單號[{0}]板件數量已發生變更,請重新整理後再操作
goods.plate.update.concurrency.error=更新材質狀態失敗:材質[{0}]板件數量已發生變更,請重新整理後再操作
body.plate.update.concurrency.error=更新櫃體狀態失敗:櫃體[{0}]板件數量已發生變更,請重新整理後再操作
order.plate.empty=訂單對應的板材資料為空,請檢查是否為空單或重新拆單
order.plan.data.error=排單信息不存在,請重新進入或切換排單
order.plan.plate.error=當前排單對應的板材資料異常,請查看板材資訊
order.plan.orders.empty=當前排單對應的訂單資料為空,請刪除排單並重新建立
order.plan.plate.data.empty=當前排單對應的板材資料為空,請重新排單或檢查訂單板材
order.plan.create.plate.num.reach.threshold.error=已達排單板件上限{}片,請減少選擇數量後再建立
order.goods.data.error=當前大板資料異常,請重新匯入訂單
order.pack.data.null.error=當前包裹資料為空,請重新查看
advanced.screening.config.error=當前篩選配置有誤,請重新設定
create.plan.plate.part.planned=當前選擇部分小板已排單,請重新查詢未排單資料後再操作
create.plan.plate.empty=當前排單未選擇板材資料,請先選擇
del.plan.plate.data.error=刪除的小板資料有誤,請檢查或重新建立排單
plan.process.config.is.null=排單:{0} 對應方案組為空,請先配置
plan.process.config.all.is.null=當前排單所有方案組配置均為空,請重新設定
plan.process.scheme.is.lock=當前排單已鎖定,無法修改方案組,請先解鎖
plan.optimize.data.all.opened=當前排單已全部開料,無法再次優化
plan.plate.is.cut=當前排單已有板材開料,無法修改
plan.scheme.data.error=方案組優化資料異常,請重新選擇或重新匯入
plan.sort.data.error=無可排序資料,無法排序
plate.is.optimize=小板:{0} 已開料,無法刪除,請重新選擇
pack.data.null=包裹資料為空,無法操作,請刪除包裹
plate.exists=商品編號已存在
remain.plate.not.exists=板材不存在
plate.goods.id.not.same=板材商品編號異常,請重新命名
plate.is.source=小板:{0} 為來源板,無法刪除
plate.attr.group.exists=名稱、材質、顏色、厚度、品牌組合已存在,請檢查後提交
veneer.not.exist=貼皮不存在
veneer.no.exist=貼皮編號已存在
@@ -13,6 +13,59 @@ global.org.product.not.exist=Account login exception: product package does not e
global.org.product.expired=The organization's product package has expired, please renew before continuing to use the service
global.not.login=The account is not logged in
order.not.exists=Order does not exist
parent.order.not.exists=Parent order {0} does not exist
order.can.not.cancel=Order has entered production and cannot be canceled
order.plate.is.plan=Some plates in the target order have been scheduled. Please remove them before deletion
order.check.customno.exists=Custom order number already exists
order.body.not.exists=Cabinet does not exist
order.body.del.no.target=Please select a cabinet to delete
order.sub.type.not.support=Unsupported sub-order type, please select again
order.del.error=Failed to delete order
order.restore.error=Failed to restore order
order.source.query.error=Failed to query order source data
order.plate.not.exists=Plate does not exist
order.parts.not.exists=Order parts do not exist
order.custom.plateno.generate.orderno.rule.not.support.resetmode=Unsupported reset mode in custom plate order number rule: {0}
order.custom.plateno.generate.body.rule.not.support.resetmode=Unsupported reset mode in cabinet numbering rule: {0}
order.custom.plateno.generate.plate.rule.not.support.resetmode=Unsupported reset mode in plate numbering rule: {0}
order.custom.plateno.generate.org.custom.plateno.seq.modify.error=Failed to save custom plate number sequence config, please contact support
create.plan.order.update.concurrency.error=Failed to create plan: plate count of order [{0}] has changed, please refresh and retry
create.plan.goods.update.concurrency.error=Failed to create plan: plate count of material [{0}] has changed, please refresh and retry
order.plate.update.concurrency.error=Failed to update order status: plate count of order [{0}] has changed, please refresh and retry
goods.plate.update.concurrency.error=Failed to update material status: plate count of material [{0}] has changed, please refresh and retry
body.plate.update.concurrency.error=Failed to update cabinet status: plate count of cabinet [{0}] has changed, please refresh and retry
order.plate.empty=No plate data found for this order, please check or re-split the order
order.plan.data.error=Plan data not found, please re-enter or switch plan
order.plan.plate.error=Plate data in the plan is invalid, please check
order.plan.orders.empty=No order data found in the plan, please delete and recreate
order.plan.plate.data.empty=No plate data in the plan, please re-plan or check order plates
order.plan.create.plate.num.reach.threshold.error=Plate count exceeds limit {}. Please reduce and retry
order.goods.data.error=Invalid board data, please re-import the order
order.pack.data.null.error=Package data is empty, please check again
advanced.screening.config.error=Invalid filtering configuration, please reconfigure
create.plan.plate.part.planned=Some selected plates are already planned, please query unplanned data again
create.plan.plate.empty=No plates selected for planning
del.plan.plate.data.error=Invalid plate data for deletion, please check or recreate plan
plan.process.config.is.null=Plan {0} has no process group configured
plan.process.config.all.is.null=All process group configurations are empty, please reconfigure
plan.process.scheme.is.lock=Plan is locked and cannot be modified, please unlock first
plan.optimize.data.all.opened=All plates have been cut, cannot optimize again
plan.plate.is.cut=Some plates have been cut, modification is not allowed
plan.scheme.data.error=Invalid optimization data, please reselect or re-import
plan.sort.data.error=No data available for sorting
plate.is.optimize=Plate {0} has been cut and cannot be deleted
pack.data.null=Package data is empty, operation not allowed, please delete package
plate.exists=Product number already exists
remain.plate.not.exists=Plate does not exist
plate.goods.id.not.same=Plate product number mismatch, please rename
plate.is.source=Plate {0} is a source plate and cannot be deleted
plate.attr.group.exists=Combination of name, material, color, thickness, and brand already exists
veneer.not.exist=veneer not exist
veneer.no.exist=veneer no already exists