package com.nanometer.smartlab.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; 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.dto.*; import com.nanometer.smartlab.entity.enumtype.*; import com.nanometer.smartlab.exception.ApiException; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.model.ResponseModel; import com.nanometer.smartlab.service.*; import com.nanometer.smartlab.util.*; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.primefaces.context.RequestContext; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * Created by johnny on 17/9/13. */ @Controller @RequestMapping(value = "service") public class ApiAction extends BaseAction { private static Logger logger = Logger.getLogger(ApiAction.class); @Lazy @Resource private SysUserService sysUserService; @Lazy @Resource private OpeReagentStatusService opeReagentStatusService; @Lazy @Resource private SysWarehouseContainerService sysWarehouseContainerService; @Lazy @Resource private SysLaboratoryContainerService sysLaboratoryContainerService; @Lazy @Resource private BaseMetaService baseMetaService; @Lazy @Resource private InterfaceService interfaceService; @Lazy @Resource private SysWarehouseService sysWarehouseService; @Lazy @Resource private TempSensorsService tempSensorsService; @Lazy @Resource private SysFileService sysFileService; @Lazy @Resource private SysLaboratoryContainerDao sysLaboratoryContainerDao; @Lazy @Resource private SysWarehouseContainerDao sysWarehouseContainerDao; @Lazy @Resource private DangerousEncodeService dangerousEncodeService; @Lazy @Resource private EncodeReplaceDictService encodeReplaceDictService; @Lazy @Resource private SysLaboratoryService sysLaboratoryService; @Lazy @Resource private HazardousWasteService hazardousWasteService; @Lazy @Resource private OpeLaboratoryReserveService opeLaboratoryReserveService; @Lazy @Resource private OpeUseFlowService opeUseFlowService; @Lazy @Resource private SysWarehouseStatusService sysWarehouseStatusService; @Lazy @Resource private SysReagentService sysReagentService; @Value("${institute.url}") String instituteUrl; @ResponseBody @RequestMapping(value = "/registerTestCabinet") public String registerTestCabinet(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("registerTestCabinet" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.registerTestCabinet(userId, JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } // 现在注册流程是,先在web端创建试剂柜,然后当柜子第一次会调用接口,如果货柜条码存在,则注册成功。 // 如果货柜类型等数据发生变更,以柜子发上来的数据为准 @ResponseBody @RequestMapping(value = "/AutheTestCabinet") public String AutheTestCabinet(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("AutheTestCabinet" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.AutheTestCabinet(userId, JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } @ResponseBody @RequestMapping(value = "/logoutTestCabinet") public String logoutTestCabinet(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("logoutTestCabinet" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.logoutTestCabinet(userId, JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } @ResponseBody @RequestMapping(value = "/updateTestCabinet") public String updateTestCabinet(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("updateTestCabinet" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.updateTestCabinet(userId, JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } @ResponseBody @RequestMapping(value = "/openCabinetDoor") public String openCabinetDoor(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("openCabinetDoor" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { String returndata = interfaceService.openCabinetDoor(userId, JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); retJSON.put("userLevel", returndata); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } @ResponseBody @RequestMapping(value = "/closeCabinetDoor") public String closeCabinetDoor(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("closeCabinetDoor" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.closeCabinetDoor(JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } // 报送试剂最新信息接口 只更新试剂状态ope_regeant_status表 0, "领用" 1, "入库" 2, "存入" 3, "报废" -1, "领用待入库" @ResponseBody @RequestMapping(value = "/synchAllCabinet") public String synchAllCabinet(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } JSONObject retJSON = new JSONObject(); logger.info("synchAllCabinet" + data); String userId = request.getHeader("userId"); // Body参数 JSONObject bodyJSONObject = new JSONObject(); bodyJSONObject = JSONObject.parseObject(data); // 主控条码 String controllerCode = bodyJSONObject.getString("controllerCode"); try { // 数据 String dataStr = bodyJSONObject.getString("data"); JSONArray dataJSONArray = JSONArray.parseArray(dataStr); logger.info("dataJSONArray: " + dataJSONArray); if( dataJSONArray.size() !=0 ){ interfaceService.synchAllCabinet(dataJSONArray); } retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { e.printStackTrace(); retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } // 出入库记录信息接口 更新试剂流向ope_use_flow表 // 操作状态 2 领用 // 操作状态 4 错误存放 // 操作状态 1 错误入库 // 操作状态 6 转移 智能柜试剂转移到另一个柜子 // 操作状态 5 报废 // 操作状态 3 存放 // 操作状态 0 入库 // 操作状态 11 仓库领用 // 操作状态 10 仓库入库 @ResponseBody @RequestMapping(value = "/cabinetData") public String cabinetData(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } JSONObject retJSON = new JSONObject(); logger.info("cabinetData" + data); String userId = request.getHeader("userId"); // Body参数 JSONObject bodyJSONObject = new JSONObject(); bodyJSONObject = JSONObject.parseObject(data); // 主控条码 String controllerCode = bodyJSONObject.getString("controllerCode"); try { // 数据 String dataStr = bodyJSONObject.getString("data"); JSONArray dataJSONArray = JSONArray.parseArray(dataStr); logger.info("dataJSONArray: " + dataJSONArray); if( dataJSONArray.size() !=0 ){ interfaceService.cabinetData(dataJSONArray); } retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } // 报警情况接口(warning) 货柜预警接口 @ResponseBody @RequestMapping(value = "/alarm") public String alarm(HttpServletRequest request) throws IOException { BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("alarm" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.alarm(JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } // 人员违规预警接口 @ResponseBody @RequestMapping(value = "/alarmperson") public String alarmperson(HttpServletRequest request) throws IOException { logger.info("/api/service/alarmperson"); BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("alarmperson" + data); String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.alarmperson(JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } //http://[URL]/smartlab/api/service/containerInfo @ResponseBody @RequestMapping(value = "/containerInfo") public Object getContainerInfo(@RequestParam String startTime, @RequestParam String endTime) { logger.info("getContainerInfo start..."); List warehouseList = sysWarehouseContainerService.getSysWarehouseContainerInfoList(startTime, endTime); List laboratoryList = sysLaboratoryContainerService.getSysLaboratoryContainerInfoList(startTime, endTime); List datalist = Lists.newArrayListWithCapacity(warehouseList.size() + laboratoryList.size()); for (SysWarehouseContainer container : warehouseList) { Map map = Maps.newHashMapWithExpectedSize(3); datalist.add(map); map.put("containerCode", container.getContainerCode()); map.put("containerName", container.getName()); map.put("validFlag", container.getValidFlag().getKey()); map.put("type", this.baseMetaService.getBaseMetaKey(container.getType())); map.put("place", "0"); map.put("left", this.baseMetaService.getBaseMetaKey(container.getCharacterLeft())); map.put("right", this.baseMetaService.getBaseMetaKey(container.getCharacterRight())); } for (SysLaboratoryContainer container : laboratoryList) { Map map = Maps.newHashMapWithExpectedSize(3); datalist.add(map); map.put("containerCode", container.getContainerCode()); map.put("containerName", container.getName()); map.put("validFlag", container.getValidFlag().getKey()); map.put("type", this.baseMetaService.getBaseMetaKey(container.getType())); map.put("place", "1"); map.put("left", this.baseMetaService.getBaseMetaKey(container.getCharacterLeft())); map.put("right", this.baseMetaService.getBaseMetaKey(container.getCharacterRight())); } logger.info("getContainerInfo end..."); return ResponseModel.getOkInstence(datalist); } @ResponseBody @RequestMapping(value = "/reagentInfo") public Object getReagentInfo(@RequestParam String startTime, @RequestParam String endTime, @RequestParam String containerCode, @RequestParam String status) { logger.info("getReagentInfo start..."); String containerid = null; SysLaboratoryContainer laboratoryContainer = sysLaboratoryContainerDao .getSysLaboratoryContainerByContainerCode(containerCode); if (Objects.isNull(laboratoryContainer)) { SysWarehouseContainer warehouseContainer = sysWarehouseContainerDao .getSysWarehouseContainerByContainerCode(containerCode); if (Objects.isNull(warehouseContainer)) { JSONObject retJSON = new JSONObject(); logger.error("The containerCode:" + containerCode + " has not been exists!"); retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + "The containerCode:" + containerCode + " has not been exists!"); return retJSON.toJSONString(); } else { containerid = warehouseContainer.getId(); } } else { containerid = laboratoryContainer.getId(); } List reagetList = opeReagentStatusService.getOpeReagentStatusInfoList(startTime, endTime, containerid, status); List datalist = Lists.newArrayListWithCapacity(reagetList.size()); for (OpeReagentStatus opeReagentStatus : reagetList) { Map map = Maps.newHashMapWithExpectedSize(4); datalist.add(map); map.put("reagentCode", opeReagentStatus.getReagentCode()); map.put("reagentName", opeReagentStatus.getReagent().getName()); map.put("cas", opeReagentStatus.getReagent().getCas()); map.put("reagentType", opeReagentStatus.getReagent().getReagentType()); map.put("deadline", opeReagentStatus.getReagent().getDeadline()); map.put("specification", opeReagentStatus.getReagent().getReagentFormat()); map.put("itemNumber", opeReagentStatus.getArticleNumber()); map.put("producer", opeReagentStatus.getReagent().getProductHome()); map.put("density", opeReagentStatus.getReagent().getDensity()); if (opeReagentStatus.getReagent().getMainMetering() == null){ map.put("masterMetering",opeReagentStatus.getReagent().getReagentUnit()); }else{ map.put("masterMetering", opeReagentStatus.getReagent().getMainMetering()); } } logger.info("getReagentInfo end..."); return ResponseModel.getOkInstence(datalist); } @ResponseBody @RequestMapping(value = "/userInfo") public Object getUserInfo(@RequestParam String startTime, @RequestParam String endTime) { logger.info("getUserInfo start..."); List userList = sysUserService.getSysUserInfoList(startTime, endTime); List allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null,null,null); List allWarehouseContainerList = sysWarehouseContainerService.getSysWarehouseContainerList(null,null,null,null,null); List containerCodeList = new ArrayList(); List wareContainerCodeList = new ArrayList(); for (SysLaboratoryContainer laboratoryContainer : allLaboratoryContainerList) { containerCodeList.add(laboratoryContainer.getContainerCode()); } for (SysWarehouseContainer warehouseContainer : allWarehouseContainerList) { containerCodeList.add(warehouseContainer.getContainerCode()); wareContainerCodeList.add(warehouseContainer.getContainerCode()); } List datalist = Lists.newArrayListWithCapacity(userList.size()); for (SysUser user : userList) { Map 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("department", user.getDepartment()); if (StringUtils.isNotBlank(user.getContainerCodeList())) { map.put("containerCodeList", ArrayUtils.addAll(user.getContainerCodeList().split(","), (String[])wareContainerCodeList.toArray(new String[0]))); } if(user.getSeeFlag().ordinal() == SeeFlag.MANAGE.ordinal() || user.getSeeFlag().ordinal() == SeeFlag.LEADING.ordinal()){ map.put("containerCodeList", containerCodeList); } } logger.info("getUserInfo end..."); return ResponseModel.getOkInstence(datalist); } @RequestMapping(value = "/putInLaboratory", produces = {"application/json;charset=UTF-8"}, method = RequestMethod.POST) @ResponseBody public String putInLaboratory(HttpServletRequest request, String reagentCode, String barCode, String containerCode) { try { logger.info("PutInLaboratory start..."); logger.info("Params : reagentCode[" + reagentCode + "], barCode[" + barCode + "], containerCode[" + containerCode + "]"); // 检查用户 String idCard = this.getIdCardFromHeader(request); if (StringUtils.isBlank(idCard)) { throw new BusinessException(ExceptionEnumCode.PARAM_NULL, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NULL.getCode(), "用户卡号")); } SysUser sysUser = this.sysUserService.getSysUserByIdCard(idCard); if (sysUser == null) { if(idCard.length()==20){//截取长度为8的卡号再次查询 idCard=idCard.substring(10,18); sysUser = this.sysUserService.getSysUserByIdCard(idCard); if(sysUser==null){ throw new BusinessException(ExceptionEnumCode.PARAM_NO_EXIST, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NO_EXIST.getCode(), "用户卡号", idCard)); } }else { throw new BusinessException(ExceptionEnumCode.PARAM_NO_EXIST, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NO_EXIST.getCode(), "用户卡号", idCard)); } } // 检查试剂条码 if (StringUtils.isBlank(reagentCode)) { throw new BusinessException(ExceptionEnumCode.PARAM_NULL, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NULL.getCode(), "试剂条码")); } // 检查地点条码 if (StringUtils.isBlank(barCode)) { throw new BusinessException(ExceptionEnumCode.PARAM_NULL, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NULL.getCode(), "地点条码")); } // 检查货柜条码 if (StringUtils.isBlank(containerCode)) { throw new BusinessException(ExceptionEnumCode.PARAM_NULL, MessageUtil.getMessageByCode(ExceptionEnumCode.PARAM_NULL.getCode(), "货柜条码")); } this.opeReagentStatusService.putReagentInLaboratory(reagentCode, barCode, containerCode, sysUser); return this.getOkResponseString(); } catch (BusinessException e) { logger.error("试剂放入实验室柜失败", e); return this.getResponseString(e.getErrorCode().getCode(), e.getMessage()); } catch (Exception e) { logger.error("试剂放入实验室柜失败", e); return this.getSysErrResponseString(); } finally { logger.info("PutInLaboratory end..."); } } // // // @RequestMapping(value = "/setWarning", produces = {"application/json;charset=UTF-8"}, method = RequestMethod.POST) // @ResponseBody // public String setWarning(HttpServletRequest request) throws ParseException, IOException, ApiException { // BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); // String str = ""; // String inputLine; // try { // while ((inputLine = reader.readLine()) != null) { // str += inputLine; // } // reader.close(); // } catch (IOException e) { // System.out.println("IOException: " + e); // } // JSONObject jsonObject = JSON.parseObject(str); // SysWarning sysWarning = new SysWarning(); // if (!jsonObject.containsKey("controllerCode") // || ! jsonObject.containsKey("data")) { // throw new ApiException(ApiStatus.PARAM_NO_EXIST); // } // // String controllerCode = jsonObject.getString("controllerCode"); // // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String dataStr = jsonObject.getString("data"); // // // JSONObject dataJson = JSON.parseObject(dataStr); // // if (!dataJson.containsKey("warningId") // || !dataJson.containsKey("userId") // || !dataJson.containsKey("warningTime") // || !dataJson.containsKey("warningLevel") // || !dataJson.containsKey("containerCode") // || !dataJson.containsKey("warningPoint")) { // throw new ApiException(ApiStatus.PARAM_NO_EXIST); // } // // String containerCode = dataJson.getString("containerCode"); // String warningId = dataJson.getString("warningId"); // String userId = dataJson.getString("userId"); // String warningTimeStr = dataJson.getString("warningTime"); // Integer warningLevelInt = dataJson.getInteger("warningLevel"); // Integer warningPoint = dataJson.getInteger("warningPoint"); // // sysWarning.setUserId(userId); // sysWarning.setWarningTime(sdf.parse(warningTimeStr)); // sysWarning.setWarningPoint(warningPoint); // sysWarning.setWarningLevel(warningLevelInt); // sysWarning.setWarningId(warningId); // sysWarning.setId(IDUtils.uuid()); // // // SysLaboratoryContainer laboratoryContainer = sysLaboratoryContainerDao.getSysLaboratoryContainerByContainerCode(containerCode); // if (Objects.isNull(laboratoryContainer)) { // SysWarehouseContainer warehouseContainer = sysWarehouseContainerDao.getSysWarehouseContainerByContainerCode(containerCode); // if (Objects.isNull(warehouseContainer)) { // logger.error("The containerCode:"+containerCode+" has not been exists!"); // } else { // sysWarning.setContainerId(warehouseContainer.getId()); // } // } else { // sysWarning.setContainerId(laboratoryContainer.getId()); // } // JSONObject retJSON = new JSONObject(); // try { // sysWarningService.insert(sysWarning); // retJSON.put("code", ApiStatus.OK.getRetCode()); // retJSON.put("message", ApiStatus.OK.getRetMsg()); // } catch (Exception e) { // retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); // StackTraceElement[] stackTraceElements = e.getStackTrace(); // // StringBuilder sb = new StringBuilder(); // sb.append(e.toString()); // for (StackTraceElement stackTraceElement : stackTraceElements) { // sb.append("\n"); // sb.append(stackTraceElement.toString()); // } // retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); // } // return retJSON.toJSONString(); // } // 智能柜温度,湿度,气体浓度数据接口 @RequestMapping(value = "/tempSensors") @ResponseBody public String tempSensors(HttpServletRequest request) throws ParseException, IOException, ApiException { logger.info("tempSensors start..."); JSONObject retJSON = new JSONObject(); BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); String str = ""; String inputLine; try { while ((inputLine = reader.readLine()) != null) { str += inputLine; } reader.close(); } catch (IOException e) { logger.info(e.getMessage()); } JSONObject jsonObject = JSON.parseObject(str); if (!jsonObject.containsKey("data")) { logger.error("data has not been exists!"); retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + "data has not been exists!"); return retJSON.toJSONString(); } // 2.2 Body参数: // 货柜条码 containerCode String ○ // 数据 data JSONArray SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dataStr = jsonObject.getString("data"); String containerCode = jsonObject.getString("containerCode"); logger.info("dataStr:" + dataStr); JSONArray dataJsonArray = null; Iterator dataIt = null; JSONObject dataJson = null; try{ dataJsonArray = JSONArray.parseArray(dataStr); logger.info("dataJsonArray:" + dataJsonArray.size()); dataIt = dataJsonArray.iterator(); } catch (Exception e){ e.printStackTrace(); } int type = 0; String containerId = null; logger.info("The containerCode:" + containerCode + " finding!"); // 查找货柜条码对应货柜信息 SysLaboratoryContainer laboratoryContainer = sysLaboratoryContainerDao .getSysLaboratoryContainerByContainerCode(containerCode); if (Objects.isNull(laboratoryContainer)) { SysWarehouseContainer warehouseContainer = sysWarehouseContainerDao .getSysWarehouseContainerByContainerCode(containerCode); if (Objects.isNull(warehouseContainer)) { logger.error("The containerCode:" + containerCode + " has not been exists!"); retJSON.put("code", ApiStatus.PARAM_NO_EXIST.getRetCode()); retJSON.put("message", ApiStatus.PARAM_NO_EXIST.getRetMsg() + "--" + "The containerCode:" + containerCode + " has not been exists!"); return retJSON.toJSONString(); } else { type = TempSensors.TYPE_WAREHOUSE_CONTAINER; containerId = warehouseContainer.getId(); } } else { type = TempSensors.TYPE_LABORATORY_CONTAINER; containerId = laboratoryContainer.getId(); } while (dataIt.hasNext()) { logger.info("dataIt.hasNext()" ); dataJson = JSONObject.parseObject(dataIt.next().toString()); logger.info("dataJson" +dataJson.toJSONString() ); // // 2.2.1.数据JSON格式 // 温度值 Temp Float ○ // 湿度值 Humidity Float ○ // 气体浓度 voc1 Float ○ // 报警信息 Flag Integer // 更新时间 updateTime String ○ if (!dataJson.containsKey("Temp") || !dataJson.containsKey("Humidity") || !dataJson.containsKey("voc1") || !dataJson.containsKey("Flag") || !dataJson.containsKey("updateTime")) { retJSON.put("code", ApiStatus.PARAM_NO_EXIST.getRetCode()); retJSON.put("message", ApiStatus.PARAM_NO_EXIST.getRetMsg() + "--" + "data has not been exists!"); return retJSON.toJSONString(); } Float temp = dataJson.getFloat("Temp"); Float humidity = dataJson.getFloat("Humidity"); Float voc1 = dataJson.getFloat("voc1"); String flag = dataJson.getString("Flag"); if (flag == null || flag.isEmpty() || flag.length() < 5) { continue; } 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); TempSensors tempSensors = new TempSensors(); tempSensors.setContainerId(containerCode); /* tempSensors.setFlag(flag); */ tempSensors.setTemp(temp); tempSensors.setHumidity(humidity); tempSensors.setVoc1(voc1); tempSensors.setFlag(flag); tempSensors.setUpdateTime(sdf.parse(updateTime)); tempSensors.setId(IDUtils.uuid()); tempSensors.setType(type); tempSensors.setContainerId(containerId); try { // 将温度、湿度、气体浓度保存到数据库 tempSensorsService.insert(tempSensors); sysLaboratoryContainerService.updateInfo(temp,humidity,voc1,containerId,flag); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } } return retJSON.toJSONString(); } /** * 获取试剂柜试剂最新状态接口 * * @param containerCode * @return */ //http://[URL]/smartlab/api/service/getReagentStatusByContainerCode @ResponseBody @RequestMapping(value = "/getReagentStatusByContainerCode") public Object getReagentStatusByContainerCode(@RequestParam String containerCode) { logger.info("getReagentStatusByContainerCode start..."); JSONObject retJSON = new JSONObject(); try { if (StringUtils.isBlank(containerCode)) { throw new ApiException(ApiStatus.PARAM_NO_EXIST); } List list = opeReagentStatusService.getReagentStatusByContainerCode(containerCode); list.stream().forEach(info->info.setContainerCode(containerCode)); return ResponseModel.getOkInstence(list); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } return retJSON; } /** * 获取试剂柜APP版本 * * @param containerCode * @return */ //http://[URL]/smartlab/api/service/getContainerVersion @ResponseBody @RequestMapping(value = "/getContainerVersion") public Object getContainerVersion(HttpServletRequest request) { logger.info("getContainerVersion start..."); JSONObject retJSON = new JSONObject(); List versionList = this.baseMetaService.getBaseMetaList("containerversion", "", 0, 1); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); retJSON.put("version", versionList.get(0).getMetaValue()); return retJSON; } @ResponseBody @RequestMapping(value = "/getAppVersion") public Object getAppVersion(HttpServletRequest request) { logger.info("getAppVersion start..."); JSONObject retJSON = new JSONObject(); try { List list = this.sysFileService.getSysFileList(null, null, null); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); if(list==null&&list.size()==0){ retJSON.put("data", null); }else { SysFile sysFile=list.get(0); Map map=new HashMap(); map.put("newOrOld",sysFile.getNewOrOld()); map.put("version",sysFile.getVersion()); String urlPrefix = instituteUrl.replace("http://", ""); map.put("downLoadUrl",urlPrefix+"/smartlab/api/service/downloadFile?id="+sysFile.getId()); retJSON.put("data",map); } }catch (Exception e){ retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); retJSON.put("message", e.getMessage()); } return retJSON; } @ResponseBody @RequestMapping(value = "/getAllFile") public Object getAllFile(HttpServletRequest request) { logger.info("getAllFile start..."); JSONObject retJSON = new JSONObject(); try { List list = this.sysFileService.getSysFileList(null, null, null); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); retJSON.put("data", list); }catch (Exception e){ retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); retJSON.put("message", e.getMessage()); } return retJSON; } @ResponseBody @RequestMapping(value = "/downloadFile") public HttpServletResponse downloadFile(HttpServletRequest request, String id, HttpServletResponse response){ SysFile sysFile=this.sysFileService.getSysFileById(id); try { // path是指欲下载的文件的路径。 File file = new File(sysFile.getUrl()); // 取得文件名。 String filename = file.getName(); // 取得文件的后缀名。 String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(sysFile.getUrl())); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); String name=new String(filename.getBytes("UTF-8"),"ISO-8859-1"); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + name); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } return response; } @RequestMapping(value = "/dataLogin") public ModelAndView login(HttpServletRequest request){ UsernamePasswordToken token = new UsernamePasswordToken("admin", "123456789"); token.setRememberMe(true); BaseController baseController=new BaseController(); Subject currentUser = baseController.getSubject(); try { currentUser.login(token); } catch (UnknownAccountException e) { FacesUtils.warn("用户名不存在"); return null; } catch (Exception e) { logger.error("登陆失败", e); } if (currentUser.isAuthenticated()) {//登录成功进入主页 SysUser user = this.sysUserService.getSysUserByAccount("admin"); currentUser.getSession(true).setAttribute(Constants.SESSION_USER, user); currentUser.getSession(true).getId(); MenuController menuController=new MenuController(); menuController.initPage(); //return "redirect:http://192.168.1.195:8888/smartlab_war_exploded/index.xhtml"; return new ModelAndView("redirect:/index.xhtml"); } else { FacesUtils.warn("用户名与密码不匹配"); } return null; /*JSONObject retJSON = new JSONObject(); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); System.out.println(5); return retJSON;*/ } //从柜子的设备码根据设备的所在实验室的课题组的课题组下的所有用户,没有课题组则返回用部门搜索 @ResponseBody @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 + ",endTime=" + endTime); //1.课题组下的用户 List userList= interfaceService.getUserListByContainerCodeNew(containerCode, startTime, endTime); if (userList == null) { //2.否则部门下用户 userList = interfaceService.getUserListByContainerCode(containerCode, startTime, endTime); } List datalist = Lists.newArrayListWithCapacity(userList.size()); for (SysUser user : userList) { Map 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()); 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 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 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 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 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) { ReagentReceivingDto reagentReceivingDtos = new ReagentReceivingDto(); 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 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.如果是入智能柜,则该智能柜下需要存在对应的实验室和实验室柜子 SysWarehouseContainer sysWarehouseContainer = sysWarehouseContainerService.getSysWarehouseContainer(inWarehouseInfo.getContainerId()); if(this.baseMetaService.getBaseMetaKey(sysWarehouseContainer.getType()).equals("200")) { reagentReceivingDtos.setReagentCode(inWarehouseInfo.getReagentCode()); reagentReceivingDtos.setApplyUserId(inWarehouseInfo.getUser()); SysLaboratoryContainer sysLaboratoryContainer = sysLaboratoryContainerService.getSysLaboratoryContainerByContainerCode(sysWarehouseContainer.getContainerCode()); if (null != sysLaboratoryContainer){ reagentReceivingDtos.setLabId(sysLaboratoryContainer.getLaboratoryId()); reagentReceivingDtos.setLabContainerId(sysLaboratoryContainer.getId()); }else { return ResponseModel.getErrInstance("该仓库货柜为智能柜,但是未创建相同货柜条码的实验室临时存储柜"); } } //4.入库 sysWarehouseService.putInWarehouse(inWarehouseInfo); //5.如果是入智能柜,则需再领用到智能柜里 if (StringUtils.isNotBlank(reagentReceivingDtos.getLabContainerId())){ sysWarehouseService.reagentReceiving(reagentReceivingDtos); } 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("系统出错"); } } /** * @Description: 试剂转移到另一个柜子 * ope_reagent_status 根据reagent_code修改houseid containerid userid updatetime * OpeLaboratoryReserve 根据ope_reagent_status信息查出旧数据删除 再插入新数据 * OpeUseFlow 插入试剂流向追踪表 */ @ResponseBody @RequestMapping("reagentTransfer") public Object reagentTransfer(@RequestBody ReagentReceivingDto reagentReceiving) { try { if (reagentReceiving.getReagentCode() == null || reagentReceiving.getReagentCode().size() == 0) { return ResponseModel.getErrInstance("请选择申领试剂"); } if (StringUtils.isBlank(reagentReceiving.getApplyUserId())|| StringUtils.isBlank(reagentReceiving.getLabContainerId()) || StringUtils.isBlank(reagentReceiving.getLabId())){ FacesUtils.warn("请选择申领人、实验室、货柜"); } for (String reagentCode : reagentReceiving.getReagentCode()) { OpeReagentStatus opeReagentStatus = opeReagentStatusService .getOpeReagentStatusByReagentCode(reagentCode); if (opeReagentStatus == null){ return ResponseModel.getErrInstance(reagentCode+",该试剂在库存中不存在"); } } String number = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); for (String reagentCode : reagentReceiving.getReagentCode()) { OpeReagentStatus opeReagentStatus = opeReagentStatusService .getOpeReagentStatusByReagentCode(reagentCode); opeLaboratoryReserveService.updateByReagent(opeReagentStatus.getReagentId(), opeReagentStatus.getHouseId(), opeReagentStatus.getContainerId(), opeReagentStatus.getUserId()); OpeLaboratoryReserve lr = new OpeLaboratoryReserve(); lr.setReagentId(opeReagentStatus.getReagentId()); lr.setHouseId(reagentReceiving.getLabId()); lr.setContainerId(reagentReceiving.getLabContainerId()); lr.setReserve(1); lr.setUserId(reagentReceiving.getApplyUserId()); lr.setValidFlag(ValidFlag.VALID); opeLaboratoryReserveService.insert(lr); opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER); opeReagentStatus.setUserId(reagentReceiving.getApplyUserId()); opeReagentStatus.setHouseId(reagentReceiving.getLabId()); opeReagentStatus.setContainerId(reagentReceiving.getLabContainerId()); opeReagentStatusService.updateOpeReagentStatus(opeReagentStatus);//更新试剂状态表 OpeUseFlow opeUseFlowExist = opeUseFlowService.getOpeUseFlowByCode(opeReagentStatus.getReagentCode()); OpeUseFlow opeUseFlow = new OpeUseFlow(); opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode()); opeUseFlow.setStatus(opeReagentStatus.getStatus()); opeUseFlow.setHouseId(opeReagentStatus.getHouseId()); opeUseFlow.setContainerId(opeReagentStatus.getContainerId()); opeUseFlow.setUserId(opeReagentStatus.getUserId()); opeUseFlow.setPlace(opeReagentStatus.getPlace()); opeUseFlow.setStoreType(StoreType.DIRECTSTORE); opeUseFlow.setRemainder(opeUseFlowExist.getRemainder()); BaseMeta baseMeta = baseMetaService.getBaseMeta("operate_status",String.valueOf(OperateStatus.TRANSFER.getKey()),"转移"); opeUseFlow.setOperateState(baseMeta.getId()); opeUseFlow.setReceiptNumber(number); opeUseFlowService.insertOpeUseFlow(opeUseFlow); } return ResponseModel.getOkInstence("转移成功"); } catch (Exception e) { logger.error(e.getMessage(), e); return ResponseModel.getErrInstance("操作失败"); } } /** * @Description: 危废登录 * @date 2020/12/29 14:13 */ @ResponseBody @RequestMapping("hazardousWaste/login") public Object hazardousWaste(@RequestBody HazardousWasteUser user) { try { String account = user.getAccount(); if (StringUtils.isBlank(account)){ return ResponseModel.getErrInstance("账户名为空"); } HazardousWasteUser sysUser = sysUserService.getUserByAccount(account,null); if (sysUser == null){ return ResponseModel.getErrInstance("账户名不存在"); }else{ if (sysUser.getPassword().equals(MD5Utils.encode(user.getPassword()))){ if (sysUser.getAdminFlag() != 0){ user = sysUser; }else{ return ResponseModel.getErrInstance("用户不属于危废处理人员"); } return ResponseModel.getOkInstence(user); }else{ return ResponseModel.getErrInstance("密码错误"); } } }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 修改密码 * */ @ResponseBody @RequestMapping("hazardousWaste/changePwd") public Object changePwd(@RequestBody HazardousWasteUser user){ try { if (StringUtils.isBlank(user.getAccount())){ return ResponseModel.getErrInstance("账户名为空"); } SysUser sysUser = sysUserService.getSysUserByAccount(user.getAccount()); if (sysUser == null){ return ResponseModel.getErrInstance("账户名不存在"); }else{ if (sysUser.getPassword().equals(MD5Utils.encode(user.getPassword()))){ SysUser newUser = new SysUser(); newUser = sysUser; String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}"; if (!user.getNewpassword().matches(PW_PATTERN)){ return ResponseModel.getErrInstance("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上"); }else { newUser.setPassword(MD5Utils.encode(user.getNewpassword())); sysUserService.updateSysUser(newUser); return ResponseModel.getOkInstence("修改成功"); } }else{ return ResponseModel.getErrInstance("原密码错误"); } } }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 根据课题组名称获取部门、地址、所属人员 * */ @ResponseBody @RequestMapping("hazardousWaste/getLabAndUser") public Object getLabAndUser(@RequestParam(required=true) String project){ try { if (StringUtils.isBlank(project)){ return ResponseModel.getErrInstance("课题组不能为空"); } LaboratoryVo laboratoryVo = new LaboratoryVo(); List laboratoryList = sysLaboratoryService.getLaboratoryByProject(project); List laboratoryUserList = sysUserService.getUserByProject(project); laboratoryVo.setLaboratoryList(laboratoryList); laboratoryVo.setLaboratoryUsers(laboratoryUserList); return ResponseModel.getOkInstence(laboratoryVo); }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 录入危废信息 * */ @ResponseBody @RequestMapping("hazardousWaste/putWasteInfo") public Object putWasteInfo(@RequestBody HazardousWaste hazardousWaste){ try { if (StringUtils.isBlank(hazardousWaste.getDepartment()) || StringUtils.isBlank(hazardousWaste.getApplyPerson()) || StringUtils.isBlank(hazardousWaste.getProject()) || StringUtils.isBlank(hazardousWaste.getCreator())){ return ResponseModel.getErrInstance("部门、课题组、确认者、创建者、不能为空"); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); hazardousWaste.setTid(sdf.format(new Date())); hazardousWaste.setCreateTime(new Date()); hazardousWaste.setStatus("待确认"); HazardousWasteUser sysUser = sysUserService.getUserByAccount(null,hazardousWaste.getApplyPerson()); hazardousWaste.setUnit(sysUser.getCompany()); if (hazardousWaste.getAcid()== null){ hazardousWaste.setAcid(new BigDecimal(0)); } if (hazardousWaste.getAlkali()== null){ hazardousWaste.setAlkali(new BigDecimal(0)); } if (hazardousWaste.getOrganic()== null){ hazardousWaste.setOrganic(new BigDecimal(0)); } if (hazardousWaste.getSolid()== null){ hazardousWaste.setSolid(new BigDecimal(0)); } if (hazardousWaste.getMedical()== null){ hazardousWaste.setMedical(new BigDecimal(0)); } hazardousWaste.setUpdator(hazardousWaste.getCreator()); // hazardousWaste.setUpdatetime(new Date()); hazardousWasteService.insertInfo(hazardousWaste); return ResponseModel.getOkInstence("添加成功"); }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 根据用户名和危废角色获取危废列表 * */ @ResponseBody @RequestMapping("hazardousWaste/getWasteInfo") public Object getWasteInfo(@RequestParam(required=true) int adminFlag,@RequestParam(required=true) String name,@RequestParam(required=false) String status ,@RequestParam(required=false) String starttime,@RequestParam(required=false) String endtime){ try { if (StringUtils.isBlank(name)){ return ResponseModel.getErrInstance("姓名不能为空"); } List hazardousWasters = new ArrayList<>(); if (adminFlag == 2){ hazardousWasters = hazardousWasteService.setAllWasters(starttime,endtime,status,null); }else if (adminFlag == 1) { hazardousWasters = hazardousWasteService.setAllWasters(starttime,endtime,status,name); } return ResponseModel.getOkInstence(hazardousWasters); }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 更新订单状态(确认订单、拒绝订单) */ @ResponseBody @RequestMapping("hazardousWaste/changeStatus") public Object changeStatus(@RequestParam(required=true) String tid,@RequestParam(required=true) String status, @RequestParam(required=true) String updator){ try { if (StringUtils.isBlank(tid) || StringUtils.isBlank(status)){ return ResponseModel.getErrInstance("单号、状态不能为空"); } HazardousWaste hazardousWaste = hazardousWasteService.selectByTid(tid); if (hazardousWaste != null){ if (!hazardousWaste.getStatus().equals("待确认")){ return ResponseModel.getErrInstance("单据不为待确认无法修改"); }else if (status.equals("已确认") || status.equals("已拒绝")){ hazardousWaste.setStatus(status); hazardousWaste.setUpdator(updator); hazardousWaste.setUpdatetime(new Date()); hazardousWasteService.updateWaste(hazardousWaste); return ResponseModel.getOkInstence("修改成功"); }else { return ResponseModel.getErrInstance("单号状态不正确"); } }else { return ResponseModel.getErrInstance("单号不存在"); } }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 修改危废信息 * */ @ResponseBody @RequestMapping("hazardousWaste/editWasteInfo") public Object editWasteInfo(@RequestBody HazardousWaste hazardousWaste){ try { if (StringUtils.isBlank(hazardousWaste.getTid()) ||StringUtils.isBlank(hazardousWaste.getUpdator())){ return ResponseModel.getErrInstance("单号、更新人不能为空"); } HazardousWaste waste = hazardousWasteService.selectByTid(hazardousWaste.getTid()); if (waste != null){ if (!waste.getStatus().equals("已拒绝")){ return ResponseModel.getErrInstance("单据不为已拒绝无法修改"); }else { waste.setStatus("待确认"); if (hazardousWaste.getAcid()== null){ waste.setAcid(new BigDecimal(0)); }else { waste.setAcid(hazardousWaste.getAcid()); } if (hazardousWaste.getAlkali()== null){ waste.setAlkali(new BigDecimal(0)); }else { waste.setAlkali(hazardousWaste.getAlkali()); } if (hazardousWaste.getOrganic()== null){ waste.setOrganic(new BigDecimal(0)); }else { waste.setOrganic(hazardousWaste.getOrganic()); } if (hazardousWaste.getSolid()== null){ waste.setSolid(new BigDecimal(0)); }else { waste.setSolid(hazardousWaste.getSolid()); } if (hazardousWaste.getMedical()== null){ waste.setMedical(new BigDecimal(0)); }else { waste.setMedical(hazardousWaste.getMedical()); } waste.setUpdator(hazardousWaste.getUpdator()); waste.setUpdatetime(new Date()); hazardousWasteService.updateWaste(waste); return ResponseModel.getOkInstence("修改成功"); } }else { return ResponseModel.getErrInstance("单号不存在"); } }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } /** * 根据用户名获取危废全年统计列表 * */ @ResponseBody @RequestMapping("hazardousWaste/getWasteStatistics") public Object getWasteStatistics(@RequestParam(required=true) int adminFlag,@RequestParam(required=true) String name){ try { if (StringUtils.isBlank(name)){ return ResponseModel.getErrInstance("姓名不能为空"); } Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); String status = "已确认"; String starttime = year+"-01-01 00:00:00"; String endtime = year+"-12-31 23:59:59"; List hazardousWasters = new ArrayList<>(); if (adminFlag == 2){ hazardousWasters = hazardousWasteService.setAllWasterCount(starttime,endtime,status,null); }else if (adminFlag == 1) { hazardousWasters = hazardousWasteService.setAllWasterCount(starttime,endtime,status,name); } return ResponseModel.getOkInstence(hazardousWasters); }catch (Exception e){ e.printStackTrace(); logger.info(e); return ResponseModel.getErrInstance("系统出错"); } } // 处理人员违规预警接口 @ResponseBody @RequestMapping(value = "/delalarmperson") public String delalarmperson(HttpServletRequest request) throws IOException { logger.info("/api/service/delalarmperson"); BufferedReader br = request.getReader(); String str, data = ""; while((str = br.readLine()) != null){ data += str; } logger.info("delalarmperson" + data); // String userId = request.getHeader("userId"); JSONObject retJSON = new JSONObject(); try { interfaceService.delalarmperson(JSONObject.parseObject(data)); retJSON.put("code", ApiStatus.OK.getRetCode()); retJSON.put("message", ApiStatus.OK.getRetMsg()); } catch (ApiException e) { retJSON.put("code", e.getApiStatus().getRetCode()); retJSON.put("message", e.getErrorMessage()); } catch (Exception e) { retJSON.put("code", ApiStatus.SYS_ERR.getRetCode()); StackTraceElement[] stackTraceElements = e.getStackTrace(); StringBuilder sb = new StringBuilder(); sb.append(e.toString()); for (StackTraceElement stackTraceElement : stackTraceElements) { sb.append("\n"); sb.append(stackTraceElement.toString()); } retJSON.put("message", ApiStatus.SYS_ERR.getRetMsg() + "--" + sb.toString()); } return retJSON.toJSONString(); } @ResponseBody @RequestMapping("/getAllWarehouse") public Object getAllWarehouse() { try { List res = sysWarehouseService.getAllWarehouse(); return ResponseModel.getOkInstence(res); } catch (Exception e) { e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } @ResponseBody @RequestMapping(value = "addWarehouseStatus",method = RequestMethod.POST) public Object addWarehouseStatus(@RequestBody SysWarehouseStatus one){ try { one.setCreateTime(new Date()); sysWarehouseStatusService.addOne(one); return ResponseModel.getOkInstence("新增成功"); } catch (BusinessException e) { e.printStackTrace(); return ResponseModel.getErrInstance(e.getMessage()); } catch (Exception e) { e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } /** * 试剂流向追踪 * @return */ @ResponseBody @RequestMapping(value = "/reagentFlows",method = RequestMethod.GET) public Object reagentFlows(@RequestParam(required=false,defaultValue = "1") Integer pageNum,@RequestParam(required=false,defaultValue = "10") Integer pageSize,OpeUseFlowQueryDto opeUseFlowQueryDto){ try { return ResponseModel.getOkInstence(opeUseFlowService.getOpeUseFlowSimpleInfoList(pageNum, pageSize, opeUseFlowQueryDto)); }catch (Exception e){ e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } /** * 试剂管理分页查询 * @return */ @ResponseBody @RequestMapping(value = "/reagentList",method = RequestMethod.GET) public Object reagentList(@RequestParam(required=false,defaultValue = "1") Integer pageNum,@RequestParam(required=false,defaultValue = "10") Integer pageSize,String name,String cas){ try { return ResponseModel.getOkInstence(sysReagentService.reagentList(pageNum,pageSize,name,cas)); }catch (Exception e){ e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } /** * 实验室管理分页查询 * @return */ @ResponseBody @RequestMapping(value = "/labList",method = RequestMethod.GET) public Object labList(@RequestParam(required=false,defaultValue = "1") Integer pageNum,@RequestParam(required=false,defaultValue = "10") Integer pageSize,String name){ try { return ResponseModel.getOkInstence(sysLaboratoryService.getSysLaboratoryList(pageNum,pageSize,name)); }catch (Exception e){ e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } /** * 实验室临时库存管理分页查询 * @return */ @ResponseBody @RequestMapping(value = "/labContainerList",method = RequestMethod.GET) public Object labContainerList(@RequestParam(required=false,defaultValue = "1") Integer pageNum,@RequestParam(required=false,defaultValue = "10") Integer pageSize,String name,String controllerName){ try { return ResponseModel.getOkInstence(sysLaboratoryContainerService.getSysLaboratoryContainerList(pageNum,pageSize,name,controllerName)); }catch (Exception e){ e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } /** * 人员管理分页查询 * @return */ @ResponseBody @RequestMapping(value = "/userList",method = RequestMethod.GET) public Object userList(@RequestParam(required=false,defaultValue = "1") Integer pageNum,@RequestParam(required=false,defaultValue = "10") Integer pageSize,String name){ try { return ResponseModel.getOkInstence(sysUserService.getSysUserList(pageNum,pageSize,name)); }catch (Exception e){ e.printStackTrace(); return ResponseModel.getErrInstance("系统内部错误"); } } }