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