From 0428d7bf35c95b33718ddcaf2e6e1311c5a40845 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期五, 25 四月 2025 15:12:47 +0800
Subject: [PATCH] 智能活化,暂活化参数未更新,定时任务时间被注解

---
 src/main/resources/mapper/BattWarehouseMapper.xml        |   20 ++++
 src/main/java/com/whyc/service/BattWarehouseService.java |   77 +++++++++++++++
 src/main/java/com/whyc/mapper/BattWarehouseMapper.java   |   10 ++
 src/main/java/com/whyc/schedule/WmsTaskSchedule.java     |  159 +++++++++++++++++++++++++++++++
 4 files changed, 266 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/whyc/mapper/BattWarehouseMapper.java b/src/main/java/com/whyc/mapper/BattWarehouseMapper.java
new file mode 100644
index 0000000..83b9a45
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/BattWarehouseMapper.java
@@ -0,0 +1,10 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.db_wms.BattWarehouse;
+
+import java.util.List;
+
+public interface BattWarehouseMapper extends CustomMapper<BattWarehouse> {
+    void updateBatchById(List<BattWarehouse> list);
+
+}
diff --git a/src/main/java/com/whyc/schedule/WmsTaskSchedule.java b/src/main/java/com/whyc/schedule/WmsTaskSchedule.java
new file mode 100644
index 0000000..634fbb9
--- /dev/null
+++ b/src/main/java/com/whyc/schedule/WmsTaskSchedule.java
@@ -0,0 +1,159 @@
+package com.whyc.schedule;
+
+import com.whyc.dto.Response;
+import com.whyc.dto.WmsPallet;
+import com.whyc.dto.WmsPalletDto;
+import com.whyc.dto.WmsResponse;
+import com.whyc.pojo.db_wms.BattWarehouse;
+import com.whyc.pojo.db_wms.Task;
+import com.whyc.service.BattWarehouseService;
+import com.whyc.service.TaskService;
+import com.whyc.service.WmsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 浠撳偍绯荤粺鐨勬櫤鑳芥椿鍖栦换鍔�
+ * 瑙i噴鏉ユ簮:浠诲姟鐨勬潵婧�,鍦� 鍙戠敓 鍏ュ簱浠诲姟鏃�,鎵�鍏ュ簱鐨勭數姹� 灏遍渶瑕� 娲诲寲. 浠ュ強鍦ㄤ粨鍌ㄥ簱鍐呯殑鎵�鏈夌數姹犻兘闇�瑕佹椿鍖�.娲诲寲鍛ㄦ湡涓烘瘡n鏈堟椿鍖栦竴娆�.
+ * 瀹炵幇鎬濊矾:
+ * 1.鍒涘缓浠撳偍搴撴墍鏈夌數姹犲崟浣撶紪鍙风殑搴撳瓨琛�,鍐欐槑鍏ュ簱鏃堕棿鍜屼笂娆℃椿鍖栨椂闂�-鏁版嵁鐨勬潵婧愬垎涓�2閮ㄥ垎,1-鍒濆宸插湪搴撶殑鐢垫睜,2-娴嬪帇鍏ュ簱鐨勬柊鍏ョ數姹�
+ * 2.瀵逛簬娌℃湁娲诲寲鐨勭數姹犲崟浣�,涓嬪彂娲诲寲浠诲姟.
+ * 3.涓嬪彂娲诲寲浠诲姟鐨勯�夋嫨: 姣忓ぉ鏃╀笂9鐐�,涓旀病鏈夋鍦ㄨ繘琛岀殑娲诲寲浠诲姟鐨勬椂鍊�. 瀵瑰懆鏈熷ぇ浜巒鏈堢殑鍗曚綋杩涜浠诲姟涓嬪彂
+ */
+
+@EnableScheduling
+@Component
+@Slf4j
+public class WmsTaskSchedule {
+
+    @Autowired
+    private BattWarehouseService battWarehouseService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private WmsService wmsService;
+
+    /**姣忓ぉ鏃╀笂9鐐规墽琛屼竴娆�*/
+    //@Scheduled(cron= "0 0 9 * * ?")
+    public void checkAndActivate() {
+        //鏌ヨ鏁版嵁搴撹褰曠殑浠撳簱鍐呮墍鏈夌殑鐢垫睜
+        List<BattWarehouse> listInDB = battWarehouseService.getAll();
+        List<BattWarehouse> listNew = new ArrayList<>();
+        Date now = new Date();
+        List<Integer> monIdListInDB = listInDB.stream().map(BattWarehouse::getMonId).collect(Collectors.toList());
+        //鏌ヨ褰撳墠瀹為檯瀛樺湪鐨勪粨搴撳唴鐨勬墍鏈夌數姹�
+        Response palletList = wmsService.getPalletList(2, 4);
+        WmsResponse data = (WmsResponse) palletList.getData();
+        if (palletList.getCode() == 1 && (data).getCode() == 0) { //鏌ヨ鍒颁簡鎵�鏈夊簱鍐呯數姹�
+            List<WmsPallet> palletsNow = (List<WmsPallet>) data.getData();
+            palletsNow.stream().forEach(item -> {
+                //palletCode灏辨槸鐢垫睜鍗曚綋缂栧彿
+                if(!monIdListInDB.contains(Integer.valueOf(item.getPalletCode()))){
+                    BattWarehouse battWarehouse = new BattWarehouse();
+                    battWarehouse.setMonId(Integer.valueOf(item.getPalletCode()));
+                    battWarehouse.setStorageTime(now);
+                    battWarehouse.setOnPlan(0);
+                    String volStr = item.getV().replace("v", "");
+                    int vol = Integer.parseInt(volStr);
+                    battWarehouse.setVol(vol);
+
+                    listNew.add(battWarehouse);
+                }
+            });
+        }
+        //涓嶅湪鏁版嵁搴撳唴鐨勭數姹犲崟浣�,淇濆瓨
+        if(listNew.size() > 0){
+            battWarehouseService.addBatch(listNew);
+        }
+
+        //鏌ヨ闇�瑕佹椿鍖栫殑鐢垫睜鍒楄〃
+        List<BattWarehouse> list = battWarehouseService.getActivateList();
+        //閫氳繃鐢靛帇杩涜鍒嗙粍list
+        Map<Integer, List<BattWarehouse>> mapToActivate = list.stream().collect(Collectors.groupingBy(BattWarehouse::getVol));
+        Set<Integer> volSet = mapToActivate.keySet();
+        //姘歌繙鍙涓�绫荤數鍘嬭繘琛屾椿鍖栦换鍔′笅鍙�!!!鍥犱负杩炵画涓嬪彂娲诲寲,鍚庣画鐨勪細澶辫触
+        Integer vol;
+        String[] activateParameterStr = null;
+        if (volSet.size()>0){
+            vol = volSet.iterator().next();
+            list = mapToActivate.get(vol);
+        }else{
+            //鏈缁堟
+            return;
+        }
+        //鏌ヨ鏄惁瀛樺湪姝e湪杩涜鐨勪换鍔�
+        List<Task> ongoingList = taskService.getOngoingList();
+        if (ongoingList.size() == 0) {
+            //娌℃湁姝e湪杩涜鐨勬椿鍖栦换鍔�,鍒欎笅鍙戞椿鍖栦换鍔�
+            WmsPalletDto wmsPalletDto = new WmsPalletDto();
+            wmsPalletDto.setDes(3);
+            List<String> pallets = list.stream().map(item -> String.valueOf(item.getMonId())).collect(Collectors.toList());
+            //pallets浠嶭ist绫诲瀷杞琇inkedList绫诲瀷
+            LinkedList<String> palletsLinked = new LinkedList<>(pallets);
+            wmsPalletDto.setPallets(palletsLinked);
+            //娲诲寲鍙傛暟璁剧疆
+            //{
+            //   num: 1,    // 鐢垫睜缂栧彿
+            //   cap: 350,   // 鏍囩О瀹归噺
+            //   vol: 200,   // 鐢垫睜绫诲瀷-涓嶅彲鏀瑰姩
+            //   dTime: 10, // 鏀剧數鏃堕棿 900
+            //   dCurrent: 10, // 鏀剧數鐢垫祦0.1A-闇�瑕佹牴鎹閲忓疄闄呰缃� 锛堝疄闄呭閲�/10锛�
+            //   volLow: 1.8,    // 缁勭鐢靛帇涓嬮檺0.001V
+            //   dCap: 10,      // 棰勬斁瀹归噺0.1AH-闇�瑕佹牴鎹閲忓疄闄呰缃� 绛変簬瀹為檯瀹归噺
+            //   cTime: 10,     // 鍏呯數鏃堕棿 900
+            //   cCurrent: 10,    // 鍏呯數鐢垫祦0.1A-闇�瑕佹牴鎹閲忓疄闄呰缃紙瀹為檯瀹归噺/10锛�
+            //   sCurrent: 5,    // 鎴嚦鐢垫祦0.1A-闇�瑕佹牴鎹閲忓疄闄呰缃紙瀹為檯瀹归噺/10/2锛�
+            //   volHigh: 2.35,   // 鍏呯數鐢靛帇涓婇檺0.001V
+            //   volFloat: 2.25,  // 娴厖鐢靛帇0.001V
+            //   cCap: 10,      // 棰勫厖瀹归噺0.1AH-闇�瑕佹牴鎹閲忓疄闄呰缃� 绛変簬瀹為檯瀹归噺
+            //   tTimes: 1,    // 鍏呮斁娆℃暟
+            //   standTime: 1,   // 闈欑疆鏃堕棿
+            //   startType: 1,   // 娴嬭瘯璧风偣-榛樿鍏呯數
+            //}
+            if(vol == 2) {
+                activateParameterStr = new String[]{
+                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
+                };
+            }
+            //TODO 6V寰呮彁渚�
+            else if(vol==6){
+                activateParameterStr = new String[]{
+                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
+                };
+            }
+            //TODO 12V寰呮彁渚�
+            else if(vol==12){
+                activateParameterStr = new String[]{
+                        "1", "350", "200", "10", "350", "1800", "3500", "10", "350", "175", "2350", "2250", "3500", "1", "1", "1"
+                };
+            }
+            List<String> activateParameter = Arrays.asList(activateParameterStr);
+            wmsPalletDto.setActivateParameter(activateParameter);
+            Response response = wmsService.sendTask(wmsPalletDto);
+            if (response.getCode() == 1) {
+                WmsResponse responseInside = (WmsResponse) response.getData();
+                if(responseInside.getCode() == 0){//涓嬪彂鎴愬姛
+                    LinkedList<String> taskNoList = responseInside.getTask_no();
+                    //杩涜鏍囧織浣嶅拰浠诲姟缂栧彿鐨勬洿鏂�
+                    for (int i = 0; i < taskNoList.size(); i++) {
+                        BattWarehouse item = list.get(i);
+                        item.setOnPlan(1);
+                        item.setTaskNo(taskNoList.get(i));
+                    }
+                    //鎵归噺鏇存柊BattWarehouse
+                    battWarehouseService.updateBatchById(list);
+                }
+            }
+        }
+
+    }
+
+}
diff --git a/src/main/java/com/whyc/service/BattWarehouseService.java b/src/main/java/com/whyc/service/BattWarehouseService.java
new file mode 100644
index 0000000..47f566b
--- /dev/null
+++ b/src/main/java/com/whyc/service/BattWarehouseService.java
@@ -0,0 +1,77 @@
+package com.whyc.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.whyc.mapper.BattWarehouseMapper;
+import com.whyc.pojo.db_param.PageParam;
+import com.whyc.pojo.db_wms.BattWarehouse;
+import com.whyc.util.ActionUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Calendar;
+import java.util.List;
+
+@Service
+public class BattWarehouseService {
+
+    @Resource
+    private BattWarehouseMapper mapper;
+
+    @Autowired
+    private PageParamService pageParamService;
+
+    /**
+     * 鑾峰彇闇�瑕佹椿鍖栫殑鐢垫睜:
+     * 鏉′欢1:鏈湪娲诲寲瀹夋帓涓�
+     * 鏉′欢2:澶т簬娲诲寲鍛ㄦ湡
+     * @return
+     */
+    public List<BattWarehouse> getActivateList() {
+        PageParam param = pageParamService.getActivatePeriod();
+        Integer period = param.getValue();
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE,-period);
+
+        QueryWrapper<BattWarehouse> query = Wrappers.query();
+        query.eq("on_plan",0);
+        //涓烘椿鍖栬繃 鎴栬�� 娲诲寲鏃堕棿瓒呰繃娲诲寲鍛ㄦ湡
+        query.isNull("activate_time").or().le("activate_time",calendar);
+        return mapper.selectList(query);
+    }
+
+    public List<BattWarehouse> getAll() {
+        return mapper.selectList((Wrapper<BattWarehouse>) ActionUtil.objeNull);
+    }
+
+    public void addBatch(List<BattWarehouse> listNew) {
+        mapper.insertBatchSomeColumn(listNew);
+    }
+
+    public void updateBatchById(List<BattWarehouse> list) {
+        mapper.updateBatchById(list);
+    }
+
+    public BattWarehouse getByTaskNo(String taskNo) {
+        QueryWrapper<BattWarehouse> query = Wrappers.query();
+        query.eq("task_no",taskNo);
+        query.last(" limit 1");
+        return mapper.selectOne(query);
+    }
+
+    /***
+     * 缁撴潫娲诲寲,鏇存柊娲诲寲鏃堕棿,閲嶇疆task_no涓簄ull,on_plan涓�0
+     * @param id
+     */
+    public void finishActivationById(Integer id) {
+        UpdateWrapper<BattWarehouse> update = Wrappers.update();
+        update.set("task_no",null);
+        update.set("on_plan",0);
+        update.set("activate_time",Calendar.getInstance().getTime());
+        update.eq("id",id);
+        mapper.update((BattWarehouse) ActionUtil.objeNull,update);
+    }
+}
diff --git a/src/main/resources/mapper/BattWarehouseMapper.xml b/src/main/resources/mapper/BattWarehouseMapper.xml
new file mode 100644
index 0000000..8d45cc9
--- /dev/null
+++ b/src/main/resources/mapper/BattWarehouseMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.whyc.mapper.BattWarehouseMapper" >
+
+
+    <update id="updateBatchById">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update tb_batt_warehouse
+            <set>
+                <if test="item.taskNo != null">
+                    task_no = #{item.taskNo},
+                </if>
+                <if test="item.onPlan != null">
+                    on_plan = #{item.onPlan},
+                </if>
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1