From a19b1025890eb0f71b44a9d1bb948cb084d4106a Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 12 十二月 2025 16:50:44 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/task/MakeMainProcessPseudocodeScheduler.java | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 210 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/core/task/MakeMainProcessPseudocodeScheduler.java b/src/main/java/com/zy/core/task/MakeMainProcessPseudocodeScheduler.java
new file mode 100644
index 0000000..11f4727
--- /dev/null
+++ b/src/main/java/com/zy/core/task/MakeMainProcessPseudocodeScheduler.java
@@ -0,0 +1,210 @@
+package com.zy.core.task;
+
+import com.zy.ai.entity.ChatCompletionRequest;
+import com.zy.ai.service.LlmChatService;
+import com.zy.common.utils.RedisUtil;
+import com.zy.core.News;
+import com.zy.core.enums.RedisKeyType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+@Component
+public class MakeMainProcessPseudocodeScheduler {
+
+ @Value("${mainProcessPlugin}")
+ private String mainProcessPlugin;
+ @Autowired
+ private LlmChatService llmChatService;
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @Scheduled(cron = "1 * * * * ? ")
+ public void refreshPseudocodeDaily() {
+ try {
+ initMainProcessPseudocode();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void initMainProcessPseudocode(){
+ Object object = redisUtil.get(RedisKeyType.MAIN_PROCESS_PSEUDOCODE.key);
+ if (object != null) {
+ return;
+ }
+
+ String plugin = mainProcessPlugin;
+ if (plugin == null) plugin = "NormalProcess";
+ String className = plugin.contains(".") ? plugin : "com.zy.core.plugin." + plugin;
+ String code = null;
+ try {
+ String rel = className.replace('.', '/') + ".java";
+ java.nio.file.Path p = Paths.get(System.getProperty("user.dir"), "src", "main", "java", rel);
+ if (Files.exists(p)) {
+ code = new String(Files.readAllBytes(p), StandardCharsets.UTF_8);
+ }
+ } catch (Exception ignore) {}
+ String result = null;
+ if (code != null && !code.isEmpty()) {
+ List<ChatCompletionRequest.Message> messages = new java.util.ArrayList<>();
+ ChatCompletionRequest.Message system = new ChatCompletionRequest.Message();
+ system.setRole("system");
+ system.setContent("浣犵幇鍦ㄦ槸涓�鍚嶉珮绾� Java 鏋舵瀯甯堝吋浼唬鐮佽浆鎹笓瀹讹紝涓撻棬璐熻矗鎶婂鏉傜殑 Java 浠g爜杞崲鎴愮粨鏋勬竻鏅般�侀�傚悎澶фā鍨嬮槄璇讳笌鎺ㄧ悊鐨勪吉浠g爜銆俓n" +
+ "\n" +
+ "璇蜂弗鏍奸伒瀹堜互涓嬭姹傚伐浣滐細\n" +
+ "\n" +
+ "鏍稿績鐩爣\n" +
+ "\n" +
+ "杈撳叆鏄竴娈垫垨澶氭 Java 浠g爜銆俓n" +
+ "\n" +
+ "杈撳嚭鏄竴娈典汉绫诲彲璇汇�侀�昏緫娓呮櫚銆佸敖閲忚瑷�涓珛鐨勪吉浠g爜銆俓n" +
+ "\n" +
+ "杩欎唤浼唬鐮佸皢琚敤浣滃悗缁ぇ妯″瀷鎻愰棶鐨勨�滃弬鑰冩弿杩扳�濓紝鎵�浠ヨ锛歕n" +
+ "\n" +
+ "淇濈暀鍏抽敭涓氬姟閫昏緫鍜屽垽鏂潯浠讹紱\n" +
+ "\n" +
+ "寮卞寲璇█缁嗚妭锛堝鍏蜂綋搴撱�佹敞瑙c�佹鏋剁粏鑺傦級锛沑n" +
+ "\n" +
+ "鐢ㄨ嚜鐒惰瑷� + 绠�娲佹祦绋嬬粨鏋勶紝甯姪澶фā鍨嬪揩閫熺悊瑙d唬鐮佹剰鍥俱�俓n" +
+ "\n" +
+ "椋庢牸瑕佹眰\n" +
+ "\n" +
+ "浣跨敤涓枃鎻忚堪閫昏緫锛屼絾鍙互淇濈暀灏戦噺鍏抽敭鑻辨枃鏍囪瘑锛堜緥濡傜被鍚嶃�佹柟娉曞悕銆佺姸鎬佹灇涓撅級浠ヤ究璺熶唬鐮佸搴斻�俓n" +
+ "\n" +
+ "浼唬鐮佽鍒嗗眰鍒嗗潡锛屽敖閲忔寜锛歕n" +
+ "\n" +
+ "绫昏亴璐h鏄嶾n" +
+ "\n" +
+ "閲嶈瀛楁 / 鍏ㄥ眬鍙橀噺璇存槑\n" +
+ "\n" +
+ "姣忎釜鍏紑鏂规硶 / 鏍稿績绉佹湁鏂规硶鐨勪吉浠g爜\n" +
+ "\n" +
+ "閫昏緫涓婁娇鐢ㄧ被浼硷細\n" +
+ "\n" +
+ "濡傛灉 ... 鍒� ...\n" +
+ "\n" +
+ "鍚﹀垯濡傛灉 ...\n" +
+ "\n" +
+ "寰幆閬嶅巻鍒楄〃 ...\n" +
+ "\n" +
+ "璋冪敤鏈嶅姟/鏂规硶: ...\n" +
+ "\n" +
+ "杩斿洖 ...\n" +
+ "\n" +
+ "涓嶈拷姹備弗鏍艰娉曪紝鍙拷姹傛槗鎳傚拰鍑嗙‘銆俓n" +
+ "\n" +
+ "淇濈暀淇℃伅 & 鎶借薄淇℃伅\n" +
+ "\n" +
+ "蹇呴』淇濈暀锛歕n" +
+ "\n" +
+ "鍏抽敭涓氬姟鍚箟锛堜緥濡傗�滅敓鎴愬叆搴撲换鍔♀�濄�佲�滄鏌ュ爢鍨涙満浠诲姟鏄惁瀹屾垚鈥濓級\n" +
+ "\n" +
+ "鍏抽敭鏉′欢鍒ゆ柇锛堢姸鎬佸瓧娈点�佹灇涓俱�侀噸瑕侀厤缃紑鍏筹級\n" +
+ "\n" +
+ "閲嶈鏁版嵁娴佸悜锛堜粠鍝噷璇绘暟鎹�佸啓鍒板摢閲屻�佽皟鐢ㄤ簡鍝簺鏈嶅姟锛塡n" +
+ "\n" +
+ "涓庡閮ㄧ郴缁熶氦浜掞紙濡� HTTP 璋冪敤 WMS銆佸啓 Redis 閿併�佸啓鏁版嵁搴擄級\n" +
+ "\n" +
+ "鍙互鎶借薄鎴栫渷鐣ワ細\n" +
+ "\n" +
+ "鏃ュ織鎵撳嵃鐨勫叿浣撴牸寮忥紝鍙繚鐣欌�滆褰曟棩蹇楋細xxx鈥濆嵆鍙紱\n" +
+ "\n" +
+ "鍏蜂綋妗嗘灦娉ㄨВ锛堝 @Component, @Autowired 绛夛級锛沑n" +
+ "\n" +
+ "娉涘瀷銆佸紓甯告爤缁嗚妭銆佸伐鍏风被鍐呴儴瀹炵幇锛沑n" +
+ "\n" +
+ "缁撴瀯妯℃澘锛堜紭鍏堥伒寰級\n" +
+ "\n" +
+ "瀵逛簬涓�娈佃緝澶х殑 Java 绫伙紝璇锋寜浠ヤ笅缁撴瀯杈撳嚭浼唬鐮侊細\n" +
+ "\n" +
+ "绫绘暣浣撹鏄嶾n" +
+ "\n" +
+ "绠�瑕佽鏄庤繖涓被鐨勭敤閫斿拰鍦ㄧ郴缁熶腑鐨勮鑹层�俓n" +
+ "\n" +
+ "閲嶈瀛楁 / 閰嶇疆璇存槑\n" +
+ "\n" +
+ "鍒楀嚭鍏抽敭闈欐�佸彉閲� / 閰嶇疆椤� / 鐘舵�佺紦瀛橈紝骞剁敤涓�琛岃В閲婂畠浠殑鍚箟銆俓n" +
+ "\n" +
+ "涓绘祦绋嬫柟娉曪紙渚嬪 run()锛塡n" +
+ "\n" +
+ "鐢ㄦ湁搴忓垪琛ㄦ垨浼唬鐮侊紝鎸夎皟鐢ㄩ『搴忔弿杩颁富瑕佹楠ゃ�俓n" +
+ "\n" +
+ "姣忎釜鏍稿績绉佹湁鏂规硶\n" +
+ "\n" +
+ "瀵逛簬姣忎釜鍏抽敭鏂规硶锛歕n" +
+ "\n" +
+ "鍏堢敤涓�琛屼腑鏂囨�荤粨鍔熻兘锛沑n" +
+ "\n" +
+ "鍐嶇粰鍑轰吉浠g爜娴佺▼锛堟潯浠躲�佸惊鐜�佸叧閿皟鐢級锛沑n" +
+ "\n" +
+ "涓庡閮ㄧ郴缁熶氦浜掔殑璇存槑\n" +
+ "\n" +
+ "鍗曠嫭寮鸿皟鏈夊摢浜涘湴鏂硅皟鐢ㄤ簡澶栭儴鏈嶅姟锛圚TTP銆佹秷鎭槦鍒椼�佹暟鎹簱銆丷edis 绛夛級銆俓n" +
+ "\n" +
+ "杈撳嚭鏍煎紡瑕佹眰\n" +
+ "\n" +
+ "浣跨敤 Markdown 缁撴瀯锛屾柟渚垮鍒剁粰鍏朵粬澶фā鍨嬶細\n" +
+ "\n" +
+ "鐢� ## 鏍囬鍖哄垎鈥滅被璇存槑鈥濄�佲�滀富娴佺▼浼唬鐮佲�濄�佲�滄柟娉曚吉浠g爜鈥濈瓑閮ㄥ垎锛沑n" +
+ "\n" +
+ "浼唬鐮佸潡鍙互浣跨敤缂╄繘鍜岄」鐩鍙凤紝鎴栫敤 pseudo 浠g爜鍧� 鍖呰9锛沑n" +
+ "\n" +
+ "涓嶈鐩存帴閫愯缈昏瘧浠g爜锛岃�屾槸鍋氭娊璞″拰鏁寸悊锛沑n" +
+ "\n" +
+ "涓嶈杈撳嚭鏃犲叧鏂囨湰锛屼緥濡傞亾姝夈�佸瘨鏆勬垨涓庝换鍔℃棤鍏崇殑瑙i噴銆俓n" +
+ "\n" +
+ "浼唬鐮佺ず渚嬮鏍硷紙绀烘剰锛塡n" +
+ "\n" +
+ "渚嬪褰撹緭鍏ヤ竴涓� run() 鏂规硶鏃讹紝鏈熸湜浣犵殑杈撳嚭椋庢牸绫讳技锛歕n" +
+ "\n" +
+ "鍑芥暟 run():\n" +
+ " 璇诲彇閰嶇疆 enableFake, fakeRealTaskRequestWms\n" +
+ " 濡傛灉 enableFake == \"Y\":\n" +
+ " 璋冪敤 checkInStationHasTask() 妫�娴嬪叆搴撶珯骞剁敓鎴愪豢鐪熺珯鐐规暟鎹甛n" +
+ " 濡傛灉 fakeRealTaskRequestWms == \"N\":\n" +
+ " 璋冪敤 generateFakeInTask() 鐢熸垚鏈湴浠跨湡鍏ュ簱浠诲姟\n" +
+ " 璋冪敤 generateFakeOutTask() 鐢熸垚鏈湴浠跨湡鍑哄簱浠诲姟\n" +
+ " 璁$畻鎵�鏈夌珯鐐圭殑鍋滅暀鏃堕棿 calcAllStationStayTime()\n" +
+ " 妫�鏌ュ嚭搴撶珯鐐规槸鍚﹁秴鏃跺苟閲嶇疆 checkOutStationStayTimeOut()\n" +
+ " 妫�鏌ュ叆搴撶珯鐐硅揣鐗╂槸鍚﹀凡琚爢鍨涙満鍙栬蛋 checkInStationCrnTake()\n" +
+ " 濡傛灉 fakeRealTaskRequestWms == \"Y\":\n" +
+ " 璋冪敤 generateStoreWrkFile() 璇锋眰 WMS 鐢熸垚鐪熷疄浠诲姟\n" +
+ " 璋冪敤 crnOperateUtils.crnIoExecute() 鎵ц鍫嗗灈鏈轰换鍔n" +
+ " 璋冪敤 crnIoExecuteFinish() 澶勭悊鍫嗗灈鏈轰换鍔″畬鎴愬悗鐨勭姸鎬佹洿鏂板拰浠跨湡绔欑偣鐢熸垚\n" +
+ " 璋冪敤 stationOperateProcessUtils.stationInExecute() 鎵ц杈撻�佺珯鍏ュ簱浠诲姟\n" +
+ " 璋冪敤 stationOperateProcessUtils.stationOutExecute() 鎵ц杈撻�佺珯鍑哄簱浠诲姟\n" +
+ " 璋冪敤 stationOperateProcessUtils.stationOutExecuteFinish() 妫�鏌ヨ緭閫佺珯鍑哄簱浠诲姟瀹屾垚\n" +
+ "\n" +
+ "\n" +
+ "瀵硅緭鍏ョ殑瑕佹眰\n" +
+ "\n" +
+ "濡傛灉鐢ㄦ埛缁欏嚭鐨勬槸澶氭浠g爜鎴栧彧缁欏嚭鐗囨锛歕n" +
+ "\n" +
+ "鍏堟帹鏂繖娈典唬鐮佺殑鑱岃矗锛沑n" +
+ "\n" +
+ "鍐嶆寜浣犺兘鐞嗚В鍒扮殑鑼冨洿杩涜浼唬鐮佽浆鎹紱\n" +
+ "\n" +
+ "濡傛灉瀛樺湪鏄庢樉缂哄け鐨勭被/鏂规硶锛屽彧闇�鍦ㄤ吉浠g爜涓敤鈥滆皟鐢� XXX锛堝叿浣撻�昏緫鐣ワ級鈥濇爣璁板嵆鍙�俓n" +
+ "\n" +
+ "璇峰缁堜互銆岃鍚庣画澶фā鍨嬭兘鐪嬫噦杩欐浠g爜閫昏緫骞跺熀浜庝吉浠g爜杩涜鎺ㄧ悊鍜屾彁闂�嶄负鏈�楂樹紭鍏堢骇鏉ョ粍缁囦綘鐨勮緭鍑恒��");
+ messages.add(system);
+ ChatCompletionRequest.Message user = new ChatCompletionRequest.Message();
+ user.setRole("user");
+ user.setContent("涓绘祦绋嬫彃浠剁被婧愪唬鐮侊細\n\n" + code);
+ messages.add(user);
+ try {
+ result = llmChatService.chat(messages, 0.2, 2048);
+ } catch (Exception ignore) {}
+ }
+ redisUtil.set(RedisKeyType.MAIN_PROCESS_PSEUDOCODE.key, result, 60 * 60 * 24);
+ News.info("涓绘祦绋嬩吉浠g爜宸插埛鏂�");
+ }
+
+}
--
Gitblit v1.9.1