From 6aa047092fff37a3b0ecf8fe364b76dbd91e3992 Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期二, 29 十二月 2020 09:53:21 +0800 Subject: [PATCH] 传感器发送时间超过现在就直接返回错误 --- src/main/java/com/nanometer/smartlab/api/ApiAction.java | 316 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 285 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java index 10aa27a..8606217 100644 --- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java +++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java @@ -7,11 +7,16 @@ import com.google.common.collect.Maps; import com.nanometer.smartlab.controller.BaseController; import com.nanometer.smartlab.controller.MenuController; +import com.nanometer.smartlab.dao.OpeReagentStatusDao; import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; import com.nanometer.smartlab.dao.SysWarehouseContainerDao; import com.nanometer.smartlab.entity.*; -import com.nanometer.smartlab.entity.SysWarning; +import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto; +import com.nanometer.smartlab.entity.dto.ReagentReceivingDto; +import com.nanometer.smartlab.entity.dto.SysWarehouseDto; import com.nanometer.smartlab.entity.enumtype.ApiStatus; +import com.nanometer.smartlab.entity.enumtype.ArrivalStatus; +import com.nanometer.smartlab.entity.enumtype.ReplaceDictType; import com.nanometer.smartlab.entity.enumtype.SeeFlag; import com.nanometer.smartlab.exception.ApiException; import com.nanometer.smartlab.exception.BusinessException; @@ -65,6 +70,8 @@ private BaseMetaService baseMetaService; @Resource private InterfaceService interfaceService; + @Resource + private SysWarehouseService sysWarehouseService; @Resource private SysWarningService sysWarningService; @@ -78,6 +85,10 @@ private SysLaboratoryContainerDao sysLaboratoryContainerDao; @Resource private SysWarehouseContainerDao sysWarehouseContainerDao; + @Resource + private DangerousEncodeService dangerousEncodeService; + @Resource + private EncodeReplaceDictService encodeReplaceDictService; @Value("${institute.url}") String instituteUrl; @@ -221,35 +232,6 @@ } return retJSON.toJSONString(); } - - @ResponseBody - @RequestMapping(value = "/userListByContainerCode") - public Object userListByContainerCode(@RequestParam String containerCode,@RequestParam String startTime, @RequestParam String endTime) throws ApiException { - logger.info("userListByContainerCode start...containerCode= " + containerCode - + ",startTime=" + startTime - + ",endTime=" + endTime); - - List<SysUser> userList = interfaceService.getUserListByContainerCode(containerCode, startTime, endTime); - - List<Map> datalist = Lists.newArrayListWithCapacity(userList.size()); - for (SysUser user : userList) { - Map<String, Object> map = Maps.newHashMapWithExpectedSize(5); - datalist.add(map); - map.put("name", user.getName()); - map.put("role", user.getSeeFlag().getKey()); - map.put("validFlag", user.getValidFlag().getKey()); - map.put("idcard", user.getIdCard()); - map.put("point", user.getPoint()); - map.put("unit", user.getCompany()); - map.put("Arp", user.getArp()); - map.put("departmentName", user.getDepartment()); - - } - logger.info("getUserInfo end..."); - return ResponseModel.getOkInstence(datalist); - } - - @ResponseBody @@ -860,6 +842,11 @@ } String updateTime = dataJson.getString("updateTime"); + if (sdf.parse(updateTime).after(new Date())) { + retJSON.put("code", "400"); + retJSON.put("message", "发送时间不准确"); + return retJSON.toJSONString(); + } SysContainerSensors sysContainerSensors = new SysContainerSensors(); sysContainerSensors.setContainerId(containerCode); @@ -1070,7 +1057,7 @@ //从柜子的设备码根据设备的所在实验室的课题组的课题组下的所有用户,没有课题组则返回用部门搜索 @ResponseBody - @RequestMapping(value = "/userListByContainerCodeNew") + @RequestMapping(value = "/userListByContainerCode") public Object userListByContainerCodeNew(@RequestParam String containerCode,@RequestParam String startTime, @RequestParam String endTime) throws ApiException { logger.info("userListByContainerCodeNew start...containerCode= " + containerCode + ",startTime=" + startTime @@ -1096,9 +1083,276 @@ map.put("unit", user.getCompany()); map.put("Arp", user.getArp()); map.put("departmentName", user.getDepartment()); + map.put("project", user.getProject()); } 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); + } + + /** + * 获取替换字典 + * + */ + @ResponseBody + @RequestMapping("getEncodeReplaceDict") + public Object getEncodeReplaceDict(@RequestParam String type) { + try { + ReplaceDictType rdType = ReplaceDictType.parse(Integer.parseInt(type)); + EncodeReplaceDict encodeReplaceDict = new EncodeReplaceDict(); + encodeReplaceDict.setType(rdType); + List<EncodeReplaceDict> data = encodeReplaceDictService.selectAll(encodeReplaceDict, null, null); + return ResponseModel.getOkInstence(data); + }catch (Exception e){ + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + + /** + * 获取编码 + * + */ + @ResponseBody + @RequestMapping("getDangerousEncode") + public Object getDangerousEncode(@RequestParam(required = false) String reagentName, @RequestParam(required = false) String cas) { + try { + List<DangerousEncode> data = dangerousEncodeService.selectByCodeAndName(null, reagentName, cas, null); + return ResponseModel.getOkInstence(data); + } catch (Exception e){ + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + /** + * 获取仓库信息 + */ + @ResponseBody + @RequestMapping("getWarehouseInfo") + public Object getWarehouseInfo() { + try { + List<SysWarehouseDto> data = sysWarehouseService.getWarehouseList(); + return ResponseModel.getOkInstence(data); + } catch (Exception e) { + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + + + /** + * @Description: 获取所有人员,人员相关实验室,实验室相关试剂柜 + * @date 2020/12/23 16:47 + */ + @ResponseBody + @RequestMapping("getApplyPersonDetailInfo") + public Object getApplyPersonDetailInfo() { + try { + List data = sysUserService.getUserInfo(); + return ResponseModel.getOkInstence(data); + } catch (Exception e) { + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + + + /** + * @Description: 入库 + * @date 2020/12/24 14:19 + */ + @ResponseBody + @RequestMapping("putInStorage") + public Object putInWarehouse(@RequestBody InWarehouseInfoDto inWarehouseInfo) { + try { + + if (inWarehouseInfo.getReagentCode() != null && inWarehouseInfo.getReagentCode().size() > 0) { + + for (int i = 0; i < inWarehouseInfo.getReagentCode().size(); i++) { + String code = inWarehouseInfo.getReagentCode().get(i); + DangerousEncode dangerousEncode = new DangerousEncode(); + //5-8位 + String reagentCode = code.substring(4, 8); + //数据库存储的前缀00空着 + dangerousEncode.setReagentCode("00"+reagentCode); + List<DangerousEncode> dangerousEncodes = + dangerousEncodeService.selectAll(dangerousEncode,null,null); + //1.编码存在校验 + if (dangerousEncodes.size() <1){ + return ResponseModel.getErrInstance("该试剂危化品编码不存在"); + } + + //2.重复入库校验 无论任何状态 + OpeReagentStatus ors = opeReagentStatusService.getOpeReagentStatusByReagentCode(code); + if (ors != null) { + return ResponseModel.getErrInstance("该试剂危化品编码已存在"); + } + + } + + //3.入库 + sysWarehouseService.putInWarehouse(inWarehouseInfo); + return ResponseModel.getOkInstence("入库成功"); + } else { + return ResponseModel.getErrInstance("无试剂条码"); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + + + /** + * @Description: 试剂领用到实验室 + * @date 2020/12/24 14:19 + */ + @ResponseBody + @RequestMapping("reagentReceiving") + public Object reagentReceiving(@RequestBody ReagentReceivingDto reagentReceiving) { + try { + if (reagentReceiving.getReagentCode() != null && reagentReceiving.getReagentCode().size() > 0) { + + //1.校验仓库是否有该试剂 + for (int i = 0; i < reagentReceiving.getReagentCode().size(); i++) { + String reagentCode = reagentReceiving.getReagentCode().get(i); + //去试剂状态查找 是否有此试剂条码 + OpeReagentStatus ors = opeReagentStatusService.getOpeReagentStatusByReagentCode(reagentCode); + if (ors == null || ors.getStatus() != ArrivalStatus.WAREHOUSE){ + return ResponseModel.getErrInstance("仓库无此试剂"); + } + } + //2.领用 + sysWarehouseService.reagentReceiving(reagentReceiving); + return ResponseModel.getOkInstence("领用成功"); + } else { + return ResponseModel.getErrInstance("无效试剂条码"); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info(e); + return ResponseModel.getErrInstance("系统出错"); + } + + } + + } -- Gitblit v1.9.2