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