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