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/WarningTask/PurchaseWarnTask.java |  152 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 152 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gk/firework/Scheduls/WarningTask/PurchaseWarnTask.java b/src/main/java/com/gk/firework/Scheduls/WarningTask/PurchaseWarnTask.java
new file mode 100644
index 0000000..6c45365
--- /dev/null
+++ b/src/main/java/com/gk/firework/Scheduls/WarningTask/PurchaseWarnTask.java
@@ -0,0 +1,152 @@
+package com.gk.firework.Scheduls.WarningTask;
+
+import com.gk.firework.Domain.SaleOrderInfo;
+import com.gk.firework.Domain.WarnContentInfo;
+import com.gk.firework.Domain.WarningInfo;
+import com.gk.firework.Service.SaleOrderDetailService;
+import com.gk.firework.Service.SaleOrderService;
+import com.gk.firework.Service.WarnContentService;
+import com.gk.firework.Service.WarningService;
+import io.swagger.models.auth.In;
+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.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 PurchaseWarnTask {
+    private Logger logger = LogManager.getLogger(PurchaseWarnTask.class);
+    private static final String warnType = "购买超量";
+
+    @Autowired
+    WarningService warningService;
+    @Autowired
+    SaleOrderService saleOrderService;
+    @Autowired
+    WarnContentService warnContentService;
+
+//        @Scheduled(cron = "0/5 * * * * ?") //每隔30秒执行一次
+    @Scheduled(cron = "0 0/1 * * * ?") //每隔1分钟执行一次
+    private void purchaseWarn() throws Exception{
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            List<WarningInfo> warningInfos = warningService.selectByType(warnType);
+            if (warningInfos.size() > 0){
+                for (WarningInfo warningInfo : warningInfos) {
+                    insertWarnContent(warningInfo);
+                }
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void insertWarnContent(WarningInfo warningInfo) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date now = new Date();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(now);
+        calendar.add(Calendar.DATE, -warningInfo.getPeriod());
+        Date starttime = calendar.getTime();
+        String starttimeStr = sdf.format(starttime);
+        String endttimeStr = sdf.format(now);
+        Integer min = warningInfo.getMinimum();
+        Integer max = warningInfo.getMaximum();
+        //超过预警值
+        List<SaleOrderInfo> earlyWarnList = saleOrderService.selectEarlyWarn(starttimeStr,endttimeStr,min,max);
+        if (earlyWarnList.size() > 0){
+            List<WarnContentInfo> warnContentInfos = new ArrayList<>();
+            for (SaleOrderInfo earlyWarn : earlyWarnList){
+                String warncontent = "超出购买限制,当前购买数量为"+earlyWarn.getBoxnum();
+                WarnContentInfo warnContentExist = warnContentService.selectByWarn(warnType,"预警",earlyWarn.getCustomer(),warncontent);
+                if (warnContentExist == null){
+                    WarnContentInfo warnContentInfo = new WarnContentInfo();
+                    warnContentInfo.setCustomid(earlyWarn.getCustomer());
+                    warnContentInfo.setWarncontent(warncontent);
+                    warnContentInfo.setWarntype(warnType);
+                    warnContentInfo.setWarnlevel("预警");
+                    warnContentInfo.setIsmend((byte) 0);
+                    warnContentInfo.setIsneed((byte) 0);
+                    warnContentInfo.setIssend((byte) 0);
+                    warnContentInfo.setModifiedby("系统生成");
+                    warnContentInfo.setModifieddate(new Date());
+                    warnContentInfo.setPeriod(warningInfo.getPeriod());
+                    warnContentInfo.setCreateddate(new Date());
+
+                    if (warnContentInfos.size() > 0){
+                        boolean isfound = false;
+                        for (WarnContentInfo warnContent : warnContentInfos){
+                            if (warnContent.getCustomid().equals(warnContentInfo.getCustomid())
+                                    && warnContent.getWarncontent().equals(warnContentInfo.getWarncontent())){
+                                isfound = true;
+                                break;
+                            }
+                        }
+                        if (!isfound){
+                            warnContentInfos.add(warnContentInfo);
+                        }
+                    }else {
+                        warnContentInfos.add(warnContentInfo);
+                    }
+                }
+            }
+            warnContentService.saveBatch(warnContentInfos);
+        }
+
+        //超过报警值
+        List<SaleOrderInfo> alarmList = saleOrderService.selectAlarm(starttimeStr,endttimeStr,max);
+        if (alarmList.size() > 0){
+            Byte issms = warningInfo.getIssms();
+            List<WarnContentInfo> warnContentInfos = new ArrayList<>();
+            for (SaleOrderInfo alarm : alarmList){
+                String warncontent = "超出购买限制,当前购买数量为"+alarm.getBoxnum();
+                WarnContentInfo warnContentExist = warnContentService.selectByWarn(warnType,"报警",alarm.getCustomer(),warncontent);
+                if (warnContentExist == null){
+                    WarnContentInfo warnContentInfo = new WarnContentInfo();
+                    warnContentInfo.setCustomid(alarm.getCustomer());
+                    warnContentInfo.setWarncontent(warncontent);
+                    warnContentInfo.setWarntype(warnType);
+                    warnContentInfo.setWarnlevel("报警");
+                    warnContentInfo.setIsmend((byte)0);
+                    warnContentInfo.setIsneed(issms);
+                    warnContentInfo.setIssend((byte)0);
+                    warnContentInfo.setModifiedby("系统生成");
+                    warnContentInfo.setModifieddate(new Date());
+                    warnContentInfo.setPeriod(warningInfo.getPeriod());
+                    warnContentInfo.setCreateddate(new Date());
+
+                    if (warnContentInfos.size() > 0){
+                        boolean isfound = false;
+                        for (WarnContentInfo warnContent : warnContentInfos){
+                            if (warnContent.getCustomid().equals(warnContentInfo.getCustomid())
+                                    && warnContent.getWarncontent().equals(warnContentInfo.getWarncontent())){
+                                isfound = true;
+                                break;
+                            }
+                        }
+                        if (!isfound){
+                            warnContentInfos.add(warnContentInfo);
+                        }
+                    }else {
+                        warnContentInfos.add(warnContentInfo);
+                    }
+                }
+            }
+
+            warnContentService.saveBatch(warnContentInfos);
+        }
+    }
+
+}

--
Gitblit v1.9.2