From a8ef1b6e5be7515f1f26eaffba89fb68b2161007 Mon Sep 17 00:00:00 2001 From: sige Date: Thu, 11 Apr 2024 15:04:07 +0800 Subject: [PATCH] ~~ --- app.db | Bin 299008 -> 299008 bytes .../digester/DigesterApplicationRunner.java | 18 ++++++++++ .../digester/controller/DigestionController.java | 19 +++++++++++ .../digester/controller/LiquidController.java | 12 +++++++ .../controller/OperationLogController.java | 38 +++++++++++++++++++++ .../deviceinstance/LiquidAdditionInstance.java | 21 ++++++++---- .../iflytop/digester/model/MdbOperationLog.java | 28 +++++++++++++++ .../controller/UfApiRuntimeVariable.java | 3 +- .../underframework/dao/model/UfMdbOption.java | 31 +++++++++++++++++ .../dao/model/UfMdbRuntimeVariable.java | 12 +++---- web | 2 +- 11 files changed, 168 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/iflytop/digester/DigesterApplicationRunner.java create mode 100644 src/main/java/com/iflytop/digester/controller/DigestionController.java create mode 100644 src/main/java/com/iflytop/digester/controller/OperationLogController.java create mode 100644 src/main/java/com/iflytop/digester/model/MdbOperationLog.java create mode 100644 src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java diff --git a/app.db b/app.db index 2b34b9935d0621388a2e40e8da5c84a477aa011e..d4b11bd7659823e775c02a848187d8c5e0030ed7 100644 GIT binary patch delta 2128 zcmb7`Z)h839LMj;<&q|P&m~K{%$m+Knb^9v-sLV$Vi{$Bf)?r=v$l%Vm_OGpThhcN zmFWwwY3tOrvl*w`V4!nK6bjWgxK=S*UrZ2Rtn-Zwh6paj3W6vq?v>A7!n`)QP9ON* zb3A!IJip)b`#$$%{KB^J3)}K{TmQx|tQX0N)QVw%I^E8p!OrJT5@-ao$PY|kv@&_h zLBd(gOfKT&Pt-Tm87f4z!@uB{17$z)?Z#;yR^9W&ZQfrQ{M9YC+n}wx&fkW8WiL9Y+#rQ<1-W39^0NkI-N`( z5VArf+nX49=JD8z!XrX#{Ssop3d(SdE*vocGaZWRSB6hAgW0tO%F0MASm!tu5s@ zQ+$=u*HX72ZZpJHA$$wSt%8P>;<>AoZVQT4Q3}LXAQE}XOkTr~joze!R2%#qmf#8a z7;GZ1E#yk1_>h^fqVlrL#sdGR`ua=+h3f0CMQ>MNPXi+DoUc#(e+Kp#70z4V_nL;_ z4G3%Ex@s{|J}+99;0Xou)M7HFWeHxdP<(xAlPAQ|sj4Y>T){M4t9FIj6ueHM-1QgJ zas>wvW#ibsm{{-oq46bMW7Isn0q0-?d6jIr^9S>9<~h?JrbXjT%3VF9mbtgyPN)$l-KuPd^ud&!7|RIhUJ1->H%5}9S+qM+ zF18(yB?Kux?UI}me;Rs^8|*_~IbiAM$p@snCO?#%uW`leQ!jvG{`C|n?jBjt73YpV zLA(!E0CO>Ak$X!s2?fjqyK!oevcYfR4D6<^!y-&jpxB&02zNEemS}kp?*Urd%bKN` zw~jev&sCa*!Ch8W(OITwd;2oo8fATc?=Zu3c*9(@gYOFaJN#iT+`)$gzsK$Kc>RoT zc*m8(#T7=0?L9y%eSrb1Zvb?{S21c8-MU{<2RhNQpq@6dY$!8KhceOIJ*tu2kNVw6 z_aU{NZM5hjessTMEl4|&Xrz0PxAHZ+sJy0m-O(Czd|4=nhc@3$QGqjWiru SvaEoc)QP;VkjH;j;{FGK#}`Qe delta 1708 zcmbVNO>7%Q6rR~1uXkPU1E$Y!oFx zG|Yq^OC-&yn4w#0EN8~m*tD8Y<`Yx7eA3Vh{K)VBpQ2;G6kl#Y*|()+4B!Gnq^Pf00u?GA?7rgcO#-W&0r~*7(0F_Mg17nW!)vJ?6J%`;N2LJIY@z${hhO1Tqr^ z_$Io8N&(LIfy9dIo>6gaQ!^U<6K?(!eCf4;{xbuSGyNw92O`mbZXrdzjeKsjvH_{n zIbgmGXO=o`LFwy*SF&3ynQXC`Ilq`+Sj;qqj=L`K&77`&Thue=3dvYclaMvfiKC#u zY`=&vO`aE&)2HF(_J&UXZfYtbwA+@O`RH!*kW1p6_eUT*@c1Ua z1|z%8>ni-tk&g>*1Ymna&DD zeGY!LE;FxU8uwmLV~EJ_m6+=#_MU&cS)T>?6MVK}4`crTFM*x+z)Nyf{qch^2_^98 MLAX)v+IJ`Y8#@Qev;Y7A diff --git a/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java b/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java new file mode 100644 index 0000000..d7b0b6d --- /dev/null +++ b/src/main/java/com/iflytop/digester/DigesterApplicationRunner.java @@ -0,0 +1,18 @@ +package com.iflytop.digester; +import com.iflytop.digester.deviceinstance.Device; +import jakarta.annotation.Resource; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +@Order(2) +@Component +public class DigesterApplicationRunner implements ApplicationRunner { + @Resource + private Device device; + + @Override + public void run(ApplicationArguments args) throws Exception { + this.device.liquidAddition.setup(); + } +} diff --git a/src/main/java/com/iflytop/digester/controller/DigestionController.java b/src/main/java/com/iflytop/digester/controller/DigestionController.java new file mode 100644 index 0000000..c754a41 --- /dev/null +++ b/src/main/java/com/iflytop/digester/controller/DigestionController.java @@ -0,0 +1,19 @@ +package com.iflytop.digester.controller; +import com.iflytop.digester.model.MdbDigestionSolution; +import com.iflytop.digester.underframework.controller.UfApiControllerBase; +import com.iflytop.digester.underframework.controller.UfApiResponse; +import com.iflytop.digester.underframework.dao.record.UfActiveRecord; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Map; +@Controller +public class DigestionController extends UfApiControllerBase { + @ResponseBody + @PostMapping("/api/digestion/list") + public UfApiResponse list(@RequestBody Map params) { + var items = UfActiveRecord.find(MdbDigestionSolution.class); + return this.success(items); + } +} diff --git a/src/main/java/com/iflytop/digester/controller/LiquidController.java b/src/main/java/com/iflytop/digester/controller/LiquidController.java index 52a86de..783431f 100644 --- a/src/main/java/com/iflytop/digester/controller/LiquidController.java +++ b/src/main/java/com/iflytop/digester/controller/LiquidController.java @@ -5,6 +5,7 @@ import com.iflytop.digester.underframework.controller.UfApiResponse; import jakarta.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Map; @Controller @@ -18,4 +19,15 @@ public class LiquidController extends UfApiControllerBase { var liquids = this.device.liquidAddition.getLiquids(); return this.success(Map.of("liquids", liquids)); } + + @ResponseBody + @PostMapping("/api/liquid/bucket-update") + public UfApiResponse updateBucket(@RequestBody Map params) { + Integer bucketIndex = (Integer)params.get("index"); + String liquidType = (String)params.get("type"); + var bucket = this.device.liquidAddition.getLiquidByIndex(bucketIndex); + bucket.type = liquidType; + bucket.volume = bucket.totalVolume; + return this.success(); + } } diff --git a/src/main/java/com/iflytop/digester/controller/OperationLogController.java b/src/main/java/com/iflytop/digester/controller/OperationLogController.java new file mode 100644 index 0000000..d14f5b8 --- /dev/null +++ b/src/main/java/com/iflytop/digester/controller/OperationLogController.java @@ -0,0 +1,38 @@ +package com.iflytop.digester.controller; +import com.iflytop.digester.model.MdbOperationLog; +import com.iflytop.digester.underframework.controller.UfApiControllerBase; +import com.iflytop.digester.underframework.controller.UfApiResponse; +import com.iflytop.digester.underframework.dao.model.UfMdbUser; +import com.iflytop.digester.underframework.dao.record.UfActiveRecord; +import com.iflytop.digester.underframework.dao.record.UfActiveRecordCriteria; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; +import java.util.ArrayList; +import java.util.Map; +@Controller +public class OperationLogController extends UfApiControllerBase { + @ResponseBody + @PostMapping("/api/operation-log/list") + public UfApiResponse list(@RequestBody Map params) { + var criteria = new UfActiveRecordCriteria(); + criteria.limit = 10; + criteria.offset = (Integer)params.getOrDefault("offset", 0); + var logs = UfActiveRecord.find(MdbOperationLog.class, criteria); + + var list = new ArrayList>(); + for ( var log : logs ) { + var map = log.toMap(); + map.put("user", null); + var user = UfActiveRecord.findOne(UfMdbUser.class, log.userId); + if ( null != user ) { + map.put("user", user.toMap()); + } + list.add(map); + } + + var total = UfActiveRecord.count(MdbOperationLog.class, criteria); + return this.success(Map.of("list",list, "total", total)); + } +} diff --git a/src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java b/src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java index e52132e..cb361c2 100644 --- a/src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java +++ b/src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java @@ -1,6 +1,9 @@ package com.iflytop.digester.deviceinstance; import com.iflytop.digester.underframework.UfCmdSnippetExecutor; +import com.iflytop.digester.underframework.dao.model.UfMdbOption; +import com.iflytop.digester.underframework.dao.model.UfMdbRuntimeVariable; import jakarta.annotation.PostConstruct; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @@ -10,16 +13,15 @@ public class LiquidAdditionInstance { // list of liquids private List liquids; - @PostConstruct - public void init() { + // setup + public void setup() { this.liquids = new ArrayList<>(); for (int i = 0; i < 8; i++) { LiquidAdditionLiquid liquid = new LiquidAdditionLiquid(); - - // @TODO : 测试用,要删除 - liquid.type = "hydrochloric"; - liquid.volume = 100; - + liquid.bucketIndex = i; + liquid.totalVolume = UfMdbOption.getInteger(String.format("LiquidBucketMaxVolume.%d", i), 0); + liquid.type = UfMdbRuntimeVariable.getString(String.format("LiquidBucketType.%d", i), "hydrochloric"); + liquid.volume = UfMdbRuntimeVariable.getInteger(String.format("LiquidBucketVolume.%d", i), 0); liquids.add(liquid); } } @@ -29,6 +31,11 @@ public class LiquidAdditionInstance { return this.liquids; } + // get liquid + public LiquidAdditionLiquid getLiquidByIndex( Integer index ) { + return this.liquids.get(index); + } + // 针对试管加液 public void addLiquidToTubes(List tubes, String type, int volume ) { diff --git a/src/main/java/com/iflytop/digester/model/MdbOperationLog.java b/src/main/java/com/iflytop/digester/model/MdbOperationLog.java new file mode 100644 index 0000000..1b7333a --- /dev/null +++ b/src/main/java/com/iflytop/digester/model/MdbOperationLog.java @@ -0,0 +1,28 @@ +package com.iflytop.digester.model; +import com.iflytop.digester.underframework.dao.model.UfMdbUser; +import com.iflytop.digester.underframework.dao.record.UfActiveRecord; +import com.iflytop.digester.underframework.dao.record.UfActiveRecordField; +public class MdbOperationLog extends UfActiveRecord { + @UfActiveRecordField + public String userId; + + @UfActiveRecordField + public String content; + + @UfActiveRecordField + public Integer time; + + // get table name + public static String getTableName() { + return "app_operation_logs"; + } + + // log + public static void log(UfMdbUser user, String content, Object ... args ) { + var log = new MdbOperationLog(); + log.userId = user.id; + log.content = String.format(content, args); + log.time = (int)(System.currentTimeMillis() / 1000); + log.save(); + } +} diff --git a/src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java b/src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java index 0040cd2..aee928b 100644 --- a/src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java +++ b/src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java @@ -11,8 +11,7 @@ public class UfApiRuntimeVariable extends UfApiControllerBase { @PostMapping("/api/runtime-variable/get") public UfApiResponse get(@RequestBody Map params ) { String key = (String)params.get("key"); - var value = UfMdbRuntimeVariable.getString(key); - assert value != null; + var value = UfMdbRuntimeVariable.getString(key, ""); return success(Map.of("value", value)); } } diff --git a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java new file mode 100644 index 0000000..fcff2fa --- /dev/null +++ b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java @@ -0,0 +1,31 @@ +package com.iflytop.digester.underframework.dao.model; +import com.iflytop.digester.underframework.dao.record.UfActiveRecord; +import com.iflytop.digester.underframework.dao.record.UfActiveRecordField; +import java.util.Map; +public class UfMdbOption extends UfActiveRecord { + @UfActiveRecordField + public String key; + + @UfActiveRecordField + public String value; + + // get table name + public static String getTableName() { + return "app_options"; + } + + // get option + public static String getString(String key, String defaultValue ) { + var option = UfActiveRecord.findOne(UfMdbOption.class, Map.of("key", key)); + if ( null == option ) { + return defaultValue; + } + return option.value; + } + + // get option + public static Integer getInteger(String key, Integer defaultValue ) { + var option = UfMdbOption.getString(key, defaultValue.toString()); + return Integer.parseInt(option); + } +} diff --git a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java index 5488f35..3f4b3ce 100644 --- a/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java +++ b/src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java @@ -30,15 +30,15 @@ public class UfMdbRuntimeVariable extends UfActiveRecord { } // get string - public static String getString(String name, Object ... args ) { - var variable = UfMdbRuntimeVariable.getVariable(name, args); - return null == variable ? null : variable.value; + public static String getString(String name, String defaultValue) { + var variable = UfActiveRecord.findOne(UfMdbRuntimeVariable.class, Map.of("key", name)); + return null == variable ? defaultValue : variable.value; } // get integer - public static Integer getInteger(String name, Object ... args ) { - var variable = UfMdbRuntimeVariable.getVariable(name, args); - return null == variable ? null : Integer.parseInt(variable.value); + public static Integer getInteger(String name, Integer defaultValue ) { + var variable = UfActiveRecord.findOne(UfMdbRuntimeVariable.class, Map.of("key", name)); + return null == variable ? defaultValue : Integer.parseInt(variable.value); } // set string diff --git a/web b/web index 7f4d0b8..568b1f8 160000 --- a/web +++ b/web @@ -1 +1 @@ -Subproject commit 7f4d0b8bfe683b41e75233368ed1ec1e98c8c350 +Subproject commit 568b1f82efb64410bbc4a54f923a5f5f2c0f8d5d