Browse Source

化学品信息导入单位和字典匹配验证

xuxiaofei 2 years ago
parent
commit
97f9ae52ac

+ 9 - 9
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpChemicalController.java

@@ -123,11 +123,11 @@ public class HxpChemicalController extends BaseController {
                 "4、带有星号(*)的红色字段为必填项。\n" +
                 "5、请注意:CAS号是唯一的,不能重复,不可多条。\n" +
                 "6、请注意:需填写系统中已录入的对应数据名称,否则无法正常导入。\n" +
-                "系统字段要求提示:"+
-                "化学品分类:普通化学品、危险化学品"+
+                "系统字段要求提示:\n"+
+                "化学品分类:普通化学品、危险化学品,\n"+
                 "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无;\n"+
-                "形态:固体、液体、气体、其他"+
-                "标签类型:二维码、RFID,计量方式:重量、体积、个数";
+                "形态:固体、液体、气体、其他,\n"+
+                "计量方式:重量、体积、个数";
         ExcelUtil<HxpChemicalByExcel> util = new ExcelUtil<HxpChemicalByExcel>(HxpChemicalByExcel.class);
         List<HxpChemicalByExcel> chemicalByExcels = redisService.getCacheObject("exportByChemical"+SecurityUtils.getUserId());
         if(chemicalByExcels.size()>0){
@@ -145,11 +145,11 @@ public class HxpChemicalController extends BaseController {
                 "4、带有星号(*)的红色字段为必填项。\n" +
                 "5、请注意:CAS号是唯一的,不能重复,不可多条。\n" +
                 "6、请注意:需填写系统中已录入的对应数据名称,否则无法正常导入。\n" +
-                "系统字段要求提示:"+
-                "化学品分类:普通化学品、危险化学品"+
-                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无\n"+
-                "形态:固体、液体、气体、其他"+
-                "标签类型:二维码、RFID,计量方式:重量、体积、个数";
+                "系统字段要求提示:\n"+
+                "化学品分类:普通化学品、危险化学品,\n"+
+                "化学品属性:爆炸品、压缩气体或液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品、放射性物品、腐蚀品、无\n"+
+                "形态:固体、液体、气体、其他,\n"+
+                "计量方式:重量、体积、个数";
         ExcelUtil<HxpChemicalByExcel> util = new ExcelUtil<HxpChemicalByExcel>(HxpChemicalByExcel.class);
         util.exportExcel(response, null, "化学品信息", tips, "化学品信息-批量导入模板");
     }

+ 70 - 20
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpChemicalServiceImpl.java

@@ -17,6 +17,7 @@ import com.zd.chemical.service.IHxpChemicalService;
 import com.zd.chemical.util.SmsSydUtil;
 import com.zd.common.core.annotation.DataScope;
 import com.zd.common.core.exception.ServiceException;
+import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.*;
 import com.zd.model.domain.per.PerPrefix;
 import com.zd.system.api.entity.SysDictData;
@@ -33,6 +34,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.DoubleAdder;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -59,6 +61,8 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
     private RemoteAlarmService remoteAlarmService;
     @Resource
     private SmsSydUtil smsSydUtil;
+    @Autowired
+    RedisService redisService;
 
 
     /**
@@ -134,19 +138,38 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
             }
             chemical.getFailRemark().append("分类名称不能为空、");
         }else{
-            HxpChemicalClassify hxpChemicalClassify = new HxpChemicalClassify();
-            hxpChemicalClassify.setClassifyName(chemical.getClassifyName());
-            List<HxpChemicalClassify> classifyList = hxpChemicalClassifyMapper.selectHxpChemicalClassifyList(hxpChemicalClassify);
-            if(classifyList.size()>0){
-                HxpChemicalClassify classify = classifyList.get(0);
-                hxpChemical.setChemicalClassify(classify.getId());
+            //化学品分类配置读取
+            List<HxpChemicalClassify> classifyList = redisService.getCacheObject("chemical_classify");
+            if (classifyList==null || classifyList.size()==0){
+                HxpChemicalClassify hxpChemicalClassify = new HxpChemicalClassify();
+                classifyList = hxpChemicalClassifyMapper.selectHxpChemicalClassifyList(hxpChemicalClassify);
+                redisService.setCacheObject("chemical_classify",classifyList, 60L, TimeUnit.SECONDS);
+                classifyList = redisService.getCacheObject("chemical_classify");
+            }
+
+            if(classifyList!=null && classifyList.size()>0){
+                //化学品分类是否匹配到
+                Boolean flg=false;
+                for (HxpChemicalClassify chemicalClassify:classifyList) {
+                    if (chemicalClassify.getClassifyName().equals(chemical.getClassifyName())) {
+                        hxpChemical.setChemicalClassify(chemicalClassify.getId());
+                        flg=true;
+                    }
+                }
+
+                if(checkBox && !flg){
+                    chemical.getFailRemark().append("失败:");
+                    failChemicalList.add(chemical);
+                    checkBox = false;
+                    chemical.getFailRemark().append("分类名称不存在、");
+                }
             }else{
                 if(checkBox){
                     chemical.getFailRemark().append("失败:");
                     failChemicalList.add(chemical);
                     checkBox = false;
                 }
-                chemical.getFailRemark().append("分类名称不存在、");
+                chemical.getFailRemark().append("分类名称未在字典配置、");
             }
         }
 
@@ -160,34 +183,57 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
             chemical.getFailRemark().append("形态不能为空、");
         }else{
             List<SysDictData> proDictDatas = DictUtils.getDictCache("chemical_shape");
+            //化学品形态比对标识
+            boolean flgshape= false;
             for(SysDictData dictData : proDictDatas){
                 if(dictData.getDictLabel().equals(chemical.getChemicalShapeInfo().trim())){
                     hxpChemical.setChemicalShape(Integer.parseInt(dictData.getDictValue()));
+                    flgshape=true;
                 }
             }
             if(StringUtils.isNull(hxpChemical.getChemicalShape())){
-                if(checkBox){
+                if(checkBox && !flgshape){
                     chemical.getFailRemark().append("失败:");
                     failChemicalList.add(chemical);
                     checkBox = false;
                 }
-                chemical.getFailRemark().append("形态不存在、");
+                chemical.getFailRemark().append("形态未在字典配置、");
             }
         }
 
         //计量单位
         if(StringUtils.isNotEmpty(chemical.getChemicalUnit())){
-            if(chemical.getChemicalUnit().length()>8){
+            if(checkBox) {
+                if (chemical.getChemicalUnit().length() > 8) {
+                    chemical.getFailRemark().append("失败:");
+                    failChemicalList.add(chemical);
+                    checkBox = false;
+                }
+                chemical.getFailRemark().append("计量单位过长、");
+            }
+
+            //获取化学品单位集合
+            List<SysDictData> dictDataList = DictUtils.getDictCache("chemicals_measuring_unit");
+            boolean flgunit=false;
+            for (SysDictData sysdic: dictDataList) {
+                if(chemical.getChemicalUnit().equals(sysdic.getDictValue())){
+                    flgunit=true;
+                }
+            }
+
+            if(checkBox && !flgunit){
                 chemical.getFailRemark().append("失败:");
                 failChemicalList.add(chemical);
                 checkBox = false;
-                chemical.getFailRemark().append("计量单位过长、");
             }
+            chemical.getFailRemark().append("字典表未配置单位、");
             hxpChemical.setChemicalUnit(chemical.getChemicalUnit());
         }else{
-            chemical.getFailRemark().append("失败:");
-            failChemicalList.add(chemical);
-            checkBox = false;
+            if(checkBox) {
+                chemical.getFailRemark().append("失败:");
+                failChemicalList.add(chemical);
+                checkBox = false;
+            }
             chemical.getFailRemark().append("计量单位不能为空、");
         }
 
@@ -200,15 +246,19 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
             }else if("个数".equals(chemical.getMeasuringMethod())){
                 hxpChemical.setMeasuringMethod(3);
             }else{
+                if(checkBox) {
+                    chemical.getFailRemark().append("失败:");
+                    failChemicalList.add(chemical);
+                    checkBox = false;
+                }
+                chemical.getFailRemark().append("计量方式不存在、");
+            }
+        }else {
+            if(checkBox) {
                 chemical.getFailRemark().append("失败:");
                 failChemicalList.add(chemical);
                 checkBox = false;
-                chemical.getFailRemark().append("计量方式不存在、");
             }
-        }else {
-            chemical.getFailRemark().append("失败:");
-            failChemicalList.add(chemical);
-            checkBox = false;
             chemical.getFailRemark().append("计量方式不能为空、");
         }
 
@@ -317,7 +367,7 @@ public class HxpChemicalServiceImpl implements IHxpChemicalService {
         //这里需要查询危险品分类的级别
         HxpChemicalClassify hxpChemicalClassify = hxpChemicalClassifyMapper.selectHxpChemicalClassifyById(hxpChemical.getChemicalClassify());
         if(StringUtils.isNull(hxpChemicalClassify)){
-           throw new ServiceException("危险品分类级别未配置,请联系管理员!!");
+            throw new ServiceException("危险品分类级别未配置,请联系管理员!!");
         }
         if(hxpChemicalClassify.getClassifyName().length()<2){
             throw new ServiceException("分类名称错误,请联系管理员");