From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:41:54 +0800
Subject: [PATCH] commit

---
 src/main/java/com/gk/firework/Scheduls/GenerateCode/GenerateCodeTask.java |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Scheduls/GenerateCode/GenerateCodeTask.java b/src/main/java/com/gk/firework/Scheduls/GenerateCode/GenerateCodeTask.java
new file mode 100644
index 0000000..1c8c3b7
--- /dev/null
+++ b/src/main/java/com/gk/firework/Scheduls/GenerateCode/GenerateCodeTask.java
@@ -0,0 +1,129 @@
+package com.gk.firework.Scheduls.GenerateCode;
+
+import com.gk.firework.Domain.ContractLogInfo;
+import com.gk.firework.Domain.ContractOrderInfo;
+import com.gk.firework.Domain.ProductCodeInfo;
+import com.gk.firework.Domain.ProductLocusInfo;
+import com.gk.firework.Domain.Vo.ContractStatus;
+import com.gk.firework.Domain.Vo.GenerateCode;
+import com.gk.firework.Domain.Vo.ProductVo;
+import com.gk.firework.Service.*;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+@Configuration
+@EnableScheduling
+@ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true")
+public class GenerateCodeTask {
+    private Logger logger = LogManager.getLogger(GenerateCodeTask.class);
+    @Autowired
+    ContractDetailService contractDetailService;
+    @Autowired
+    ContractOrderService contractOrderService;
+    @Autowired
+    ContractLogService contractLogService;
+    @Autowired
+    ProductService productService;
+    @Autowired
+    ProductCodeService productCodeService;
+    @Autowired
+    ProductLocusService productLocusService;
+
+
+    @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次
+    private void GenerateCode() throws Exception {
+        SimpleDateFormat sdfnow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<ContractOrderInfo> orderInfoList = contractOrderService.selectByStatus(ContractStatus.Confirm_Product,sdfnow.format(new Date()));
+        for (ContractOrderInfo contractOrderInfo : orderInfoList) {
+            //生成电子标签号码
+            List<ProductVo> productVoList = contractDetailService.selectByOrder(contractOrderInfo.getOrdercode());
+            for (ProductVo productVo : productVoList) {
+                //查询最新的箱码
+                String directionCode = productVo.getDirectionCode();
+                String four = GenerateCode.generateProduct();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                ProductCodeInfo productCodeInfo = productCodeService.selectByFourteen(directionCode + four,sdf.format(new Date()));
+
+                List<ProductCodeInfo> productCodeInfoList = new ArrayList<>();
+                Date now = new Date();
+                for (int i = 0; i < productVo.getNum(); i++) {
+                    int serial = 1;
+                    if (productCodeInfoList.size() > 0){
+                        serial = Integer.parseInt(productCodeInfoList.get(productCodeInfoList.size()-1).getOriginalcode().substring(14,19))
+                                + productCodeInfoList.get(productCodeInfoList.size()-1).getBoxnumber();
+                    }else if (productCodeInfo != null) {
+                            serial = Integer.parseInt(productCodeInfo.getOriginalcode().substring(14,19))
+                                    + productCodeInfo.getBoxnumber();
+                    }
+                    String serialNum = String.format("%05d", serial);
+
+                    String boxNum = String.format("%03d", productVo.getBoxNumber());
+                    ProductCodeInfo productCode = new ProductCodeInfo();
+                    productCode.setOrdercode(contractOrderInfo.getOrdercode());
+                    productCode.setOriginalcode(directionCode + four + serialNum + boxNum);
+                    productCode.setItemname(productVo.getName());
+                    productCode.setManufacturer(productVo.getManufacturer());
+
+                    BigDecimal explosiveContent = productVo.getExplosiveContent();
+                    Integer boxNumber = productVo.getBoxNumber();
+                    BigDecimal sum = explosiveContent.multiply(new BigDecimal(boxNumber));
+                    if (sum.compareTo(new BigDecimal(1000)) > 0) {
+                        BigDecimal explosive = sum.divide(new BigDecimal(1000),2, RoundingMode.HALF_UP);
+                        productCode.setExplosivecontent(explosive + "kg");
+                    } else {
+                        productCode.setExplosivecontent(sum + "g");
+                    }
+                    productCode.setBoxnumber(productVo.getBoxNumber());
+                    productCode.setType(productVo.getType());
+                    productCode.setLevel(productVo.getLevel());
+                    productCode.setCreatedby("自动生成");
+                    productCode.setCreateddate(new Date());
+                    productCode.setPrice(productVo.getPrice());
+                    productCodeInfoList.add(productCode);
+                    //电子合同生成电子标签号插入流向轨迹表
+                    ProductLocusInfo productLocusInfo = new ProductLocusInfo();
+                    productLocusInfo.setDirectioncode(productCode.getOriginalcode());
+                    productLocusInfo.setCreateddate(now);
+                    productLocusInfo.setModifieddate(now);
+                    //生产单位
+                    productLocusInfo.setContent(productCode.getManufacturer());
+                    productLocusInfo.setType(ProductLocusInfo.ELECTRONIC_LABEL_STATUS);
+                    productLocusInfo.setBoxcode(Integer.valueOf(productCode.getOriginalcode().substring(19,22)).toString());
+                    productLocusService.insertProductLocus(productLocusInfo);
+                }
+                productCodeService.insertBatch(productCodeInfoList);
+            }
+
+            contractOrderInfo.setStatus(ContractStatus.Generated);
+            contractOrderInfo.setModifieddate(new Date());
+            contractOrderService.updateById(contractOrderInfo);
+
+            ContractLogInfo contractLogInfo = new ContractLogInfo();
+            contractLogInfo.setOptlog("生成电子标签");
+            contractLogInfo.setOperator("后台生成");
+            contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode());
+            contractLogInfo.setOperatordate(new Date());
+            contractLogService.save(contractLogInfo);
+
+        }
+    }
+
+
+
+
+}

--
Gitblit v1.9.2