diff --git a/cf-dependencies/pom.xml b/cf-dependencies/pom.xml index 748a3d17a..0c0122051 100644 --- a/cf-dependencies/pom.xml +++ b/cf-dependencies/pom.xml @@ -376,16 +376,6 @@ org.apache.skywalking apm-toolkit-opentracing ${skywalking.version} - - - - - - - - - - io.opentracing diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java index 604738cec..eb9269dfe 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/WebFilterOrderEnum.java @@ -7,30 +7,27 @@ package com.cf.imes.framework.common.enums; * * @author 晨丰科技 */ -public interface WebFilterOrderEnum { +public class WebFilterOrderEnum { - int CORS_FILTER = Integer.MIN_VALUE; + public static int CORS_FILTER = Integer.MIN_VALUE; - int TRACE_FILTER = CORS_FILTER + 1; + public static int TRACE_FILTER = CORS_FILTER + 1; - int ENV_TAG_FILTER = TRACE_FILTER + 1; + public static int ENV_TAG_FILTER = TRACE_FILTER + 1; - int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500; + public static int REQUEST_BODY_CACHE_FILTER = Integer.MIN_VALUE + 500; // OrderedRequestContextFilter 默认为 -105,用于国际化上下文等等 - int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面 + public static int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面 - int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面 + public static int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面 - int XSS_FILTER = -102; // 需要保证在 RequestBodyCacheFilter 后面 + public static int XSS_FILTER = -102; // 需要保证在 RequestBodyCacheFilter 后面 // Spring Security Filter 默认为 -100,可见 org.springframework.boot.autoconfigure.security.SecurityProperties 配置属性类 - int TENANT_SECURITY_FILTER = -99; // 需要保证在 Spring Security 过滤器后面 - - int FLOWABLE_FILTER = -98; // 需要保证在 Spring Security 过滤后面 - - int DEMO_FILTER = Integer.MAX_VALUE; + public static int TENANT_SECURITY_FILTER = -99; // 需要保证在 Spring Security 过滤器后面 + public static int FLOWABLE_FILTER = -98; // 需要保证在 Spring Security 过滤后面 } diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java index 586bc20fd..7d3b717ca 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/exception/enums/GlobalErrorCodeConstants.java @@ -30,11 +30,12 @@ public interface GlobalErrorCodeConstants { // ========== 服务端错误段 ========== - ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常"); + ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常,请联系客服处理"); ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启"); ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项"); ErrorCode ES_ERROR_UPDATE = new ErrorCode(503, "ES文档更新失败"); ErrorCode ES_ERROR_DELETE = new ErrorCode(504, "ES文档删除失败"); + ErrorCode DATA_EXCEPTION_ERROR = new ErrorCode(505, "数据异常,请联系客服处理"); // ========== 自定义错误段 ========== ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求 diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java new file mode 100644 index 000000000..463a2ecf0 --- /dev/null +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java @@ -0,0 +1,49 @@ +package com.cf.imes.framework.common.util.Assert; + + +import com.cf.imes.framework.common.exception.ErrorCode; +import org.springframework.util.ObjectUtils; + +import java.util.List; + +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; + + + +/** + * 断言工具类:用于代码抛出异常,提升代码的简洁度 + * + * @author 晨丰科技 + */ +public class AssertUtils { + + /* + * 判断是否为空,可以不用if语句,简化代码 + * */ + public static void notEmpty(List array, ErrorCode errorCode) { + if (ObjectUtils.isEmpty(array)) { + throw exception(errorCode); + } + } + + public static void empty(List array, ErrorCode errorCode) { + if (!ObjectUtils.isEmpty(array)) { + throw exception(errorCode); + } + } + + + public static void notEmpty(Object object, ErrorCode errorCode) { + if (object == null) { + throw exception(errorCode); + } + } + + + public static void notEmpty(List array ,Object object, ErrorCode errorCode) { + if (object == null || ObjectUtils.isEmpty(array)) { + throw exception(errorCode); + } + } + +} diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java index 77a3b4733..abe43560e 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/encrypt/AesUtils.java @@ -1,13 +1,12 @@ package com.cf.imes.framework.common.util.encrypt; -import cn.hutool.core.util.CharsetUtil; import lombok.extern.slf4j.Slf4j; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import java.security.GeneralSecurityException; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; @@ -23,7 +22,7 @@ public class AesUtils { private static final String AES_ALG = "AES"; - private static final String AES_CBC_PCK_ALG = "AES/CBC/PKCS5Padding"; + private static final String DEFAULT_CIPHER_ALGORITHM = "AES/GCM/NoPadding"; /** @@ -34,14 +33,14 @@ public class AesUtils { * @return * @throws Exception */ - public static String decrypt(String content, String aesKey) { + public static String decrypt(String base64Content, String aesKey) { try { - Cipher cipher = Cipher.getInstance(AES_CBC_PCK_ALG); - IvParameterSpec iv = new IvParameterSpec(initIv(AES_CBC_PCK_ALG)); - cipher.init(Cipher.DECRYPT_MODE, generateKey(aesKey.getBytes()), iv); - - byte[] cleanBytes = cipher.doFinal(Base64.getDecoder().decode(content.getBytes())); - return new String(cleanBytes, CharsetUtil.UTF_8); + byte[] content = Base64.getDecoder().decode(base64Content); + GCMParameterSpec params = new GCMParameterSpec(128, content, 0, 12); + Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); + cipher.init(Cipher.DECRYPT_MODE, getSecretKey(aesKey), params); + byte[] decryptData = cipher.doFinal(content, 12, content.length - 12); + return new String(decryptData); } catch (Exception e) { log.error("[AesUtils][decrypt]解密失败:{}", e.getMessage(), e); // nacos热发布配置,空字符串会导致nacos轮训刷新配置 @@ -56,44 +55,16 @@ public class AesUtils { * @return * @throws NoSuchAlgorithmException */ - private static SecretKey generateKey(byte[] bytes) throws NoSuchAlgorithmException { + private static SecretKey getSecretKey(String key) throws NoSuchAlgorithmException { // 生成随机数 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); // 设置随机数种子 - random.setSeed(bytes); + random.setSeed(key.getBytes()); // aes算法生成器 KeyGenerator keyGen = KeyGenerator.getInstance(AES_ALG); keyGen.init(128, random); // 使用128位的密钥 - return keyGen.generateKey(); - } - - - /** - * 初始向量的方法, 全部为0. 这里的写法适合于其它算法,针对AES算法的话,IV值一定是128位的(16字节). - * - * @param fullAlg - * @return - * @throws GeneralSecurityException - */ - private static byte[] initIv(String fullAlg) { - - try { - Cipher cipher = Cipher.getInstance(fullAlg); - int blockSize = cipher.getBlockSize(); - byte[] iv = new byte[blockSize]; - for (int i = 0; i < blockSize; ++i) { - iv[i] = 0; - } - return iv; - } catch (Exception e) { - - int blockSize = 16; - byte[] iv = new byte[blockSize]; - for (int i = 0; i < blockSize; ++i) { - iv[i] = 0; - } - return iv; - } + SecretKey secretKey = keyGen.generateKey(); + return new SecretKeySpec(secretKey.getEncoded(), AES_ALG); } } diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java index 31c0bd586..238b9f90d 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/json/JsonUtils.java @@ -2,7 +2,6 @@ package com.cf.imes.framework.common.util.json; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.PrimitiveArrayUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.type.TypeReference; @@ -144,7 +143,7 @@ public class JsonUtils { } public static List parseArray(String text, Class clazz) { - if (StrUtil.isEmpty(text)) { + if (CharSequenceUtil.isEmpty(text)) { return new ArrayList<>(); } try { @@ -156,7 +155,7 @@ public class JsonUtils { } public static List parseArray(String text, String path, Class clazz) { - if (StrUtil.isEmpty(text)) { + if (CharSequenceUtil.isEmpty(text)) { return null; } try { diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java index 3c46e3dcc..f99eb7cfe 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/number/NumberUtils.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.common.util.number; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; /** * 数字的工具类,补全 {@link cn.hutool.core.util.NumberUtil} 的功能 @@ -10,7 +10,7 @@ import cn.hutool.core.util.StrUtil; public class NumberUtils { public static Long parseLong(String str) { - return StrUtil.isNotEmpty(str) ? Long.valueOf(str) : null; + return CharSequenceUtil.isNotEmpty(str) ? Long.valueOf(str) : null; } /** diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java index 0875b5a70..43de06bf0 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/servlet/ServletUtils.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.common.util.servlet; import cn.hutool.core.io.IoUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.extra.servlet.ServletUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import org.springframework.http.MediaType; @@ -89,7 +89,7 @@ public class ServletUtils { } public static boolean isJsonRequest(ServletRequest request) { - return StrUtil.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE); + return CharSequenceUtil.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE); } public static String getBody(HttpServletRequest request) { diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java index 41956d202..1f80ac960 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/string/StrUtils.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.common.util.string; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.StrUtil; import java.util.Arrays; import java.util.Collection; @@ -16,7 +16,7 @@ import java.util.stream.Collectors; public class StrUtils { public static String maxLength(CharSequence str, int maxLength) { - return StrUtil.maxLength(str, maxLength - 3); // -3 的原因,是该方法会补充 ... 恰好 + return CharSequenceUtil.maxLength(str, maxLength - 3); // -3 的原因,是该方法会补充 ... 恰好 } /** @@ -28,12 +28,12 @@ public class StrUtils { * @since 3.0.6 */ public static boolean startWithAny(String str, Collection prefixes) { - if (StrUtil.isEmpty(str) || ArrayUtil.isEmpty(prefixes)) { + if (CharSequenceUtil.isEmpty(str) || ArrayUtil.isEmpty(prefixes)) { return false; } for (CharSequence suffix : prefixes) { - if (StrUtil.startWith(str, suffix, false)) { + if (CharSequenceUtil.startWith(str, suffix, false)) { return true; } } @@ -41,12 +41,12 @@ public class StrUtils { } public static List splitToLong(String value, CharSequence separator) { - long[] longs = StrUtil.splitToLong(value, separator); + long[] longs = CharSequenceUtil.splitToLong(value, separator); return Arrays.stream(longs).boxed().collect(Collectors.toList()); } public static List splitToInteger(String value, CharSequence separator) { - int[] integers = StrUtil.splitToInt(value, separator); + int[] integers = CharSequenceUtil.splitToInt(value, separator); return Arrays.stream(integers).boxed().collect(Collectors.toList()); } @@ -58,7 +58,7 @@ public class StrUtils { * @return 移除后的字符串 */ public static String removeLineContains(String content, String sequence) { - if (StrUtil.isEmpty(content) || StrUtil.isEmpty(sequence)) { + if (CharSequenceUtil.isEmpty(content) || CharSequenceUtil.isEmpty(sequence)) { return content; } return Arrays.stream(content.split("\n")) diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java index fc0f420a2..70897a93c 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/InEnumCollectionValidator.java @@ -34,7 +34,7 @@ public class InEnumCollectionValidator implements ConstraintValidator { // 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值) context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值 context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate() - .replaceAll("\\{value}", values.toString())).addConstraintViolation(); // 重新添加错误提示语句 + .replace("\\{value}", values.toString())).addConstraintViolation(); // 重新添加错误提示语句 return false; } diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java index 9ecd27c4c..5e8fc95f6 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/MobileValidator.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.common.validation; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.validation.ValidationUtils; import javax.validation.ConstraintValidator; @@ -8,14 +8,10 @@ import javax.validation.ConstraintValidatorContext; public class MobileValidator implements ConstraintValidator { - @Override - public void initialize(Mobile annotation) { - } - @Override public boolean isValid(String value, ConstraintValidatorContext context) { // 如果手机号为空,默认不校验,即校验通过 - if (StrUtil.isEmpty(value)) { + if (CharSequenceUtil.isEmpty(value)) { return true; } // 校验手机 diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java index ee3f698cd..6ce44cb45 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/validation/TelephoneValidator.java @@ -8,10 +8,6 @@ import javax.validation.ConstraintValidatorContext; public class TelephoneValidator implements ConstraintValidator { - @Override - public void initialize(Telephone annotation) { - } - @Override public boolean isValid(String value, ConstraintValidatorContext context) { // 如果手机号为空,默认不校验,即校验通过 diff --git a/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java b/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java index fb1e9b3a3..84d73d585 100644 --- a/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java +++ b/cf-framework/cf-spring-boot-starter-biz-data-permission/src/main/java/com/cf/imes/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java @@ -1,8 +1,8 @@ package com.cf.imes.framework.datapermission.core.rule.dept; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.cf.imes.framework.common.enums.UserTypeEnum; import com.cf.imes.framework.common.util.collection.CollectionUtils; import com.cf.imes.framework.common.util.json.JsonUtils; @@ -147,7 +147,7 @@ public class DeptDataPermissionRule implements DataPermissionRule { private Expression buildDeptExpression(String tableName, Alias tableAlias, Set deptIds) { // 如果不存在配置,则无需作为条件 String columnName = deptColumns.get(tableName); - if (StrUtil.isEmpty(columnName)) { + if (CharSequenceUtil.isEmpty(columnName)) { return null; } // 如果为空,则无条件 @@ -165,7 +165,7 @@ public class DeptDataPermissionRule implements DataPermissionRule { return null; } String columnName = userColumns.get(tableName); - if (StrUtil.isEmpty(columnName)) { + if (CharSequenceUtil.isEmpty(columnName)) { return null; } // 拼接条件 diff --git a/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java b/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java index d728ff7d4..b7fb828ff 100644 --- a/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java +++ b/cf-framework/cf-spring-boot-starter-biz-operatelog/src/main/java/com/cf/imes/framework/operatelog/core/aop/OperateLogAspect.java @@ -2,9 +2,8 @@ package com.cf.imes.framework.operatelog.core.aop; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.StrUtil; -import com.cf.imes.framework.common.enums.UserTypeEnum; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.monitor.TracerUtils; @@ -172,15 +171,15 @@ public class OperateLogAspect { if (operateLog != null) { operateLogObj.setModule(operateLog.module()); } - if (StrUtil.isEmpty(operateLogObj.getModule())) { + if (CharSequenceUtil.isEmpty(operateLogObj.getModule())) { Tag tag = getClassAnnotation(joinPoint, Tag.class); if (tag != null) { // 优先读取 @Tag 的 name 属性 - if (StrUtil.isNotEmpty(tag.name())) { + if (CharSequenceUtil.isNotEmpty(tag.name())) { operateLogObj.setModule(tag.name()); } // 没有的话,读取 @API 的 description 属性 - if (StrUtil.isEmpty(operateLogObj.getModule()) && ArrayUtil.isNotEmpty(tag.description())) { + if (CharSequenceUtil.isEmpty(operateLogObj.getModule()) && ArrayUtil.isNotEmpty(tag.description())) { operateLogObj.setModule(tag.description()); } } @@ -189,7 +188,7 @@ public class OperateLogAspect { if (operateLog != null) { operateLogObj.setName(operateLog.name()); } - if (StrUtil.isEmpty(operateLogObj.getName()) && operation != null) { + if (CharSequenceUtil.isEmpty(operateLogObj.getName()) && operation != null) { operateLogObj.setName(operation.summary()); } // type 属性 diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java index 34b483a23..362a38f02 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/job/OrganJobAspect.java @@ -2,7 +2,7 @@ package com.cf.imes.framework.organ.core.job; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.ExceptionUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.organ.core.service.OrganFrameworkService; import com.cf.imes.framework.organ.core.util.OrganUtils; @@ -51,7 +51,7 @@ public class OrganJobAspect { } catch (Throwable e) { results.put(organId, ExceptionUtil.getRootCauseMessage(e)); // 打印异常 - XxlJobHelper.log(StrUtil.format("[多组织({}) 执行任务({}),发生异常:{}]", + XxlJobHelper.log(CharSequenceUtil.format("[多组织({}) 执行任务({}),发生异常:{}]", organId, joinPoint.getSignature(), ExceptionUtils.getStackTrace(e))); } }); diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java index ac1d22c23..7856f153c 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/kafka/OrganKafkaEnvironmentPostProcessor.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.organ.core.mq.kafka; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; @@ -23,7 +23,7 @@ public class OrganKafkaEnvironmentPostProcessor implements EnvironmentPostProces // 添加 OrganKafkaProducerInterceptor 拦截器 try { String value = environment.getProperty(PROPERTY_KEY_INTERCEPTOR_CLASSES); - if (StrUtil.isEmpty(value)) { + if (CharSequenceUtil.isEmpty(value)) { value = OrganKafkaProducerInterceptor.class.getName(); } else { value += "," + OrganKafkaProducerInterceptor.class.getName(); diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java index c5c5cd41a..035c52039 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/redis/OrganRedisMessageInterceptor.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.organ.core.mq.redis; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.mq.redis.core.interceptor.RedisMessageInterceptor; import com.cf.imes.framework.mq.redis.core.message.AbstractRedisMessage; import com.cf.imes.framework.organ.core.context.OrganContextHolder; @@ -28,7 +28,7 @@ public class OrganRedisMessageInterceptor implements RedisMessageInterceptor { @Override public void consumeMessageBefore(AbstractRedisMessage message) { String organIdStr = message.getHeader(HEADER_ORGAN_ID); - if (StrUtil.isNotEmpty(organIdStr)) { + if (CharSequenceUtil.isNotEmpty(organIdStr)) { OrganContextHolder.setOrganId(Long.valueOf(organIdStr)); } } diff --git a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java index 028e4d174..5c732a625 100644 --- a/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java +++ b/cf-framework/cf-spring-boot-starter-biz-organ/src/main/java/com/cf/imes/framework/organ/core/mq/rocketmq/OrganRocketMQConsumeMessageHook.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.organ.core.mq.rocketmq; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import org.apache.rocketmq.client.hook.ConsumeMessageContext; import org.apache.rocketmq.client.hook.ConsumeMessageHook; @@ -33,7 +33,7 @@ public class OrganRocketMQConsumeMessageHook implements ConsumeMessageHook { Assert.isTrue(messages.size() == 1, "消息条数({})不正确", messages.size()); // 设置组织编号 String organId = messages.get(0).getUserProperty(HEADER_ORGAN_ID); - if (StrUtil.isNotEmpty(organId)) { + if (CharSequenceUtil.isNotEmpty(organId)) { OrganContextHolder.setOrganId(Long.parseLong(organId)); } } diff --git a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java index fd49fef79..6de95159a 100644 --- a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java +++ b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java @@ -4,7 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.http.HttpUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.ObjectUtils; @@ -98,7 +98,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient) () -> { - throw new IllegalArgumentException(StrUtil.format("body({}) 的 trade_status 不正确", body)); + throw new IllegalArgumentException(CharSequenceUtil.format("body({}) 的 trade_status 不正确", body)); }); return PayOrderRespDTO.of(status, bodyObj.get("trade_no"), bodyObj.get("seller_id"), parseTime(params.get("gmt_payment")), bodyObj.get("out_trade_no"), body); @@ -126,7 +126,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient { - throw new IllegalArgumentException(StrUtil.format("body({}) 的 trade_status 不正确", response.getBody())); + throw new IllegalArgumentException(CharSequenceUtil.format("body({}) 的 trade_status 不正确", response.getBody())); }); return PayOrderRespDTO.of(status, response.getTradeNo(), response.getBuyerUserId(), LocalDateTimeUtil.of(response.getSendPayDate()), outTradeNo, response); @@ -248,11 +248,11 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient { @Override protected void doInit() { + // nothing } @Override diff --git a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java index 170bacc48..2223d38e5 100644 --- a/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java +++ b/cf-framework/cf-spring-boot-starter-biz-pay/src/main/java/com/cf/imes/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java @@ -5,7 +5,7 @@ import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.TemporalAccessorUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.io.FileUtils; import com.cf.imes.framework.common.util.object.ObjectUtils; import com.cf.imes.framework.pay.core.client.dto.order.PayOrderRespDTO; @@ -43,6 +43,12 @@ import static cn.hutool.core.date.DatePattern.*; @Slf4j public abstract class AbstractWxPayClient extends AbstractPayClient { + private static final String UNKOWN_API_VERSION_NOTIFICATION = "未知的 API 版本(%s)"; + + private static final String SUCCESS_CODE = "SUCCESS"; + + private static final String PROCESSING_STATUS_CODE = "PROCESSING"; + protected WxPayService client; public AbstractWxPayClient(Long channelId, String channelCode, WxPayClientConfig config) { @@ -63,10 +69,10 @@ public abstract class AbstractWxPayClient extends AbstractPayClient idx @@ -77,7 +77,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { document.setUpdateTime(simpleDateFormat.format(date)); IndexRequest.Builder indexReqBuilder = new IndexRequest.Builder<>(); indexReqBuilder.index(idxName); - if (StrUtil.isBlank(idxId)) { + if (CharSequenceUtil.isBlank(idxId)) { idxId = snowflake.nextIdStr(); } indexReqBuilder.id(idxId); @@ -94,7 +94,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { */ @Override public IndexResponse createByJson(String idxName, String idxId, String jsonContent) throws Exception { - if (StrUtil.isBlank(idxId)) { + if (CharSequenceUtil.isBlank(idxId)) { idxId = snowflake.nextIdStr(); } String finalIdxId = idxId; @@ -136,7 +136,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { Date date = new Date(); LocalDateTime now = LocalDateTime.now(); documents.forEach(esDocument -> { - if (StrUtil.isBlank(esDocument.getId())) { + if (CharSequenceUtil.isBlank(esDocument.getId())) { esDocument.setId(snowflake.nextIdStr()); } esDocument.setCreator(loginUser.getNickname()); @@ -169,7 +169,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { Date date = new Date(); documents.forEach(esDocument -> { // 假设esDocument有一个ID集。如果没有,则应该抛出异常或进行相应的处理。 - if (StrUtil.isBlank(esDocument.getId())) { + if (CharSequenceUtil.isBlank(esDocument.getId())) { throw new IllegalArgumentException("更新操作的文档ID不能为空"); } esDocument.setUpdater(loginUser.getNickname()); diff --git a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/config/EnvEnvironmentPostProcessor.java b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/config/EnvEnvironmentPostProcessor.java index 0874e1dfa..841f8be83 100644 --- a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/config/EnvEnvironmentPostProcessor.java +++ b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/config/EnvEnvironmentPostProcessor.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.env.config; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.collection.SetUtils; import com.cf.imes.framework.env.core.util.EnvUtils; import org.springframework.boot.SpringApplication; @@ -25,20 +25,20 @@ public class EnvEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { // 0. 设置 ${HOST_NAME} 兜底的环境变量 - String hostNameKey = StrUtil.subBetween(EnvUtils.HOST_NAME_VALUE, "{", "}"); + String hostNameKey = CharSequenceUtil.subBetween(EnvUtils.HOST_NAME_VALUE, "{", "}"); if (!environment.containsProperty(hostNameKey)) { environment.getSystemProperties().put(hostNameKey, EnvUtils.getHostName()); } // 1.1 如果没有 chenfeng.env.tag 配置项,则不进行配置项的修改 String tag = EnvUtils.getTag(environment); - if (StrUtil.isEmpty(tag)) { + if (CharSequenceUtil.isEmpty(tag)) { return; } // 1.2 需要修改的配置项 for (String targetTagKey : TARGET_TAG_KEYS) { String targetTagValue = environment.getProperty(targetTagKey); - if (StrUtil.isNotEmpty(targetTagValue)) { + if (CharSequenceUtil.isNotEmpty(targetTagValue)) { continue; } environment.getSystemProperties().put(targetTagKey, tag); diff --git a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvLoadBalancerClient.java b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvLoadBalancerClient.java index 9a9246394..40c4f7874 100644 --- a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvLoadBalancerClient.java +++ b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvLoadBalancerClient.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.env.core.fegin; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.collection.CollectionUtils; import com.cf.imes.framework.env.core.context.EnvContextHolder; import com.cf.imes.framework.env.core.util.EnvUtils; @@ -51,7 +51,7 @@ public class EnvLoadBalancerClient implements ReactorServiceInstanceLoadBalancer public Mono> choose(Request request) { // 情况一,没有 tag 时,使用默认的 reactiveLoadBalancer 实现负载均衡 String tag = EnvContextHolder.getTag(); - if (StrUtil.isEmpty(tag)) { + if (CharSequenceUtil.isEmpty(tag)) { return Mono.from(reactiveLoadBalancer.choose(request)); } diff --git a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvRequestInterceptor.java b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvRequestInterceptor.java index e53175c64..cbe9e9f79 100644 --- a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvRequestInterceptor.java +++ b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/fegin/EnvRequestInterceptor.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.env.core.fegin; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.env.core.context.EnvContextHolder; import com.cf.imes.framework.env.core.util.EnvUtils; import feign.RequestInterceptor; @@ -16,7 +16,7 @@ public class EnvRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { String tag = EnvContextHolder.getTag(); - if (StrUtil.isNotEmpty(tag)) { + if (CharSequenceUtil.isNotEmpty(tag)) { EnvUtils.setTag(requestTemplate, tag); } } diff --git a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/web/EnvWebFilter.java b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/web/EnvWebFilter.java index e3a1b554a..b181a441c 100644 --- a/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/web/EnvWebFilter.java +++ b/cf-framework/cf-spring-boot-starter-env/src/main/java/com/cf/imes/framework/env/core/web/EnvWebFilter.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.env.core.web; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.env.core.context.EnvContextHolder; import com.cf.imes.framework.env.core.util.EnvUtils; import org.springframework.web.filter.OncePerRequestFilter; @@ -24,7 +24,7 @@ public class EnvWebFilter extends OncePerRequestFilter { throws ServletException, IOException { // 如果没有 tag,则走默认的流程 String tag = EnvUtils.getTag(request); - if (StrUtil.isEmpty(tag)) { + if (CharSequenceUtil.isEmpty(tag)) { chain.doFilter(request, response); return; } diff --git a/cf-framework/cf-spring-boot-starter-excel/src/main/java/com/cf/imes/framework/excel/core/util/ExcelUtils.java b/cf-framework/cf-spring-boot-starter-excel/src/main/java/com/cf/imes/framework/excel/core/util/ExcelUtils.java index 420bfa514..4141226c7 100644 --- a/cf-framework/cf-spring-boot-starter-excel/src/main/java/com/cf/imes/framework/excel/core/util/ExcelUtils.java +++ b/cf-framework/cf-spring-boot-starter-excel/src/main/java/com/cf/imes/framework/excel/core/util/ExcelUtils.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.excel.core.util; -import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.converters.longconverter.LongStringConverter; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import org.springframework.web.multipart.MultipartFile; @@ -32,7 +32,7 @@ public class ExcelUtils { public static void write(HttpServletResponse response, String filename, String sheetName, Class head, List data) throws IOException { // 输出 Excel - EasyExcel.write(response.getOutputStream(), head) + EasyExcelFactory.write(response.getOutputStream(), head) .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度 .registerConverter(new LongStringConverter()) // 避免 Long 类型丢失精度 @@ -43,7 +43,7 @@ public class ExcelUtils { } public static List read(MultipartFile file, Class head) throws IOException { - return EasyExcel.read(file.getInputStream(), head, null) + return EasyExcelFactory.read(file.getInputStream(), head, null) .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 .doReadAllSync(); } diff --git a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/AbstractFileClient.java b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/AbstractFileClient.java index 4fd88e1f2..69ff4ce6f 100644 --- a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/AbstractFileClient.java +++ b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/AbstractFileClient.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.file.core.client; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import lombok.extern.slf4j.Slf4j; /** @@ -63,7 +63,7 @@ public abstract class AbstractFileClient implem * @return URL 访问地址 */ protected String formatFileUrl(String domain, String path) { - return StrUtil.format("{}/admin-api/infra/file/{}/get/{}", domain, getId(), path); + return CharSequenceUtil.format("{}/admin-api/infra/file/{}/get/{}", domain, getId(), path); } } diff --git a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/db/DBFileClient.java b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/db/DBFileClient.java index 14cbf542c..09de278b8 100644 --- a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/db/DBFileClient.java +++ b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/db/DBFileClient.java @@ -18,6 +18,7 @@ public class DBFileClient extends AbstractFileClient { @Override protected void doInit() { + // nothing } @Override diff --git a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/ftp/FtpFileClient.java b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/ftp/FtpFileClient.java index fe21d0f19..0426f9e36 100644 --- a/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/ftp/FtpFileClient.java +++ b/cf-framework/cf-spring-boot-starter-file/src/main/java/com/cf/imes/framework/file/core/client/ftp/FtpFileClient.java @@ -1,8 +1,9 @@ package com.cf.imes.framework.file.core.client.ftp; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.extra.ftp.Ftp; import cn.hutool.extra.ftp.FtpException; import cn.hutool.extra.ftp.FtpMode; @@ -27,10 +28,10 @@ public class FtpFileClient extends AbstractFileClient { @Override protected void doInit() { // 把配置的 \ 替换成 /, 如果路径配置 \a\test, 替换成 /a/test, 替换方法已经处理 null 情况 - config.setBasePath(StrUtil.replace(config.getBasePath(), StrUtil.BACKSLASH, StrUtil.SLASH)); + config.setBasePath(CharSequenceUtil.replace(config.getBasePath(), StrPool.BACKSLASH, StrPool.SLASH)); // ftp的路径是 / 结尾 - if (!config.getBasePath().endsWith(StrUtil.SLASH)) { - config.setBasePath(config.getBasePath() + StrUtil.SLASH); + if (!config.getBasePath().endsWith(StrPool.SLASH)) { + config.setBasePath(config.getBasePath() + StrPool.SLASH); } // 初始化 Ftp 对象 this.ftp = new Ftp(config.getHost(), config.getPort(), config.getUsername(), config.getPassword(), @@ -42,11 +43,11 @@ public class FtpFileClient extends AbstractFileClient { // 执行写入 String filePath = getFilePath(path); String fileName = FileUtil.getName(filePath); - String dir = StrUtil.removeSuffix(filePath, fileName); + String dir = CharSequenceUtil.removeSuffix(filePath, fileName); ftp.reconnectIfTimeout(); boolean success = ftp.upload(dir, fileName, new ByteArrayInputStream(content)); if (!success) { - throw new FtpException(StrUtil.format("上传文件到目标目录 ({}) 失败", filePath)); + throw new FtpException(CharSequenceUtil.format("上传文件到目标目录 ({}) 失败", filePath)); } // 拼接返回路径 return super.formatFileUrl(config.getDomain(), path); @@ -63,7 +64,7 @@ public class FtpFileClient extends AbstractFileClient { public byte[] getContent(String path) { String filePath = getFilePath(path); String fileName = FileUtil.getName(filePath); - String dir = StrUtil.removeSuffix(filePath, fileName); + String dir = CharSequenceUtil.removeSuffix(filePath, fileName); ByteArrayOutputStream out = new ByteArrayOutputStream(); ftp.reconnectIfTimeout(); ftp.download(dir, fileName, out); diff --git a/cf-framework/cf-spring-boot-starter-monitor/src/main/java/com/cf/imes/framework/tracer/core/aop/BizTraceAspect.java b/cf-framework/cf-spring-boot-starter-monitor/src/main/java/com/cf/imes/framework/tracer/core/aop/BizTraceAspect.java index a80718e21..e3a53be1d 100644 --- a/cf-framework/cf-spring-boot-starter-monitor/src/main/java/com/cf/imes/framework/tracer/core/aop/BizTraceAspect.java +++ b/cf-framework/cf-spring-boot-starter-monitor/src/main/java/com/cf/imes/framework/tracer/core/aop/BizTraceAspect.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.tracer.core.aop; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.tracer.core.annotation.BizTrace; import com.cf.imes.framework.common.util.spring.SpringExpressionUtils; import com.cf.imes.framework.tracer.core.util.TracerFrameworkUtils; @@ -55,7 +55,7 @@ public class BizTraceAspect { private String getOperationName(ProceedingJoinPoint joinPoint, BizTrace trace) { // 自定义操作名 - if (StrUtil.isNotEmpty(trace.operationName())) { + if (CharSequenceUtil.isNotEmpty(trace.operationName())) { return BIZ_OPERATION_NAME_PREFIX + trace.operationName(); } // 默认操作名,使用方法名 diff --git a/cf-framework/cf-spring-boot-starter-mq/src/main/java/com/cf/imes/framework/mq/redis/config/ChenfengRedisMQConsumerAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-mq/src/main/java/com/cf/imes/framework/mq/redis/config/ChenfengRedisMQConsumerAutoConfiguration.java index 9e4239c29..ad702edc0 100644 --- a/cf-framework/cf-spring-boot-starter-mq/src/main/java/com/cf/imes/framework/mq/redis/config/ChenfengRedisMQConsumerAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-mq/src/main/java/com/cf/imes/framework/mq/redis/config/ChenfengRedisMQConsumerAutoConfiguration.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.mq.redis.config; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.system.SystemUtil; import com.cf.imes.framework.common.enums.DocumentEnum; import com.cf.imes.framework.mq.redis.core.RedisMQTemplate; @@ -162,9 +162,9 @@ public class ChenfengRedisMQConsumerAutoConfiguration { Properties info = redisTemplate.execute((RedisCallback) RedisServerCommands::info); String version = MapUtil.getStr(info, "redis_version"); // 校验最低版本必须大于等于 5.0.0 - int majorVersion = Integer.parseInt(StrUtil.subBefore(version, '.', false)); + int majorVersion = Integer.parseInt(CharSequenceUtil.subBefore(version, '.', false)); if (majorVersion < 5) { - throw new IllegalStateException(StrUtil.format("您当前的 Redis 版本为 {},小于最低要求的 5.0.0 版本!" + + throw new IllegalStateException(CharSequenceUtil.format("您当前的 Redis 版本为 {},小于最低要求的 5.0.0 版本!" + "请参考 {} 文档进行安装。", version, DocumentEnum.REDIS_INSTALL.getUrl())); } } diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/datasource/config/ChenfengDataSourceAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/datasource/config/ChenfengDataSourceAutoConfiguration.java index 3c1eec52a..4762faf64 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/datasource/config/ChenfengDataSourceAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/datasource/config/ChenfengDataSourceAutoConfiguration.java @@ -29,7 +29,7 @@ public class ChenfengDataSourceAutoConfiguration { DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); // 提取 common.js 的配置路径 String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; - String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); + String commonJsPattern = pattern.replace("\\*", "js/common.js"); // 创建 DruidAdRemoveFilter Bean FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new DruidAdRemoveFilter()); diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/ChenfengMybatisAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/ChenfengMybatisAutoConfiguration.java index 35f1255c5..ff3a21edb 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/ChenfengMybatisAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/ChenfengMybatisAutoConfiguration.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.mybatis.config; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.framework.mybatis.core.handler.DefaultDBFieldHandler; @@ -70,7 +70,7 @@ public class ChenfengMybatisAutoConfiguration { } } // 找不到合适的 IKeyGenerator 实现类 - throw new IllegalArgumentException(StrUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType)); + throw new IllegalArgumentException(CharSequenceUtil.format("DbType{} 找不到合适的 IKeyGenerator 实现类", dbType)); } } diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java index 79aa7c061..84779be99 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.mybatis.config; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.collection.SetUtils; import com.cf.imes.framework.mybatis.core.enums.SqlConstants; import com.cf.imes.framework.mybatis.core.util.JdbcUtils; @@ -70,7 +70,7 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor public void setJobStoreDriverIfPresent(ConfigurableEnvironment environment, DbType dbType) { String driverClass = environment.getProperty(QUARTZ_JOB_STORE_DRIVER_KEY); - if (StrUtil.isNotEmpty(driverClass)) { + if (CharSequenceUtil.isNotEmpty(driverClass)) { return; } // 根据 dbType 类型,获取对应的 driverClass @@ -88,18 +88,18 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor break; } // 设置 driverClass 变量 - if (StrUtil.isNotEmpty(driverClass)) { + if (CharSequenceUtil.isNotEmpty(driverClass)) { environment.getSystemProperties().put(QUARTZ_JOB_STORE_DRIVER_KEY, driverClass); } } public static DbType getDbType(ConfigurableEnvironment environment) { String primary = environment.getProperty(DATASOURCE_DYNAMIC_KEY + "." + "primary"); - if (StrUtil.isEmpty(primary)) { + if (CharSequenceUtil.isEmpty(primary)) { return null; } String url = environment.getProperty(DATASOURCE_DYNAMIC_KEY + ".datasource." + primary + ".url"); - if (StrUtil.isEmpty(url)) { + if (CharSequenceUtil.isEmpty(url)) { return null; } return JdbcUtils.getDbType(url); diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/event/ChenfengDataSourceEncryptInitEvent.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/event/ChenfengDataSourceEncryptInitEvent.java index d21405aeb..f082c4ce6 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/event/ChenfengDataSourceEncryptInitEvent.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/event/ChenfengDataSourceEncryptInitEvent.java @@ -36,6 +36,6 @@ public class ChenfengDataSourceEncryptInitEvent implements DataSourceInitEvent { */ @Override public void afterCreate(DataSource dataSource) { - + // nothing } } diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/handler/DefaultDBFieldHandler.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/handler/DefaultDBFieldHandler.java index 28f59b385..f7592205d 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/handler/DefaultDBFieldHandler.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/handler/DefaultDBFieldHandler.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.mybatis.core.handler; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.mybatis.OAuth2AccessTokenDO; import com.cf.imes.framework.mybatis.core.dataobject.BaseDO; @@ -137,7 +137,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler { HttpServletRequest request = WebFrameworkUtils.getRequest(); // 1. 获得 Token。优先级:Header > Parameter String token = request.getHeader(headerName); - if (StrUtil.isEmpty(token)) { + if (CharSequenceUtil.isEmpty(token)) { token = request.getParameter(parameterName); } if (!StringUtils.hasText(token)) { diff --git a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/util/MyBatisUtils.java b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/util/MyBatisUtils.java index 01414e53d..1fd6bad0e 100644 --- a/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/util/MyBatisUtils.java +++ b/cf-framework/cf-spring-boot-starter-mybatis/src/main/java/com/cf/imes/framework/mybatis/core/util/MyBatisUtils.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.mybatis.core.util; -import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.collection.CollUtil; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.SortingField; import com.baomidou.mybatisplus.core.metadata.OrderItem; @@ -32,7 +32,7 @@ public class MyBatisUtils { // 页码 + 数量 Page page = new Page<>(pageParam.getPageNo(), pageParam.getPageSize()); // 排序字段 - if (!CollectionUtil.isEmpty(sortingFields)) { + if (!CollUtil.isEmpty(sortingFields)) { page.addOrder(sortingFields.stream().map(sortingField -> SortingField.ORDER_ASC.equals(sortingField.getOrder()) ? OrderItem.asc(sortingField.getField()) : OrderItem.desc(sortingField.getField())) .collect(Collectors.toList())); diff --git a/cf-framework/cf-spring-boot-starter-protection/src/main/java/com/cf/imes/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java b/cf-framework/cf-spring-boot-starter-protection/src/main/java/com/cf/imes/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java index 1320a45f1..7df9603b7 100644 --- a/cf-framework/cf-spring-boot-starter-protection/src/main/java/com/cf/imes/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java +++ b/cf-framework/cf-spring-boot-starter-protection/src/main/java/com/cf/imes/framework/idempotent/core/keyresolver/impl/DefaultIdempotentKeyResolver.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.idempotent.core.keyresolver.impl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.crypto.SecureUtil; import com.cf.imes.framework.idempotent.core.annotation.Idempotent; import com.cf.imes.framework.idempotent.core.keyresolver.IdempotentKeyResolver; @@ -18,7 +18,7 @@ public class DefaultIdempotentKeyResolver implements IdempotentKeyResolver { @Override public String resolver(JoinPoint joinPoint, Idempotent idempotent) { String methodName = joinPoint.getSignature().toString(); - String argsStr = StrUtil.join(",", joinPoint.getArgs()); + String argsStr = CharSequenceUtil.join(",", joinPoint.getArgs()); return SecureUtil.md5(methodName + argsStr); } diff --git a/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/config/ChenfengCacheAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/config/ChenfengCacheAutoConfiguration.java index 542422389..7a20c7a78 100644 --- a/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/config/ChenfengCacheAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-redis/src/main/java/com/cf/imes/framework/redis/config/ChenfengCacheAutoConfiguration.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.redis.config; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.StrPool; import com.cf.imes.framework.redis.core.TimeoutRedisCacheManager; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.cache.CacheProperties; @@ -44,10 +44,10 @@ public class ChenfengCacheAutoConfiguration { config = config.computePrefixWith(cacheName -> { String keyPrefix = cacheProperties.getRedis().getKeyPrefix(); if (StringUtils.hasText(keyPrefix)) { - keyPrefix = keyPrefix.lastIndexOf(StrUtil.COLON) == -1 ? keyPrefix + StrUtil.COLON : keyPrefix; - return keyPrefix + cacheName + StrUtil.COLON; + keyPrefix = keyPrefix.lastIndexOf(StrPool.COLON) == -1 ? keyPrefix + StrPool.COLON : keyPrefix; + return keyPrefix + cacheName + StrPool.COLON; } - return cacheName + StrUtil.COLON; + return cacheName + StrPool.COLON; }); // 设置使用 JSON 序列化方式 config = config.serializeValuesWith( diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/ApiRequestFilter.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/ApiRequestFilter.java index 7b43c9512..11af97c96 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/ApiRequestFilter.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/ApiRequestFilter.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.web.core.filter; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.web.config.WebProperties; import lombok.RequiredArgsConstructor; import org.springframework.web.filter.OncePerRequestFilter; @@ -20,7 +20,7 @@ public abstract class ApiRequestFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) { // 只过滤 API 请求的地址 - return !StrUtil.startWithAny(request.getRequestURI(), webProperties.getAdminApi().getPrefix(), + return !CharSequenceUtil.startWithAny(request.getRequestURI(), webProperties.getAdminApi().getPrefix(), webProperties.getAppApi().getPrefix()); } diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DataSourceFilter.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DataSourceFilter.java index e66ddc5e4..c7e6263fb 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DataSourceFilter.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DataSourceFilter.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.web.core.filter; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants; import com.cf.imes.framework.common.pojo.CommonResult; @@ -37,14 +37,14 @@ public class DataSourceFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) { // 只过滤 API 请求的地址 - return !StrUtil.startWithAny(request.getRequestURI(), webProperties.getAdminApi().getPrefix(), + return !CharSequenceUtil.startWithAny(request.getRequestURI(), webProperties.getAdminApi().getPrefix(), webProperties.getAppApi().getPrefix()); } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String dataCode = request.getHeader(DATA_SOURCE_CODE); - if(StrUtil.isEmpty(dataCode)) { + if(CharSequenceUtil.isEmpty(dataCode)) { //TODO 如果要严谨一点,应该再去校验一下token ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期")); log.info("Let the user log in because there is no data-code! requestURI==>{}", request.getRequestURI()); diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DemoFilter.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DemoFilter.java index 41dba64f4..71405780f 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DemoFilter.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/filter/DemoFilter.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.web.core.filter; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.servlet.ServletUtils; import com.cf.imes.framework.web.core.util.WebFrameworkUtils; @@ -22,7 +22,7 @@ public class DemoFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) { String method = request.getMethod(); - return !StrUtil.equalsAnyIgnoreCase(method, "POST", "PUT", "DELETE") // 写操作时,不进行过滤率 + return !CharSequenceUtil.equalsAnyIgnoreCase(method, "POST", "PUT", "DELETE") // 写操作时,不进行过滤率 || WebFrameworkUtils.getLoginUserId(request) == null; // 非登录用户时,不进行过滤 } diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java index 91cb6e04d..70601c32c 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/core/handler/GlobalExceptionHandler.java @@ -236,6 +236,10 @@ public class GlobalExceptionHandler { return tableNotExistsResult; } +// if(ex instanceof NullPointerException){ +// return CommonResult.error(DATA_EXCEPTION_ERROR.getCode(), DATA_EXCEPTION_ERROR.getMsg()); +// } + // 情况二:部分特殊的库的处理 if (Objects.equals("io.github.resilience4j.ratelimiter.RequestNotPermitted", ex.getClass().getName())) { return requestNotPermittedExceptionHandler(req, ex); diff --git a/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/handler/JsonWebSocketMessageHandler.java b/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/handler/JsonWebSocketMessageHandler.java index c58c7e663..7ad342731 100644 --- a/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/handler/JsonWebSocketMessageHandler.java +++ b/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/handler/JsonWebSocketMessageHandler.java @@ -1,6 +1,6 @@ package com.cf.imes.framework.websocket.core.handler; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.TypeUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.organ.core.util.OrganUtils; @@ -60,7 +60,7 @@ public class JsonWebSocketMessageHandler extends TextWebSocketHandler { log.error("[handleTextMessage][session({}) message({}) 解析为空]", session.getId(), message.getPayload()); return; } - if (StrUtil.isEmpty(jsonMessage.getType())) { + if (CharSequenceUtil.isEmpty(jsonMessage.getType())) { log.error("[handleTextMessage][session({}) message({}) 类型为空]", session.getId(), message.getPayload()); return; } diff --git a/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/sender/AbstractWebSocketMessageSender.java b/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/sender/AbstractWebSocketMessageSender.java index f2dd00143..8ec8f756a 100644 --- a/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/sender/AbstractWebSocketMessageSender.java +++ b/cf-framework/cf-spring-boot-starter-websocket/src/main/java/com/cf/imes/framework/websocket/core/sender/AbstractWebSocketMessageSender.java @@ -1,7 +1,7 @@ package com.cf.imes.framework.websocket.core.sender; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.websocket.core.message.JsonWebSocketMessage; import com.cf.imes.framework.websocket.core.session.WebSocketSessionManager; @@ -53,7 +53,7 @@ public abstract class AbstractWebSocketMessageSender implements WebSocketMessage public void send(String sessionId, Integer userType, Long userId, String messageType, String messageContent) { // 1. 获得 Session 列表 List sessions = Collections.emptyList(); - if (StrUtil.isNotEmpty(sessionId)) { + if (CharSequenceUtil.isNotEmpty(sessionId)) { WebSocketSession session = sessionManager.getSession(sessionId); if (session != null) { sessions = Collections.singletonList(session); diff --git a/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java b/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java index 8da358fce..67c0b73eb 100644 --- a/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java +++ b/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java @@ -1,17 +1,13 @@ package com.cf.imes.gateway.filter.security; -import cn.hutool.core.util.StrUtil; -import com.cf.imes.framework.common.core.KeyValue; +import cn.hutool.core.text.CharSequenceUtil; import com.cf.imes.framework.common.pojo.CommonResult; -import com.cf.imes.framework.common.util.cache.CacheUtils; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.gateway.util.SecurityFrameworkUtils; import com.cf.imes.gateway.util.WebFrameworkUtils; import com.cf.imes.module.system.api.oauth2.OAuth2TokenApi; import com.cf.imes.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO; import com.fasterxml.jackson.core.type.TypeReference; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; @@ -22,7 +18,6 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; -import java.time.Duration; import java.util.Objects; import java.util.function.Function; @@ -53,23 +48,6 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { private final WebClient webClient; - /** - * 登录用户的本地缓存 - * - * key1:多组织的编号 - * key2:访问令牌 - */ - private final LoadingCache, LoginUser> loginUserCache = CacheUtils.buildAsyncReloadingCache(Duration.ofMinutes(1), - new CacheLoader, LoginUser>() { - - @Override - public LoginUser load(KeyValue token) { - String body = checkAccessToken(token.getKey(), token.getValue()).block(); - return buildUser(body); - } - - }); - public TokenAuthenticationFilter(ReactorLoadBalancerExchangeFilterFunction lbFunction) { // Q:为什么不使用 OAuth2TokenApi 进行调用? // A1:Spring Cloud OpenFeign 官方未内置 Reactive 的支持 https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#reactive-support @@ -85,7 +63,7 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { // 情况一,如果没有 Token 令牌,则直接继续 filter String token = SecurityFrameworkUtils.obtainAuthorization(exchange); - if (StrUtil.isEmpty(token)) { + if (CharSequenceUtil.isEmpty(token)) { return chain.filter(exchange); } @@ -108,21 +86,11 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { } private Mono getLoginUser(ServerWebExchange exchange, String token) { - //Long organId = organIdCache.getIfPresent(token); - // 从缓存中,获取 LoginUser + // 用token从checktoken api中获取当前用户 Long organId = WebFrameworkUtils.getOrganId(exchange); - KeyValue cacheKey = new KeyValue().setKey(organId).setValue(token); - LoginUser localUser = loginUserCache.getIfPresent(cacheKey); - if (localUser != null) { - return Mono.just(localUser); - } - - // 缓存不存在,则请求远程服务 return checkAccessToken(organId, token).flatMap((Function>) body -> { LoginUser remoteUser = buildUser(body); if (remoteUser != null) { - // 非空,则进行缓存 - loginUserCache.put(cacheKey, remoteUser); return Mono.just(remoteUser); } return Mono.empty(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 879d1ea72..b9ab72dc9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -32,6 +32,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_NOT_NEW_ORDER = new ErrorCode(1_001_109_000, "生产单不为新单,清空无效"); ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1_001_109_000, "生产单已排单,小板操作无效"); ErrorCode ORDER_CANCEL = new ErrorCode(1_001_109_000, "生产单未作废,还原无效"); + ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_001_109_001, "选中删除对象有已开料板件,请联系管理员修改开料状态后再删除!"); // ========== 生产单 TODO 补充编号 ========== ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_001_110_000, "模块不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsPageReqVO.java index 99e9f2e3d..558e05694 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsPageReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsPageReqVO.java @@ -1,12 +1,13 @@ package com.cf.imes.module.executor.controller.admin.goods.vo; -import lombok.*; +import com.cf.imes.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; -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; @@ -24,7 +25,7 @@ public class GoodsPageReqVO extends PageParam { private Long rawGoodsId; @Schema(description = "商品 ID", example = "243") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", example = "晨丰") private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsRespVO.java index c45f5359b..ecea752ee 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsRespVO.java @@ -1,14 +1,12 @@ package com.cf.imes.module.executor.controller.admin.goods.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; import java.math.BigDecimal; -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 @@ -29,7 +27,7 @@ public class GoodsRespVO { @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") @ExcelProperty("商品 ID") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") @ExcelProperty("商品名称") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsSaveReqVO.java index 07d81cbae..01b121ee6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/goods/vo/GoodsSaveReqVO.java @@ -1,11 +1,9 @@ package com.cf.imes.module.executor.controller.admin.goods.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; import java.math.BigDecimal; -import java.util.*; -import javax.validation.constraints.*; @Schema(description = "管理后台 - 生产单商品新增/修改 Request VO") @Data @@ -21,7 +19,7 @@ public class GoodsSaveReqVO { private Long rawGoodsId; @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java index e3cc50467..27645b32f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderGoodsPlateRespVO.java @@ -15,7 +15,7 @@ import java.math.BigDecimal; public class OrderGoodsPlateRespVO implements Comparable { @Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java index bda77fc0f..e295958bc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java @@ -128,13 +128,5 @@ public class OptimizePlanController { } - @DeleteMapping("/delete") - @Operation(summary = "ES批量删除测试") - @PreAuthorize("@ss.hasPermission('placeorder:delete')") - public CommonResult deleteTest(@RequestParam("id") List id) { - return success(optimizePlanService.deleteTest(id)); - } - - } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java index fdac20122..eb856c56a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/PlanController.java @@ -44,7 +44,7 @@ public class PlanController { @PostMapping("/create") @Operation(summary = "创建排单") @PreAuthorize("@ss.hasPermission('placeorder:create')") - public CommonResult> createPlan(@Validated(CreateGroup.class) @RequestBody PlanSaveReqVO createReqVO) { + public CommonResult> createPlan(@Validated(CreateGroup.class) @RequestBody PlanSaveReqVO createReqVO) { return success(planService.createPlan(createReqVO)); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java index 62a2ae26f..d7f710275 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderIds.java @@ -20,7 +20,7 @@ public class OrderIds { @Schema(description = "商品ID-板材库对应的大板ID") - private Long goodsId; + private String goodsId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java index 0311db49b..a37705b47 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NotPlanGoodsRespVO.java @@ -37,7 +37,7 @@ public class NotPlanGoodsRespVO { @Schema(description = "商品ID-板材库对应的大板ID") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java index 78eaac277..1bed3ad07 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/OptimizeRemainPlate.java @@ -36,7 +36,7 @@ public class OptimizeRemainPlate { @Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long goodsId; + private String goodsId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SaveOrderReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SaveOrderReqVO.java deleted file mode 100644 index 2654bc9af..000000000 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SaveOrderReqVO.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.cf.imes.module.executor.controller.admin.plan.saveOptimize; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; - -@Data -@Schema(description = "优化后的生产单数据") -public class SaveOrderReqVO { - - @Schema(description = "生产单id") - private Long orderId; - - @Schema(description = "父id") - private Long parentNo; - - @Schema(description = "自定义单号") - private String customOrderNo; - - @Schema(description = "客户") - private String customer; - - @Schema(description = "地址") - private String address; - - @Schema(description = "客户电话") - private String phoneNumber; - - @Schema(description = "经销商") - private String dealer; - - @Schema(description = "经销商电话") - private String dealerPhoneNumber; - - @Schema(description = "业务员") - private String salesman; - - @Schema(description = "拆单员") - private String splitter; - - @Schema(description = "备注") - private String remark; - - @Schema(description = "交付日期") - @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) - private Date deliveryDate; - - @Schema(description = "生产单类型,1主单 2子单") - private Integer type; - - @Schema(description = "生产单排序号") - private Integer sort; - - @Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel") - private Integer dataType; - - @Schema(description = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成") - private Integer status; - -} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java index a5fa5b3a9..1346cda20 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/GoodsReqVO.java @@ -30,7 +30,7 @@ public class GoodsReqVO { private Long rawGoodsId; @Schema(description = "商品 ID-大板的实际ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "243") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java index 7d7f208e4..06814347a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/NotPlanOrderPlateRespVO.java @@ -25,7 +25,7 @@ public class NotPlanOrderPlateRespVO { private List orderIdList; @Schema(description = "商品ID-板材库对应的大板ID") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称") private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java index 50c3e3c8e..29b51d55f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderGoodsResp.java @@ -17,7 +17,7 @@ public class OrderGoodsResp { @Schema(description = "生产单id") private List orderIds; @Schema(description = "商品id-商品编号") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称") private String goodsName; @Schema(description = "商品材质") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java index 53fbf27db..179594cba 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java @@ -57,7 +57,7 @@ public class OrderPageReqVOCopy extends PageParam { // todo 目前商品ID的数据筛选只解决了非混单的情况(非混单,数据类型为Long即可,混单情况需要改变),混单数据筛选待解决 @Schema(description = "商品ID-板材库对应的大板ID") - private Long goodsId; + private String goodsId; @Schema(description = "大板分类ID") private List ids; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java index c668709f1..9948ff389 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderRespVOCopy.java @@ -46,7 +46,7 @@ public class OrderRespVOCopy { @Schema(description = "平方") private BigDecimal area = new BigDecimal("0"); @Schema(description = "商品id") - private Long goodsId; + private String goodsId; // @Schema(description = "商品名称") // private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanGoodsVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanGoodsVO.java index d69abee3d..439cef0e1 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanGoodsVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanGoodsVO.java @@ -12,7 +12,7 @@ import java.math.BigDecimal; public class PlanGoodsVO { @Schema(description = "商品id") - private Long goodsId; + private String goodsId; @Schema(description = "商品名称") private String goodsName; @Schema(description = "材质") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java index bb943cf19..a42929640 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java @@ -78,7 +78,7 @@ public class PlanSaveReqVO { @Schema(description = "板材库大板id") @NotNull - private Long goodsId; + private String goodsId; @Schema(description = "余料板ID") @NotNull diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java index 7a8f3443c..9e31cdb1a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetialRespVO.java @@ -40,7 +40,7 @@ public class PlateDetialRespVO { @Schema(description = "大板实际ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long goodsId; + private String goodsId; @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED) private String goodsName; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java index cb8b6bc83..f9ac34c20 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateInfoVO.java @@ -26,7 +26,7 @@ public class PlateInfoVO { @Schema(description = "板材库对应的大板ID-大板实际ID") - private Long goodsId; + private String goodsId; @Schema(description = "材质:颗粒板、欧松板、多层板、生态板、禾香板、密度板、实木、铝蜂窝板、铝塑板", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlatePage.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlatePage.java index 3e5084c9f..7dc39e75b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlatePage.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlatePage.java @@ -15,7 +15,7 @@ public class PlatePage { @Schema(description = "生产单id") private Long orderId; @Schema(description = "商品id") - private Long goodsId; + private String goodsId; @Schema(description = "板名称") private String name; @Schema(description = "商品名称") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java index a6658c4fc..8d69423ab 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/OptimizationSavePlateReqVO.java @@ -50,7 +50,7 @@ public class OptimizationSavePlateReqVO { @Schema(description = "商品ID-大板的实际ID") - private Long goodsId; + private String goodsId; @Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹") private Integer texture; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java index 230719cac..42628df2b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java @@ -31,7 +31,7 @@ public class OptimizeBoardModelDO extends ESDocument { @Schema(description = "大板的实际ID") - private Long goodsId; + private String goodsId; @Schema(description = "生产单已优化小板数量") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java index e229980e2..127566088 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plate/PlateDO.java @@ -165,6 +165,10 @@ public class PlateDO extends BaseDO { * 是否造型 */ private Boolean isRowHole; + /** + * 是否优化 + */ + private Boolean isOptimized; /** * 排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠 */ diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java index 5d185759e..c3c94a531 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java @@ -9,7 +9,6 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsPageReqVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.NotPlanGoodsRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import org.apache.ibatis.annotations.Mapper; @@ -17,6 +16,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Set; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; @@ -80,14 +80,9 @@ public interface GoodsMapper extends BaseMapperX { void deletedById(@Param("ids") List ids, @Param("organId") Long organId); - IPage selectGoods(@Param("page") IPage page, @Param("goodsIds") List goodsIds, @Param("organId") Long organId); - - List selectGoodsPlateList(@Param("goodIds") List goodIds,@Param("organId") Long organId); - - - default List selectListByGoodsId(Long goodsId, Long organId) { + default List selectListByGoodsId(String goodsId, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getDeleted, false) @@ -112,7 +107,7 @@ public interface GoodsMapper extends BaseMapperX { - default List selectListByGoodsIdList(List goodsIds,List orderIds, Long organId) { + default List selectListByGoodsIdList(List goodsIds,List orderIds, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getDeleted, false) @@ -122,10 +117,10 @@ public interface GoodsMapper extends BaseMapperX { } - List seleTestSQL(@Param("filed") String filed,@Param("goodsIds") List goodsIds ,@Param("organId") Long organId); + List seleTestSQL(@Param("filed") String filed,@Param("goodsIds") List goodsIds ,@Param("organId") Long organId); - default GoodsDO selectGoodsId(Long orderId, Long goodsId, Long organId) { + default GoodsDO selectGoodsId(Long orderId, String goodsId, Long organId) { return selectOne(new LambdaQueryWrapperX() .eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getDeleted, false) @@ -135,11 +130,6 @@ public interface GoodsMapper extends BaseMapperX { } - default PageResult selectTestSQL(OrderPageReqVOCopy pageReqVO) { - return selectPage(pageReqVO, new LambdaQueryWrapperX() - .eq(GoodsDO::getOrganId, getUserOrganId()) - .orderByDesc(GoodsDO::getId)); - } IPage selectOrderGoodsList(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); @@ -204,4 +194,9 @@ public interface GoodsMapper extends BaseMapperX { List selectNoPlanRoomBody(@Param("orderIds") List orderIds, @Param("organId") Long organId); + + IPage selectOrderPlate(@Param("page") IPage page,@Param("organId") Long organId); + + List selectPlanOrderList(@Param("orderId") Long orderId,@Param("roomIds") Set roomIds, @Param("bodyId") Long bodyId,@Param("organId") Long organId); + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java index 69d11fbf0..2f9cb36ab 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java @@ -48,8 +48,8 @@ public interface PlanMapper extends BaseMapperX { // .leftJoin(OrderItemDO.class, OrderItemDO::getId, PlanItemDO::getItemId) .leftJoin(OrderDO.class, OrderDO::getId, GoodsDO::getOrderId) .like(OrderDO::getCustomer, reqVO.getCustomer()) - .orderBy(true, true, PlanDO::getSort) - .orderByDesc(PlanDO::getUpdateTime) +// .orderBy(true, true, PlanDO::getSort) + .orderByDesc(PlanDO::getCreateTime) ); } @@ -68,8 +68,8 @@ public interface PlanMapper extends BaseMapperX { .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime()) .eqIfPresent(PlanDO::getOperator, reqVO.getOperator()) .betweenIfPresent(PlanDO::getProduceTime, reqVO.getProduceTime()) - .orderBy(true, true, PlanDO::getSort) - .orderByDesc(PlanDO::getUpdateTime)); +// .orderBy(true, true, PlanDO::getSort) + .orderByDesc(PlanDO::getCreateTime)); } List selectPlateListByPlanId(@Param("planId") Long planId, @Param("organId") Long organId); @@ -107,11 +107,15 @@ public interface PlanMapper extends BaseMapperX { - List selectPlanIds(@Param("updateTime") String updateTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); + List selectPlanIds(@Param("createTime") String createTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); - List selectPlanIdsFalse(@Param("updateTime") String updateTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); + List selectPlanIdsFalse(@Param("createTime") String createTime,@Param("sort") Long sort,@Param("organId") Long organId,@Param("planId") Long planId); + + + List selectPlanStatus(@Param("planIds") List planIds,@Param("organId") Long organId); + // List seleTestSQL(@Param("sql") String sql); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/OrderPlateStatisticsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/OrderPlateStatisticsMapper.java index 78e34ff98..798872894 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/OrderPlateStatisticsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/OrderPlateStatisticsMapper.java @@ -32,7 +32,7 @@ public interface OrderPlateStatisticsMapper extends BaseMapperX { * @param reqVO * @return */ - List selectTopTenPlateCountListGroupByOrderDate(@Param("goodsIds") List goodsIdList, @Param("req") OrderStatisticsReqVO reqVO); + List selectTopTenPlateCountListGroupByOrderDate(@Param("goodsIds") List goodsIdList, @Param("req") OrderStatisticsReqVO reqVO); /** @@ -49,6 +49,6 @@ public interface OrderPlateStatisticsMapper extends BaseMapperX { * @param reqVO * @return */ - List selectTopTenPlateAreaListGroupByOrderDate(@Param("goodsIds") List goodsIdList, @Param("req") OrderStatisticsReqVO reqVO); + List selectTopTenPlateAreaListGroupByOrderDate(@Param("goodsIds") List goodsIdList, @Param("req") OrderStatisticsReqVO reqVO); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index a6e0366eb..8a827cf52 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -201,10 +201,11 @@ public interface PlateMapper extends BaseMapperX { - default List selectPlateIdList(List goodsIdList, Long organId) { + default List selectPlateIdList(List orderIds,List goodsIdList, Long organId) { return selectList(new LambdaQueryWrapperX() .eq(PlateDO::getOrganId,organId) .eq(PlateDO::getDeleted,false) + .inIfPresent(PlateDO::getOrderId,orderIds) .inIfPresent(PlateDO::getGoodsId,goodsIdList) .eq(PlateDO::getType, OrderPlateTypeEnum.SELFINCREASINGBOARD.getType()) .select(PlateDO::getId)); @@ -223,6 +224,14 @@ public interface PlateMapper extends BaseMapperX { } + List selectNoPlanPlateList(@Param(Constants.WRAPPER) Wrapper queryWrapperX2); + + + void updatePlateOptimized(@Param("orderIdList") List orderIdList,@Param("ids") List ids,@Param("organId") Long organId); + + + void updateNoPlateOptimized(@Param("orderIdList") List orderIdList,@Param("ids") List ids,@Param("organId") Long organId); + // List selectTestSQL(@Param("sql") String sql); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java index 8cc94c6a4..ee9b38924 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java @@ -5,7 +5,6 @@ import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.CuttingSta import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.SavePlanPlateResultReqVO; import com.cf.imes.module.executor.controller.admin.plan.vo.AddRemainReqVO; import com.cf.imes.module.executor.controller.admin.plan.vo.GetSourceDataReq; -import com.cf.imes.module.executor.controller.admin.plan.vo.OrderPageReqVOCopy; import com.cf.imes.module.executor.controller.admin.plan.vo.PlateOptimize; import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; @@ -18,7 +17,7 @@ public interface OptimizePlanService { String ORDER_PLATE_MODEL = "imes_order_plate_model"; - String ORDER_REMAIN_PLATE_MODEL = "imes_order_remain_plate_model"; + String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; List getPlateListByPlanId(Long planId); @@ -49,6 +48,4 @@ public interface OptimizePlanService { List buildBoardByOrderIds(Collection orderIds, String index, Integer size); - String deleteTest(List id); - } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index c1fb9f0ba..b87f360f5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -14,7 +14,6 @@ import com.cf.imes.framework.common.enums.PlanStatusEnum; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.es.core.service.ESDocumentService; -import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList; @@ -26,10 +25,8 @@ import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; 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.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; -import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO; import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; @@ -986,20 +983,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { - @Override - public String deleteTest(List orderIds) { - - Long a = 1801515154546884609L; - - - List optimizeBoardModelDOS = buildBoardByPlanId(a, ORDER_REMAIN_PLATE_MODEL, 999); - - System.out.println("哈哈哈哈哈1 "+optimizeBoardModelDOS); - - - return null; - - } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index f6518cfe6..aa37817c4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -7,10 +7,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; +import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.common.pojo.PageParam; +import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.Assert.AssertUtils; +import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.order.vo.order.*; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; @@ -19,6 +24,7 @@ import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsResp import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; 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.orderItem.OrderItemDO; @@ -29,6 +35,7 @@ import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO; import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO; 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.orderItem.OrderItemMapper; @@ -39,7 +46,7 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; -import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; +import com.cf.imes.module.executor.service.plan.PlanService; import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; @@ -48,22 +55,14 @@ import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPl import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize; import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; -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.order.OrderMapper; - +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; -import java.time.*; +import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; @@ -75,8 +74,6 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*; -import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; - /** * 生产单表 order_{N} Service 实现类 * @@ -140,9 +137,14 @@ public class OrderServiceImpl implements OrderService { public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model"; + String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; + @Resource private XmlTypeRealize xmlTypeRealize; + @Resource + private PlanService planService; + @Override public void updateOrder(OrderSaveReqVO updateReqVO) { // 校验存在, 生产单未删除 @@ -241,7 +243,8 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional(rollbackFor = Exception.class) public void updateBodyDeletedByOrderId(Long orderId, Set roomIds, Long bodyId, Integer status) { // 要删除传1,还原传0 - validateOrderStatus(orderId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); + // 判断生产单的状态和生产单柜体对应的板擦是否已开料 + List planIds = validateOrderStatus(orderId, roomIds, bodyId, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); List bodyIds = new ArrayList<>(); Integer index = status == 1 ? 0 : 1; @@ -293,7 +296,23 @@ public class OrderServiceImpl implements OrderService { }); if (goodsIdDeleted.size() > 0) { + goodsMapper.updateDeletedById(goodsIdDeleted, status, getUserOrganId()); + + } + + if(planIds != null) { + // 判断删除的柜体对应的板材是否和排单板材一样 + List goodsDOS = goodsMapper.selectPlanGoodsListByPlanIdList(planIds, getUserOrganId()); + + // 一样,同时删除排单的信息 + if(goodsDOS.isEmpty()){ + planService.deletePlan(planIds); + }else { + // 只要有排单,不管删除的柜体的板材数和排单数一样,都要删除排单对应的优化数据(不用这种写法进行删除时,有时会报错,原因目前还没找到) + planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL); + } + } List partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyIds, getUserOrganId(), orderId); // 配件 @@ -820,17 +839,28 @@ public class OrderServiceImpl implements OrderService { return true; } - // 判断生产单状态是否符合(开料之前状态判断) - private void validateOrderStatus(Long orderId, Long organId, Integer status) { + // 判断生产单状态是否符合(如果已开料,不允许删除) + private List validateOrderStatus(Long orderId,Set roomIds, Long bodyId, Long organId, Integer status) { // 校验存在 OrderDO orderDO = orderMapper.selectOrderOne(orderId, organId); if (orderDO == null) throw exception(ORDER_NOT_EXISTS); - // 状态排除 - if (!Objects.equals(orderDO.getStatus(), OrderStatusEnum.NEW_ORDER.getStatus()) && - !Objects.equals(orderDO.getStatus(), OrderStatusEnum.SORTED.getStatus()) && - !Objects.equals(orderDO.getStatus(), OrderStatusEnum.EMPTY.getStatus())) - throw exception(ORDER_NOT_CANCEL); + + // 判断小板是否已开料,已开料不允许删除 + List planIds = goodsMapper.selectPlanOrderList(orderId, roomIds, bodyId, organId); + if(!planIds.isEmpty()) { + + List planDOS = planMapper.selectPlanStatus(planIds, organId); + + AssertUtils.empty(planDOS, ORDER_PLAN_ERROR); + +// planService.deleteByPlanId(planIds, ORDER_REMAIN_PLATE_MODEL); + + return planIds; + + + } + return null; } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java index 7af9befd8..9f9e8d7a5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java @@ -156,7 +156,9 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { seriesItem.put("name", orderStatusEnum.getDescription()); series.add(seriesItem); } + // x轴时间区间字符串 resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList()); + // 类别:订单类型:数量数组 resultMap.put(SERIES_FIELD_NAME, series); return resultMap; @@ -176,26 +178,42 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { .sorted(Comparator.naturalOrder()) .collect(Collectors.groupingBy(OrderPlanStatisticsCountRespVO::getDate, LinkedHashMap::new, Collectors.toList())); + // 类别:单量数组 + List> series = new ArrayList<>(); + Map orderSeriesItem = new HashMap<>(); + Map planSeriesItem = new HashMap<>(); + int[] orderCountArr = new int[dateList.size()]; + int[] planCountArr = new int[dateList.size()]; // 遍历时间跨度列表,匹配数量存入数组,没有补0存入数组 - for (String dateStr : dateList) { - int[] countArr = new int[2]; + for (int i = 0; i < dateList.size(); i++) { + String dateStr = dateList.get(i); // 存入生产单数量 Integer orderCount = Optional.ofNullable(orderRespMap.get(dateStr)) .map(list -> list.stream().findFirst().orElse(new OrderStatisticsStatusRespVO())) .map(OrderStatisticsStatusRespVO::getOrderCount) .orElse(0); - countArr[0] = orderCount; + orderCountArr[i] = orderCount; // 存入排单数量 Integer planCount = Optional.ofNullable(planRespMap.get(dateStr)) .map(list -> list.stream().findFirst().orElse(new OrderPlanStatisticsCountRespVO())) .map(OrderPlanStatisticsCountRespVO::getCount) .orElse(0); - countArr[1] = planCount; - - resultMap.put(generateDateRangeAxis(dateStr, reqVO.getUnit()), countArr); + planCountArr[i] = planCount; } + orderSeriesItem.put("data", orderCountArr); + orderSeriesItem.put("name", "生产单单量"); + planSeriesItem.put("data", planCountArr); + planSeriesItem.put("name", "排单单量"); + series.add(orderSeriesItem); + series.add(planSeriesItem); + + // x轴时间区间字符串 + resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList()); + // 类别:类别:单量数组 + resultMap.put(SERIES_FIELD_NAME, series); + return resultMap; } @@ -213,21 +231,37 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { .sorted(Comparator.naturalOrder()) .collect(Collectors.groupingBy(OrderPlanStatisticsAreaRespVO::getDate, LinkedHashMap::new, Collectors.toList())); + // 类别:平方数数组 + List> series = new ArrayList<>(); + Map orderSeriesItem = new HashMap<>(); + Map planSeriesItem = new HashMap<>(); + BigDecimal[] orderAreaArr = new BigDecimal[dateList.size()]; + BigDecimal[] planAreaArr = new BigDecimal[dateList.size()]; // 遍历时间跨度列表,匹配数量存入数组,没有补0存入数组 - for (String dateStr : dateList) { - BigDecimal[] areaArr = new BigDecimal[2]; + for (int i = 0; i < dateList.size(); i++) { + String dateStr = dateList.get(i); // 存生产单面积 List orderCountRespVOS = orderRespMap.get(dateStr); - areaArr[0] = orderCountRespVOS != null && !orderCountRespVOS.isEmpty() ? orderCountRespVOS.get(0).getAreaSum() : BigDecimal.ZERO; + orderAreaArr[i] = orderCountRespVOS != null && !orderCountRespVOS.isEmpty() ? orderCountRespVOS.get(0).getAreaSum() : BigDecimal.ZERO; // 存排单面积 List planCountRespVOS = planRespMap.get(dateStr); - areaArr[1] = planCountRespVOS != null && !planCountRespVOS.isEmpty() ? planCountRespVOS.get(0).getAreaSum() : BigDecimal.ZERO; - - resultMap.put(generateDateRangeAxis(dateStr, reqVO.getUnit()), areaArr); + planAreaArr[i] = planCountRespVOS != null && !planCountRespVOS.isEmpty() ? planCountRespVOS.get(0).getAreaSum() : BigDecimal.ZERO; } + orderSeriesItem.put("data", orderAreaArr); + orderSeriesItem.put("name", "生产单平方数"); + planSeriesItem.put("data", planAreaArr); + planSeriesItem.put("name", "排单平方数"); + series.add(orderSeriesItem); + series.add(planSeriesItem); + + // x轴时间区间字符串 + resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList()); + // 类别:类别:平方数数组 + resultMap.put(SERIES_FIELD_NAME, series); + return resultMap; } @@ -240,7 +274,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { List dateList = getDateList(reqVO); // 查询时间段内数量最多的小板,列出数量前10的goods_id - List topTenCountGoodsId = orderPlateStatisticsMapper.selectPlateCountList(reqVO).stream() + List topTenCountGoodsId = orderPlateStatisticsMapper.selectPlateCountList(reqVO).stream() .map(OrderGoodsPlateRespVO::getGoodsId) .toList(); @@ -254,8 +288,8 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { // 获取所有商品{goodsId:respvo},根据top10排序 - Map goodsMap = new LinkedHashMap<>(); - for (Long id : topTenCountGoodsId) { + Map goodsMap = new LinkedHashMap<>(); + for (String id : topTenCountGoodsId) { List list = orderGoodsPlateRespMap.values().stream() .flatMap(List::stream) .filter(vo -> vo.getGoodsId().equals(id)) @@ -268,7 +302,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { // 遍历所有goods_id List> series = new ArrayList<>(); - for (Map.Entry entry : goodsMap.entrySet()) { + for (Map.Entry entry : goodsMap.entrySet()) { Map seriesItem = new HashMap<>(); int[] sumArr = new int[dateList.size()]; @@ -297,7 +331,10 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { seriesItem.put("name", goodsName); series.add(seriesItem); } + + // x轴时间区间字符串 resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList()); + // 类别:大板信息:小板数量数组 resultMap.put(SERIES_FIELD_NAME, series); return resultMap; } @@ -310,7 +347,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { List dateList = getDateList(reqVO); // 查询时间段内面积最多的小板,列出前10面积的goods_id - List topTenCountGoodsId = orderPlateStatisticsMapper.selectPlateAreaList(reqVO).stream() + List topTenCountGoodsId = orderPlateStatisticsMapper.selectPlateAreaList(reqVO).stream() .map(OrderGoodsPlateRespVO::getGoodsId) .toList(); @@ -324,8 +361,8 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { // 获取所有商品{goodsId:respvo},根据top10排序 - Map goodsMap = new LinkedHashMap<>(); - for (Long id : topTenCountGoodsId) { + Map goodsMap = new LinkedHashMap<>(); + for (String id : topTenCountGoodsId) { List list = orderGoodsPlateRespMap.values().stream() .flatMap(List::stream) .filter(vo -> vo.getGoodsId().equals(id)) @@ -338,7 +375,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { // 遍历所有goods_id List> series = new ArrayList<>(); - for (Map.Entry entry : goodsMap.entrySet()) { + for (Map.Entry entry : goodsMap.entrySet()) { Map seriesItem = new HashMap<>(); BigDecimal[] areaArr = new BigDecimal[dateList.size()]; @@ -367,7 +404,10 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { seriesItem.put("name", goodsName); series.add(seriesItem); } + + // x轴时间区间字符串 resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList()); + // 类别:大板信息:小板平方数数组 resultMap.put(SERIES_FIELD_NAME, series); return resultMap; } @@ -402,13 +442,13 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { Map goodsCountAggMap = response.aggregations(); Aggregate goodsCountAgg = goodsCountAggMap.get(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME); - List goodsIds = new ArrayList<>(); - // 构建map:{日期:{goodsId、count}} + List goodsIds = new ArrayList<>(); + // 构建map:日期:goodsId、count Map> goodsDateGroupMap = new HashMap<>(); /** * 获取数量最大前十的goodsId列表 */ - goodsCountAgg.lterms().buckets().array().forEach(e -> goodsIds.add(e.key())); + goodsCountAgg.sterms().buckets().array().forEach(e -> goodsIds.add(e.key().stringValue())); if (CollUtil.isNotEmpty(goodsIds)) { List goodsIdFieldValueList = goodsIds.stream().map(FieldValue::of).toList(); @@ -433,12 +473,11 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { Aggregate goodsDateAgg = goodsDateCountAggMap.get(ORDER_REMAIN_PLATE_MODEL_GOODS_GROUP_NAME); - goodsDateAgg.lterms().buckets().array().forEach(goodsDateAggBucket -> { - Long goodsId = goodsDateAggBucket.key(); + goodsDateAgg.sterms().buckets().array().forEach(goodsDateAggBucket -> { // todo 目前没有发现好的es统计月周的方式,先把年月日查出来转周,后续优化 String dateStr = dateToWeekMonth(goodsDateAggBucket.aggregations().get("date_group").dateHistogram().buckets().array().get(0).keyAsString(), unit); double goodsCount = goodsDateAggBucket.aggregations().get(ORDER_REMAIN_PLATE_MODEL_GOODS_COUNT_NAME).sum().value(); - OrderGoodsPlateRespVO vo = OrderGoodsPlateRespVO.builder().goodsId(goodsId).orderDate(dateStr).orderCount((int) goodsCount).build(); + OrderGoodsPlateRespVO vo = OrderGoodsPlateRespVO.builder().goodsId(goodsDateAggBucket.key().stringValue()).orderDate(dateStr).orderCount((int) goodsCount).build(); List orderGoodsPlateRespVOS = goodsDateGroupMap.get(dateStr); if (ObjectUtil.isNotNull(orderGoodsPlateRespVOS)) { orderGoodsPlateRespVOS.add(vo); @@ -452,7 +491,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { // 遍历所有goods_id List> series = new ArrayList<>(); - for (Long goodsId : goodsIds) { + for (String goodsId : goodsIds) { Map seriesItem = new HashMap<>(); int[] countArr = new int[dateList.size()]; @@ -488,7 +527,10 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { seriesItem.put("name", goodsName); series.add(seriesItem); } + + // x轴时间区间字符串 resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, unit)).toList()); + // 类别:大板信息:大板数量数组 resultMap.put(SERIES_FIELD_NAME, series); } catch (IOException e) { log.error("[getBigPlateCountGroup][统计大板数量异常:{}]", e.getMessage(), e); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java index 4fa8a8353..671ce92ec 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanService.java @@ -24,7 +24,7 @@ public interface PlanService { * @param createReqVO 创建信息 * @return 编号 */ - Map createPlan(@Valid PlanSaveReqVO createReqVO); + Map createPlan(@Valid PlanSaveReqVO createReqVO); /** * 更新生产单开料排单 @@ -82,4 +82,6 @@ public interface PlanService { List getOrderPlateList(OrderPageReqVOCopy pageReqVO); List getNotOptimizeGoodsList(NotPlanGoodsReqVO reqVO); + + void deleteByPlanId(List planIds, String index); } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index d1f238546..227dca556 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -109,7 +109,7 @@ public class PlanServiceImpl implements PlanService { @Resource private IdentifierGenerator identifierGenerator; - String ORDER_REMAIN_PLATE_MODEL = "imes_order_remain_plate_model"; + String ORDER_REMAIN_PLATE_MODEL = "imes_order_optimize_plate_model"; @Resource private ElasticsearchClient elasticsearchClient; @@ -119,7 +119,7 @@ public class PlanServiceImpl implements PlanService { @Override @Transactional(rollbackFor = Exception.class) - public Map createPlan(PlanSaveReqVO createReqVO) { + public Map createPlan(PlanSaveReqVO createReqVO) { // todo 目前只考虑了非混单的情况,混单的情况待考虑 List itemList = createReqVO.getItemList(); @@ -128,22 +128,30 @@ public class PlanServiceImpl implements PlanService { List goodsDOS = new ArrayList<>(); - // <大板实际ID,排单ID> - Map goodsPlanId = new HashMap<>(); + List ids = new ArrayList<>(); - Map> groupedItems = itemList.stream() + List orderIdList = new ArrayList<>(); + + // <大板实际ID,排单ID> + Map goodsPlanId = new HashMap<>(); + + Map> groupedItems = itemList.stream() .collect(Collectors.groupingBy(PlanSaveReqVO.Item::getGoodsId)); - for (Map.Entry> entry : groupedItems.entrySet()) { + for (Map.Entry> entry : groupedItems.entrySet()) { List items = entry.getValue(); + List orderIds = items.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList(); + + orderIdList.addAll(orderIds); + // 创建计划 PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); plan.setId(identifierGenerator.nextId(plan).longValue()); plan.setSort(0L); - String orderNos = items.stream().map(PlanSaveReqVO.Item::getOrderId).distinct().toList().toString(); + String orderNos = orderIds.toString(); plan.setOrderNos(orderNos); plan.setProduceTime(null); @@ -155,6 +163,8 @@ public class PlanServiceImpl implements PlanService { List goodsDOList = goodsMapper.selectPlanGoodsList(goodsIds, getUserOrganId()).stream().map(m -> m.setPlanId(plan.getId())).toList(); + ids.addAll(goodsDOList.stream().map(GoodsDO::getId).toList()); + goodsDOS.addAll(goodsDOList); @@ -166,6 +176,7 @@ public class PlanServiceImpl implements PlanService { goodsMapper.updateBatch(goodsDOS); + plateMapper.updatePlateOptimized(orderIdList,ids,getUserOrganId()); return goodsPlanId; @@ -185,11 +196,11 @@ public class PlanServiceImpl implements PlanService { if(!(updateReqVO.getItemList() == null)){ // todo 目前之解决非混单的情况,混单的情况待解决 - Long goodsId = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().get(0); + String goodsId = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getGoodsId).distinct().toList().get(0); // todo 目前只解决非混单的情况 - Long goodsIds = BeanUtils.toBean(goodsMapper.selectPlanGoods(plan.getId(), getUserOrganId()).stream().map(GoodsDO::getGoodsId).toList(), Long.class).get(0); + String goodsIds = goodsMapper.selectPlanGoods(plan.getId(), getUserOrganId()).stream().map(GoodsDO::getGoodsId).toList().get(0); if(!goodsId.equals(goodsIds)){ throw exception(PLATE_ERROR); @@ -200,12 +211,26 @@ public class PlanServiceImpl implements PlanService { List ids = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getId).toList(); + List orderIds = updateReqVO.getItemList().stream().map(PlanSaveReqVO.Item::getOrderId).toList(); + + // 修改新增的大板对应的板材为已优化 + plateMapper.updatePlateOptimized(orderIds,ids,getUserOrganId()); + List goodsDOS = new ArrayList<>(goodsMapper.selectPlanGoodsList(ids, getUserOrganId()) .stream().map(m -> m.setPlanId(plan.getId())).toList()); if (!updateReqVO.getDeleteIds().isEmpty()){ - goodsDOS.addAll(goodsMapper.selectPlanGoodsList(updateReqVO.getDeleteIds(), getUserOrganId()).stream().map(m -> m.setPlanId(null)).toList()); + List goodsDOList = goodsMapper.selectPlanGoodsList(updateReqVO.getDeleteIds(), getUserOrganId()); + + List goodsIdList = goodsDOList.stream().map(GoodsDO::getId).distinct().toList(); + + List orderIdList = goodsDOList.stream().map(GoodsDO::getOrderId).distinct().toList(); + + // 修改删除的大板对应的小板为未优化 + plateMapper.updateNoPlateOptimized(orderIdList,goodsIdList,getUserOrganId()); + + goodsDOS.addAll(goodsDOList.stream().map(m -> m.setPlanId(null)).toList()); } @@ -297,25 +322,25 @@ public class PlanServiceImpl implements PlanService { } - // 删除排单信息,商品表里的 planId , ES优化数据,更新排单对应的余料板的排单ID为0 + // 删除排单信息, ES优化数据,更新排单对应的余料板的排单ID为0 planMapper.deleteBatchIds(ids); -// planItemMapper.delete(new LambdaQueryWrapperX().in(PlanItemDO::getPlanId, ids)); - goodsMapper.deletePlanGoods(ids,getUserOrganId()); - remainPlateMapper.deletePlanRemainPlate(ids,getUserOrganId()); + remainPlateMapper.deletePlanRemainPlate(ids,getUserOrganId()); // 排单对应的自增板的删除 todo 目前值解决了非混单的情况 List boardModelDOS = buildBoardByPlanIds(ids, ORDER_REMAIN_PLATE_MODEL, ids.size()); if(!boardModelDOS.isEmpty()) { -// List goodsIds = boardModelDOS.stream().map(OptimizeBoardModelDO::getGoodsId).toList(); - -// List goodsIdList = goodsMapper.selectListByGoodsIdList(goodsIds, orderIds, getUserOrganId()).stream().map(GoodsDO::getId).toList(); List goodsIdList = goodsMapper.selectPlanGoodsListByPlanIdList(ids, getUserOrganId()).stream().map(GoodsDO::getId).toList(); - List plateDOS = plateMapper.selectPlateIdList(goodsIdList, getUserOrganId()); + if(!goodsIdList.isEmpty()) { + // 修改删除的大板对应的小板为未优化 + plateMapper.updateNoPlateOptimized(orderIds, goodsIdList, getUserOrganId()); + } + + List plateDOS = plateMapper.selectPlateIdList(orderIds,goodsIdList, getUserOrganId()); if(!plateDOS.isEmpty()) { List plateIds = plateDOS.stream().map(PlateDO::getId).toList(); @@ -331,6 +356,9 @@ public class PlanServiceImpl implements PlanService { } + // 删除商品表里的 planId + goodsMapper.deletePlanGoods(ids,getUserOrganId()); + List orderIdList = new ArrayList<>(); List diff; @@ -402,31 +430,6 @@ public class PlanServiceImpl implements PlanService { return BeanUtils.toBean(planDO, PlanRespVO.class); -// MPJLambdaWrapper wrapper = new MPJLambdaWrapperX().select(OrderItemDO::getOrderId) -// .rightJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) -// .isNotNull(OrderItemDO::getId); -// Set orderIds = orderItemMapper.selectJoinList(OrderItemDO.class, wrapper).stream().map(OrderItemDO::getOrderId).collect(Collectors.toSet()); -// -// /*Set orderIds = planOrderMapper.selectList(new LambdaQueryWrapperX().eq(PlanOrderDO::getPlanId, planDO.getPlanNo())) -// .stream() -// .map(e -> e.getOrderId()) -// .collect(Collectors.toSet());*/ -// List goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX() -// .eq(GoodsDO::getOrganId,getUserOrganId()) -// .in(GoodsDO::getOrderId, orderIds)); -// List plateDOS = plateMapper.selectList(new LambdaQueryWrapperX() -// .eq(PlateDO::getOrganId,getUserOrganId()) -// .in(PlateDO::getGoodsId, goodsDOS.stream().map(GoodsDO::getGoodsId).collect(Collectors.toSet()))); -// List plateInfoVOS = goodsDOS.stream().map(e -> PlateInfoVO.builder() -// .material(e.getMaterial()) -// .width(e.getWidth()) -// .height(e.getHeight()) -// .thickness(e.getThickness()) -// .area(e.getHeight().multiply(e.getWidth()).setScale(2, RoundingMode.HALF_UP)) -// .count(plateDOS.stream().filter(f -> Objects.equals(f.getGoodsId(), e.getGoodsId())).collect(Collectors.toSet()).size()) -// .build()) -// .collect(Collectors.toList()); -// respVO.setPlateInfoList(plateInfoVOS); } @@ -444,9 +447,9 @@ public class PlanServiceImpl implements PlanService { List plan = pageReqVO.getIsUp() ? - planMapper.selectPlanIds(planDO.getUpdateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()) : + planMapper.selectPlanIds(planDO.getCreateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()) : - planMapper.selectPlanIdsFalse(planDO.getUpdateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()); + planMapper.selectPlanIdsFalse(planDO.getCreateTime().toString(),planDO.getSort(), getUserOrganId(), planDO.getId()); if (plan.isEmpty()) { @@ -577,25 +580,28 @@ public class PlanServiceImpl implements PlanService { PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); List statusList = new ArrayList<>(); + List goodsIds = new ArrayList<>(); statusList.add(OrderStatusEnum.NEW_ORDER.getStatus()); statusList.add(OrderStatusEnum.IN_PRODUCTION.getStatus()); statusList.add(OrderStatusEnum.SORTED.getStatus()); // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 - List goodsDOS = goodsMapper.selectListByGoodsId(pageReqVO.getGoodsId(), getUserOrganId()); - + if(pageReqVO.getGoodsId() != null) { + List goodsDOS = goodsMapper.selectListByGoodsId(pageReqVO.getGoodsId(), getUserOrganId()); + goodsIds.addAll(goodsDOS.stream().map(GoodsDO::getId).toList()); + } QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX .eq("o.organ_id",getUserOrganId()) .eq("o.deleted",false) .in("o.status",statusList) - .eq("og.organ_id",getUserOrganId()) - .eq("og.plan_id",0) - .eq("og.deleted",false) +// .eq("og.organ_id",getUserOrganId()) +// .eq("og.plan_id",0) +// .eq("og.deleted",false) // .isNull("opi.item_id") // todo 修改排单数据筛选,目前只解决了非混单的情况,混单情况待解决 - .inIfPresent("og.id",goodsDOS.isEmpty() ? null :goodsDOS.stream().map(GoodsDO::getId).toList()) + .inIfPresent("og.id",goodsIds) .inIfPresent("o.id",pageReqVO.getOrderIds()) .likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) .inIfPresent("og.id",pageReqVO.getIds()) @@ -609,8 +615,8 @@ public class PlanServiceImpl implements PlanService { .eqIfPresent("op.is_door", pageReqVO.getIsDoor()) .betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()}) .betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()}) - .groupBy("o.id", " o.order_date", "o.delivery_date", "o.customer", "o.address", "o.custom_order_no","o.status") - .having("count(op.id) != 0") +// .groupBy("o.id", " o.order_date", "o.delivery_date", "o.customer", "o.address", "o.custom_order_no","o.status") +// .having("count(op.id) != 0") .orderByDesc("o.order_date"); String filterTypes = ""; @@ -627,12 +633,6 @@ public class PlanServiceImpl implements PlanService { queryWrapperX.likeIfPresent("op.filter_type", insertSeparator(filterTypes)); - - - - - - // todo 目前修改一半,速度无法再进行特别的优化,需等后面修改表结构再进行优化 IPage orderRespVOCopies = orderMapper.selectOrderPage(page,queryWrapperX); @@ -640,16 +640,34 @@ public class PlanServiceImpl implements PlanService { return new PageResult<>(); } -// List records = orderRespVOCopies.getRecords(); -// -// orderRespVOCopies.setRecords(records.stream().peek(m -> { -// -// m.setNum((int) m.getPlatePages().stream().map(PlatePage::getPlateId).count()); -// -// m.setArea(m.getPlatePages().stream().map(PlatePage::getArea).reduce(BigDecimal.ZERO, BigDecimal::add)); -// m.setPlatePages(null); -// -// }).toList()); + List records = orderRespVOCopies.getRecords(); + + List orderIds = records.stream().map(OrderRespVOCopy::getOrderId).toList(); + + + QueryWrapperX queryWrapperX2 = new QueryWrapperX<>(); + queryWrapperX2 + .eq("organ_id",getUserOrganId()) + .eq("deleted",false) + .in("order_id",orderIds) + .eq("is_optimized",false) + .inIfPresent("goods_id",goodsIds) + .inIfPresent("goods_id",pageReqVO.getIds()) + .eqIfPresent("is_special_shaped", pageReqVO.getRectangle() != null ? false: null) + .eqIfPresent("is_special_shaped", pageReqVO.getSpecialShaped()) + .eqIfPresent("is_sculpt", pageReqVO.getSculpt()) + .eqIfPresent("is_door", pageReqVO.getIsDoor()) + .betweenIfPresent("height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()}) + .betweenIfPresent("width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()}); + + List plateList = plateMapper.selectNoPlanPlateList(queryWrapperX2); + + + orderRespVOCopies.setRecords(records.stream().peek(m->{ + m.setNum((int) plateList.stream().filter(f->f.getOrderId().equals(m.getOrderId())).map(PlatePage::getPlateId).count()); + + m.setArea(plateList.stream().filter(f->f.getOrderId().equals(m.getOrderId())).map(PlatePage::getArea).reduce(BigDecimal.ZERO,BigDecimal::add)); + }).toList()); return new PageResult<>(orderRespVOCopies.getRecords(), orderRespVOCopies.getTotal()); @@ -796,9 +814,9 @@ public class PlanServiceImpl implements PlanService { .eq("o.organ_id",getUserOrganId()) .eq("o.deleted",false) .in("o.status",statusList) - .eq("og.organ_id",getUserOrganId()) - .eq("og.plan_id",0) - .eq("og.deleted",false) +// .eq("og.organ_id",getUserOrganId()) +// .eq("og.plan_id",0) +// .eq("og.deleted",false) .inIfPresent("og.order_id", pageReqVO.getOrderIds()) .inIfPresent("og.id", pageReqVO.getIds()) @@ -834,9 +852,6 @@ public class PlanServiceImpl implements PlanService { IPage orderGoodsResps = orderMapper.selectOrderIds(page,queryWrapperX); -// IPage orderGoodsResps = goodsMapper.selectOrderGoodsList(page, queryWrapperX); - - if (CollectionUtil.isEmpty(orderGoodsResps.getRecords())) { return new PageResult<>(); } @@ -845,7 +860,8 @@ public class PlanServiceImpl implements PlanService { List records = orderGoodsResps.getRecords(); - List goodsIdList = records.stream().map(OrderGoodsResp::getGoodsId).toList(); + List goodsIdList = records.stream().map(OrderGoodsResp::getGoodsId).toList(); + queryWrapperX.in("og.goods_id", goodsIdList); @@ -853,33 +869,12 @@ public class PlanServiceImpl implements PlanService { List goodsResp = orderMapper.selectGoodsListByGoodsId(queryWrapperX); -// -// Map> collect = records.stream().collect(Collectors.groupingBy(OrderGoodsResp::getGoodsId)); - - -// for (OrderGoodsResp orderGoodsResp : goodsResp) { -// -// List orderGoodsResps1 = collect.get(orderGoodsResp.getGoodsId()); -// -// -// if (orderGoodsResps1 != null) { -// // 合并 otherObjectList 到 obj1 副本中 -// orderGoodsResps1.get().addAll(obj2.getOtherObjectList()); -// } -// -// } - - - for (OrderGoodsResp record : records) { - List orderIdsList = new ArrayList<>(); - List> list = goodsResp.stream().filter(f -> f.getGoodsId().equals(record.getGoodsId())).map(OrderGoodsResp::getOrderIds).toList(); - if(!list.isEmpty()){ orderIdsList = list.stream().flatMap(Collection::stream).toList(); @@ -887,24 +882,11 @@ public class PlanServiceImpl implements PlanService { } record.setOrderIds(orderIdsList); - } orderGoodsResps.setRecords(records); -// for (Map.Entry> entry : collect.entrySet()) { -// -// List> list = entry.getValue().stream().map(OrderGoodsResp::getOrderIds).toList(); -// -// List orderds = list.stream().flatMap(Collection::stream).toList(); -// -// List list1 = records.stream().filter(f -> f.getGoodsId().equals(entry.getKey())).map(m -> m.setOrderIds(orderds)).toList(); -// -// orderGoodsResps.setRecords(list1); -// -// } - return new PageResult<>(orderGoodsResps.getRecords(), orderGoodsResps.getTotal()); @@ -969,6 +951,7 @@ public class PlanServiceImpl implements PlanService { } queryWrapperX.eq("og.organ_id",getUserOrganId()) + .eq("og.deleted",false) .in("og.plan_id", vo.getPlanIds()) .eqIfPresent("op.is_door", vo.getIsDoor()) .eqIfPresent("op.is_special_shaped", vo.getRectangle() != null ? false: null) @@ -976,8 +959,7 @@ public class PlanServiceImpl implements PlanService { .eqIfPresent("op.is_sculpt", vo.getSculpt()) .betweenIfPresent("op.width", new BigDecimal[]{vo.getWidthMinRang(), vo.getWidthMaxRang()}) .betweenIfPresent("op.height", new BigDecimal[]{vo.getLongMinRang(), vo.getLongMaxRang()}) - .likeIfPresent("op.filter_type", insertSeparator(filterTypes)) - .orderByDesc("op.order_id"); + .likeIfPresent("op.filter_type", insertSeparator(filterTypes)); PageDTO page = new PageDTO<>(vo.getPageNo(), vo.getPageSize()); @@ -1073,6 +1055,7 @@ public class PlanServiceImpl implements PlanService { } + @Override public void deleteByPlanId(List planIds, String index) { List fieldValues = planIds.stream().map(FieldValue::of).toList(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java index d058e5464..042bfde23 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java @@ -22,7 +22,6 @@ import com.cf.imes.module.executor.controller.admin.plate.vo.*; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; -import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper; @@ -48,7 +47,7 @@ import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConsta import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.executor.service.optimizeplan.OptimizePlanService.ORDER_PLATE_MODEL; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_NOT_EXISTS; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS; import static com.cf.imes.module.system.enums.ErrorCodeConstants.THE_CURRENT_BOARD_IS_NOT_SELECTED; /** @@ -114,7 +113,7 @@ public class PlateServiceImpl implements PlateService { private void validatePlateExists(Long id) { if (plateMapper.selectById(id) == null) { - throw exception(PLATE_NOT_EXISTS); + throw exception(REMAIN_PLATE_NOT_EXISTS); } } @@ -268,7 +267,7 @@ public class PlateServiceImpl implements PlateService { plateDO.setRemark(reqVO.getRemake1() +","+ reqVO.getRemake2()); plateDO.setHoleArrange(reqVO.getPlaceHole()); plateDO.setGoodsId(goodsId); - + plateDO.setIsOptimized(true); plateDO.setPlateNo((obtainingTime) + Long.toString(plateNo).substring(2)); plateDO.setArea(reqVO.getWidth().multiply(reqVO.getHeight()).movePointLeft(4).stripTrailingZeros()); @@ -304,19 +303,19 @@ public class PlateServiceImpl implements PlateService { orderItemMapper.insertBatch(orderItemDOS); - List planItemDOS = new ArrayList<>(); - - orderItemDOS.forEach(orderItemDO ->{ - - PlanItemDO planItemDO = PlanItemDO.builder() - .planId(reqVO.getPlanId()) - .itemId(orderItemDO.getId()) - .build(); - planItemDOS.add(planItemDO); - }); - - // 排单明细表新增数据 - planItemMapper.insertBatch(planItemDOS); +// List planItemDOS = new ArrayList<>(); +// +// orderItemDOS.forEach(orderItemDO ->{ +// +// PlanItemDO planItemDO = PlanItemDO.builder() +// .planId(reqVO.getPlanId()) +// .itemId(orderItemDO.getId()) +// .build(); +// planItemDOS.add(planItemDO); +// }); +// +// // 排单明细表新增数据 +// planItemMapper.insertBatch(planItemDOS); return plateDOS.stream().map(PlateDO::getId).toList(); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml index d5d8bbc91..96a6d2156 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml @@ -41,7 +41,7 @@ UPDATE order_goods - SET deleted = #{deleted} + SET deleted = #{deleted},plan_id = 0 WHERE id IN #{id} @@ -58,63 +58,6 @@ - - - + + + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml index 0cb097f2e..b78cee4cf 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml @@ -35,21 +35,17 @@ - - - - and op.goods_id in - - #{pageReqVO.ids} - - - - - - and a.id like concat('%',#{pageReqVO.orderId},'%') - - - - and a.customer like concat('%',#{pageReqVO.consignee},'%') - - - - and a.custom_order_no like concat('%',#{pageReqVO.defaultId},'%') - - - - and a.address like concat('%',#{pageReqVO.consigneeAddress},'%') - - - - between #{pageReqVO.createTime.[0]} and #{pageReqVO.createTime.[1]} - - - - - group by a.id, a.order_date, a.delivery_date, a.customer, a.address, a.custom_order_no,a.create_time,a.update_time,a.status - order by a.update_time desc ;--> - - - - - - - - - - - - - - @@ -305,8 +254,10 @@ og.spec from orders o - left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id - left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted + + join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted + + join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false ${ew.customSqlSegment} @@ -324,8 +275,10 @@ og.order_id as orderId, og.id as id from orders o - left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id - left join order_plate op on og.organ_id = op.organ_id and og.id = op.goods_id and og.deleted = op.deleted + + join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id and og.plan_id = 0 and o.deleted = og.deleted + + join order_plate op on o.organ_id = op.organ_id and o.deleted = op.deleted and o.id = op.order_id and op.is_optimized = false ${ew.customSqlSegment} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index 18d4a1146..3bd3e1de8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -183,11 +183,10 @@ select * from order_plan where organ_id = #{organId} and deleted = false - and update_time >= #{updateTime} - and sort <= #{sort} + and create_time >= #{createTime} and id != #{planId} - ORDER BY sort DESC, update_time + ORDER BY create_time limit 1; @@ -199,16 +198,30 @@ select * from order_plan where organ_id = #{organId} and deleted = false - and update_time <= #{updateTime} - and sort >= #{sort} + and create_time <= #{createTime} and id != #{planId} - ORDER BY sort , update_time desc + ORDER BY create_time desc limit 1; + + \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 465f40be0..3c43384c9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -400,7 +400,7 @@ UPDATE order_plate - SET deleted = #{deleted} + SET deleted = #{deleted},is_optimized = false WHERE id IN @@ -410,6 +410,7 @@ AND organ_id = #{organId} and order_id = #{orderId} + DELETE FROM order_plate WHERE id IN @@ -865,4 +866,75 @@ + + + + + + + + + + + + + + + + + update order_plate + + set is_optimized = true + + where organ_id = #{organId} + and deleted = false + + and order_id in + + #{orderIdList} + + + and goods_id in + + #{ids} + + + and is_optimized = false + + + + + + update order_plate + + set is_optimized = false + + where organ_id = #{organId} + and deleted = false + and order_id in + + #{orderIdList} + + and goods_id in + + #{ids} + + + and is_optimized = true + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java index f54ce90d9..8a4258c04 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/PackController.java @@ -52,7 +52,7 @@ public class PackController { @GetMapping("/getOrderPlate") - @Operation(summary = "查看生产订单对应的板材信息") + @Operation(summary = "查看生产订单对应的没有打包的板材信息") @Parameter(name = "orderId", description = "生产单Id", required = true) @PreAuthorize("@ss.hasPermission('manage:pack-palte:query')") public CommonResult> getOrderPlateList(@Valid @RequestParam("orderId") Long orderId) { @@ -105,22 +105,6 @@ public class PackController { -// @GetMapping("/export") -// @Operation(summary = "导出缺板") -// @PreAuthorize("@ss.hasPermission('manage:pack:export')") -// @OperateLog(type = EXPORT) -// public void exportPlateExcel(@Valid OrderPartsReqVO pageReqVO, -// HttpServletResponse response) throws IOException { -// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); -// List list = productionStatusService.getMissingBoard(pageReqVO).getList(); -// // 导出 Excel -// ExcelUtils.write(response, "缺板信息表.xlsx", "数据", PlateDetailsRespVO.class, list); -// -// } - - - - @GetMapping("/getParts") @Operation(summary = "查看配件列表") @@ -202,11 +186,9 @@ public class PackController { - - - @GetMapping("/print") - @Operation(summary = "包裹订单打印") - @PreAuthorize("@ss.hasPermission('manage:pack:query')") +// @GetMapping("/print") +// @Operation(summary = "包裹订单打印") +// @PreAuthorize("@ss.hasPermission('manage:pack:query')") public CommonResult printOrderPack (@Valid PrintOrderPackReqVO reqVO) { return success(packService.printOrderPack(reqVO)); diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/DeleteOtherPartsReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/DeleteOtherPartsReqVO.java index 885da7b7c..5e73d4265 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/DeleteOtherPartsReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/DeleteOtherPartsReqVO.java @@ -11,6 +11,9 @@ import lombok.ToString; public class DeleteOtherPartsReqVO { + @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long orderId; + @Schema(description = "包裹Id", requiredMode = Schema.RequiredMode.REQUIRED) private Long packageId; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackReqVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackReqVO.java index 10edb609a..e6fee7bdd 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackReqVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackReqVO.java @@ -1,7 +1,6 @@ package com.cf.imes.module.manage.controller.admin.pack.vo; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.ToString; @@ -11,6 +10,9 @@ import lombok.ToString; @ToString(callSuper = true) public class PackReqVO { + @Schema(description = "生产单ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long orderId; + @Schema(description = "包裹ID", requiredMode = Schema.RequiredMode.REQUIRED) private Long packageId; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java index ae790a37a..18beabbc5 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/pack/vo/PackRespVO.java @@ -82,11 +82,12 @@ public class PackRespVO { private Long totalPieceCount; - @Schema(description = "待处理量") private Long pendingNum; + @Schema(description = "生产单对应的板材ID") + private List plateId; // @Schema(description = "生产单对应的板件信息", requiredMode = Schema.RequiredMode.REQUIRED) // List plateDetailsRespVO; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/ProductionStatusController.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/ProductionStatusController.java index 996779155..53cbe601d 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/ProductionStatusController.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/controller/admin/query/ProductionStatusController.java @@ -2,17 +2,10 @@ package com.cf.imes.module.manage.controller.admin.query; import com.cf.imes.framework.common.pojo.CommonResult; -import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.object.BeanUtils; -import com.cf.imes.framework.excel.core.util.ExcelUtils; -import com.cf.imes.framework.operatelog.core.annotations.OperateLog; -import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPartsReqVO; -import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.process.vo.ProcessRespVO; -import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackagePageReqVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; -import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PrintOrderRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.*; import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRatePageReqVO; @@ -30,14 +23,10 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; - -import java.io.IOException; import java.util.List; import static com.cf.imes.framework.common.pojo.CommonResult.success; -import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 生产查询") @RestController @@ -148,18 +137,6 @@ public class ProductionStatusController { -// @GetMapping("/queryPackageDetails") -// @Operation(summary = "查看包裹详情分页") -// @Parameter(name = "packId", description = "包裹Id", required = true) -// @PreAuthorize("@ss.hasPermission('manage:query:query')") - public CommonResult> queryPackageDetails(@Valid @RequestParam("packId") Long packId){ - - return null; -// return CommonResult.success(productionStatusService.queryPackageDetails(packId)); - - } - - @@ -177,20 +154,6 @@ public class ProductionStatusController { -// @GetMapping("/export") -// @Operation(summary = "导出缺板") -// @PreAuthorize("@ss.hasPermission('manage:query:export')") -// @OperateLog(type = EXPORT) -// public void exportPlateExcel(@Valid OrderPartsReqVO pageReqVO, -// HttpServletResponse response) throws IOException { -// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); -// List list = productionStatusService.getMissingBoard(pageReqVO).getList(); -// // 导出 Excel -// ExcelUtils.write(response, "缺板信息表.xls", "数据", PlateDetailsRespVO.class, list); -// -// } - - } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java index 29ad347ed..5aa4081b6 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.java @@ -54,18 +54,20 @@ public interface OrderPackageMapper extends BaseMapperX { default OrderPackageDO selectByPackId(Long packId,Long organId) { return selectOne(new LambdaQueryWrapperX() .eq(OrderPackageDO::getOrganId, organId) + .eq(OrderPackageDO::getDeleted,false) .eqIfPresent(OrderPackageDO::getId, packId)); } - void updateParts(@Param("packageId") Long packageId, @Param("packageNo") Long packageNo); + void updateParts(@Param("packageId") Long packageId,@Param("orderId") Long orderId,@Param("organId") Long organId); default List selectPackStatus(Long orderId,Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderPackageDO::getOrganId,organId) + .eq(OrderPackageDO::getDeleted,false) .eqIfPresent(OrderPackageDO::getOrderId, orderId)); } @@ -73,6 +75,7 @@ public interface OrderPackageMapper extends BaseMapperX { default List selectPackList(Long orderId,Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderPackageDO::getOrganId,organId) + .eq(OrderPackageDO::getDeleted,false) .eqIfPresent(OrderPackageDO::getOrderId, orderId) .eqIfPresent(OrderPackageDO::getStatus, OrderPackageStatusEnum.UNPACKED.getStatus())); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java index e0a95fc90..c8e47bfb1 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.java @@ -1,11 +1,15 @@ package com.cf.imes.module.manage.dal.mysql.plate; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; +import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingDetailRespVO; import com.cf.imes.module.manage.controller.admin.patching.vo.PatchingPlatePageReqVO; import com.cf.imes.module.manage.controller.admin.process.vo.PlateDetails; +import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; import com.cf.imes.module.manage.dal.dataobject.plate.OrderPlateDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -45,4 +49,12 @@ public interface OrderPlateMapper extends BaseMapperX { .likeIfPresent(OrderPlateDO::getPlateNo, plateNo.toString()) .select(OrderPlateDO::getId)); } + + List selectPlateNum(@Param("orderIds") List orderIds,@Param("organId") Long organId); + + List selectOrderNoPackPlateList(@Param("orderId") Long orderId,@Param("organId") Long organId); + + List selectOrderPlateList(@Param("orderIds") List orderIds, @Param("organId") Long organId); + + IPage selectPackPlateList(@Param("page") IPage page, @Param("packageId") Long packageId, @Param("organId") Long organId); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java index 8ad79532b..ba7156913 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.java @@ -3,12 +3,9 @@ package com.cf.imes.module.manage.dal.mysql.query; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPlateDetailsRespVO; -import com.cf.imes.module.manage.controller.admin.pack.vo.PackRespVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.process.vo.PlateDetails; import com.cf.imes.module.manage.controller.admin.process.vo.ProcessPlateReqVO; -import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderPlateRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.PlatePageVO; @@ -22,8 +19,6 @@ import java.util.List; public interface OrderItemMapper extends BaseMapperX { - List selectByPackageId( @Param("packageId") Long packageId, @Param("organId") Long organId); - List selectCombinationName(Long orderNo); @@ -31,61 +26,51 @@ public interface OrderItemMapper extends BaseMapperX { List selectPlateList(PlatePageVO pageReqVO); - List selectOrderPlateList(@Param("orderNo") Long orderNo,@Param("organId") Long organId); - - List selectPrintPlateList(@Param("orderNo")Long orderNo,@Param("packageNo") Long packageNo, @Param("organId") Long organId); - void deleteOrderPack(@Param("packId") Long packId); + void deleteOrderPack(@Param("packId") Long packId,@Param("orderId") Long orderId,@Param("organId") Long organId); - void deleteOtherParts(@Param("partsId") Long partsId); + void deleteOtherParts(@Param("partsId") Long partsId,@Param("orderId") Long orderId,@Param("organId") Long organId); - - void insertPackId(@Param("plateIdList") List plateIdList, @Param("packId") Long packId); + void insertPackId(@Param("plateIdList") List plateIdList, @Param("packId") Long packId,@Param("orderId") Long orderId,@Param("organId") Long organId); - void deletePackId(@Param("deletePlateIdList") List deletePlateIdList,@Param("packId") Long packId); + void deletePackId(@Param("deletePlateIdList") List deletePlateIdList,@Param("packId") Long packId,@Param("orderId") Long orderId,@Param("organId") Long organId); - void insertPartsId(@Param("packId") Long packId, @Param("addPartsIdList") List addPartsIdList); - - - String selectBodyName(@Param("plateId") Long plateId); + void insertPartsId(@Param("packId") Long packId, @Param("addPartsIdList") List addPartsIdList,@Param("orderId") Long orderId,@Param("organId") Long organId); List selectByOrderId(@Param("reqVO") ProcessPlateReqVO reqVO, @Param("organId") Long organId ); - OrderPlateDetailsRespVO selectOrderPlateDetails(@Param("orderId") Long orderId); + void insertParts(@Param("addPartsList") List addPartsList, @Param("packId")Long packId, @Param("orderId") Long orderId,@Param("organId") Long organId); - - void insertParts(@Param("addPartsList") List addPartsList, @Param("packId")Long packId, @Param("orderNo") Long orderNo); - - void deletePartsList(@Param("deletePartsList")List deletePartsList,@Param("packId") Long packId,@Param("orderNo") Long orderNo); + void deletePartsList(@Param("deletePartsList")List deletePartsList,@Param("packId") Long packId,@Param("orderId") Long orderId,@Param("organId") Long organId); List selectPlateListByBodyIds( @Param("collect") List collect,@Param("orderId") Long orderId,@Param("userOrganId") Long userOrganId); - List selectOrdersPlateList(@Param("orderIds") List orderIds, @Param("userOrganId") Long userOrganId); - default List selectPackList(Long packId, Long organId) { + default List selectPackList(Long packId,Long orderId ,Long organId) { return selectList(new LambdaQueryWrapperX() .eq(OrderItemDO::getOrganId, organId) + .eqIfPresent(OrderItemDO::getOrderId,orderId) .eqIfPresent(OrderItemDO::getPackageId, packId)); } - void deleteParts(@Param("packageId") Long packageId, @Param("partsIds") List partsIds); + void deleteParts(@Param("packageId") Long packageId,@Param("orderId") Long orderId ,@Param("partsIds") List partsIds,@Param("organId") Long organId); - void updateParts(@Param("partsId") Long partsId,@Param("packageId") Long packageId); + void updateParts(@Param("partsId") Long partsId,@Param("packageId") Long packageId,@Param("orderId") Long orderId,@Param("organId") Long organId); default List selectPackPlateList(Long orderId, Long organId) { @@ -95,8 +80,6 @@ public interface OrderItemMapper extends BaseMapperX { } - List selectPlateNum(@Param("orderIds") List orderIds,@Param("organId") Long organId); - default List selectPartsList(Long orderId, Long organId) { diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java index 6475c5e13..f8db63205 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.java @@ -2,13 +2,9 @@ package com.cf.imes.module.manage.dal.mysql.query; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; -import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPartsRespVO; -import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlatePageReqVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; -import com.cf.imes.module.manage.dal.dataobject.plate.PlateDO; import com.cf.imes.module.manage.dal.dataobject.query.OrderPartsNDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -26,16 +22,9 @@ public interface OrderPartsMapper extends BaseMapperX { - void deleteOrderParts(@Param("partsIds") List partsIds); + void deleteOrderParts(@Param("partsIds") List partsIds,@Param("orderId") Long orderId,@Param("organId") Long organId); - default OrderPartsNDO selectOneParts(String otherPartsName,Long organId) { - return selectOne(new LambdaQueryWrapperX() - .eq(OrderPartsNDO::getOrganId,organId) - .eqIfPresent(OrderPartsNDO::getName,otherPartsName)); - - } - - void updateParts(@Param("partsId") Long partsId); + void updateParts(@Param("partsId") Long partsId,@Param("orderId") Long orderId,@Param("organId") Long organId); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java index 5a9763843..77f220215 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/pack/PackServiceImpl.java @@ -8,6 +8,7 @@ import com.cf.imes.framework.common.enums.OrderPackageStatusEnum; import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.common.enums.UserSettingTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.Assert.AssertUtils; import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; @@ -26,13 +27,13 @@ import com.cf.imes.module.manage.dal.mysql.pack.OrderBodyMapper; import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper; import com.cf.imes.module.manage.dal.mysql.pack.OrderPrepackagedMapper; import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper; -import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper; import com.cf.imes.module.manage.dal.mysql.process.OrdersMapper; import com.cf.imes.module.manage.dal.mysql.query.OrderItemMapper; import com.cf.imes.module.manage.dal.mysql.query.OrderPartsMapper; import com.cf.imes.module.manage.util.SnowflakeIdWorker3rd; import com.cf.imes.module.system.api.setting.SettingApi; import com.cf.imes.module.system.api.setting.dto.PackageConfigDTO; +import com.cf.imes.module.system.enums.ErrorCodeConstants; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -78,9 +79,6 @@ public class PackServiceImpl implements PackService { @Resource private OrdersMapper ordersMapper; - @Resource - private PlateMapper plateMapper; - @Resource private SnowflakeIdWorker3rd idWorker; @@ -105,18 +103,20 @@ public class PackServiceImpl implements PackService { IPage packRespVOS = new PageDTO<>(); - if(pageReqVO.getIsUp() != null){ + if (pageReqVO.getIsUp() != null) { OrderDO order = ordersMapper.selectById(pageReqVO.getOrderId()); + // 判断是否为空 + AssertUtils.notEmpty(order,ORDER_DATE_ERROR); List packRespVOList = pageReqVO.getIsUp() ? - ordersMapper.selectOrderIds(order.getCreateTime().toString(), getUserOrganId(),order.getId()) : + ordersMapper.selectOrderIds(order.getCreateTime().toString(), getUserOrganId(), order.getId()) : - ordersMapper.selectOrderIdsFalse(order.getCreateTime().toString(), getUserOrganId(),order.getId()); + ordersMapper.selectOrderIdsFalse(order.getCreateTime().toString(), getUserOrganId(), order.getId()); - if(packRespVOList.isEmpty()){ - throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ?"第" : "最后"); + if (packRespVOList.isEmpty()) { + throw exception(NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE, pageReqVO.getIsUp() ? "第" : "最后"); } packRespVOS.setRecords(packRespVOList); @@ -125,7 +125,8 @@ public class PackServiceImpl implements PackService { orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList()); - }else { + + } else { pageReqVO.setCustomer(insertSeparator(pageReqVO.getCustomer())); pageReqVO.setCustomOrderNo(insertSeparator(pageReqVO.getCustomOrderNo())); @@ -133,7 +134,7 @@ public class PackServiceImpl implements PackService { // 查询查询分页 - packRespVOS = ordersMapper.selectOrderIdList(page,pageReqVO, getUserOrganId()); + packRespVOS = ordersMapper.selectOrderIdList(page, pageReqVO, getUserOrganId()); orderIds.addAll(packRespVOS.getRecords().stream().map(PackRespVO::getId).toList()); @@ -144,17 +145,29 @@ public class PackServiceImpl implements PackService { // 查询板材的总量 - List packRespVOList = orderItemMapper.selectPlateNum(orderIds,getUserOrganId()); + List packRespVOList = orderPlateMapper.selectPlateNum(orderIds, getUserOrganId()); + + AssertUtils.notEmpty(packRespVOList, ErrorCodeConstants.ORDER_PLATE_ERROR); + + for (PackRespVO packRespVO : packRespVOList) { + packRespVO.setTotalPieceCount((long) packRespVO.getPlateId().size()); + packRespVO.setPlateId(null); + } // 查询当前生产的包裹数量 - List respVOS = orderPackageMapper.selectPackPage(orderIds,getUserOrganId()); + List respVOS = orderPackageMapper.selectPackPage(orderIds, getUserOrganId()); // 查询当前生产单已经打包的板材数量 List plateNum = orderPackageMapper.selectPackPieceCount(orderIds, getUserOrganId()); + for (PackRespVO packRespVO : plateNum) { + packRespVO.setPackPieceCount((long) packRespVO.getPlateId().size()); + packRespVO.setPlateId(null); + } + for (PackRespVO record : packRespVOS.getRecords()) { // 板材总数 @@ -178,21 +191,20 @@ public class PackServiceImpl implements PackService { } - // 查看生产订单对应的板材信息 @Override public List getOrderPlateList(Long orderId) { - // 查询需要返回的其他信息 -// OrderPlateDetailsRespVO orderPlateDetailsRespVO = orderItemMapper.selectOrderPlateDetails(orderId); -// orderPlateDetailsRespVO.setPendingNum(orderPlateDetailsRespVO.getPlateNum() - orderPlateDetailsRespVO.getPlateProcessedNum()); - // 查询订单对应的板件信息 - List plateDetailsRespVOS = orderItemMapper.selectOrderPlateList(orderId,getUserOrganId()); + List plateDetailsRespVOS = orderPlateMapper.selectOrderNoPackPlateList(orderId, getUserOrganId()); + + if(plateDetailsRespVOS.isEmpty()){ + return null; + } for (PlateDetailsRespVO plateDetailsRespVO : plateDetailsRespVOS) { String name = ""; - if(!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) { + if (!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) { for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) { // 去除最后的逗号 name += groupNameList.getName() + ","; @@ -214,17 +226,23 @@ public class PackServiceImpl implements PackService { public List getOrdersPlateList(List orderIds) { - List plateDetailsRespVOS = orderItemMapper.selectOrdersPlateList(orderIds, getUserOrganId()); + List plateDetailsRespVOS = orderPlateMapper.selectOrderPlateList(orderIds,getUserOrganId()); + + if (plateDetailsRespVOS.isEmpty()) { + + return null; + } List packageIds = plateDetailsRespVOS.stream().map(PlateDetailsRespVO::getPackageId).distinct().toList(); List orderPackageDOS = new ArrayList<>(); - if(!packageIds.isEmpty()) { + if (!packageIds.isEmpty()) { orderPackageDOS = orderPackageMapper.selectBatchIds(packageIds); } + for (PlateDetailsRespVO plateDetailsRespVO : plateDetailsRespVOS) { String name = ""; - if(!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) { + if (!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) { for (GroupNameList groupNameList : plateDetailsRespVO.getProcessGroupNameList()) { // 去除最后的逗号 name += groupNameList.getName() + ","; @@ -245,7 +263,6 @@ public class PackServiceImpl implements PackService { } - // 查看生产订单对应的包裹信息 @Override public List getOrderPack(PackageDetailsReqVO reqVO) { @@ -255,13 +272,8 @@ public class PackServiceImpl implements PackService { OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); - // for (OrderPackageVO orderPackageVO : orderPackageVOS) { -// orderPackageVO.setCustomOrderNo(orderDO.getCustomOrderNo()); -// orderPackageVO.setCustomer(orderDO.getCustomer()); -// orderPackageVO.setAddress(orderDO.getAddress()); -// orderPackageVO.setDealer(orderDO.getDealer()); -// orderPackageVO.setOrderRemark(orderDO.getRemark()); -// } +// AssertUtils.notEmpty(orderPackageVOS,orderDO,ORDER_PLATE_ERROR); + return orderPackageVOS.stream().peek(m -> { @@ -276,7 +288,6 @@ public class PackServiceImpl implements PackService { } - @Override public PageResult getPageOrderPack(PackageDetailsReqVO reqVO) { @@ -284,13 +295,13 @@ public class PackServiceImpl implements PackService { List packId = null; - if(reqVO.getPlateNo()!= null){ + if (reqVO.getPlateNo() != null) { List plateId = orderPlateMapper.selectplateByPlateNo(reqVO.getPlateNo(), reqVO.getOrderId(), getUserOrganId()) .stream().map(OrderPlateDO::getId).toList(); - if(plateId.isEmpty()){ + if (plateId.isEmpty()) { return null; } @@ -301,17 +312,17 @@ public class PackServiceImpl implements PackService { QueryWrapperX queryWrapperX = new QueryWrapperX<>(); queryWrapperX - .eq("o.organ_id",getUserOrganId()) - .eq("o.deleted",false) - .eq("op.deleted",false) - .eq("o.id",reqVO.getOrderId()) - .likeIfPresent("op.package_no",reqVO.getPackageNo()) - .inIfPresent("op.id",packId) + .eq("o.organ_id", getUserOrganId()) + .eq("o.deleted", false) + .eq("op.deleted", false) + .eq("o.id", reqVO.getOrderId()) + .likeIfPresent("op.package_no", reqVO.getPackageNo()) + .inIfPresent("op.id", packId) .eqIfPresent("op.status", reqVO.getPackStatus()) .orderByDesc("op.create_time"); - IPage orderPackageDOIPage = orderPackageMapper.selectByOrderNo(page,queryWrapperX); + IPage orderPackageDOIPage = orderPackageMapper.selectByOrderNo(page, queryWrapperX); if (CollectionUtil.isEmpty(orderPackageDOIPage.getRecords())) { @@ -324,17 +335,12 @@ public class PackServiceImpl implements PackService { } - - - - // 查看配件列表分页 @Override public List getPartsList(OrderPartsReqVO reqVO) { - - List orderPartsRespVOS = orderPartsMapper.selectPartsList(reqVO.getOrderId(),getUserOrganId()); + List orderPartsRespVOS = orderPartsMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId()); return orderPartsRespVOS; @@ -352,7 +358,6 @@ public class PackServiceImpl implements PackService { } - // 更新配件 @Override @Transactional(rollbackFor = Exception.class) @@ -360,7 +365,7 @@ public class PackServiceImpl implements PackService { // 判断包裹ID是否为空,为空,走新增,不为空,走更新 - if(reqVO.getPackId()==null){ + if (reqVO.getPackId() == null) { OrderPackageDO orderPackageDO = new OrderPackageDO(); orderPackageDO.setOrderId(reqVO.getOrderId()); @@ -369,12 +374,12 @@ public class PackServiceImpl implements PackService { orderPackageDO.setStatus((OrderPackageStatusEnum.PACKAGED.getStatus())); orderPackageMapper.insert(orderPackageDO); // 生产单明细表新增包裹 ID - if(reqVO.getAddPartsIdList()!=null) { - orderItemMapper.insertPartsId( orderPackageDO.getId(),reqVO.getAddPartsIdList()); + if (reqVO.getAddPartsIdList() != null) { + orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList(), reqVO.getOrderId(), getUserOrganId()); } // 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包 - if(validateOrderPack(reqVO.getOrderId())){ + if (validateOrderPack(reqVO.getOrderId())) { updateOrderStatus(reqVO.getOrderId()); @@ -388,20 +393,20 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(reqVO.getPackId(), getUserOrganId()); - List orderItemDOS = orderItemMapper.selectPackList(reqVO.getPackId(), getUserOrganId()); - List partsList = orderItemDOS.stream().map(m -> m.getPartsId()).collect(Collectors.toList()); + List orderItemDOS = orderItemMapper.selectPackList(reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); + List partsList = orderItemDOS.stream().map(OrderItemDO::getPartsId).toList(); // 如果此时删除的包裹配件数量等于查询出来的配件数量,且新增的板材数量不为0,更改包裹的类型 - if(reqVO.getDeletePartsIdList().size() == partsList.size() && !reqVO.getAddPlateIdList().isEmpty()){ + if (reqVO.getDeletePartsIdList().size() == partsList.size() && !reqVO.getAddPlateIdList().isEmpty()) { - // 删除生产单明细表板件对应的包裹ID - orderItemMapper.deletePackId(reqVO.getDeletePartsIdList(), reqVO.getPackId()); + // 删除生产单明细表配件对应的包裹ID + orderItemMapper.deletePartsList(reqVO.getDeletePartsIdList(), reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); - // 生产单明细表配件新增对应的包裹ID - orderItemMapper.insertParts(reqVO.getAddPlateIdList(),reqVO.getPackId(),reqVO.getOrderId()); + // 生产单明细表板材新增对应的包裹ID + orderItemMapper.insertPackId(reqVO.getAddPlateIdList(), reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); // 更新包裹类型和包裹的状态 @@ -414,12 +419,12 @@ public class PackServiceImpl implements PackService { // 生产明细表新增的配件ID - if(!reqVO.getAddPartsIdList().isEmpty()) { - orderItemMapper.insertParts(reqVO.getAddPartsIdList(), reqVO.getPackId(), reqVO.getOrderId()); + if (!reqVO.getAddPartsIdList().isEmpty()) { + orderItemMapper.insertParts(reqVO.getAddPartsIdList(), reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); } // 生产明细表删除的配件ID - if(!reqVO.getDeletePartsIdList().isEmpty()) { - orderItemMapper.deletePartsList(reqVO.getDeletePartsIdList(), reqVO.getPackId(), reqVO.getOrderId()); + if (!reqVO.getDeletePartsIdList().isEmpty()) { + orderItemMapper.deletePartsList(reqVO.getDeletePartsIdList(), reqVO.getPackId(), reqVO.getOrderId(), getUserOrganId()); } orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus()); @@ -427,24 +432,22 @@ public class PackServiceImpl implements PackService { // 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包 - if(validateOrderPack(reqVO.getOrderId())){ + if (validateOrderPack(reqVO.getOrderId())) { updateOrderStatus(reqVO.getOrderId()); } - return typeConversion(orderPackageDO); } - // 拆包 @Override public OrderPackRespVO unpacking(Long packageID) { OrderPackageDO packageDO = orderPackageMapper.selectById(packageID); - packageDO.setStatus((OrderPackageStatusEnum.UNPACKED.getStatus())); + packageDO.setStatus(OrderPackageStatusEnum.UNPACKED.getStatus()); orderPackageMapper.updateById(packageDO); return typeConversion(packageDO); @@ -452,8 +455,6 @@ public class PackServiceImpl implements PackService { } - - // 更新包裹 @Override @Transactional(rollbackFor = Exception.class) @@ -461,7 +462,7 @@ public class PackServiceImpl implements PackService { // 判断包裹ID是否为空,为空,走新增,不为空,走更新 - if(packageVO.getPackId()==null){ + if (packageVO.getPackId() == null) { OrderPackageDO orderPackageDO = new OrderPackageDO(); orderPackageDO.setOrderId(packageVO.getOrderId()); @@ -471,11 +472,11 @@ public class PackServiceImpl implements PackService { orderPackageDO.setRemark(packageVO.getRemark()); orderPackageMapper.insert(orderPackageDO); // 生产单明细表新增包裹 ID - if(packageVO.getAddPlateIdList()!=null) { - orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId()); + if (packageVO.getAddPlateIdList() != null) { + orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), orderPackageDO.getId(), packageVO.getOrderId(), getUserOrganId()); } - if(validateOrderPack(packageVO.getOrderId())){ + if (validateOrderPack(packageVO.getOrderId())) { updateOrderStatus(packageVO.getOrderId()); } @@ -484,21 +485,20 @@ public class PackServiceImpl implements PackService { OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackId(packageVO.getPackId(), getUserOrganId()); - List orderItemDOS = orderItemMapper.selectPackList(packageVO.getPackId(), getUserOrganId()); - List plateList = orderItemDOS.stream().map(m -> m.getPlateId()).collect(Collectors.toList()); -// List partsList = orderItemDOS.stream().map(m -> m.getPartsId()).collect(Collectors.toList()); + List orderItemDOS = orderItemMapper.selectPackList(packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); + List plateList = orderItemDOS.stream().map(OrderItemDO::getPlateId).toList(); // 如果此时删除的包裹板材数量等于查询出来的板材数量,且新增的配件数量不为0,更改包裹的类型 - if(packageVO.getDeletePlateIdList().size() == plateList.size() && !packageVO.getAddPartsIdList().isEmpty()){ + if (packageVO.getDeletePlateIdList().size() == plateList.size() && !packageVO.getAddPartsIdList().isEmpty()) { // 删除生产单明细表板件对应的包裹ID - orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId()); + orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); // 生产单明细表配件新增对应的包裹ID - orderItemMapper.insertParts(packageVO.getAddPartsIdList(),packageVO.getPackId(),packageVO.getOrderId()); + orderItemMapper.insertParts(packageVO.getAddPartsIdList(), packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); // 更新包裹类型和包裹的状态 @@ -511,13 +511,13 @@ public class PackServiceImpl implements PackService { // 生产明细表新增包裹ID - if(!packageVO.getAddPlateIdList().isEmpty()) { - orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), packageVO.getPackId()); + if (!packageVO.getAddPlateIdList().isEmpty()) { + orderItemMapper.insertPackId(packageVO.getAddPlateIdList(), packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); } // 移除生产明细表中板件对应的包裹ID - if(!packageVO.getDeletePlateIdList().isEmpty()) { - orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId()); + if (!packageVO.getDeletePlateIdList().isEmpty()) { + orderItemMapper.deletePackId(packageVO.getDeletePlateIdList(), packageVO.getPackId(), packageVO.getOrderId(), getUserOrganId()); } orderPackageDO.setStatus(OrderPackageStatusEnum.PACKAGED.getStatus()); @@ -525,7 +525,7 @@ public class PackServiceImpl implements PackService { // 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包 - if(validateOrderPack(packageVO.getOrderId())){ + if (validateOrderPack(packageVO.getOrderId())) { // 修改生产单的打包状态 updateOrderStatus(packageVO.getOrderId()); @@ -538,53 +538,31 @@ public class PackServiceImpl implements PackService { // 判断当前生产单的板材和配件是否已全部打包且当前生产单的包裹已全部封包 - public Boolean validateOrderPack(Long orderId){ + public Boolean validateOrderPack(Long orderId) { List orderPackageDOS = orderPackageMapper.selectPackList(orderId, getUserOrganId()); - if(!orderPackageDOS.isEmpty()){ + if (!orderPackageDOS.isEmpty()) { return false; } List plateAndPartIdLists = orderPackageMapper.selectOrderPack(orderId, getUserOrganId()); -// List plateList = plateAndPartIdLists.stream().map(PlateAndPartIdList::getPlateId).toList(); -// -// List partsList = plateAndPartIdLists.stream().map(PlateAndPartIdList::getPartsId).toList(); - return plateAndPartIdLists.isEmpty() ; + return plateAndPartIdLists.isEmpty(); } // 修改当前生产单的工序状态和生产单的状态 @Transactional(rollbackFor = Exception.class) - public void updateOrderStatus(Long orderId) { + public void updateOrderStatus(Long orderId) { OrderDO orderDO = ordersMapper.selectById(orderId); - if(orderDO.getFinishTime() != null){ - return; - } - -// // 判断正确,修改当前生产单对应的打包的工序状态 -// OrderProcessStepNDO orderProcessStepNDO = processStepMapper.selectOrderProcess(orderId, getUserOrganId(), ProcessProcessingTypeEnum.PACK.getNumber()); -// -// if(orderProcessStepNDO == null){ +// if(orderDO.getFinishTime() != null){ // return; // } -// -// -// // 工序加工添加负责人 -// String nickname = getLoginUser().getNickname(); -// -// -// BigDecimal salary = productionProcessService.calculateSalary(orderProcessStepNDO.getId(), null); -// -// // 修改生产明细表和步骤表的工序状态 -// processStepMapper.updateStatus(orderProcessStepNDO.getId(), nickname, salary); -// -// processStepItemMapper.updateStatus(orderProcessStepNDO.getId()); // 修改生产单的打包状态未已打包 orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); @@ -599,54 +577,50 @@ public class PackServiceImpl implements PackService { @Override public List selectPack(Long orderId) { - List orderPackageDOS = orderPackageMapper.selectPackStatus(orderId,getUserOrganId()); -// List collect = orderPackageDOS.stream().map(o -> o.setRemark(JsonUtils.unzipString(o.getRemark()))).collect(Collectors.toList()); - return orderPackageDOS.stream().map(m -> typeConversion(m)).collect(Collectors.toList()); + List orderPackageDOS = orderPackageMapper.selectPackStatus(orderId, getUserOrganId()); + + return orderPackageDOS.stream().map(m -> typeConversion(m)).collect(Collectors.toList()); } - - - // 包裹订单打印 @Override public PrintOrderPackRespVO printOrderPack(PrintOrderPackReqVO reqVO) { - PrintOrderPackRespVO printOrderPackRespVO = ordersMapper.selectOrderPack(reqVO.getOrderId(), reqVO.getPackageNo(),getUserOrganId()); - printOrderPackRespVO.setPlateList(orderItemMapper.selectPrintPlateList(reqVO.getOrderId(), reqVO.getPackageNo(),getUserOrganId())); + PrintOrderPackRespVO printOrderPackRespVO = ordersMapper.selectOrderPack(reqVO.getOrderId(), reqVO.getPackageNo(), getUserOrganId()); + printOrderPackRespVO.setPlateList(orderItemMapper.selectPrintPlateList(reqVO.getOrderId(), reqVO.getPackageNo(), getUserOrganId())); return printOrderPackRespVO; } - // 删除包裹及其关联的包裹信息(删除全部) @Override @Transactional(rollbackFor = Exception.class) public void deleteOrderPack(PackReqVO reqVO) { // 判断包裹的类型是否为其他类型,如果是,则删除其包裹信息 - if (reqVO.getIsOther() == true) { + if (reqVO.getIsOther()) { - List partsIds = orderItemMapper.selectPackList(reqVO.getPackageId(), getUserOrganId()) - .stream().map(m -> m.getPartsId()) + List partsIds = orderItemMapper.selectPackList(reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId()) + .stream().map(OrderItemDO::getPartsId) .distinct() - .collect(Collectors.toList()); + .toList(); - orderPartsMapper.deleteOrderParts(partsIds); + orderPartsMapper.deleteOrderParts(partsIds, reqVO.getOrderId(), getUserOrganId()); - orderPackageMapper.updateParts(reqVO.getPackageId(), reqVO.getPackageNo()); + orderPackageMapper.updateParts(reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId()); - orderItemMapper.deleteParts(reqVO.getPackageId(),partsIds); + orderItemMapper.deleteParts(reqVO.getPackageId(), reqVO.getOrderId(), partsIds, getUserOrganId()); return; } - orderPackageMapper.updateParts(reqVO.getPackageId(),reqVO.getPackageNo()); + orderPackageMapper.updateParts(reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId()); - orderItemMapper.deleteOrderPack(reqVO.getPackageId()); + orderItemMapper.deleteOrderPack(reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId()); } @@ -656,11 +630,6 @@ public class PackServiceImpl implements PackService { @Transactional(rollbackFor = Exception.class) public OrderPackRespVO addNewOtherPack(OtherPackReqVO reqVO) { - // 判断配件名称是否重复 -// OrderPartsNDO orderPartsNDO = orderPartsMapper.selectOneParts(reqVO.getName(),getUserOrganId()); -// if (orderPartsNDO != null) { -// throw exception(THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED); -// } // 配件表新增数据 OrderPartsNDO orderParts = BeanUtils.toBean(reqVO, OrderPartsNDO.class); @@ -679,7 +648,7 @@ public class PackServiceImpl implements PackService { orderPackageMapper.insert(orderPackageDO); - // 在生产单明细表中添加数据(生产单号,配件ID,包裹ID,部件数量(目前一直为1)) + // 在生产单明细表中添加数据(生产单号,配件ID,包裹ID,部件数量) OrderItemDO orderItemDO = new OrderItemDO(); orderItemDO.setOrderId(reqVO.getOrderId()); orderItemDO.setPartsId(orderParts.getId()); @@ -698,15 +667,13 @@ public class PackServiceImpl implements PackService { } - - // 新增外部配件 @Override @Transactional(rollbackFor = Exception.class) public OrderPartsRespVO addNewOtherParts(OtherPackReqVO reqVO) { - OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackNo(reqVO.getPackNo(),getUserOrganId()); - if(orderPackageDO.getType()!= OrderPackageTypeEnum.OTHER_ACCESSORIES.getType().longValue()){ + OrderPackageDO orderPackageDO = orderPackageMapper.selectByPackNo(reqVO.getPackNo(), getUserOrganId()); + if (orderPackageDO.getType() != OrderPackageTypeEnum.OTHER_ACCESSORIES.getType().longValue()) { throw exception(THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT); } @@ -727,34 +694,28 @@ public class PackServiceImpl implements PackService { // 在生产单明细表中新增数据 orderItemMapper.insert(orderItemDO); - return BeanUtils.toBean(orderParts,OrderPartsRespVO.class); + return BeanUtils.toBean(orderParts, OrderPartsRespVO.class); } - - - - - // 删除包裹中的外部配件 @Override @Transactional(rollbackFor = Exception.class) public void deleteOtherParts(DeleteOtherPartsReqVO reqVO) { - if(reqVO.getIsOtherParts()) { + if (reqVO.getIsOtherParts()) { // 更新配件表中配件为逻辑删除 - orderPartsMapper.updateParts(reqVO.getPartsId()); - orderItemMapper.deleteOtherParts(reqVO.getPartsId()); + orderPartsMapper.updateParts(reqVO.getPartsId(), reqVO.getOrderId(), getUserOrganId()); + orderItemMapper.deleteOtherParts(reqVO.getPartsId(), reqVO.getOrderId(), getUserOrganId()); } - orderItemMapper.updateParts(reqVO.getPartsId(),reqVO.getPackageId()); + orderItemMapper.updateParts(reqVO.getPartsId(), reqVO.getPackageId(), reqVO.getOrderId(), getUserOrganId()); } - // 新增配件-即新增一个包裹 @Override @Transactional(rollbackFor = Exception.class) @@ -767,15 +728,13 @@ public class PackServiceImpl implements PackService { orderPackageDO.setPackageNo(generatePackageNo()); orderPackageMapper.insert(orderPackageDO); - orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList()); + orderItemMapper.insertPartsId(orderPackageDO.getId(), reqVO.getAddPartsIdList(), reqVO.getOrderId(), getUserOrganId()); return typeConversion(orderPackageDO); } - - // 查询预打包优化信息 @Override public String getPrePackInfo(Long orderId) { @@ -784,7 +743,7 @@ public class PackServiceImpl implements PackService { OrderPrepackagedDO orderPrepackagedDO = orderPrepackagedMapper.selectOrder(orderId, getUserOrganId()); - if(orderPrepackagedDO == null){ + if (orderPrepackagedDO == null) { return null; } @@ -794,8 +753,6 @@ public class PackServiceImpl implements PackService { } - - // 保存优化后的预打包信息 @Override @Transactional(rollbackFor = Exception.class) @@ -819,7 +776,7 @@ public class PackServiceImpl implements PackService { String optimizeInfo = reqVO.getOptimizeInfo(); // 自动打包,包裹表新增 - if(autoPack){ + if (autoPack) { ArrayList orderPackageDOS = new ArrayList<>(); @@ -829,12 +786,13 @@ public class PackServiceImpl implements PackService { JsonNode jsonNode = JsonUtils.parseTree(reqVO.getOptimizeInfo()); - List asJsonObject = objectMapper.convertValue(jsonNode, new TypeReference<>() {}); + List asJsonObject = objectMapper.convertValue(jsonNode, new TypeReference<>() { + }); - asJsonObject.forEach(value ->{ + asJsonObject.forEach(value -> { - value.getList().forEach(prePackOptimizeInfo ->{ + value.getList().forEach(prePackOptimizeInfo -> { String packageNo = generatePackageNo(); prePackOptimizeInfo.setName(packageNo); @@ -844,7 +802,7 @@ public class PackServiceImpl implements PackService { .orderId(reqVO.getOrderId()) .status(OrderPackageStatusEnum.PACKAGED.getStatus()) .build()); - prePackOptimizeInfo.getList().forEach(plate ->{ + prePackOptimizeInfo.getList().forEach(plate -> { List list = plate.getList().stream().map(PrePackOptimizeInfo.PrerPlateData::getPlateId).toList(); list.forEach(a -> packPlateNoLists.add(PackPlateList.builder() .packNo(packageNo) @@ -861,51 +819,32 @@ public class PackServiceImpl implements PackService { List packageDOS = orderPackageMapper.selectPackStatus(reqVO.getOrderId(), getUserOrganId()); - if(!packageDOS.isEmpty()){ - + if (!packageDOS.isEmpty()) { // 删除除配件和其他配件外的所有包裹 - orderPackageMapper.updateDelete(reqVO.getOrderId(),getUserOrganId()); - + orderPackageMapper.updateDelete(reqVO.getOrderId(), getUserOrganId()); } + // 包裹表新增包裹 orderPackageMapper.insertBatch(orderPackageDOS); - - orderPackageDOS.forEach(a-> + // 根据包裹编号查找包裹ID + orderPackageDOS.forEach(a -> packPlateNoLists.stream().filter(f -> Objects.equals(f.getPackNo(), a.getPackageNo())) .forEach(f -> f.setPackId(a.getId()))); List orderItemDOS = orderItemMapper.selectPackPlateList(reqVO.getOrderId(), getUserOrganId()); -// List plateNo = packPlateNoLists.stream().map(PackPlateList::getPlateNo).toList(); -// -// -// List orderPlateDOS = orderPlateMapper.selectPlateList(plateNo, getUserOrganId()); -// -// if(orderPlateDOS.isEmpty()){ -// System.out.println("当前板材数据为空"); -// -// } -// -// orderPlateDOS.forEach(a-> -// packPlateNoLists.stream().filter(f->Objects.equals(f.getPlateNo(), a.getPlateNo())) -// .forEach(f -> f.setPlateId(a.getId()))); -// -// -// System.out.println("啊哈哈哈哈哈哈1 "+packPlateNoLists); - - - - packPlateNoLists.forEach(a-> - orderItemDOS.stream().filter(f->Objects.equals(f.getPlateId(), a.getPlateId())) - .forEach(f->f.setPackageId(a.getPackId()))); + packPlateNoLists.forEach(a -> + orderItemDOS.stream().filter(f -> Objects.equals(f.getPlateId(), a.getPlateId())) + .forEach(f -> f.setPackageId(a.getPackId()))); orderItemMapper.updateBatch(orderItemDOS); + // 查询配件是否为空,为空,修改生产单的状态为已打包 List orderItemDoPartsList = orderItemMapper.selectPartsList(reqVO.getOrderId(), getUserOrganId()); - if(orderItemDoPartsList.isEmpty()) { + if (orderItemDoPartsList.isEmpty()) { OrderDO orderDO = ordersMapper.selectById(reqVO.getOrderId()); orderDO.setPackaged(OrderPackageStatusEnum.PACKAGED.getStatus()); ordersMapper.updateById(orderDO); @@ -916,7 +855,7 @@ public class PackServiceImpl implements PackService { OrderPrepackagedDO orderPackOptimizeDO = orderPrepackagedMapper.selectOrder(reqVO.getOrderId(), getUserOrganId()); - if(orderPackOptimizeDO ==null){ + if (orderPackOptimizeDO == null) { OrderPrepackagedDO prepackagedDO = new OrderPrepackagedDO(); prepackagedDO.setOrderId(reqVO.getOrderId()); @@ -932,84 +871,6 @@ public class PackServiceImpl implements PackService { } - - -// -// @Override -// @Transactional(rollbackFor = Exception.class) -// public void saveOptimizeInfo(PrePackReqVO reqVO) { -// if (reqVO.getIsAutoPack()) { -// List orderPackageDOS = new ArrayList<>(); -// List packPlateNoLists = new ArrayList<>(); -// -// reqVO.getOptimizeInfo().values().parallelStream().forEach(value -> { -// value.forEach(prePackOptimizeInfo -> { -// String packageNo = generatePackageNo(); -// List list = prePackOptimizeInfo.getOptimizeData().stream().map(m -> m.getPlateNo()).collect(Collectors.toList()); -// -// list.forEach(a -> packPlateNoLists.add(PackPlateList.builder() -// .packNo(packageNo) -// .plateNo(a) -// .build())); -// -// orderPackageDOS.add(OrderPackageDO.builder() -// .packageNo(packageNo) -// .type(OrderPackageTypeEnum.PLATE.getType()) -// .orderId(reqVO.getOrderId()) -// .status(OrderPackageStatusEnum.PACKAGED.getStatus()) -// .build()); -// -// prePackOptimizeInfo.setPackNo(packageNo); -// }); -// }); -// -// List packageDOS = orderPackageMapper.selectPackStatus(reqVO.getOrderId(), getUserOrganId()); -// -// if (!packageDOS.isEmpty()) { -// orderPackageMapper.updateDelete(reqVO.getOrderId()); -// } -// -// orderPackageMapper.insertBatch(orderPackageDOS); -// -// Map packageNoToIdMap = orderPackageDOS.stream().collect(Collectors.toMap(OrderPackageDO::getPackageNo, OrderPackageDO::getId)); -// -// packPlateNoLists.forEach(f -> f.setPackId(packageNoToIdMap.get(f.getPackNo()))); -// -// List orderItemDOS = orderItemMapper.selectPackPlateList(reqVO.getOrderId(), getUserOrganId()); -// -// List plateNo = packPlateNoLists.stream().map(PackPlateList::getPlateNo).collect(Collectors.toList()); -// -// List orderPlateDOS = orderPlateMapper.selectPlateList(plateNo, getUserOrganId()); -// -// Map plateNoToIdMap = orderPlateDOS.stream().collect(Collectors.toMap(OrderPlateDO::getPlateNo, OrderPlateDO::getId)); -// -// packPlateNoLists.forEach(f -> f.setPlateId(plateNoToIdMap.get(f.getPlateNo()))); -// -// Map plateIdToPackIdMap = packPlateNoLists.stream().collect(Collectors.toMap(PackPlateList::getPlateId, PackPlateList::getPackId)); -// -// orderItemDOS.forEach(f -> f.setPackageId(plateIdToPackIdMap.get(f.getPlateId()))); -// -// orderItemMapper.updateBatch(orderItemDOS); -// } -// -// String optimizeInfo = JsonUtils.toJsonString(reqVO.getOptimizeInfo()); -// -// OrderPrepackagedDO orderPackOptimizeDO = orderPrepackagedMapper.selectOrder(reqVO.getOrderId(), getUserOrganId()); -// -// if (orderPackOptimizeDO == null) { -// OrderPrepackagedDO newOrderPackOptimizeDO = new OrderPrepackagedDO(); -// newOrderPackOptimizeDO.setOrderId(reqVO.getOrderId()); -// newOrderPackOptimizeDO.setResult(JsonUtils.zipString(optimizeInfo)); -// orderPrepackagedMapper.insert(newOrderPackOptimizeDO); -// return; -// } -// -// orderPackOptimizeDO.setResult(JsonUtils.zipString(optimizeInfo)); -// orderPrepackagedMapper.updateById(orderPackOptimizeDO); -// } - - - // 日期格式转换 public static String convertTime(String input) { @@ -1027,9 +888,8 @@ public class PackServiceImpl implements PackService { } - // 生成包裹编号 - private String generatePackageNo(){ + private String generatePackageNo() { long packNo = idWorker.nextId(); long obtainingTime = SnowflakeIdWorker3rd.obtainingTime(); @@ -1039,9 +899,8 @@ public class PackServiceImpl implements PackService { } - // 类型转换 - private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO){ + private OrderPackRespVO typeConversion(OrderPackageDO orderPackageDO) { return OrderPackRespVO.builder() .id(orderPackageDO.getId()) .orderId(orderPackageDO.getOrderId()) diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java index b541747c9..330e139fd 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java @@ -1,32 +1,31 @@ package com.cf.imes.module.manage.service.plate; 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.organ.core.aop.OrganIgnore; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportExcelVO; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportRespVO; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlatePageReqVO; import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateSaveReqVO; +import com.cf.imes.module.manage.dal.dataobject.plate.PlateDO; +import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper; 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.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; - -import java.util.*; - -import com.cf.imes.module.manage.dal.dataobject.plate.PlateDO; -import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.util.object.BeanUtils; - -import com.cf.imes.module.manage.dal.mysql.plate.PlateMapper; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.PLATE_NOT_EXISTS; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.REMAIN_PLATE_NOT_EXISTS; /** * 板材信息表 plate_{N} Service 实现类 @@ -90,7 +89,7 @@ public class PlateServiceImpl implements PlateService { private void validatePlateExists(Long id, Long organId) { if (plateMapper.selectOneById(id, organId) == null) { - throw exception(PLATE_NOT_EXISTS); + throw exception(REMAIN_PLATE_NOT_EXISTS); } } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusService.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusService.java index e0eb6214c..a14b63ef5 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusService.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusService.java @@ -2,10 +2,7 @@ package com.cf.imes.module.manage.service.query; import com.cf.imes.framework.common.pojo.PageResult; - -import com.cf.imes.module.manage.controller.admin.pack.vo.OrderPartsReqVO; import com.cf.imes.module.manage.controller.admin.pack.vo.PackDetailsReqVO; -import com.cf.imes.module.manage.controller.admin.pack.vo.PlateDetailsRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.OrderPackageVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PackageDetailsRespVO; import com.cf.imes.module.manage.controller.admin.query.vo.pack.PrintOrderRespVO; @@ -13,7 +10,6 @@ import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.*; import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRatePageReqVO; import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRateReqVO; import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; -import org.ehcache.shadow.org.terracotta.offheapstore.paging.Page; import java.util.List; @@ -58,7 +54,4 @@ public interface ProductionStatusService { PrintOrderRespVO printOrder(Long orderNo); - -// // 导出缺板 -// PageResult getMissingBoard(OrderPartsReqVO pageReqVO); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java index 7321c0b21..f1f6a6aaa 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/query/ProductionStatusServiceImpl.java @@ -3,7 +3,6 @@ package com.cf.imes.module.manage.service.query; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.cf.imes.framework.common.enums.OrderPackageTypeEnum; import com.cf.imes.framework.common.pojo.PageResult; @@ -18,6 +17,7 @@ import com.cf.imes.module.manage.controller.admin.query.vo.salary.PriceRateReqVO import com.cf.imes.module.manage.dal.dataobject.process.OrderDO; import com.cf.imes.module.manage.dal.dataobject.process.OrderProcessStepNDO; import com.cf.imes.module.manage.dal.mysql.pack.OrderPackageMapper; +import com.cf.imes.module.manage.dal.mysql.plate.OrderPlateMapper; import com.cf.imes.module.manage.dal.mysql.process.OrdersMapper; import com.cf.imes.module.manage.dal.mysql.process.ProcessStepItemMapper; import com.cf.imes.module.manage.dal.mysql.process.ProcessStepMapper; @@ -61,6 +61,8 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { @Resource private OrderPartsMapper orderPartsMapper; + @Resource + private OrderPlateMapper orderPlateMapper; // 生产状态分页查询 @@ -197,10 +199,13 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { // 查看板材包裹 - List packageDetailsRespVOS = orderItemMapper.selectByPackageId(reqVO.getPackageId(),getUserOrganId()); + IPage packageDetailsRespVOS = orderPlateMapper.selectPackPlateList(page,reqVO.getPackageId(),getUserOrganId()); + if (CollectionUtil.isEmpty(packageDetailsRespVOS.getRecords())) { + return new PageResult<>(); + } - for (PackageDetailsRespVO plateDetailsRespVO : packageDetailsRespVOS) { + for (PackageDetailsRespVO plateDetailsRespVO : packageDetailsRespVOS.getRecords()) { String name = ""; if(!plateDetailsRespVO.getProcessGroupNameList().isEmpty()) { @@ -214,15 +219,10 @@ public class ProductionStatusServiceImpl implements ProductionStatusService { plateDetailsRespVO.setProcessGroup(name); } - Page packageDetailsRespVOPage = page.setRecords(packageDetailsRespVOS); +// Page packageDetailsRespVOPage = page.setRecords(packageDetailsRespVOS); - if (CollectionUtil.isEmpty(packageDetailsRespVOPage.getRecords())) { - return new PageResult<>(); - } - - - return new PageResult<>(packageDetailsRespVOPage.getRecords(), packageDetailsRespVOPage.getTotal()); + return new PageResult<>(packageDetailsRespVOS.getRecords(), packageDetailsRespVOS.getTotal()); } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml index 4900ec70a..101529d03 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/pack/OrderPackageMapper.xml @@ -4,20 +4,21 @@ - + + + + - select - order_id as id, + order_id as orderId, count(id) as packCount from order_package @@ -39,47 +40,30 @@ - - - - - - - - - - - - - - - @@ -248,7 +206,7 @@ from order_package - where organ_id = #{organId} and order_id = #{orderId} and deleted = false + where organ_id = #{organId} and deleted = false and order_id = #{orderId} diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.xml index 25338006f..858b45ead 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/plate/OrderPlateMapper.xml @@ -173,4 +173,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml index 249e46284..3123e4d65 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderItemMapper.xml @@ -3,67 +3,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -142,41 +81,6 @@ - - - - - @@ -212,7 +116,7 @@ SET package_id = 0 - WHERE package_id = #{packId} ; + WHERE organ_id = #{organId} and order_id = #{orderId} and package_id = #{packId} ; @@ -223,7 +127,10 @@ parameterType="java.lang.Long"> DELETE FROM order_item - WHERE parts_id = #{partsId} + + WHERE organ_id = #{organId} + and order_id = #{orderId} + and parts_id = #{partsId} @@ -233,9 +140,11 @@ delete from order_item - where package_id = #{packageId} - and parts_id in + where organ_id = #{organId} + and order_id = #{orderId} + and package_id = #{packageId} + and parts_id in #{partsIds} @@ -251,7 +160,9 @@ set package_id = #{packId} - where plate_id in + where organ_id = #{organId} + and order_id = #{orderId} + and plate_id in #{id} @@ -266,7 +177,11 @@ set package_id = 0 - where package_id = #{packId} and plate_id in + where + organ_id = #{organId} + and order_id = #{orderId} + and package_id = #{packId} + and plate_id in #{id} @@ -282,8 +197,9 @@ set package_id = #{packId} - where parts_id in - + where organ_id = #{organId} + and order_id = #{orderId} + and parts_id in #{id} @@ -297,8 +213,9 @@ set package_id = #{packId} - where order_id = #{orderNo} and - parts_id in + where organ_id = #{organId} + and order_id = #{orderId} + and parts_id in #{id} @@ -312,7 +229,11 @@ set package_id = 0 - where package_id = #{packId} and order_id = #{orderNo} plate_id in + where + organ_id = #{organId} + and order_id = #{orderId} + and package_id = #{packId} + and parts_id in #{id} @@ -323,47 +244,18 @@ - update order_item set package_id = 0 where parts_id =#{partsId} and package_id = #{packageId}; + update order_item + + set package_id = 0 + + where organ_id = #{organId} + and order_id = #{orderId} + and package_id = #{packageId} + and parts_id = #{partsId}; - - - - - - - - - - - - @@ -424,71 +316,5 @@ - - - - - - \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml index 5971391e1..bbbdc4c91 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/resources/com/cf/imes/module/manage/dal/mysql/query/OrderPartsMapper.xml @@ -40,9 +40,9 @@ oi.num as num from order_parts op - join order_item oi on op.id = oi.parts_id and op.organ_id = oi.organ_id + left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.parts_id - where oi.package_id =#{packageId} and oi.organ_id = #{organId} + where op.organ_id =#{organId} and op.deleted = false and oi.package_id = #{packageId} @@ -74,9 +74,9 @@ select distinct op.id as partsId,op.name,op.model,op.spec,oi.num as num,op.unit,op.brand,op.factory,op.remark,op.type from order_parts op - join order_item oi on op.id = oi.parts_id and op.organ_id = oi.organ_id + left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.parts_id - where op.organ_id = #{organId} and op.order_id = #{orderId} + where op.organ_id = #{organId} and op.order_id = #{orderId} and op.deleted = false @@ -89,8 +89,14 @@ parameterType="java.lang.Long"> - update order_parts op set op.deleted = true where op.id in + update order_parts op + set op.deleted = true + where + op.organ_id = #{organId} + and op.order_id = #{orderId} + and op.deleted = false + and op.id in #{id} @@ -103,8 +109,12 @@ parameterType="java.lang.Long"> UPDATE order_parts op + SET op.deleted = true - WHERE op.id = #{partsId}; + + WHERE op.organ_id = #{organId} + and op.order_id = #{orderId} + and op.id = #{partsId}; diff --git a/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java b/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java index 935a60b52..a594ec997 100644 --- a/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java +++ b/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java @@ -28,6 +28,5 @@ public final class ErrorCodeConstants { public static final ErrorCode DATASET_NOT_EXISTS = new ErrorCode(1_003_003_001, "报表数据集不存在或权限不足"); public static final ErrorCode DATASET_SQL_INJECTION_RISK = new ErrorCode(1_003_003_002, "存在SQL注入风险"); public static final ErrorCode DATASET_SQL_REQUIRED = new ErrorCode(1_003_003_003, "SQL语句不能为空"); - public static final ErrorCode DATASET_SQL_ILLEGAL = new ErrorCode(1_003_003_004, "SQL语句非法"); - public static final ErrorCode DATASET_GET_FIELDS_ERROR = new ErrorCode(1_003_003_005, "获取表字段"); + public static final ErrorCode DATASET_GET_FIELDS_ERROR = new ErrorCode(1_003_003_004, "获取表字段异常"); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java index ad2fd1994..b5403f7c7 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java @@ -54,7 +54,7 @@ public interface ReportTemplateMapper extends BaseMapperX { .eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM)) .or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM))) // 不返回content xml,点击具体的模板中返回xml - .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark); + .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark, ReportTemplateDO::getType); return selectList(queryWrapper); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java index be3a35671..48863dc71 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java @@ -177,6 +177,14 @@ public class OrderSummaryBeanDatasource { return resultList; } + /** + * 配件明细 + * + * @param dsName + * @param datasetName + * @param parameters + * @return + */ public List> orderPartDetailList(String dsName, String datasetName, Map parameters) { log.info("报表数据源[OrderSummaryBeanDatasource][orderPartDetailList][{}][{}]调用开始", dsName, datasetName); List> resultList = new ArrayList<>(); @@ -209,6 +217,14 @@ public class OrderSummaryBeanDatasource { return resultList; } + /** + * 配件汇总 + * + * @param dsName + * @param datasetName + * @param parameters + * @return + */ public List> orderPartSummary(String dsName, String datasetName, Map parameters) { log.info("报表数据源[OrderSummaryBeanDatasource][orderPartSummary][{}][{}]调用开始", dsName, datasetName); List> resultList = new ArrayList<>(); diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java index 5df8cbf3a..bf065e7d7 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java @@ -31,7 +31,6 @@ import com.cf.imes.module.report.dal.mysql.datasource.ReportDatasourceMapper; import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum; import com.cf.imes.module.report.framework.ureport.annotation.CfReportSpringbeanDatasource; import com.cf.imes.module.report.service.dataset.ReportDatasetService; -import com.cf.imes.module.report.util.SqlInjectionUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeansException; @@ -56,7 +55,6 @@ import java.util.Map; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_GET_FIELDS_ERROR; -import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_SQL_ILLEGAL; import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_SQL_INJECTION_RISK; import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASET_SQL_REQUIRED; import static com.cf.imes.module.report.enums.ErrorCodeConstants.DATASOURCE_BUILDIN_OPERATION_PERMISSION_ERROR; @@ -220,10 +218,6 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { } // 获取数据库连接 conn = MultipleJdbcTemplate.buildConnection(info); - // 自定义工具校验sql -// if (SqlInjectionUtil.checkEditSql(sql)) { -// throw exception(DATASET_SQL_ILLEGAL); -// } // 检查参数sql注入 for (Parameter parameter : parameters) { // mybatis-plus util检查参数 diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java index 48acb4d16..3b60bedf5 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java @@ -128,8 +128,6 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { ReportTemplateDO reportTemplateDO = validateTemplateExists(templateId); // 校验模板名唯一性 validateTemplateNameUnique(createReqVO, isSuperAdmin); - // 校验内置模板操作权限 - validateSystemTemplate(reportTemplateDO); ReportTemplateDO copyTemplateDO = BeanUtils.toBean(reportTemplateDO, ReportTemplateDO.class); // 重置id copyTemplateDO.setId(null); @@ -138,8 +136,15 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { if (isSuperAdmin) { copyTemplateDO.setType(ReportTemplateTypeEnum.SYSTEM); } else { + // 重置所属机构 + copyTemplateDO.setOrganId(SecurityFrameworkUtils.getUserOrganId()); copyTemplateDO.setType(ReportTemplateTypeEnum.CUSTOM); } + // 重置相关基础信息 + copyTemplateDO.setCreator(null); + copyTemplateDO.setUpdater(null); + copyTemplateDO.setUpdateTime(null); + copyTemplateDO.setCreateTime(null); // 新增模版 templateMapper.insert(copyTemplateDO); // 返回主键 @@ -333,7 +338,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapperX().likeIfPresent(ReportTemplateDO::getName, reqVO.getName()) .orderByDesc(ReportTemplateDO::getCreateTime) // 不返回content xml,点击具体的模板中返回xml - .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark); + .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark, ReportTemplateDO::getType); if (ObjectUtil.isNotNull(loginUser) && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) { return templateMapper.selectNormalTemplateList(reqVO.getName(), loginUser.getOrganId()); } else { diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/util/SqlInjectionUtil.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/util/SqlInjectionUtil.java deleted file mode 100644 index 9cd347341..000000000 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/util/SqlInjectionUtil.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.cf.imes.module.report.util; - -import java.util.Objects; -import java.util.regex.Pattern; - -/** - * SQL 注入验证工具类 - * from com.baomidou.mybatisplus.core.toolkit.sql.SqlInjectionUtil - * @author Gqr - * @since 2024/7/18 11:09 - */ -public class SqlInjectionUtil { - /** - * SQL语法检查正则:符合两个关键字(有先后顺序)才算匹配 - */ - private static final Pattern SQL_EDIT_PATTERN = Pattern.compile("(insert|delete|update|create|drop|truncate|grant|alter|deny|revoke|call|execute|exec|declare|show|rename|set)" + - "\\s+.*(into|from|set|where|table|database|view|index|on|cursor|procedure|trigger|for|password|union|and|or)", Pattern.CASE_INSENSITIVE); - - /** - * 使用'、;或注释截断SQL检查正则 - */ - private static final Pattern SQL_COMMENT_PATTERN = Pattern.compile("'.*(or|union|--|#|/\\*|;)", Pattern.CASE_INSENSITIVE); - - /** - * 检查SQL 不允许修改结构或数据 - * - * @param sql sql语句 - * @return true 非法 false 合法 - */ - public static boolean checkEditSql(String sql) { - Objects.requireNonNull(sql); - return SQL_COMMENT_PATTERN.matcher(sql).find() || SQL_EDIT_PATTERN.matcher(sql).find(); - } - - private SqlInjectionUtil() { - } -} diff --git a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar index 4b20744ce..447fc3b16 100644 Binary files a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar and b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar differ diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 7cd728a5e..0a94a4c62 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -123,6 +123,7 @@ public interface ErrorCodeConstants { ErrorCode ORGAN_NAME_DUPLICATE = new ErrorCode(1_002_015_004, "名字为【{}】的组织已存在"); ErrorCode ORGAN_WEBSITE_DUPLICATE = new ErrorCode(1_002_015_005, "域名为【{}】的组织已存在"); ErrorCode ORGAN_DATA_CODE_NOT_EXISTS = new ErrorCode(1_002_015_006, "组织未配置数据源标识"); + ErrorCode ORGAN_ALREADY_EXISTS = new ErrorCode(1_002_015_007, "该新增组织已授权机台数量无需重复新增!"); // ========== 组织套餐 1-002-016-000 ========== ErrorCode TENANT_PACKAGE_NOT_EXISTS = new ErrorCode(1_002_016_000, "组织套餐不存在"); @@ -196,12 +197,6 @@ public interface ErrorCodeConstants { ErrorCode PROCESS_STATUS_DISABLE = new ErrorCode(1_002_027_003, "工序状态以已禁用"); ErrorCode PROCESS_NAME_EXISTS = new ErrorCode(1_002_027_004, "工序名称已存在"); - //=========== 工序组信息 1-002-029-000 ============ - ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_010, "工序组不存在"); - ErrorCode PROCESS_GROUP_USED = new ErrorCode(1_002_029_011, "工序组已使用,禁止删除 "); - ErrorCode PROCESS_GROUP_NAME_EXISTS = new ErrorCode(1_002_029_012, "工序名称已存在"); - ErrorCode PROCESS_GROUP_CUTTING_ERROR = new ErrorCode(1_002_029_012, "开料工序类型已经存在,禁止重复"); - ErrorCode PROCESS_GROUP_PACKING_ERROR = new ErrorCode(1_002_029_012, "打包工序类型已经存在,禁止重复"); // ========== 机台 1-002-029-000 ========== ErrorCode MACHINE_NOT_EXISTS = new ErrorCode(1_002_029_000, "机台不存在"); @@ -219,6 +214,9 @@ public interface ErrorCodeConstants { ErrorCode MACHINE_NUM_ERROR = new ErrorCode(1_002_029_011, "当前模板创建的机台数量已达到最大值,无法继续创建"); ErrorCode MACHINE_NAME_ERROR = new ErrorCode(1_002_029_012, "当前机台名称已存在,请重新输入机台名称"); ErrorCode MACHINETEMPLATE_NAME_ERROR = new ErrorCode(1_002_029_013, "当前机台模板的名称已存在,请重新输入机台模板名称"); + ErrorCode LABELINGMACHINE_RELATED_DATA_ERROR = new ErrorCode(1_002_029_014, "当前机台关联的贴标机数据有误,请在高级配置中重新配置贴标机或选择其他模板"); + ErrorCode DRILLMACHINE_RELATED_DATA_ERROR = new ErrorCode(1_002_029_015, "当前机台关联的钻孔机数据有误,请在钻孔模块中重新配置钻孔机或选择其他模板"); + // ========== 标签模板 1-002-300-000 ========== ErrorCode LABEL_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_300_000, "标签模板不存在"); @@ -228,71 +226,79 @@ public interface ErrorCodeConstants { ErrorCode DEFAULT_NOT_DELETED = new ErrorCode(1_002_300_004, "默认标签模板无法删除"); ErrorCode LABEL_ERROR = new ErrorCode(1_002_300_005, "当前标签错误,请重新配置标签"); + // ========== 系统数据源 1_002_301_000 ========== ErrorCode DATA_SOURCE_NOT_EXISTS = new ErrorCode(1_002_301_000, "系统数据源不存在"); - //=========== 工序组信息 1-002-031-000 ============ - ErrorCode PLATE_NOT_EXISTS = new ErrorCode(1_002_029_001, "板材不存在"); - //=========== 板材信息 1-002-032-000 ============ - ErrorCode PLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_032_001, "导入板材数据不能为空!"); - ErrorCode PLATE_EXISTS = new ErrorCode(1_002_032_002, "板材存在"); - ErrorCode THE_CURRENT_BOARD_IS_NOT_SELECTED = new ErrorCode(1_002_032_003, "当前板材没有选择房间和柜体,请选择"); - ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_032_004, "当前排单已有板材开料,禁止修改"); + //=========== 工序组信息 1-002-032-000 ============ + ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_032_001, "工序组不存在"); + ErrorCode PROCESS_GROUP_USED = new ErrorCode(1_002_032_002, "工序组已使用,禁止删除 "); + ErrorCode PROCESS_GROUP_NAME_EXISTS = new ErrorCode(1_002_032_003, "工序名称已存在"); + ErrorCode PROCESS_GROUP_CUTTING_ERROR = new ErrorCode(1_002_032_004, "开料工序类型已经存在,禁止重复"); + ErrorCode PROCESS_GROUP_PACKING_ERROR = new ErrorCode(1_002_032_005, "打包工序类型已经存在,禁止重复"); + + //=========== 板材信息 1-002-033-000 ============ - ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_032_002, "板材不存在"); - - //=========== 板材信息 1-002-034-000 ============ - ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_032_002, "工序用户不存在"); - ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_032_003, "工序用户存在"); - - - //=========== 工序的生产状态 1-002-034-000 ============ - ErrorCode UNPROCESSED_BEFORE_PROCESSING = new ErrorCode(1_002_034_666, "未加工状态方可进行加工"); - - - // ========== 新增外部配件 1-002-035-000 ========== - ErrorCode THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED = new ErrorCode(1_002_035_666, "配件名称不能重复"); + ErrorCode PLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_001, "导入板材数据不能为空!"); + ErrorCode PLATE_EXISTS = new ErrorCode(1_002_033_002, "板材存在"); + ErrorCode THE_CURRENT_BOARD_IS_NOT_SELECTED = new ErrorCode(1_002_033_003, "当前板材没有选择房间和柜体,请选择"); + ErrorCode THE_BOARD_HAS_BEEN_CUT_INTO_PIECES = new ErrorCode(1_002_033_004, "当前排单已有板材开料,禁止修改"); + ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_033_005, "板材不存在"); + ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在"); + ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空"); + ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_008, "当前板编号无对应包裹信息"); - - //=========== 板材信息 1-002-035-000 ============ - ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_001, "设计板材不存再"); - ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_002, "生产板材导入数据不可以为空"); - ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_003, "当前板编号无对应包裹信息"); - - //=========== 配件信息 1-002-035-000 ============ - ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_034_001, "生产配件导入数据不可以为空"); - - //=========== 柜体信息 1-002-035-000 ============ - ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_035_001, "柜体信息不存在"); - - //=========== 柜体信息 1-002-035-000 ============ - ErrorCode ORDER_GROUP_NOT_EXISTS = new ErrorCode(1_002_036_001, "加工组信息不存在"); + //=========== 工序信息 1-002-034-000 ============ + ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_034_001, "工序用户不存在"); + ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_034_002, "工序用户存在"); + ErrorCode UNPROCESSED_BEFORE_PROCESSING = new ErrorCode(1_002_034_003, "未加工状态方可进行加工"); - //=========== 包裹信息 1-002-038-000 ============ - ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_038_666, "当前包裹还有未封包包裹"); - ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_038_777, "当前包裹类型错误"); - ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_038_778, "修改当前生产单的工序状态和生产单的状态失败"); - ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_038_779, "当前订单无优化信息"); - ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_038_780, "已经是{}一条了"); + + // ========== 配件信息 1-002-035-000 ========== + ErrorCode THE_ACCESSORY_NAME_CANNOT_BE_DUPLICATED = new ErrorCode(1_002_035_001, "配件名称不能重复"); + ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_035_002, "生产配件导入数据不可以为空"); + + + + //=========== 柜体信息 1-002-036-000 ============ + ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_036_001, "柜体信息不存在"); + + + + //=========== 加工组信息 1-002-037-000 ============ + ErrorCode ORDER_GROUP_NOT_EXISTS = new ErrorCode(1_002_037_001, "加工组信息不存在"); + + + + //=========== 包裹信息 1-002-040-000 ============ + ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_040_001, "当前包裹还有未封包包裹"); + ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_040_002, "当前包裹类型错误"); + ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_040_003, "修改当前生产单的工序状态和生产单的状态失败"); + ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_004, "当前订单无优化信息"); + ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_005, "已经是{}一条了"); + + + //=========== 断言提示信息 1-002-041-000 ============ + ErrorCode ORDER_DATE_ERROR = new ErrorCode(1_002_041_001, "生产单信息不存在,请重新进入或切换生产单"); + ErrorCode ORDER_PLATE_ERROR = new ErrorCode(1_002_041_002, "生产单对应的板材数据有异常,请查看板材信息或联系客服"); + //=========== 应用信息 1-002-037-000 ============ - ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_037_001, "应用信息不存在"); - ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_037_001, "应用登陆失败"); - ErrorCode ERR = new ErrorCode(1_002_038_001, "未知错误"); ErrorCode DATA_ERR = new ErrorCode(1_002_038_002, "数据错误,需要清除数据重新导入"); - - ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_001, "余料板正在使用中,禁止修改"); - ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_002, "余料板未使用"); - ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_003, "余料板使用类型为不可核销类型"); - ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_004, "未选中余料板,请选择余料板"); + ErrorCode REMAIN_PLATE_STATUS_USED = new ErrorCode(1_002_038_003, "余料板正在使用中,禁止修改"); + ErrorCode REMAIN_PLATE_STATUS_NO_USED = new ErrorCode(1_002_038_004, "余料板未使用"); + ErrorCode REMAIN_PLATE_USR_TYPE = new ErrorCode(1_002_038_005, "余料板使用类型为不可核销类型"); + ErrorCode REMAIN_PLATE_ID_NOT_EXISTS = new ErrorCode(1_002_038_006, "未选中余料板,请选择余料板"); + ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_038_007, "应用信息不存在"); + ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_038_008, "应用登陆失败"); //=========== 用户的系统配置 1-002-039-000 ============ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java index f4dab90bc..c2c8f6ad3 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java @@ -27,11 +27,20 @@ public class MachineAuthController { @Resource private MachineService machineService; - @PostMapping("insert-organ-auth") + + @PutMapping("insert-organ-auth") @Operation(summary = "组织机台授权信息更新") @PreAuthorize("@ss.hasPermission('machine-auth::update')") - public CommonResult auth(@RequestBody MachineOrgAuthReq vo) { - return success(machineService.auth(vo)); + public CommonResult authInsert(@RequestBody MachineOrgAuthReq vo) { + return success(machineService.authInsert(vo)); + } + + + @PostMapping("update-organ-auth") + @Operation(summary = "组织机台授权信息更新") + @PreAuthorize("@ss.hasPermission('machine-auth::update')") + public CommonResult authUpdate(@RequestBody MachineOrgAuthReq vo) { + return success(machineService.authUpdate(vo)); } @GetMapping("organ-page") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java index c46038c7f..2eda29d72 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineController.java @@ -11,6 +11,7 @@ import com.cf.imes.module.system.controller.admin.machine.vo.*; import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; import com.cf.imes.module.system.service.machine.MachineService; import com.cf.imes.module.system.service.machine.MachineTemplateService; +import com.fasterxml.jackson.core.JsonProcessingException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -41,7 +42,7 @@ public class MachineController { @Operation(summary = "创建机台") //@PreAuthorize("@ss.hasPermission('machine::create')") @OperateLog(logArgs = false) - public CommonResult createCutting(@Validated(CreateGroup.class) @RequestBody CuttingSaveReqVO createReqVO) { + public CommonResult createCutting(@Validated(CreateGroup.class) @RequestBody CuttingSaveReqVO createReqVO) throws JsonProcessingException { return success(machineService.createCutting(createReqVO)); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingTemplateSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingTemplateSaveReqVO.java index de5438c17..0d520ae2a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingTemplateSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/CuttingTemplateSaveReqVO.java @@ -34,6 +34,13 @@ public class CuttingTemplateSaveReqVO { private Long brandId; + @Schema(description = "机台模板是否公用") + private Boolean isDefault; + + + @Schema(description = "机台模板是否可用") + private Boolean isEnabled; + // @Schema(description = "机台的品牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") // @NotNull(message = "品牌名称不能为空") // private String brand; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineTemplateConvert.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineTemplateConvert.java index 07bb1de82..a2ed958cc 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineTemplateConvert.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/convert/machine/MachineTemplateConvert.java @@ -29,6 +29,8 @@ public class MachineTemplateConvert { .name(reqVO.getName()) // .brand(reqVO.getBrand()) .brandId(reqVO.getNowBrandId()) + .isDefault(reqVO.getIsDefault()) + .isEnabled(reqVO.getIsEnabled()) .setting(reqVO.getSetting().toJSONString()) .build(); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java index e4851c6ac..6af876ea9 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/machinetemplate/MachineTemplateDO.java @@ -29,10 +29,10 @@ public class MachineTemplateDO extends BaseDO { */ private Integer machineType; -// /** -// * 是否默认模板 -// */ -// private Boolean isDefault; + /** + * 是否公用 + */ + private Boolean isDefault; /** * 机台模板配置 @@ -44,6 +44,10 @@ public class MachineTemplateDO extends BaseDO { */ private Long brandId; + /** + * 是否可用 + */ + private Boolean isEnabled; /** diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/UserRoleMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/UserRoleMapper.java index 4b3186b86..d445768e6 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/UserRoleMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/UserRoleMapper.java @@ -1,6 +1,8 @@ package com.cf.imes.module.system.dal.mysql.permission; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.system.dal.dataobject.permission.UserRoleDO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @@ -45,4 +47,24 @@ public interface UserRoleMapper extends BaseMapperX { return selectList(UserRoleDO::getRoleId, roleIds); } + /** + * 忽视多组织查询角色下的用户id列表 + * + * @param roleId + * @return + */ + @OrganIgnore + default List selectRoleUserIds(Long roleId) { + return selectList(new LambdaQueryWrapperX().eq(UserRoleDO::getRoleId, roleId).select(UserRoleDO::getUserId)); + } + + /** + * 查询角色下的用户id列表 + * + * @param roleId + * @return + */ + default List selectOrgRoleUserIds(Long roleId) { + return selectList(new LambdaQueryWrapperX().eq(UserRoleDO::getRoleId, roleId).select(UserRoleDO::getUserId)); + } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java index b50653db2..b1592a080 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java @@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.machine; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.module.system.controller.admin.machine.vo.*; import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; +import com.fasterxml.jackson.core.JsonProcessingException; import javax.validation.Valid; import java.util.Collection; @@ -22,7 +23,7 @@ public interface MachineService { * @param createReqVO 创建信息 * @return 编号 */ - Long createCutting(@Valid CuttingSaveReqVO createReqVO); + Long createCutting(@Valid CuttingSaveReqVO createReqVO) throws JsonProcessingException; /** * 更新机台 @@ -69,7 +70,9 @@ public interface MachineService { Map> getMachineTree(Long type); - Boolean auth(MachineOrgAuthReq vo); + Boolean authInsert(MachineOrgAuthReq vo); + + Boolean authUpdate(MachineOrgAuthReq vo); PageResult organMachinePage(OrganMachinePage page); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java index f0bd853e3..0aea03f47 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java @@ -32,7 +32,9 @@ import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitMapper; import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper; import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +48,7 @@ import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString; +import static com.cf.imes.framework.common.util.json.JsonUtils.zipString; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; @@ -92,13 +95,13 @@ public class MachineServiceImpl implements MachineService { @Override @Transactional(rollbackFor = Exception.class) - public Long createCutting(CuttingSaveReqVO createReqVO) { + public Long createCutting(CuttingSaveReqVO createReqVO) throws JsonProcessingException { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); assert loginUser != null; // 校验机台名称是否重复 - MachineDO machine = machineMapper.selectMachineName(createReqVO.getName(),createReqVO.getMachineType(), getUserOrganId()); - if(machine != null){ + MachineDO machine = machineMapper.selectMachineName(createReqVO.getName(), createReqVO.getMachineType(), getUserOrganId()); + if (machine != null) { throw exception(MACHINE_NAME_ERROR); } @@ -114,7 +117,9 @@ public class MachineServiceImpl implements MachineService { // 插入 machineDO = MachineConvert.convert(createReqVO); - machineDO.setSetting(copyMachineDO.getSetting()); + String updatedJsonString = handleMachineSpecificConfiguration(machineDO, machineDO.getMachineType(), copyMachineDO.getSetting(), true); + + machineDO.setSetting(updatedJsonString == null ? copyMachineDO.getSetting() : zipString(updatedJsonString)); machineDO.setId(null); @@ -133,96 +138,207 @@ public class MachineServiceImpl implements MachineService { // 创建新的机器对象 machineDO = MachineConvert.convert(createReqVO); - machineDO.setSetting(machineTemplateDO.getSetting()); - machineMapper.insert(machineDO); // 处理不同机台类型的配置 - handleMachineSpecificConfiguration(machineDO, machineTemplateDO); + String updatedJsonString = handleMachineSpecificConfiguration(machineDO, machineTemplateDO.getMachineType(), machineTemplateDO.getSetting(), false); + + machineDO.setSetting(updatedJsonString == null ? machineTemplateDO.getSetting() : zipString(updatedJsonString)); + machineMapper.insert(machineDO); + // 返回新机器的ID return machineDO.getId(); } - // 判断机台的模板是否是钻孔机或封边机 - private void handleMachineSpecificConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) { - Integer machineType = machineTemplateDO.getMachineType(); + private String handleMachineSpecificConfiguration(MachineDO machineDO, Integer machineType, String machineSetting, Boolean isMachine) throws JsonProcessingException { + + String updatedJsonString = null; if (MachineTypeEnum.CUTTING.getType().equals(machineType)) { - handleCuttingMachineConfiguration(machineDO, machineTemplateDO); + updatedJsonString = handleCuttingMachineConfiguration(machineDO, machineSetting, isMachine); } else if (MachineTypeEnum.BANDING.getType().equals(machineType)) { - handleBandingMachineConfiguration(machineDO, machineTemplateDO); + updatedJsonString = handleBandingMachineConfiguration(machineDO, machineSetting, isMachine); } + + return updatedJsonString; } // 创建贴标机 - private void handleCuttingMachineConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) { + private String handleCuttingMachineConfiguration(MachineDO machineDO, String machineSetting, Boolean isMachine) throws JsonProcessingException { - JsonNode cuttingSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting())); + String unzipMachineSetting = unzipString(machineSetting); + + JsonNode cuttingSetting = JsonUtils.parseTree(unzipMachineSetting); JsonNode advancedConfigsRef = cuttingSetting.get("advancedConfigsRef"); - boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled").asBoolean(); + + boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled") != null && advancedConfigsRef.get("isAutoLabelEnabled").asBoolean(); + if (isAutoLabelEnabled && advancedConfigsRef.has("autoLabelModel")) { - Integer autoLabelModel = advancedConfigsRef.get("autoLabelModel").asInt(); - createAndInsertMachine(autoLabelModel, machineDO, "开料" + machineDO.getName() + "-贴标机"); + Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt(); + + MachineDO newMachine; + + if (isMachine) { + + MachineDO machine = machineMapper.selectById(autoLabelModelId); + if (machine != null) { + newMachine = MachineDO.builder() + .labelId(machine.getLabelId()) + .machineType(machine.getMachineType()) + .brandId(machine.getBrandId()) + .setting(machine.getSetting()) + .name("开料" + machineDO.getName() + "-贴标机") + .build(); + + machineMapper.insert(newMachine); + + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipMachineSetting, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("advancedConfigsRef"); + advancedConfigs.put("autoLabelModel", newMachine.getId()); + + // 将 Map 转换为 JSON 字符串 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + + + } + } + + MachineTemplateDO machineTemplate = machineTemplateMapper.selectById(autoLabelModelId); + if (machineTemplate != null) { + newMachine = MachineDO.builder() + .labelId(machineDO.getLabelId()) + .machineType(machineTemplate.getMachineType()) + .brandId(machineTemplate.getBrandId()) + .setting(machineTemplate.getSetting()) + .name("开料" + machineDO.getName() + "-贴标机") + .build(); + + machineMapper.insert(newMachine); + + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipMachineSetting, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("advancedConfigsRef"); + advancedConfigs.put("autoLabelModel", newMachine.getId()); + + // 将 Map 转换为 JSON 字符串 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + + } } + + return null; } // 创建钻孔机 - private void handleBandingMachineConfiguration(MachineDO machineDO, MachineTemplateDO machineTemplateDO) { - JsonNode drillSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting())); + private String handleBandingMachineConfiguration(MachineDO machineDO, String machineSetting, Boolean isMachine) throws JsonProcessingException { + + String unzipMachineSetting = unzipString(machineSetting); + + JsonNode drillSetting = JsonUtils.parseTree(unzipMachineSetting); + JsonNode cuttingModuleRef = drillSetting.get("cuttingModuleRef"); - boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled").asBoolean(); + + boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled") != null && cuttingModuleRef.get("isDrillEnabled").asBoolean(); if (isDrillEnabled && cuttingModuleRef.has("drillModel")) { - Integer drillModel = cuttingModuleRef.get("drillModel").asInt(); - createAndInsertMachine(drillModel, machineDO, "开料" + machineDO.getName() + "钻孔机"); + Integer drillModelId = cuttingModuleRef.get("drillModel").asInt(); + + MachineDO newMachine; + + if (isMachine) { + + MachineDO machine = machineMapper.selectById(drillModelId); + if (machine != null) { + newMachine = MachineDO.builder() + .labelId(machine.getLabelId()) + .machineType(machine.getMachineType()) + .brandId(machine.getBrandId()) + .setting(machine.getSetting()) + .name("封边" + machineDO.getName() + "-钻孔机") + .build(); + + machineMapper.insert(newMachine); + + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipMachineSetting, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("cuttingModuleRef"); + advancedConfigs.put("drillModel", newMachine.getId()); + + // 将 Map 转换为 JSON 字符串并打印输出 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + + + } + } + + + MachineTemplateDO machineTemplate = machineTemplateMapper.selectById(drillModelId); + if (machineTemplate != null) { + newMachine = MachineDO.builder() + .labelId(machineDO.getLabelId()) + .machineType(machineTemplate.getMachineType()) + .brandId(machineTemplate.getBrandId()) + .setting(machineTemplate.getSetting()) + .name("封边" + machineDO.getName() + "-钻孔机") + .build(); + + machineMapper.insert(newMachine); + + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipMachineSetting, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("cuttingModuleRef"); + advancedConfigs.put("drillModel", newMachine.getId()); + + // 将 Map 转换为 JSON 字符串并打印输出 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + } } + + return null; } - private void createAndInsertMachine(Integer modelId, MachineDO parentMachine, String machineName) { - MachineTemplateDO template = machineTemplateMapper.selectById(modelId); - - if (template != null) { - MachineDO newMachine = MachineDO.builder() - .labelId(parentMachine.getLabelId()) - .machineType(template.getMachineType()) - .brandId(template.getBrandId()) - .setting(template.getSetting()) - .name(machineName) - .build(); - - machineMapper.insert(newMachine); - } - } - - - - - - - - - @Override @Transactional(rollbackFor = Exception.class) public void updateCutting(CuttingSaveReqVO updateReqVO) { // 校验存在和判断机台名称是否重复 - validateExists(updateReqVO.getId(),updateReqVO.getName(),updateReqVO.getMachineType(),updateReqVO.getId()); + validateExists(updateReqVO.getId(), updateReqVO.getName(), updateReqVO.getMachineType(), updateReqVO.getId()); // 更新 MachineDO updateObj = MachineConvert.convert(updateReqVO); //MachineDO updateObj = BeanUtils.toBean(updateReqVO, MachineDO.class); // 判断传入的机台配置是否存在,如果存在,压缩数据后更新 - if(!updateReqVO.getMachineSettingDO().isEmpty()){ + if (!updateReqVO.getMachineSettingDO().isEmpty()) { updateObj.setSetting(JsonUtils.zipString(updateObj.getSetting())); } @@ -237,7 +353,7 @@ public class MachineServiceImpl implements MachineService { throw exception(MACHINE_NOT_EXISTS); } // 校验当前机台是否使用 - if(orderPlanApi.getOrderPlan(id).getData()){ + if (orderPlanApi.getOrderPlan(id).getData()) { throw exception(THE_CURRENT_MACHINE_IS_ALREADY_IN_USE); } machineMapper.deleteById(id); @@ -273,7 +389,6 @@ public class MachineServiceImpl implements MachineService { } - @Override public DrillRespVO getDrill(Long id) { MachineDO machineDO = machineMapper.selectById(id); @@ -301,7 +416,7 @@ public class MachineServiceImpl implements MachineService { List brandIds = machineDOS.stream().map(MachineDO::getBrandId).toList(); List machineBrandDOS = new ArrayList<>(); - if(!brandIds.isEmpty()) { + if (!brandIds.isEmpty()) { machineBrandDOS = machineBrandMapper.selectBatchIds(brandIds); } @@ -316,35 +431,15 @@ public class MachineServiceImpl implements MachineService { return machineVOS.stream().collect(Collectors.groupingBy(MachineVO::getMachineType)); } + @Override - public Boolean auth(MachineOrgAuthReq vo) { + public Boolean authInsert(MachineOrgAuthReq vo) { OrganizationDO tenant = organMapper.selectById(vo.getOrganId()); - if (tenant == null) { - throw exception(ORGAN_NOT_EXISTS); + + if (tenant != null) { + throw exception(ORGAN_ALREADY_EXISTS); } -// machineLimitMapper.delete(new LambdaQueryWrapperX().eq(MachineLimitDO::getOrganId, vo.getOrganId())); - -// List machineAuthList = vo.getMachineAuthList(); - -// if(CollectionUtil.isNotEmpty(machineAuthList)) { -// List organMachineDOS = new ArrayList<>(); -// LocalDateTime now = LocalDateTime.now(); -// for (MachineAuth machineAuth : machineAuthList) { -// organMachineDOS.add( -// MachineLimitDO.builder() -// .createTime(now) -// .organId(vo.getOrganId()) -//// .machineId(machineAuth.getMachineId()) -//// .showDualWorkstation(machineAuth.getShowDualWorkstation()) -//// .showAutoNotePrinter(machineAuth.getShowAutoNotePrinter()) -//// .showPriorFacing(machineAuth.getShowPriorFacing()) -// .build() -// ); -// -// } -// machineLimitMapper.insertBatch(organMachineDOS); -// } MachineLimitDO machineLimitDO = MachineLimitDO.builder() .organId(vo.getOrganId()) @@ -356,6 +451,29 @@ public class MachineServiceImpl implements MachineService { .setting(vo.getMachineAuthIds().toString()) .build(); + machineLimitMapper.insert(machineLimitDO); + + return Boolean.TRUE; + } + + + @Override + public Boolean authUpdate(MachineOrgAuthReq vo) { + + OrganizationDO tenant = organMapper.selectById(vo.getOrganId()); + if (tenant == null) { + throw exception(ORGAN_NOT_EXISTS); + } + + MachineLimitDO machineLimitDO = MachineLimitDO.builder() + .organId(vo.getOrganId()) + .cutLimit(vo.getCutLimit()) + .drillLimit(vo.getDrillLimit()) + .labelLimit(vo.getLabelLimit()) + .sawLimit(vo.getSawLimit()) + .sealedgeLimit(vo.getSealedgeLimit()) + .setting(vo.getMachineAuthIds().toString()) + .build(); machineLimitMapper.updateById(machineLimitDO); @@ -398,14 +516,14 @@ public class MachineServiceImpl implements MachineService { List machineDOS = machineMapper.selectMachineList(type, getUserOrganId()); - return BeanUtils.toBean(machineDOS,MachineSimpleRespVO.class); + return BeanUtils.toBean(machineDOS, MachineSimpleRespVO.class); } @Override @OrganIgnore - public List simpleList(Long organId,Long type) { + public List simpleList(Long organId, Long type) { List machineDOS = machineMapper.selectList(new LambdaQueryWrapperX() .eqIfPresent(MachineDO::getOrganId, organId) .eqIfPresent(MachineDO::getMachineType, type) @@ -425,7 +543,6 @@ public class MachineServiceImpl implements MachineService { } - @Override public Map> getTemplateAuth(MachinePageReqVO pageParam) { @@ -435,53 +552,51 @@ public class MachineServiceImpl implements MachineService { return machineBrandModelRespVOS.stream().collect(Collectors.groupingBy(MachineBrandModelRespVO::getMachineType)); - } - // 校验机台是否存在和机台名称是否重复 - private void validateExists(Long id,String name,Integer machineType,Long machineId) { + private void validateExists(Long id, String name, Integer machineType, Long machineId) { MachineDO machineDO = machineMapper.selectById(id); if (machineDO == null) { throw exception(MACHINE_NOT_EXISTS); } - MachineDO machine = machineMapper.selectMachine(name, machineType,machineId, getUserOrganId()); + MachineDO machine = machineMapper.selectMachine(name, machineType, machineId, getUserOrganId()); - if(machine != null){ + if (machine != null) { throw exception(MACHINE_NAME_ERROR); } } // 校验当前组织当前类型的机台是否达到最大创建数量 - private void validateMachineNum(Integer machineType, Long organId){ + private void validateMachineNum(Integer machineType, Long organId) { - Integer machineNum = machineMapper.selectByOrganId(machineType,organId).size()+1; + Integer machineNum = machineMapper.selectByOrganId(machineType, organId).size() + 1; MachineLimitDO machineLimitDO = machineLimitMapper.selectById(organId); Integer authMachineNum = 0; - switch (machineType){ + switch (machineType) { - case 1 : + case 1: authMachineNum = machineLimitDO.getCutLimit(); break; - case 2 : + case 2: authMachineNum = machineLimitDO.getDrillLimit(); break; - case 3 : + case 3: authMachineNum = machineLimitDO.getSawLimit(); break; - case 4 : + case 4: authMachineNum = machineLimitDO.getLabelLimit(); break; - case 5 : + case 5: authMachineNum = machineLimitDO.getSealedgeLimit(); break; } - if(machineNum >= authMachineNum){ + if (machineNum >= authMachineNum) { throw exception(MACHINE_NUM_ERROR); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java index cd9b73284..9f468ca4a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java @@ -24,6 +24,7 @@ import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitM import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper; import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -72,32 +73,31 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { private OrganMapper organMapper; - @Override @Transactional(rollbackFor = Exception.class) public Long createCuttingTemplate(CuttingTemplateSaveReqVO reqVO) { // todo 测试时的判断,测试完毕后删除 - if(reqVO.getNowBrandId() == null){ + if (reqVO.getNowBrandId() == null) { throw exception(THE_CURRENT_BRAND); } - validateMachineTemplate(reqVO.getName(),reqVO.getMachineType()); + validateMachineTemplate(reqVO.getName(), reqVO.getMachineType()); MachineTemplateDO templateDO = MachineTemplateConvert.convert(reqVO); - if(reqVO.getMachineId()!=null) { + if (reqVO.getMachineId() != null) { MachineTemplateDO machineTemplateDO = machineTemplateMapper.selectMachine(reqVO.getBrandId(), reqVO.getMachineId()); - templateDO.setSetting(machineTemplateDO.getSetting()); + String updatedJsonString = handleMachineType(templateDO.getName(), machineTemplateDO.getMachineType(), machineTemplateDO.getSetting()); + + templateDO.setSetting(updatedJsonString == null ? machineTemplateDO.getSetting() : JsonUtils.zipString(updatedJsonString)); machineTemplateMapper.insert(templateDO); - handleMachineType(machineTemplateDO, templateDO); - return templateDO.getId(); } @@ -118,17 +118,17 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { // todo 测试时的判断,测试完毕后删除 MachineBrandDO machineBrandDO = machineBrandMapper.selectById(reqVO.getNowBrandId()); - if(machineBrandDO == null){ + if (machineBrandDO == null) { throw exception(THE_CURRENT_BRAND); } // 校验机台模板是否存在和名称是否重复 - validateMachineTemplateExists(reqVO.getName(),reqVO.getMachineType(),reqVO.getId()); + validateMachineTemplateExists(reqVO.getName(), reqVO.getMachineType(), reqVO.getId()); MachineTemplateDO templateDO = MachineTemplateConvert.convert(reqVO); - if(!reqVO.getSetting().isEmpty()){ + if (!reqVO.getSetting().isEmpty()) { templateDO.setSetting(JsonUtils.zipString(templateDO.getSetting())); } machineTemplateMapper.updateById(templateDO); @@ -186,7 +186,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { // 将机台的配置进行解压 .stream() // todo 目前需要写上,等数据清一波后,应该不需要了 - .filter(m -> !Objects.equals(m.getBrandId(),null)) + .filter(m -> !Objects.equals(m.getBrandId(), null)) .map(m -> m.setSetting(unzipString(m.getSetting()))).toList(); for (MachineTemplateRespVO machineTemplateRespVO : machineTemplateRespVOS) { @@ -228,11 +228,11 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { List organIds = organTemplateRespPageRecords.stream().map(OrganTemplateResp::getOrganId).toList(); - if(organIds.isEmpty()){ + if (organIds.isEmpty()) { return null; } - List machineTemplateBrandReqVOS = machineTemplateLimitMapper.selectMachineList(organIds,page.getTemplateName()); + List machineTemplateBrandReqVOS = machineTemplateLimitMapper.selectMachineList(organIds, page.getTemplateName()); // 查询品牌名称 @@ -242,14 +242,14 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { for (MachineTemplateBrandReqVO machineTemplateBrandReqVO : machineTemplateBrandReqVOS) { machineTemplateBrandReqVO.setBrand(machineBrandDOS.stream() - .filter(f->f.getId().equals(machineTemplateBrandReqVO.getId())) + .filter(f -> f.getId().equals(machineTemplateBrandReqVO.getId())) .map(MachineBrandDO::getBrand) .findAny().orElse(null)); } for (OrganTemplateResp organTemplateRespPageRecord : organTemplateRespPageRecords) { organTemplateRespPageRecord.setMachineTemplateBrandReqVOS(machineTemplateBrandReqVOS.stream() - .filter(f->f.getOrganId().equals(organTemplateRespPageRecord.getOrganId())) + .filter(f -> f.getOrganId().equals(organTemplateRespPageRecord.getOrganId())) .toList()); } @@ -268,7 +268,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { MachineBrandDO machineBrandDO = machineBrandMapper.selectBrand(reqVO.getBrand(), reqVO.getMachineType()); - if(machineBrandDO != null){ + if (machineBrandDO != null) { throw exception(THE_CURRENT_BRAND_OF_THE_MACHINE_EXISTS); } @@ -306,7 +306,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { List machineIds; - if(organId != null){ + if (organId != null) { List machineTemplateLimitDOS = machineTemplateLimitMapper.selectListByOrganId(organId); @@ -332,15 +332,15 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { List machineTemplateDoS = machineTemplateMapper - .selectList( new MPJLambdaWrapperX() - .in(MachineTemplateDO::getBrandId, brandIds) - .select(MachineTemplateDO::getId, MachineTemplateDO::getBrandId, MachineTemplateDO::getName)); + .selectList(new MPJLambdaWrapperX() + .in(MachineTemplateDO::getBrandId, brandIds) + .select(MachineTemplateDO::getId, MachineTemplateDO::getBrandId, MachineTemplateDO::getName)); List machineTemplates = BeanUtils.toBean(machineTemplateDoS, TemplateAutoResp.MachineTemplate.class); - if(!machineIds.isEmpty()) { + if (!machineIds.isEmpty()) { for (TemplateAutoResp.MachineBrand machineBrand : templateAutoResp.getMachineBrand()) { @@ -376,7 +376,6 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { } - @Override public Boolean updateTemplateAuth(MachineOrgAuthReq vo) { @@ -475,101 +474,146 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { } - - - - - // 判断机台模板的类型 - private void handleMachineType(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) { + private String handleMachineType(String machineName, Integer machineType, String machineSetting) { - if(machineTemplateDO.getMachineType().equals(MachineTypeEnum.CUTTING.getType())) { - handleCuttingMachine(machineTemplateDO, templateDO); - } else if(machineTemplateDO.getMachineType().equals(MachineTypeEnum.BANDING.getType())) { - handleBandingMachine(machineTemplateDO, templateDO); + String updatedJsonString = null; + + if (machineType.equals(MachineTypeEnum.CUTTING.getType())) { + updatedJsonString = handleCuttingMachine(machineName, machineSetting); + } else if (machineType.equals(MachineTypeEnum.BANDING.getType())) { + updatedJsonString = handleBandingMachine(machineName, machineSetting); } + return updatedJsonString; } - private void handleCuttingMachine(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) { - JsonNode cuttingSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting())); + private String handleCuttingMachine(String machineName, String machineSetting) { + + String unzipString = unzipString(machineSetting); + + JsonNode cuttingSetting = JsonUtils.parseTree(unzipString); + JsonNode advancedConfigsRef = cuttingSetting.get("advancedConfigsRef"); - boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled").asBoolean(); - if(isAutoLabelEnabled && advancedConfigsRef.get("autoLabelBrand") != null && advancedConfigsRef.get("autoLabelModel") != null){ + boolean isAutoLabelEnabled = advancedConfigsRef.get("isAutoLabelEnabled") != null && advancedConfigsRef.get("isAutoLabelEnabled").asBoolean(); - Integer autoLabelModel = advancedConfigsRef.get("autoLabelModel").asInt(); - MachineTemplateDO labelingMachineTemplateDO = machineTemplateMapper.selectById(autoLabelModel); + if (isAutoLabelEnabled && advancedConfigsRef.get("autoLabelBrand") != null && advancedConfigsRef.get("autoLabelModel") != null) { - if(labelingMachineTemplateDO != null) { + Integer autoLabelModelId = advancedConfigsRef.get("autoLabelModel").asInt(); + + try { + + MachineTemplateDO labelingMachineTemplateDO = machineTemplateMapper.selectById(autoLabelModelId); MachineTemplateDO labelingMachineDO = MachineTemplateDO.builder() .machineType(labelingMachineTemplateDO.getMachineType()) .brandId(labelingMachineTemplateDO.getBrandId()) .setting(labelingMachineTemplateDO.getSetting()) - .name("开料" + templateDO.getName() + "-贴标机") + .name("开料" + machineName + "-贴标机") .build(); machineTemplateMapper.insert(labelingMachineDO); + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipString, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("advancedConfigsRef"); + advancedConfigs.put("autoLabelModel", labelingMachineDO.getId()); + + // 将 Map 转换为 JSON 字符串 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + + } catch (Exception e) { + + throw exception(LABELINGMACHINE_RELATED_DATA_ERROR); } } + + return null; } - private void handleBandingMachine(MachineTemplateDO machineTemplateDO, MachineTemplateDO templateDO) { + private String handleBandingMachine(String machineName, String machineSetting) { + + String unzipString = unzipString(machineSetting); + + JsonNode drillSetting = JsonUtils.parseTree(unzipString); - JsonNode drillSetting = JsonUtils.parseTree(unzipString(machineTemplateDO.getSetting())); JsonNode cuttingModuleRef = drillSetting.get("cuttingModuleRef"); - boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled").asBoolean(); - if(isDrillEnabled && cuttingModuleRef.get("drillBrand") != null && cuttingModuleRef.get("drillModel") != null){ + boolean isDrillEnabled = cuttingModuleRef.get("isDrillEnabled") != null && cuttingModuleRef.get("isDrillEnabled").asBoolean(); - Integer drillModel = cuttingModuleRef.get("drillModel").asInt(); - MachineTemplateDO drillMachineTemplateDO = machineTemplateMapper.selectById(drillModel); + if (isDrillEnabled && cuttingModuleRef.get("drillBrand") != null && cuttingModuleRef.get("drillModel") != null) { - if(drillMachineTemplateDO != null) { + Integer drillModelId = cuttingModuleRef.get("drillModel").asInt(); + + try { + + MachineTemplateDO drillMachineTemplateDO = machineTemplateMapper.selectById(drillModelId); MachineTemplateDO drillMachineDO = MachineTemplateDO.builder() .machineType(drillMachineTemplateDO.getMachineType()) .brandId(drillMachineTemplateDO.getBrandId()) .setting(drillMachineTemplateDO.getSetting()) - .name("开料" + templateDO.getName() + "钻孔机") + .name("封边" + machineName + "-钻孔机") .build(); machineTemplateMapper.insert(drillMachineDO); + // 创建 ObjectMapper 对象 + ObjectMapper mapper = new ObjectMapper(); + + // 将 JSON 字符串解析为 Map + Map map = mapper.readValue(unzipString, Map.class); + + // 修改值 + Map advancedConfigs = (Map) map.get("cuttingModuleRef"); + advancedConfigs.put("drillModel", drillMachineDO.getId()); + + // 将 Map 转换为 JSON 字符串 + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); + + } catch (Exception e) { + + throw exception(DRILLMACHINE_RELATED_DATA_ERROR); } + } + + return null; } - private void validateMachineTemplateExists(String name,Integer machineType,Long machineId) { + private void validateMachineTemplateExists(String name, Integer machineType, Long machineId) { MachineTemplateDO machineTemplateDO = machineTemplateMapper.selectById(machineId); - if(machineTemplateDO == null){ + if (machineTemplateDO == null) { throw exception(MACHINE_TEMPLATE_NOT_EXISTS); } - MachineTemplateDO machineTemplate = machineTemplateMapper.selectMachineTemplate(name, machineType,machineId); + MachineTemplateDO machineTemplate = machineTemplateMapper.selectMachineTemplate(name, machineType, machineId); - if(machineTemplate != null){ + if (machineTemplate != null) { throw exception(MACHINETEMPLATE_NAME_ERROR); } } - - private void validateMachineTemplate(String name,Integer machineType) { + private void validateMachineTemplate(String name, Integer machineType) { MachineTemplateDO machineTemplateDO = machineTemplateMapper.selectMachineTemplateName(name, machineType); - if(machineTemplateDO != null){ + if (machineTemplateDO != null) { throw exception(MACHINETEMPLATE_NAME_ERROR); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/TenantPackageServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/TenantPackageServiceImpl.java index 610f5a637..ab2c6f778 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/TenantPackageServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/organ/TenantPackageServiceImpl.java @@ -7,6 +7,7 @@ import com.cf.imes.framework.common.enums.CommonStatusEnum; 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.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.organ.vo.packages.TenantPackagePageReqVO; import com.cf.imes.module.system.controller.admin.organ.vo.packages.TenantPackageSaveReqVO; import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO; @@ -58,7 +59,8 @@ public class TenantPackageServiceImpl implements TenantPackageService { validateTenantPackageUnique(updateReqVO); // 校验存在 TenantPackageDO tenantPackage = validateTenantPackageExists(updateReqVO.getId()); - if(Objects.equals(tenantPackage.getId(), SYSTEM_ORGAN_PACKAGE_ID) || Objects.equals(tenantPackage.getId(), SYSTEM_SUPER_PACKAGE_ID)) { + if (Boolean.FALSE.equals(SecurityFrameworkUtils.isSuperAdmin()) && + (Objects.equals(tenantPackage.getId(), SYSTEM_ORGAN_PACKAGE_ID) || Objects.equals(tenantPackage.getId(), SYSTEM_SUPER_PACKAGE_ID))) { throw exception(TENANT_PACKAGE_DEPT_EXIT); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index a7eec5271..73a89bc2e 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -1,13 +1,13 @@ package com.cf.imes.module.system.service.permission; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.util.collection.CollectionUtils; +import com.cf.imes.framework.common.util.json.JsonUtils; import com.cf.imes.framework.datapermission.core.annotation.DataPermission; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.core.aop.OrganIgnore; @@ -18,7 +18,7 @@ import com.cf.imes.module.system.api.permission.dto.DeptDataPermissionRespDTO; import com.cf.imes.module.system.constants.permission.InternalRoleConstants; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleUserReqVO; import com.cf.imes.module.system.controller.admin.permission.vo.permission.PermissionAssignUserRoleReqVO; -import com.cf.imes.module.system.convert.auth.AuthConvert; +import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import com.cf.imes.module.system.dal.dataobject.permission.MenuDO; import com.cf.imes.module.system.dal.dataobject.permission.RoleDO; import com.cf.imes.module.system.dal.dataobject.permission.RoleMenuDO; @@ -32,17 +32,17 @@ import com.cf.imes.module.system.enums.permission.DataScopeEnum; import com.cf.imes.module.system.service.dept.DeptService; import com.cf.imes.module.system.service.user.AdminUserService; import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.cf.imes.module.system.util.organ.OrganUtils; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Suppliers; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; import org.springframework.data.redis.core.Cursor; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ScanOptions; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,10 +54,10 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; +import static com.cf.imes.module.system.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN; import static com.cf.imes.module.system.enums.ErrorCodeConstants.ROLE_ME_ERROR; /** @@ -83,8 +83,8 @@ public class PermissionServiceImpl implements PermissionService { @Resource private AdminUserService userService; - @Autowired - private RedisTemplate redisTemplate; + @Resource + private StringRedisTemplate stringRedisTemplate; @Override public boolean hasAnyPermissions(Long userId, String... permissions) { @@ -164,18 +164,15 @@ public class PermissionServiceImpl implements PermissionService { allEntries = true) // allEntries 清空所有缓存,主要一次更新涉及到的 menuIds 较多,反倒批量会更快 public void assignRoleMenu(Long roleId, Set menuIds, Long organId) { // 获得角色拥有菜单编号 - Set dbMenuIds = null; - boolean isOrganRole = Objects.equals(roleId, InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, InternalRoleConstants.ORGAN_STAFF_ROLE_ID); + Set dbMenuIds; + boolean isOrganRole = OrganUtils.isOrgRole(roleId); if (isOrganRole) { dbMenuIds = convertSet(roleMenuMapper.selectListByRoleIdWithOrganAdmin(List.of(roleId)), RoleMenuDO::getMenuId); }else { dbMenuIds = convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); } // 查询角色获取角色的组织id,如果没有传入组织id就跟角色的组织统一 - RoleDO role = roleService.getRole(roleId); - if (Objects.isNull(role)) { - throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS); - } + RoleDO role = validateRole(roleId); // 前端没传或者查一次后切换了组织导致跟角色组织不一致的统一为角色的组织 Long roleOrganId = role.getOrganId(); if (Objects.isNull(organId) || ObjectUtil.notEqual(roleOrganId, organId)) { @@ -206,25 +203,75 @@ public class PermissionServiceImpl implements PermissionService { roleMenuMapper.deleteListByRoleIdAndMenuIds(roleId, deleteMenuIds); } + // 角色菜单权限发生修改,通知刷新本地缓存 + flushRoleMenuCache(roleId, isOrganRole, createMenuIds, deleteMenuIds, finalOrganId); + } + + /** + * 跨机构清理角色菜单缓存 + 通知刷新本地缓存 + * + * @param roleId 操作的角色id + * @param isOrganRole 是否内置角色 + * @param createMenuIds 新增角色-菜单关联id + * @param deleteMenuIds 删除角色-菜单关联id + * @param organId 角色所属机构id + */ + private void flushRoleMenuCache(Long roleId, boolean isOrganRole, Collection createMenuIds, Collection deleteMenuIds, Long organId) { Long currentOrganId = SecurityFrameworkUtils.getUserOrganId(); // 角色菜单权限发生修改,通知刷新本地缓存 - if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { + if (CollUtil.isNotEmpty(createMenuIds) || CollUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { - // 当前操作人和所操作的目标菜单机构不同时,清空MENU_ROLE_ID_LIST:*:菜单id的缓存 - if (ObjectUtil.notEqual(finalOrganId, currentOrganId)) { - // 获取新增和删除菜单id的并集 - Collection delMenuIds = CollUtil.union(createMenuIds, deleteMenuIds); - delMenuIds.forEach(delMenuId -> { - String patternKey = String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":*:%s")), delMenuId); - Long batchDelNum = scanAndDelKeys(patternKey); - log.info("[assignRoleMenu] 批量删除redis[{}]数量:{}", patternKey, batchDelNum); + // 当前操作人和所操作的目标菜单机构不同时,清空MENU_ROLE_ID_LIST:*:菜单id的缓存 + if (ObjectUtil.notEqual(organId, currentOrganId)) { + // 获取新增和删除菜单id的并集 + Collection delMenuIds = CollUtil.union(createMenuIds, deleteMenuIds); + delMenuIds.forEach(delMenuId -> { + String patternKey = String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":*:%s")), delMenuId); + Long batchDelNum = scanAndDelKeys(patternKey); + log.info("[assignRoleMenu] 批量删除redis[{}]数量:{}", patternKey, batchDelNum); + }); + } + stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + }) + .thenRunAsync(() -> { + // 清空角色下用户的token缓存 + List userIds; + if(isOrganRole) { + userIds = userRoleMapper.selectRoleUserIds(roleId).stream().map(UserRoleDO::getUserId).toList(); + } else { + userIds = userRoleMapper.selectOrgRoleUserIds(roleId).stream().map(UserRoleDO::getUserId).toList(); + } + scanAndCompareUserAndDelKeys(String.format(OAUTH2_ACCESS_TOKEN, "*"), userIds); + }) + .exceptionally(e -> { + log.error("[assignRoleMenu][flushRoleMenuCache]失败, 异常:{}", e); + return null; }); + } + } + + /** + * scan匹配oauth2_access_token:下缓存并删除缓存 + * @param keyPattern + * @param userIds + */ + private void scanAndCompareUserAndDelKeys(String keyPattern, List userIds) { + // 根据keyPattern scan匹配的redis key + List matchKeys = new ArrayList<>(); + Cursor cursor = stringRedisTemplate.scan(ScanOptions.scanOptions().match(keyPattern).count(200).build()); + while (cursor.hasNext()) { + matchKeys.add(cursor.next()); + } + cursor.close(); + if (CollUtil.isNotEmpty(matchKeys)) { + for (String key : matchKeys) { + // 获取key下的用户信息 + OAuth2AccessTokenDO oAuth2AccessTokenDO = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key), OAuth2AccessTokenDO.class); + if (CollUtil.contains(userIds, oAuth2AccessTokenDO.getUserId())) { + // 角色下的用户id匹配上了删除redis中的token缓存 + stringRedisTemplate.delete(key); } - redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); - }).exceptionally(e -> { - log.error("[assignRoleMenu] redis 清空MENU_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); - return null; - }); + } } } @@ -236,18 +283,32 @@ public class PermissionServiceImpl implements PermissionService { private Long scanAndDelKeys(String keyPattern) { // 根据keyPattern scan匹配的redis key List delKeys = new ArrayList<>(); - Cursor cursor = redisTemplate.scan(ScanOptions.scanOptions().match(keyPattern).count(200).build()); + Cursor cursor = stringRedisTemplate.scan(ScanOptions.scanOptions().match(keyPattern).count(200).build()); while (cursor.hasNext()) { delKeys.add(cursor.next()); } cursor.close(); // 删除匹配到的key - if (CollectionUtil.isNotEmpty(delKeys)) { - return redisTemplate.delete(delKeys); + if (CollUtil.isNotEmpty(delKeys)) { + return stringRedisTemplate.delete(delKeys); } return 0L; } + + /** + * 校验角色 + * + * @param roleId + */ + private RoleDO validateRole(Long roleId) { + RoleDO role = roleService.getRole(roleId); + if (Objects.isNull(role)) { + throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS); + } + return role; + } + @Override @Transactional(rollbackFor = Exception.class) @Caching(evict = { @@ -343,13 +404,10 @@ public class PermissionServiceImpl implements PermissionService { } } // 查询角色获取角色的组织id,如果没有传入组织id就跟角色的组织统一 - RoleDO role = roleService.getRole(roleId); - if (Objects.isNull(role)) { - throw new ServiceException(ErrorCodeConstants.ROLE_NOT_EXISTS); - } + RoleDO role = validateRole(roleId); // 前端没传或者查一次后切换了组织导致跟角色组织不一致的统一为角色的组织 Long roleOrganId = role.getOrganId(); - boolean isOrganRole = Objects.equals(roleId, InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, InternalRoleConstants.ORGAN_STAFF_ROLE_ID); + boolean isOrganRole = OrganUtils.isOrgRole(roleId); // 内置角色还是按照机构来存 if (!isOrganRole && (Objects.isNull(organId) || ObjectUtil.notEqual(roleOrganId, organId))) { organId = roleOrganId; @@ -364,7 +422,7 @@ public class PermissionServiceImpl implements PermissionService { // 筛选要新增的userRole:前端有,数据库没有 Collection createRoleUserIds = CollUtil.subtract(userIds, roleUserIds); - if (!CollectionUtil.isEmpty(createRoleUserIds)) { + if (CollUtil.isNotEmpty(createRoleUserIds)) { userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleUserIds, userId -> { UserRoleDO entity = new UserRoleDO(); entity.setUserId(userId).setRoleId(roleId).setOrganId(finalOrganId); @@ -374,7 +432,7 @@ public class PermissionServiceImpl implements PermissionService { // 筛选要删除的userRole:前端没有,数据库有 Collection deleteRoleUserIds = CollUtil.subtract(roleUserIds, userIds); - if (!CollectionUtil.isEmpty(deleteRoleUserIds)) { + if (CollUtil.isNotEmpty(deleteRoleUserIds)) { // 当前用户不能移除自身的角色 Long incloudSelf = deleteRoleUserIds.stream().filter(userId -> userId.equals(loginUser.getId())).findAny().orElse(null); if (incloudSelf != null) { @@ -382,13 +440,24 @@ public class PermissionServiceImpl implements PermissionService { } userRoleMapper.deleteListByRoleIdAndUserIds(roleId, deleteRoleUserIds); } + // 角色菜单权限发生修改,通知刷新本地缓存 + flushRoleUserCache(createRoleUserIds, deleteRoleUserIds, finalOrganId); + } + /** + * 跨机构清理角色用户缓存 + 通知刷新本地缓存 + * + * @param createRoleUserIds 新增角色-用户关联id + * @param deleteRoleUserIds 删除角色-用户关联id + * @param organId 角色所属机构 + */ + private void flushRoleUserCache(Collection createRoleUserIds, Collection deleteRoleUserIds, Long organId) { Long currentOrganId = SecurityFrameworkUtils.getUserOrganId(); // 角色菜单权限发生修改,通知刷新本地缓存 - if (CollectionUtil.isNotEmpty(createRoleUserIds) || CollectionUtil.isNotEmpty(deleteRoleUserIds)) { + if (CollUtil.isNotEmpty(createRoleUserIds) || CollUtil.isNotEmpty(deleteRoleUserIds)) { CompletableFuture.runAsync(() -> { // 当前操作人和所操作的目标菜单机构不同时,清空USER_ROLE_ID_LIST:*:用户id的缓存 - if (ObjectUtil.notEqual(finalOrganId, currentOrganId)) { + if (ObjectUtil.notEqual(organId, currentOrganId)) { // 获取新增和删除用户id的并集 Collection delRoleUserIds = CollUtil.union(createRoleUserIds, deleteRoleUserIds); delRoleUserIds.forEach(delRoleUserId -> { @@ -397,7 +466,7 @@ public class PermissionServiceImpl implements PermissionService { log.info("[batchAssignRoleUsers] 批量删除redis[{}]数量:{}", patternKey, batchDelNum); }); } - redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { log.error("[batchAssignRoleUsers] redis 清空USER_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); return null; @@ -461,7 +530,7 @@ public class PermissionServiceImpl implements PermissionService { Collection createRoleIds = CollUtil.subtract(roleIdList, dbRoleIds); Collection deleteMenuIds = CollUtil.subtract(dbRoleIds, roleIdList); // 执行新增和删除。对于已经授权的角色,不用做任何处理 - if (!CollectionUtil.isEmpty(createRoleIds)) { + if (CollUtil.isNotEmpty(createRoleIds)) { userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleIds, roleId -> { UserRoleDO entity = new UserRoleDO(); entity.setUserId(userId); @@ -470,16 +539,16 @@ public class PermissionServiceImpl implements PermissionService { return entity; })); } - if (!CollectionUtil.isEmpty(deleteMenuIds)) { + if (CollUtil.isNotEmpty(deleteMenuIds)) { userRoleMapper.deleteListByUserIdAndRoleIdIds(userId, deleteMenuIds); } // 角色菜单权限发生修改,通知刷新本地缓存 - if (CollectionUtil.isNotEmpty(createRoleIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { + if (CollUtil.isNotEmpty(createRoleIds) || CollUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { // 移除redis中的缓存 - redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); - redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); + stringRedisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); + stringRedisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { log.error("[assignUserRole] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); return null; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/util/organ/OrganUtils.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/util/organ/OrganUtils.java new file mode 100644 index 000000000..2dfc59091 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/util/organ/OrganUtils.java @@ -0,0 +1,24 @@ +package com.cf.imes.module.system.util.organ; + +import com.cf.imes.module.system.constants.permission.InternalRoleConstants; + +import java.util.Objects; + +/** + * 组织相关工具类 + * + * @author Gqr + * @since 2024/9/10 15:59 + */ +public class OrganUtils { + + /** + * 是否内置角色 + * + * @param roleId + * @return + */ + public static boolean isOrgRole(Long roleId) { + return Objects.equals(roleId, InternalRoleConstants.ORGAN_ADMIN_ROLE_ID) || Objects.equals(roleId, InternalRoleConstants.ORGAN_STAFF_ROLE_ID); + } +} diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/machine/MachineBrandMapper.xml b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/machine/MachineBrandMapper.xml index f4a9e6b2e..00cfaa046 100644 --- a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/machine/MachineBrandMapper.xml +++ b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/machine/MachineBrandMapper.xml @@ -33,7 +33,8 @@ from system_machine_brand smb left join system_machine_template smt on smb.id = smt.brand_id - where smt.deleted = false and smb.machine_type = #{type} + where smt.deleted = false and smt.is_enabled = true and smt.is_default = true and smb.machine_type = #{type} + diff --git a/script/es/imes_order_remain_plate_model.index b/script/es/imes_order_remain_plate_model.index index d44d59d7d..18edb2dd5 100644 --- a/script/es/imes_order_remain_plate_model.index +++ b/script/es/imes_order_remain_plate_model.index @@ -1,21 +1,83 @@ -PUT imes_order_remain_plate_model +PUT imes_order_optimize_plate_model { "settings": {}, "mappings": { "properties": { + "avgUsageRateAll": { + "type": "long" + }, + "avgUsageRateExcludeLastBoard": { + "type": "long" + }, + "blockPlaceInfo": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "boardCount": { + "type": "long" + }, + "createTime": { + "type": "date", + "format": "strict_date_optional_time||yyyy-MM-dd HH:mm:ss||epoch_millis" + }, + "creator": { + "type": "keyword" + }, + "cutBorder": { + "type": "long" + }, + "cutKnifeGap": { + "type": "long" + }, + "cutKnifeId": { + "type": "long" + }, + "cutedBoardInfo": { + "properties": { + "cutedBoardList": { + "type": "long" + }, + "cutedBoardNumber": { + "type": "long" + } + } + }, + "diameter": { + "type": "long" + }, + "goodsId": { + "type": "keyword" + }, + "helpCutGap": { + "type": "long" + }, + "helpKnifeId": { + "type": "long" + }, "id": { "type": "keyword" }, - "planId": { - "type": "long" + "isHelpCut": { + "type": "boolean" + }, + "isOptimized": { + "type": "boolean" }, "length": { "type": "long" }, - "width": { + "maxBoardId": { "type": "long" }, - "thickness": { + "minBoardId": { + "type": "long" + }, + "orderId": { "type": "long" }, "orgLength": { @@ -24,50 +86,73 @@ PUT imes_order_remain_plate_model "orgWidth": { "type": "long" }, - "cutBorder": { + "organId": { "type": "long" }, - "diameter": { + "placeBlockNumber": { "type": "long" }, - "cutKnifeGap": { + "placeBoardNumber": { + "type": "long" + }, + "planId": { "type": "long" }, "preMillingSize": { "type": "long" }, - "isHelpCut": { - "type": "boolean" - }, - "helpCutGap": { - "type": "long" - }, - "cutKnifeId": { - "type": "long" - }, - "helpKnifeId": { - "type": "long" - }, - "isOptimized": { - "type": "boolean" - }, - "boardCount": { - "type": "long" - }, "remainBoardCount": { "type": "long" }, - "minBoardId": { + "remainBoardInfo": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "remainBoardList": { + "properties": { + "color": { + "type": "keyword" + }, + "count": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "isHandAdd": { + "type": "boolean" + }, + "length": { + "type": "float" + }, + "material": { + "type": "keyword" + }, + "texture": { + "type": "long" + }, + "thickness": { + "type": "float" + }, + "width": { + "type": "float" + } + } + }, + "thickness": { "type": "long" }, - "maxBoardId": { - "type": "long" + "updateTime": { + "type": "date", + "format": "strict_date_optional_time||yyyy-MM-dd HH:mm:ss||epoch_millis" }, - "avgUsageRateAll": { - "type": "long" - }, - "avgUsageRateExcludeLastBoard": { - "type": "long" + "updater": { + "type": "keyword" }, "usageRateLastBoard": { "type": "long" @@ -81,38 +166,9 @@ PUT imes_order_remain_plate_model } } }, - "blockPlaceInfo": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "remainBoardInfo": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "createTime": { - "type": "date", - "format": "strict_date_optional_time||yyyy-MM-dd HH:mm:ss||epoch_millis" - }, - "creator": { - "type": "keyword" - }, - "updateTime": { - "type": "date", - "format": "strict_date_optional_time||yyyy-MM-dd HH:mm:ss||epoch_millis" - }, - "updater": { - "type": "keyword" + "width": { + "type": "long" } } } -} \ No newline at end of file +}} \ No newline at end of file