24282 1 년 전
부모
커밋
eef1affc3a

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/apply/impl/ApplyBuyServiceImpl.java

@@ -13,7 +13,7 @@ import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.mapper.apply.ApplyBuyMapper;
 import com.sd.business.service.apply.ApplyBuyBomService;
 import com.sd.business.service.apply.ApplyBuyService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import com.sd.framework.util.Assert;
 import com.sd.framework.util.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/in/impl/InOutStorageServiceImpl.java

@@ -17,7 +17,7 @@ import com.sd.business.service.in.InOutStorageBomService;
 import com.sd.business.service.in.InOutStorageService;
 import com.sd.business.service.inventory.InventoryService;
 import com.sd.business.service.purchase.PurchaseService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import com.sd.framework.util.Assert;
 import com.sd.framework.util.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderDetailServiceImpl.java

@@ -7,7 +7,7 @@ import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
 import com.sd.business.mapper.inventory.InventoryFinishedOrderDetailMapper;
 import com.sd.business.service.inventory.InventoryFinishedOrderDetailService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java

@@ -72,7 +72,7 @@ import com.sd.business.service.sku.SkuSpecService;
 import com.sd.business.service.work.WorkOrderDetailService;
 import com.sd.business.service.work.WorkOrderService;
 import com.sd.business.service.work.impl.WorkOrderServiceImpl;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import com.sd.business.util.fixation.CoordinateBo;
 import com.sd.business.util.fixation.FixationFactory;
 import com.sd.business.util.fixation.FixationStrategy;

+ 6 - 3
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseServiceImpl.java

@@ -12,7 +12,6 @@ import com.fjhx.flow.enums.FlowStatusEnum;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.apply.po.ApplyBuy;
 import com.sd.business.entity.apply.po.ApplyBuyBom;
 import com.sd.business.entity.bom.po.BomSpec;
@@ -32,7 +31,7 @@ import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.purchase.PurchaseBomService;
 import com.sd.business.service.purchase.PurchaseService;
 import com.sd.business.service.supplier.SupplierService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import com.sd.framework.util.Assert;
 import com.sd.framework.util.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +39,11 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/statement/impl/StatementOfAccountServiceImpl.java

@@ -14,7 +14,7 @@ import com.sd.business.entity.statement.vo.StatementOfAccountVo;
 import com.sd.business.mapper.statement.StatementOfAccountMapper;
 import com.sd.business.service.order.OrderInfoService;
 import com.sd.business.service.statement.StatementOfAccountService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
 import com.sd.framework.util.Assert;
 import com.sd.framework.util.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;

+ 14 - 9
sd-business/src/main/java/com/sd/business/service/work/impl/WorkOrderServiceImpl.java

@@ -40,7 +40,8 @@ import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.business.service.work.WorkOrderDetailService;
 import com.sd.business.service.work.WorkOrderService;
-import com.sd.business.util.CodeEnum;
+import com.sd.business.util.code.CodeEnum;
+import com.sd.business.util.code.CodeFactory;
 import com.sd.business.util.fixation.CoordinateBo;
 import com.sd.business.util.fixation.FixationFactory;
 import com.sd.business.util.fixation.FixationStrategy;
@@ -202,11 +203,13 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
 
     @Override
     public void schedulingRemaining() {
+        CodeFactory codeFactory = CodeFactory.create(CodeEnum.WORK_ORDER_CODE);
+
         commonScheduling((bomSpecId, printingPaperBomSpecId, notFixationList, skuSpecMap) -> {
 
             WorkOrder workOrder = new WorkOrder();
             workOrder.setId(IdWorker.getId());
-            workOrder.setCode(CodeEnum.WORK_ORDER_CODE.getCode());
+            workOrder.setCode(codeFactory.next());
             workOrder.setType(2);
             workOrder.setMasterBomSpecId(bomSpecId);
             workOrder.setPrintingPaperBomSpecId(printingPaperBomSpecId);
@@ -352,6 +355,8 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
      */
     private void scheduling(Long bomSpecId, Long printingPaperBomSpecId, List<OrderSku> list, Map<Long, SkuSpec> skuSpecMap) {
 
+        CodeFactory codeFactory = CodeFactory.create(CodeEnum.WORK_ORDER_CODE);
+
         if (ObjectUtil.isEmpty(list)) {
             return;
         }
@@ -374,11 +379,11 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
             }
         }
         // 固定排版
-        fixationScheduling(bomSpecId, printingPaperBomSpecId, fixationList, skuSpecMap);
+        fixationScheduling(bomSpecId, printingPaperBomSpecId, codeFactory, fixationList, skuSpecMap);
 
         WorkOrder workOrder = new WorkOrder();
         workOrder.setId(IdWorker.getId());
-        workOrder.setCode(CodeEnum.WORK_ORDER_CODE.getCode());
+        workOrder.setCode(codeFactory.next());
         workOrder.setType(2);
         workOrder.setMasterBomSpecId(bomSpecId);
         workOrder.setPrintingPaperBomSpecId(printingPaperBomSpecId);
@@ -390,7 +395,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
     /**
      * 固定排版
      */
-    private void fixationScheduling(Long bomSpecId, Long printingPaperBomSpecId,
+    private void fixationScheduling(Long bomSpecId, Long printingPaperBomSpecId, CodeFactory codeFactory,
                                     List<OrderSku> list, Map<Long, SkuSpec> skuSpecMap) {
 
         if (ObjectUtil.isEmpty(list)) {
@@ -405,14 +410,14 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
                 }
         ));
 
-        map.forEach(((k, v) -> doFixationScheduling(bomSpecId, printingPaperBomSpecId, k, v)));
+        map.forEach(((k, v) -> doFixationScheduling(bomSpecId, printingPaperBomSpecId, codeFactory, k, v)));
 
     }
 
     /**
      * 固定排版
      */
-    private void doFixationScheduling(Long bomSpecId, Long printingPaperBomSpecId,
+    private void doFixationScheduling(Long bomSpecId, Long printingPaperBomSpecId, CodeFactory codeFactory,
                                       WorkOrderFixationSpecEnum workOrderFixationSpecEnum, List<OrderSku> list) {
 
         // 本次所需排版数量
@@ -432,7 +437,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         // 生产工单
         WorkOrder workOrder = new WorkOrder();
         workOrder.setId(IdWorker.getId());
-        workOrder.setCode(CodeEnum.WORK_ORDER_CODE.getCode());
+        workOrder.setCode(codeFactory.next());
         workOrder.setType(1);
         workOrder.setFixationSpec(workOrderFixationSpecEnum.getLength() + "*" + workOrderFixationSpecEnum.getWidth());
         workOrder.setMasterBomSpecId(bomSpecId);
@@ -489,7 +494,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
         });
 
         // 再次执行判断是否还可以排版
-        doFixationScheduling(bomSpecId, printingPaperBomSpecId, workOrderFixationSpecEnum, list);
+        doFixationScheduling(bomSpecId, printingPaperBomSpecId, codeFactory, workOrderFixationSpecEnum, list);
     }
 
     /**

+ 10 - 10
sd-business/src/main/java/com/sd/business/util/CodeEnum.java → sd-business/src/main/java/com/sd/business/util/code/CodeEnum.java

@@ -1,4 +1,4 @@
-package com.sd.business.util;
+package com.sd.business.util.code;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
@@ -21,23 +21,23 @@ import java.util.Map;
 @Getter
 public enum CodeEnum {
     // 对账单号
-    STATEMENT_OF_ACCOUNT_CODE("SOA", "-yyMMdd-", "code", 6, StatementOfAccountService.class),
+    STATEMENT_OF_ACCOUNT_CODE("SOA-", "yyMMdd-", "code", 6, StatementOfAccountService.class),
     // 成品仓入库
-    FINISHED_IN("POS", "-yyMMdd-", "code", 6, InventoryFinishedOrderDetailService.class),
+    FINISHED_IN("POS-", "yyMMdd-", "code", 6, InventoryFinishedOrderDetailService.class),
     // 成品仓出库
-    FINISHED_OUT("PWS", "-yyMMdd-", "code", 6, InventoryFinishedOrderDetailService.class),
+    FINISHED_OUT("PWS-", "yyMMdd-", "code", 6, InventoryFinishedOrderDetailService.class),
     // 入库编号
-    IN_CODE("DTS", "-yyMMdd-", "code", 6, InOutStorageService.class),
+    IN_CODE("DTS-", "yyMMdd-", "code", 6, InOutStorageService.class),
     // 入库编号
-    OUT_CODE("OS", "-yyMMdd-", "code", 6, InOutStorageService.class),
+    OUT_CODE("OS-", "yyMMdd-", "code", 6, InOutStorageService.class),
     // 送货单号
-    SH_CODE("SH", "-yyMMddHH-", "delivery_code", 3, OrderInfoService.class),
+    SH_CODE("SH-", "yyMMddHH-", "delivery_code", 3, OrderInfoService.class),
     // 工单号
-    WORK_ORDER_CODE("JH", "-yyMMddHH-", "code", 3, OrderInfoService.class),
+    WORK_ORDER_CODE("JH-", "yyMMddHH-", "code", 3, OrderInfoService.class),
     // 申购编号
-    APPLY_BUY_CODE("PA", "-yyMMdd-", "code", 6, ApplyBuyService.class),
+    APPLY_BUY_CODE("PA-", "yyMMdd-", "code", 6, ApplyBuyService.class),
     // 采购单号
-    PURCHASE_CODE("PUR", "-yyMMdd-", "code", 6, PurchaseService.class),
+    PURCHASE_CODE("PUR-", "yyMMdd-", "code", 6, PurchaseService.class),
     ;
 
     // 编码前缀

+ 69 - 0
sd-business/src/main/java/com/sd/business/util/code/CodeFactory.java

@@ -0,0 +1,69 @@
+package com.sd.business.util.code;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.framework.mybatis.holder.LogicHolder;
+
+import java.util.Date;
+import java.util.Map;
+
+public class CodeFactory {
+
+    private final String prefix;
+    private final int length;
+    private final String codeFieldName;
+    private final IService<?> service;
+    private Integer number;
+
+    private CodeFactory(CodeEnum codeEnum) {
+        this.service = codeEnum.getService();
+        this.codeFieldName = codeEnum.getCodeFieldName();
+        this.length = codeEnum.getLength();
+
+        if (ObjectUtil.isNotEmpty(codeEnum.getDateFormat())) {
+            Date date = new Date();
+            String format = DateUtil.format(date, codeEnum.getDateFormat());
+            this.prefix = codeEnum.getPrefix() + format;
+        } else {
+            this.prefix = codeEnum.getPrefix();
+        }
+    }
+
+    public static CodeFactory create(CodeEnum codeEnum) {
+        return new CodeFactory(codeEnum);
+    }
+
+    public String next() {
+        if (number == null) {
+
+            Object obj;
+            Boolean logicHolder = LogicHolder.getLogicHolder();
+            LogicHolder.setLogicHolder(true);
+            try {
+                String column = StrUtil.toUnderlineCase(codeFieldName);
+                obj = service.query().likeRight(column, prefix).orderByDesc(column).last("limit 1").one();
+            } finally {
+                LogicHolder.setLogicHolder(logicHolder);
+            }
+
+            if (obj == null) {
+                number = 0;
+            } else {
+                Map<String, Object> map = Convert.toMap(String.class, Object.class, obj);
+                String code = Convert.toStr(map.get(StrUtil.toCamelCase(codeFieldName)));
+                number = Convert.toInt(code.substring(prefix.length()));
+
+                if (ObjectUtil.isEmpty(number)) {
+                    throw new ServiceException("生成系统编码错误,请联系管理员");
+                }
+            }
+        }
+
+        return prefix + String.format("%0" + length + "d", ++number);
+    }
+
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 166 - 0
sd-starter/src/test/java/Test.java


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.