From 1d1091013432cbac77a38b32d7d6d4f809b1b378 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期一, 21 八月 2023 09:02:49 +0800
Subject: [PATCH] 计量管理-》计划计量新增
---
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java | 5
laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml | 7
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java | 2
framework/src/main/java/com/yuanchu/limslaboratory/utils/StringUtils.java | 403 +++++++++++++++++++++++++++++++++
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java | 6
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java | 3
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MeteringPlanService.java | 6
framework/src/main/java/com/yuanchu/limslaboratory/utils/ServletUtils.java | 137 +++++++++++
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddPlanDto.java | 26 ++
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MeteringPlanController.java | 19 +
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MeteringPlanServiceImpl.java | 76 +++++
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UserAndInsVo.java | 25 ++
12 files changed, 710 insertions(+), 5 deletions(-)
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/ServletUtils.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/ServletUtils.java
new file mode 100644
index 0000000..5c5e0ae
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/ServletUtils.java
@@ -0,0 +1,137 @@
+package com.yuanchu.limslaboratory.utils;
+
+
+import cn.hutool.core.convert.Convert;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+/**
+ * 瀹㈡埛绔伐鍏风被
+ *
+ * @author 寮犲
+ */
+public class ServletUtils
+{
+ /**
+ * 鑾峰彇String鍙傛暟
+ */
+ public static String getParameter(String name)
+ {
+ return getRequest().getParameter(name);
+ }
+
+ /**
+ * 鑾峰彇String鍙傛暟
+ */
+ public static String getParameter(String name, String defaultValue)
+ {
+ return Convert.toStr(getRequest().getParameter(name), defaultValue);
+ }
+
+ /**
+ * 鑾峰彇Integer鍙傛暟
+ */
+ public static Integer getParameterToInt(String name)
+ {
+ return Convert.toInt(getRequest().getParameter(name));
+ }
+
+ /**
+ * 鑾峰彇Integer鍙傛暟
+ */
+ public static Integer getParameterToInt(String name, Integer defaultValue)
+ {
+ return Convert.toInt(getRequest().getParameter(name), defaultValue);
+ }
+
+ /**
+ * 鑾峰彇request
+ */
+ public static HttpServletRequest getRequest()
+ {
+ return getRequestAttributes().getRequest();
+ }
+
+ /**
+ * 鑾峰彇response
+ */
+ public static HttpServletResponse getResponse()
+ {
+ return getRequestAttributes().getResponse();
+ }
+
+ /**
+ * 鑾峰彇session
+ */
+ public static HttpSession getSession()
+ {
+ return getRequest().getSession();
+ }
+
+ public static ServletRequestAttributes getRequestAttributes()
+ {
+ RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+ return (ServletRequestAttributes) attributes;
+ }
+
+ /**
+ * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风
+ *
+ * @param response 娓叉煋瀵硅薄
+ * @param string 寰呮覆鏌撶殑瀛楃涓�
+ * @return null
+ */
+ public static String renderString(HttpServletResponse response, String string)
+ {
+ try
+ {
+ response.setContentType("application/json");
+ response.setCharacterEncoding("utf-8");
+ response.getWriter().print(string);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 鏄惁鏄疉jax寮傛璇锋眰
+ *
+ * @param request
+ */
+ public static boolean isAjaxRequest(HttpServletRequest request)
+ {
+ String accept = request.getHeader("accept");
+ if (accept != null && accept.indexOf("application/json") != -1)
+ {
+ return true;
+ }
+
+ String xRequestedWith = request.getHeader("X-Requested-With");
+ if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1)
+ {
+ return true;
+ }
+
+ String uri = request.getRequestURI();
+ if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
+ {
+ return true;
+ }
+
+ String ajax = request.getParameter("__ajax");
+ if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
+ {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/StringUtils.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/StringUtils.java
new file mode 100644
index 0000000..d1c65d7
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/StringUtils.java
@@ -0,0 +1,403 @@
+package com.yuanchu.limslaboratory.utils;
+
+import cn.hutool.core.text.StrFormatter;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * 瀛楃涓插伐鍏风被
+ *
+ * @author 寮犲
+ */
+public class StringUtils extends org.apache.commons.lang3.StringUtils
+{
+ /** 绌哄瓧绗︿覆 */
+ private static final String NULLSTR = "";
+
+ /** 涓嬪垝绾� */
+ private static final char SEPARATOR = '_';
+
+ /**
+ * 鑾峰彇鍙傛暟涓嶄负绌哄��
+ * @param value defaultValue 瑕佸垽鏂殑value
+ * @return value 杩斿洖鍊�
+ */
+ public static <T> T nvl(T value, T defaultValue)
+ {
+ return value != null ? value : defaultValue;
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓狢ollection鏄惁涓虹┖锛� 鍖呭惈List锛孲et锛孮ueue
+ *
+ * @param coll 瑕佸垽鏂殑Collection
+ * @return true锛氫负绌� false锛氶潪绌�
+ */
+ public static boolean isEmpty(Collection<?> coll)
+ {
+ return isNull(coll) || coll.isEmpty();
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓狢ollection鏄惁闈炵┖锛屽寘鍚獿ist锛孲et锛孮ueue
+ *
+ * @param coll 瑕佸垽鏂殑Collection
+ * @return true锛氶潪绌� false锛氱┖
+ */
+ public static boolean isNotEmpty(Collection<?> coll)
+ {
+ return !isEmpty(coll);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚︿负绌�
+ *
+ * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
+ ** @return true锛氫负绌� false锛氶潪绌�
+ */
+ public static boolean isEmpty(Object[] objects)
+ {
+ return isNull(objects) || (objects.length == 0);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓璞℃暟缁勬槸鍚﹂潪绌�
+ *
+ * @param objects 瑕佸垽鏂殑瀵硅薄鏁扮粍
+ * @return true锛氶潪绌� false锛氱┖
+ */
+ public static boolean isNotEmpty(Object[] objects)
+ {
+ return !isEmpty(objects);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+ *
+ * @param map 瑕佸垽鏂殑Map
+ * @return true锛氫负绌� false锛氶潪绌�
+ */
+ public static boolean isEmpty(Map<?, ?> map)
+ {
+ return isNull(map) || map.isEmpty();
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓狹ap鏄惁涓虹┖
+ *
+ * @param map 瑕佸垽鏂殑Map
+ * @return true锛氶潪绌� false锛氱┖
+ */
+ public static boolean isNotEmpty(Map<?, ?> map)
+ {
+ return !isEmpty(map);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓虹┖涓�
+ *
+ * @param str String
+ * @return true锛氫负绌� false锛氶潪绌�
+ */
+ public static boolean isEmpty(String str)
+ {
+ return isNull(str) || NULLSTR.equals(str.trim());
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓瓧绗︿覆鏄惁涓洪潪绌轰覆
+ *
+ * @param str String
+ * @return true锛氶潪绌轰覆 false锛氱┖涓�
+ */
+ public static boolean isNotEmpty(String str)
+ {
+ return !isEmpty(str);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓璞℃槸鍚︿负绌�
+ *
+ * @param object Object
+ * @return true锛氫负绌� false锛氶潪绌�
+ */
+ public static boolean isNull(Object object)
+ {
+ return object == null;
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓璞℃槸鍚﹂潪绌�
+ *
+ * @param object Object
+ * @return true锛氶潪绌� false锛氱┖
+ */
+ public static boolean isNotNull(Object object)
+ {
+ return !isNull(object);
+ }
+
+ /**
+ * * 鍒ゆ柇涓�涓璞℃槸鍚︽槸鏁扮粍绫诲瀷锛圝ava鍩烘湰鍨嬪埆鐨勬暟缁勶級
+ *
+ * @param object 瀵硅薄
+ * @return true锛氭槸鏁扮粍 false锛氫笉鏄暟缁�
+ */
+ public static boolean isArray(Object object)
+ {
+ return isNotNull(object) && object.getClass().isArray();
+ }
+
+ /**
+ * 鍘荤┖鏍�
+ */
+ public static String trim(String str)
+ {
+ return (str == null ? "" : str.trim());
+ }
+
+ /**
+ * 鎴彇瀛楃涓�
+ *
+ * @param str 瀛楃涓�
+ * @param start 寮�濮�
+ * @return 缁撴灉
+ */
+ public static String substring(final String str, int start)
+ {
+ if (str == null)
+ {
+ return NULLSTR;
+ }
+
+ if (start < 0)
+ {
+ start = str.length() + start;
+ }
+
+ if (start < 0)
+ {
+ start = 0;
+ }
+ if (start > str.length())
+ {
+ return NULLSTR;
+ }
+
+ return str.substring(start);
+ }
+
+ /**
+ * 鎴彇瀛楃涓�
+ *
+ * @param str 瀛楃涓�
+ * @param start 寮�濮�
+ * @param end 缁撴潫
+ * @return 缁撴灉
+ */
+ public static String substring(final String str, int start, int end)
+ {
+ if (str == null)
+ {
+ return NULLSTR;
+ }
+
+ if (end < 0)
+ {
+ end = str.length() + end;
+ }
+ if (start < 0)
+ {
+ start = str.length() + start;
+ }
+
+ if (end > str.length())
+ {
+ end = str.length();
+ }
+
+ if (start > end)
+ {
+ return NULLSTR;
+ }
+
+ if (start < 0)
+ {
+ start = 0;
+ }
+ if (end < 0)
+ {
+ end = 0;
+ }
+
+ return str.substring(start, end);
+ }
+
+ /**
+ * 鏍煎紡鍖栨枃鏈�, {} 琛ㄧず鍗犱綅绗�<br>
+ * 姝ゆ柟娉曞彧鏄畝鍗曞皢鍗犱綅绗� {} 鎸夌収椤哄簭鏇挎崲涓哄弬鏁�<br>
+ * 濡傛灉鎯宠緭鍑� {} 浣跨敤 \\杞箟 { 鍗冲彲锛屽鏋滄兂杈撳嚭 {} 涔嬪墠鐨� \ 浣跨敤鍙岃浆涔夌 \\\\ 鍗冲彲<br>
+ * 渚嬶細<br>
+ * 閫氬父浣跨敤锛歠ormat("this is {} for {}", "a", "b") -> this is a for b<br>
+ * 杞箟{}锛� format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
+ * 杞箟\锛� format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
+ *
+ * @param template 鏂囨湰妯℃澘锛岃鏇挎崲鐨勯儴鍒嗙敤 {} 琛ㄧず
+ * @param params 鍙傛暟鍊�
+ * @return 鏍煎紡鍖栧悗鐨勬枃鏈�
+ */
+ public static String format(String template, Object... params){
+ if (isEmpty(params) || isEmpty(template))
+ {
+ return template;
+ }
+ return StrFormatter.format(template, params);
+ }
+
+ /**
+ * 涓嬪垝绾胯浆椹煎嘲鍛藉悕
+ */
+ public static String toUnderScoreCase(String str)
+ {
+ if (str == null)
+ {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ // 鍓嶇疆瀛楃鏄惁澶у啓
+ boolean preCharIsUpperCase = true;
+ // 褰撳墠瀛楃鏄惁澶у啓
+ boolean curreCharIsUpperCase = true;
+ // 涓嬩竴瀛楃鏄惁澶у啓
+ boolean nexteCharIsUpperCase = true;
+ for (int i = 0; i < str.length(); i++)
+ {
+ char c = str.charAt(i);
+ if (i > 0)
+ {
+ preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
+ }
+ else
+ {
+ preCharIsUpperCase = false;
+ }
+
+ curreCharIsUpperCase = Character.isUpperCase(c);
+
+ if (i < (str.length() - 1))
+ {
+ nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
+ }
+
+ if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
+ {
+ sb.append(SEPARATOR);
+ }
+ else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
+ {
+ sb.append(SEPARATOR);
+ }
+ sb.append(Character.toLowerCase(c));
+ }
+
+ return sb.toString();
+ }
+
+ /**
+ * 鏄惁鍖呭惈瀛楃涓�
+ *
+ * @param str 楠岃瘉瀛楃涓�
+ * @param strs 瀛楃涓茬粍
+ * @return 鍖呭惈杩斿洖true
+ */
+ public static boolean inStringIgnoreCase(String str, String... strs)
+ {
+ if (str != null && strs != null)
+ {
+ for (String s : strs)
+ {
+ if (str.equalsIgnoreCase(trim(s)))
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆傚鏋滆浆鎹㈠墠鐨勪笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆涓虹┖锛屽垯杩斿洖绌哄瓧绗︿覆銆� 渚嬪锛欻ELLO_WORLD->HelloWorld
+ *
+ * @param name 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓�
+ * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓�
+ */
+ public static String convertToCamelCase(String name)
+ {
+ StringBuilder result = new StringBuilder();
+ // 蹇�熸鏌�
+ if (name == null || name.isEmpty())
+ {
+ // 娌″繀瑕佽浆鎹�
+ return "";
+ }
+ else if (!name.contains("_"))
+ {
+ // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅ぇ鍐�
+ return name.substring(0, 1).toUpperCase() + name.substring(1);
+ }
+ // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊
+ String[] camels = name.split("_");
+ for (String camel : camels)
+ {
+ // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾�
+ if (camel.isEmpty())
+ {
+ continue;
+ }
+ // 棣栧瓧姣嶅ぇ鍐�
+ result.append(camel.substring(0, 1).toUpperCase());
+ result.append(camel.substring(1).toLowerCase());
+ }
+ return result.toString();
+ }
+
+ /**
+ * 椹煎嘲寮忓懡鍚嶆硶 渚嬪锛歶ser_name->userName
+ */
+ public static String toCamelCase(String s)
+ {
+ if (s == null)
+ {
+ return null;
+ }
+ s = s.toLowerCase();
+ StringBuilder sb = new StringBuilder(s.length());
+ boolean upperCase = false;
+ for (int i = 0; i < s.length(); i++)
+ {
+ char c = s.charAt(i);
+
+ if (c == SEPARATOR)
+ {
+ upperCase = true;
+ }
+ else if (upperCase)
+ {
+ sb.append(Character.toUpperCase(c));
+ upperCase = false;
+ }
+ else
+ {
+ sb.append(c);
+ }
+ }
+ return sb.toString();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> T cast(Object obj)
+ {
+ return (T) obj;
+ }
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MeteringPlanController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MeteringPlanController.java
index 44b2456..9d025b2 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MeteringPlanController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MeteringPlanController.java
@@ -5,12 +5,15 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Instrument;
import com.yuanchu.limslaboratory.pojo.MeteringPlan;
+import com.yuanchu.limslaboratory.pojo.dto.AddPlanDto;
import com.yuanchu.limslaboratory.pojo.dto.GetPlanMeasureInstrumentDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeasurementLedgerDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeteringPlanDto;
import com.yuanchu.limslaboratory.service.MeteringPlanService;
+import com.yuanchu.limslaboratory.service.UserService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
+import com.yuanchu.limslaboratory.utils.ServletUtils;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -19,6 +22,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import java.util.Map;
import java.util.Objects;
@@ -37,6 +41,10 @@
@Autowired
private MeteringPlanService meteringPlanService;
+
+ @Resource
+ private UserService userService;
+
@ApiOperation("娣诲姞璁¢噺璁″垝")
@PostMapping("/add")
@@ -72,4 +80,15 @@
public Result<?> limitGetPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto){
return Result.success(meteringPlanService.limitGetPlanMeasureInstrument(dto));
}
+
+ @ApiOperation("鑾峰彇user鍒楄〃鍜屼华鍣ㄥ垪琛�")
+ @GetMapping("/getListUserAndListIns")
+ public Result<?>getListUserAndListIns(){
+ return Result.success(meteringPlanService.getListUserAndListIns(userService.getUserNameAndId()));
+ }
+
+ @PostMapping("/addPlanAndMeasure")
+ public Result<?>addPlanAndMeasure(@RequestBody AddPlanDto addPlanDto){
+ return Result.success(meteringPlanService.addPlanAndMeasure(userService.getUserInfo(ServletUtils.getRequest().getHeader("X-Token")),addPlanDto));
+ }
}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
index a409b73..fa11132 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
@@ -87,4 +87,10 @@
public Result<?> getMapUserInformation() {
return Result.success(userService.getUserNameAndId());
}
+
+ @ApiOperation("鏇存柊璁¢噺缁撴灉")
+ public Result<?> updateMetricalInformationResult(String code,Integer result){
+ return null;
+ }
+
}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
index ef27ce7..bcd429b 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
@@ -2,6 +2,7 @@
import com.yuanchu.limslaboratory.pojo.MetricalInformation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@@ -17,4 +18,6 @@
public interface MetricalInformationMapper extends BaseMapper<MetricalInformation> {
List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId);
+
+ int insertBatchInformation(@Param("informationList") List<MetricalInformation>informationList);
}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java
index 2e08a84..a63535e 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInfoAndIns.java
@@ -45,4 +45,9 @@
private String imCreateName;
+ private String uncertainty;
+
+ private String performanceIndex;
+
+ private String remarks;
}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
index 07225d3..f0ea9a9 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
@@ -41,6 +41,8 @@
@ApiModelProperty(value = "浠櫒鍏宠仈Id", example = "1", required = true)
private Integer instrumentId;
+ private Integer plan;
+
@ApiModelProperty(value = "璁¢噺鍗曚綅", example = "GB", required = true)
private String measurementUnit;
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddPlanDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddPlanDto.java
new file mode 100644
index 0000000..1245115
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddPlanDto.java
@@ -0,0 +1,26 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/19
+ */
+@Data
+@ApiModel(value = "GetPlanMeasureInstrumentDto瀵硅薄", description = "")
+public class AddPlanDto implements Serializable {
+
+ @ApiModelProperty(value = "璁¢噺淇℃伅", required = false)
+ List<Map<String, Object>>measureList;
+
+ @ApiModelProperty(value = "璁″垝淇℃伅", required = true)
+ Map<String, Object>plan;
+
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UserAndInsVo.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UserAndInsVo.java
new file mode 100644
index 0000000..d43836a
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/UserAndInsVo.java
@@ -0,0 +1,25 @@
+package com.yuanchu.limslaboratory.pojo.vo;
+
+import com.yuanchu.limslaboratory.pojo.Instrument;
+import com.yuanchu.limslaboratory.pojo.User;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/19
+ */
+@Data
+public class UserAndInsVo implements Serializable {
+
+ List<Map<String, Object>>userList;
+ List<Instrument>instrumentList;
+
+ public UserAndInsVo(List<Map<String, Object>> userList, List<Instrument> instrumentList) {
+ this.userList = userList;
+ this.instrumentList = instrumentList;
+ }
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MeteringPlanService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MeteringPlanService.java
index b69a3d3..f7ac33f 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MeteringPlanService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MeteringPlanService.java
@@ -6,9 +6,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.limslaboratory.pojo.MeteringPlanAndInfoAndIns;
import com.yuanchu.limslaboratory.pojo.MetricalInfoAndIns;
+import com.yuanchu.limslaboratory.pojo.dto.AddPlanDto;
import com.yuanchu.limslaboratory.pojo.dto.GetPlanMeasureInstrumentDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeasurementLedgerDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeteringPlanDto;
+import com.yuanchu.limslaboratory.pojo.vo.UserAndInsVo;
import java.util.List;
import java.util.Map;
@@ -33,4 +35,8 @@
Map<String, Object> getPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto);
Map<String, Object> limitGetPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto);
+
+ UserAndInsVo getListUserAndListIns(List<Map<String, Object>> userNameAndId);
+
+ boolean addPlanAndMeasure(Map<String, Object> userInfo, AddPlanDto addPlanDto);
}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MeteringPlanServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MeteringPlanServiceImpl.java
index eb42a3b..f2a7ef3 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MeteringPlanServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MeteringPlanServiceImpl.java
@@ -1,22 +1,27 @@
package com.yuanchu.limslaboratory.service.impl;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.mapper.InstrumentMapper;
+import com.yuanchu.limslaboratory.mapper.MetricalInformationMapper;
import com.yuanchu.limslaboratory.pojo.*;
import com.yuanchu.limslaboratory.mapper.MeteringPlanMapper;
+import com.yuanchu.limslaboratory.pojo.dto.AddPlanDto;
import com.yuanchu.limslaboratory.pojo.dto.GetPlanMeasureInstrumentDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeasurementLedgerDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeteringPlanDto;
+import com.yuanchu.limslaboratory.pojo.vo.UserAndInsVo;
import com.yuanchu.limslaboratory.service.MeteringPlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.utils.MyUtil;
-import com.yuanchu.limslaboratory.utils.RedisUtil;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* <p>
@@ -32,6 +37,12 @@
@Resource
private MeteringPlanMapper meteringPlanMapper;
+ @Resource
+ private InstrumentMapper instrumentMapper;
+
+ @Resource
+ private MetricalInformationMapper metricalInformationMapper;
+
@Override
public Integer addMeteringPlanInformation(MeteringPlan meteringPlan) {
String timeSixNumber = MyUtil.getTimeSixNumberCode("P","P");
@@ -44,13 +55,17 @@
List<MeteringPlanAndInfo> page= meteringPlanMapper
.limitConditionMeteringPlan(dto,new LimitPage((dto.getCurrentPage()-1)*dto.getPageSize(), dto.getPageSize()));
page.forEach(l->{
+ AtomicBoolean haveZero= new AtomicBoolean(false);
l.getResultList().forEach(r->{
- if (r.getResult() < 1) {
- l.setStatus(0);
+ if (r.getResult()<1) {
+ haveZero.set(true);
}else {
l.setStatus(1);
}
});
+ if(haveZero.get()){
+ l.setStatus(0);
+ }
l.setResultList(null);
});
Map<String, Object>all=new HashMap<>(2);
@@ -83,4 +98,55 @@
,dto.getPageSize()),dto.getId()));
return map;
}
+
+ @Override
+ public UserAndInsVo getListUserAndListIns(List<Map<String, Object>> userNameAndId) {
+ QueryWrapper<Instrument>queryWrapper=new QueryWrapper<Instrument>();
+ queryWrapper.lambda()
+ .select(Instrument::getEquipmentName,Instrument::getId,Instrument::getMeasuringRange,Instrument::getTermValidity)
+ .eq(Instrument::getState,true);
+ List<Instrument> instruments = instrumentMapper.selectList(queryWrapper);
+ return new UserAndInsVo(userNameAndId,instruments);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean addPlanAndMeasure(Map<String, Object> userInfo, AddPlanDto addPlanDto) {
+ //璁″垝娣诲姞
+ MeteringPlan meteringPlan=new MeteringPlan();
+ String timeSixNumber = MyUtil.getTimeSixNumberCode("P","P");
+ meteringPlan.setPlannedOrderNumber(timeSixNumber);
+ meteringPlan.setCreatePerson(Integer.parseInt(String.valueOf(userInfo.get("id"))));
+ meteringPlan.setUnit(String.valueOf(addPlanDto.getPlan().get("unit")));
+ meteringPlan
+ .setBeginTime(DateUtil.
+ parseDate(String.valueOf(addPlanDto.getPlan().get("startTime"))));
+ meteringPlan.setEndTime(DateUtil.
+ parseDate(String.valueOf(addPlanDto.getPlan().get("endTime"))));
+ meteringPlan.setCreateTime(DateUtil.date());
+ meteringPlan.setMeasurePerson(Integer.parseInt(String.valueOf(addPlanDto.getPlan().get("measurePerson"))));
+ meteringPlan.setUpdateTime(DateUtil.date());
+ meteringPlan.setPlanningStatus(3);
+ boolean addPlan = meteringPlanMapper.insert(meteringPlan) > 0;
+ //鏂板璁¢噺
+ List<MetricalInformation>informationList=new ArrayList<>();
+ addPlanDto.getMeasureList().forEach(l->{
+ MetricalInformation info=new MetricalInformation();
+ info.setInstrumentId(Integer.parseInt(String.valueOf(l.get("equipmentPointName"))));
+ info.setUserId(Integer.parseInt(String.valueOf(userInfo.get("id"))));
+ info.setCreateTime(DateUtil.date());
+ Date endDate=Objects.nonNull(l.get("endDate"))?DateUtil.parseDate(String.valueOf(l.get("endDate"))):null;
+ info.setEndDate(endDate);
+ Integer result=Objects.nonNull(l.get("result"))?Integer.parseInt(String.valueOf(l.get("result"))):null;
+ info.setResult(result);
+ info.setMeasurementUnit(meteringPlan.getUnit());
+ info.setCode(MyUtil.getTimeSixNumberCode("METRICALCODE","METRICALCODE"));
+ info.setUpdateTime(DateUtil.date());
+ info.setPlan(meteringPlan.getId());
+ informationList.add(info);
+ });
+ return addPlan&&metricalInformationMapper.insertBatchInformation(informationList)>0;
+ }
+
+
}
diff --git a/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml b/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
index 858dbf3..58d321a 100644
--- a/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
@@ -1,6 +1,13 @@
<?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.yuanchu.limslaboratory.mapper.MetricalInformationMapper">
+ <insert id="insertBatchInformation">
+ insert metrical_information (id,code,user_id,plan,instrument_id,measurement_unit,end_date,result,create_time,update_time)
+ values
+ <foreach collection="informationList" item="info" separator=",">
+ (null,#{info.code},#{info.userId},#{info.plan},#{info.instrumentId},#{info.measurementUnit},#{info.endDate},#{info.result},#{info.createTime},#{info.updateTime})
+ </foreach>
+ </insert>
<select id="getListEquipmentPointInformation" resultType="map">
SELECT m.`id`, u.`name`, m.`measurement_unit`, DATE_FORMAT(m.`begin_date`, '%Y-%m-%d') beginDate, DATE_FORMAT(m.`end_date`, '%Y-%m-%d') endDate,
--
Gitblit v1.9.3