From ebc594f48f4010fa8b61cd3c871a17f3149607ec Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期二, 22 十二月 2020 16:28:22 +0800
Subject: [PATCH] 添加危化品编码接口

---
 src/main/java/com/nanometer/smartlab/model/ResponseModel.java                |    7 +
 src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml           |   30 +++++++
 src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java          |    5 +
 src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java     |    5 +
 src/main/java/com/nanometer/smartlab/api/ApiAction.java                      |  113 ++++++++++++++++++++++++++++
 src/main/java/com/nanometer/smartlab/entity/DangerousEncodeVo.java           |   14 +++
 src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java |   11 ++
 7 files changed, 184 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
index 3221c0c..6d25ef8 100644
--- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java
+++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -78,6 +78,8 @@
     private SysLaboratoryContainerDao sysLaboratoryContainerDao;
     @Resource
     private SysWarehouseContainerDao sysWarehouseContainerDao;
+    @Resource
+    private DangerousEncodeService dangerousEncodeService;
     @Value("${institute.url}")
     String instituteUrl;
 
@@ -1073,4 +1075,115 @@
         logger.info("getUserInfo end...");
         return ResponseModel.getOkInstence(datalist);
     }
+
+
+    //危化品编码接口
+    @ResponseBody
+    @RequestMapping(value = "/dangerousEncodeInfo")
+    public Object getDangerousEncodeInfo(@RequestParam String reagentName, @RequestParam String cas) {
+        List<DangerousEncodeVo> datalist = new ArrayList<>();
+        if (StringUtils.isNotBlank(reagentName) || StringUtils.isNotBlank(cas)){
+            datalist = dangerousEncodeService.selectByReagentName(reagentName,cas);
+            for (DangerousEncodeVo dangerousEncodeVo : datalist){
+                if (StringUtils.isNotBlank(dangerousEncodeVo.getContainerNumber())){
+                    if (dangerousEncodeVo.getContainerNumber().startsWith("0")){
+                        dangerousEncodeVo.setContainerName("普通型");
+                    }else if (dangerousEncodeVo.getContainerNumber().startsWith("1")){
+                        dangerousEncodeVo.setContainerName("阻燃型");
+                    }else if (dangerousEncodeVo.getContainerNumber().startsWith("2")){
+                        dangerousEncodeVo.setContainerName("抗腐蚀型");
+                    }else if (dangerousEncodeVo.getContainerNumber().startsWith("3")){
+                        dangerousEncodeVo.setContainerName("防爆型");
+                    }else if (dangerousEncodeVo.getContainerNumber().startsWith("4")){
+                        dangerousEncodeVo.setContainerName("有毒称重型");
+                    }
+                }
+            }
+        }else {
+            return ResponseModel.getParamInstence("reagentName,cas");
+        }
+
+        return ResponseModel.getOkInstence(datalist);
+    }
+
+    //生成24位危化品编码
+    @ResponseBody
+    @RequestMapping(value = "/generatorCode")
+    public Object generatorCode(@RequestParam String reagentName,@RequestParam String containerName,
+                                @RequestParam String factory, @RequestParam String specs,@RequestParam String pack) {
+        String code = "";
+        int count = 0;
+        DangerousEncode dangerousEncode = new DangerousEncode();
+        if (StringUtils.isNotBlank(reagentName)){
+            dangerousEncode = dangerousEncodeService.selectByName(reagentName);
+            if (null != dangerousEncode){
+                code = dangerousEncode.getCode();
+                count = dangerousEncode.getCount();
+            }else {
+                return ResponseModel.getErrInstance("无法找到该试剂");
+            }
+        }else {
+            return ResponseModel.getParamInstence("reagentName");
+        }
+
+        StringBuffer buffer = new StringBuffer(code);
+
+        if (StringUtils.isNotBlank(containerName)){
+            if (containerName.equals("普通型")){
+                buffer.replace(0, 1, "0");
+            }else if (containerName.equals("阻燃型")){
+                buffer.replace(0, 1, "1");
+            }else if (containerName.equals("抗腐蚀型")){
+                buffer.replace(0, 1, "2");
+            }else if (containerName.equals("防爆型")){
+                buffer.replace(0, 1, "3");
+            }else if (containerName.equals("有毒称重型")){
+                buffer.replace(0, 1, "4");
+            }
+        }else {
+            return ResponseModel.getParamInstence("containerName");
+        }
+
+        String regex="^[A-F0-9]+$";
+
+        if (StringUtils.isNotBlank(factory) && factory.matches(regex)){
+            buffer.replace(2, 3, factory);
+        }else {
+            return ResponseModel.getParamInstence("factory");
+        }
+
+        if (StringUtils.isNotBlank(specs) && specs.matches(regex)){
+            buffer.replace(3, 4, specs);
+        }else {
+            return ResponseModel.getParamInstence("specs");
+        }
+
+        if (StringUtils.isNotBlank(pack) && pack.matches(regex)){
+            buffer.replace(18, 19, pack);
+        }else {
+            return ResponseModel.getParamInstence("pack");
+        }
+
+        String countHex = Integer.toHexString(count).toUpperCase();
+        if (countHex.length() == 1){
+            buffer.replace(23, 24, countHex);
+        }else if (countHex.length() == 2){
+            buffer.replace(22, 24, countHex);
+        }else if (countHex.length() == 3){
+            buffer.replace(21, 24, countHex);
+        }else if (countHex.length() == 4){
+            buffer.replace(20, 24, countHex);
+        }else if (countHex.length() == 5){
+            buffer.replace(19, 24, countHex);
+        }
+        code = buffer.toString();
+
+        dangerousEncode.setCount(dangerousEncode.getCount()+1);
+        dangerousEncodeService.updateOne(dangerousEncode);
+
+        return ResponseModel.getOkInstence(code);
+    }
+
+
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java
index ae4c1fe..4b2e093 100644
--- a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java
+++ b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.java
@@ -1,6 +1,7 @@
 package com.nanometer.smartlab.dao;
 
 import com.nanometer.smartlab.entity.DangerousEncode;
+import com.nanometer.smartlab.entity.DangerousEncodeVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -26,4 +27,8 @@
     List<Map> selectExportList(Map params);
 
     List<DangerousEncode> selectByCodeAndName(@Param("reagentcode") String reagentcode,@Param("reagentname") String reagentname,@Param("cas") String cas,@Param("code") String code);
+
+    List<DangerousEncodeVo> selectByReagentName(@Param("reagentname") String reagentname, @Param("cas") String cas);
+
+    DangerousEncode selectByName(@Param("reagentname") String reagentname);
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml
index 84d2724..703c10a 100644
--- a/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/DangerousEncodeMapper.xml
@@ -298,7 +298,8 @@
   </select>
   <select id="selectByCodeAndName" resultType="com.nanometer.smartlab.entity.DangerousEncode">
     select
-    <include refid="Base_Column_List" />
+      container_number containerNumber, reagent_code reagentCode, reagent_name reagentName, cas, memo, property, feature, avoid,
+      status, fire, random, code, update_time, creator, count
     from sys_dangerous_encode
     <where>
       1=1
@@ -316,4 +317,31 @@
       </if>
     </where>
   </select>
+  <select id="selectByReagentName" resultType="com.nanometer.smartlab.entity.DangerousEncodeVo">
+    select
+      container_number containerNumber, reagent_code reagentCode, reagent_name reagentName, cas, memo, property, feature, avoid,
+      status, fire, random, code, update_time, creator, count
+    from sys_dangerous_encode
+    <where>
+        1=1
+        <if test="reagentname != null and reagentname != ''">
+            and reagent_name like concat("%",#{reagentname},"%")
+        </if>
+        <if test="cas != null and cas != ''">
+            and cas = #{cas}
+        </if>
+    </where>
+  </select>
+  <select id="selectByName" resultType="com.nanometer.smartlab.entity.DangerousEncode">
+      select
+      id,container_number containerNumber, reagent_code reagentCode, reagent_name reagentName, cas, memo,
+      property, feature, avoid, status, fire, random, code, update_time, creator, count
+      from sys_dangerous_encode
+      <where>
+          1=1
+          <if test="reagentname != null and reagentname != ''">
+              and reagent_name = #{reagentname}
+          </if>
+      </where>
+  </select>
 </mapper>
diff --git a/src/main/java/com/nanometer/smartlab/entity/DangerousEncodeVo.java b/src/main/java/com/nanometer/smartlab/entity/DangerousEncodeVo.java
new file mode 100644
index 0000000..3f68d42
--- /dev/null
+++ b/src/main/java/com/nanometer/smartlab/entity/DangerousEncodeVo.java
@@ -0,0 +1,14 @@
+package com.nanometer.smartlab.entity;
+
+public class DangerousEncodeVo extends DangerousEncode {
+
+    private String containerName;
+
+    public String getContainerName() {
+        return containerName;
+    }
+
+    public void setContainerName(String containerName) {
+        this.containerName = containerName;
+    }
+}
diff --git a/src/main/java/com/nanometer/smartlab/model/ResponseModel.java b/src/main/java/com/nanometer/smartlab/model/ResponseModel.java
index 5e1e96e..1cd1b9f 100644
--- a/src/main/java/com/nanometer/smartlab/model/ResponseModel.java
+++ b/src/main/java/com/nanometer/smartlab/model/ResponseModel.java
@@ -69,4 +69,11 @@
         model.setMessage("系统异常");
         return model;
     }
+
+    public static ResponseModel getErrInstance(String message){
+        ResponseModel  model = new ResponseModel();
+        model.setCode(ExceptionEnumCode.DB_ERR.getCode());
+        model.setMessage(message);
+        return model;
+    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java
index 60fd7e5..a402598 100644
--- a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java
+++ b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeService.java
@@ -1,6 +1,7 @@
 package com.nanometer.smartlab.service;
 
 import com.nanometer.smartlab.entity.DangerousEncode;
+import com.nanometer.smartlab.entity.DangerousEncodeVo;
 import com.nanometer.smartlab.entity.SysUser;
 import org.primefaces.event.FileUploadEvent;
 
@@ -26,4 +27,8 @@
     List<Map> exportList(DangerousEncode dangerousEncodeFilter);
 
     List<DangerousEncode> selectByCodeAndName(String reagentcode, String reagentname,String cas,String code);
+
+    List<DangerousEncodeVo> selectByReagentName(String reagentname, String cas);
+
+    DangerousEncode selectByName(String reagentname);
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java
index 390ca26..fe1814c 100644
--- a/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/DangerousEncodeServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.nanometer.smartlab.dao.DangerousEncodeMapper;
 import com.nanometer.smartlab.entity.DangerousEncode;
+import com.nanometer.smartlab.entity.DangerousEncodeVo;
 import com.nanometer.smartlab.entity.SysUser;
 import com.nanometer.smartlab.util.ExcelUtils;
 import com.nanometer.smartlab.util.FacesUtils;
@@ -185,6 +186,16 @@
         return dangerousEncodeMapper.selectByCodeAndName(reagentcode,reagentname,cas,code);
     }
 
+    @Override
+    public List<DangerousEncodeVo> selectByReagentName(String reagentname, String cas) {
+        return dangerousEncodeMapper.selectByReagentName(reagentname, cas);
+    }
+
+    @Override
+    public DangerousEncode selectByName(String reagentname) {
+        return dangerousEncodeMapper.selectByName(reagentname);
+    }
+
 
     @Override
     public void export2Excel(List<Map> list) throws Exception {

--
Gitblit v1.9.2