From 422622d3121acde709e79ca9b92f30c47e05272c Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期日, 07 二月 2021 14:38:12 +0800
Subject: [PATCH] 修改枪领用

---
 src/main/java/com/nanometer/smartlab/api/ApiAction.java |  339 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 179 insertions(+), 160 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
index 3e28bcc..f87a8a5 100644
--- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java
+++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -28,6 +28,7 @@
 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;
@@ -49,44 +50,57 @@
 public class ApiAction extends BaseAction {
 
     private static Logger logger = Logger.getLogger(ApiAction.class);
-
+    @Lazy
     @Resource
     private SysUserService sysUserService;
+    @Lazy
     @Resource
     private OpeReagentStatusService opeReagentStatusService;
-    @Resource
-    private SysReagentService sysReagentService;
+    @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;
-
-    @Resource
-    private SysWarningService sysWarningService;
-
+    @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;
     @Value("${institute.url}")
     String instituteUrl;
 
@@ -563,7 +577,7 @@
         logger.info("getUserInfo start...");
 
         List<SysUser> userList = sysUserService.getSysUserInfoList(startTime, endTime);
-        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null);
+        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null,null,null);
         List<SysWarehouseContainer> allWarehouseContainerList = sysWarehouseContainerService.getSysWarehouseContainerList(null,null,null,null,null);
 
         List<String> containerCodeList = new ArrayList<String>();
@@ -1287,6 +1301,7 @@
         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);
@@ -1307,11 +1322,30 @@
                     if (ors != null) {
                         return ResponseModel.getErrInstance("该试剂危化品编码已存在");
                     }
-
                 }
 
-                //3.入库
+                //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("无试剂条码");
@@ -1360,149 +1394,68 @@
 
     /**
      * @Description: 试剂转移到另一个柜子
-     * @date 2020/12/24 14:19
+     * ope_reagent_status 根据reagent_code修改houseid containerid userid updatetime
+     * OpeLaboratoryReserve 根据ope_reagent_status信息查出旧数据删除 再插入新数据
+     * OpeUseFlow 插入试剂流向追踪表
      */
-//    @ResponseBody
-//    @RequestMapping("reagentTransfer")
-//    public Object reagentReceiving(@RequestBody ReagentReceivingDto reagentReceiving) {
-//        try {
-//            if (this.selectedTmpList == null || this.selectedTmpList.size() == 0) {
-//                FacesUtils.warn("请选择申领试剂。");
-//                return;
-//            }
-//
-//            if (this.userId == null) {
-//                FacesUtils.warn("请选择申领人。");
-//                return;
-//            }
-//            //领用单
-//            printTable = null;
-//            printTable = new Hashtable();
-//            List<ApplyListDto> applyList = new ArrayList<>();
-//            Map applyPersonInfo = sysUserService.getUser(userId);
-//            printTable.put("head", instituteName);
-//            printTable.put("title", "领用单");
-//            printTable.put("applyPerson", applyPersonInfo.get("name"));
-//            printTable.put("department", applyPersonInfo.get("meta_value"));
-//            printTable.put("date", Utils.now("yyyy-MM-dd"));
-//            printTable.put("phone", applyPersonInfo.get("phone"));
-//
-//            //int size = 0;
-//            int sum = 0;
-//            List<OpeWarehouseReserve> list=new ArrayList<>();
-//            List<OpeWarehouseReserve> list2=new ArrayList<>();
-//            for (OpeWarehouseReserve selectWarehouseReserve : this.selectedTmpList) {
-//                if(selectWarehouseReserve.getFlag()==1){
-//                    list.add(selectWarehouseReserve);
-//                }else{
-//                    list2.add(selectWarehouseReserve);
-//                }
-//            }
-//            if(list.size()>0&&list!=null){
-//                for (OpeWarehouseReserve selectWarehouseReserve : list) {
-//                    List<String> reagentCodes = selectWarehouseReserve.getReagentCodes();
-//                    if (reagentCodes != null && reagentCodes.size() > 0)
-//                        for (String opeReagentStatusId : reagentCodes) {
-//                            OpeReagentStatus opeReagentStatus = this.opeReagentStatusService
-//                                    .getOpeReagentStatus(opeReagentStatusId);
-//                            if (!this.opeReagentStatusService.isAllowWarehouseUse(opeReagentStatus)) {
-//                                FacesUtils.warn("只能申领在仓库的试剂。");
-//                                return;
-//                            }else {
-//                                opeReagentStatus.setHouseId(laboratoryId);
-//                                opeReagentStatus.setContainerId(laboratoryContainerId);
-//                                this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);//更新试剂状态表
-//                                OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
-//                                lr.setReagentId(selectWarehouseReserve.getReagentId());
-//                                lr.setHouseId(laboratoryId);
-//                                lr.setContainerId(laboratoryContainerId);
-//                                lr.setReserve(selectWarehouseReserve.getSelectNum());
-//                                lr.setUserId(userId);
-//                                lr.setValidFlag(ValidFlag.VALID);
-//                                this.opeLaboratoryReserveService.insert(lr);
-//                            }
-//                            //else {
-//                            //size++;
-//                            //}
-//                        }
-//                    ApplyListDto lis = new ApplyListDto();
-//                    Map reagentDetail = sysReagentService.getReagentDetail(selectWarehouseReserve.getReagentId());
-//                    lis.setNum(String.valueOf(selectWarehouseReserve.getSelectNum())); //数量
-//                    lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit")));
-//                    lis.setControlProducts((String) reagentDetail.get("controlProducts"));
-//                    lis.setProductName((String) reagentDetail.get("name"));
-//                    lis.setReagentFormat((String) reagentDetail.get("reagentFormat"));
-//                    lis.setProductCode((String)reagentDetail.get("productCode"));
-//                    lis.setMemo((String)reagentDetail.get("memo"));
-//                    applyList.add(lis);
-//                    sum += selectWarehouseReserve.getSelectNum();
-//                }
-//
-//                //if (size == 0) {
-//                //FacesUtils.warn("未选择一个条形码。");
-//                //return;
-//                //}
-//                this.opeWarehouseReserveService.claim(list, userId,projectNum);
-//            }
-//            if(list2.size()>0&&list2!=null){
-//                List<OpeApply> opeList=new ArrayList<>();
-//                //this.opeApplyService.getOpeApplyList(null,null,null,null,null)
-//                for(int i=0;i<list2.size();i++){
-//                    OpeApply opeApply=new OpeApply();
-//                    opeApply.setArticleNumber(list2.get(i).getArticleNumber());
-//                    opeApply.setHouseId(laboratoryId);
-//                    opeApply.setContainerId(laboratoryContainerId);
-//                    opeApply.setReagent(this.sysReagentService.getSysReagent(list2.get(i).getReagentId()));
-//                    opeApply.setStartReagentCode(list2.get(i).getStartReagentCode2());
-//                    opeApply.setEndReagentCode(list2.get(i).getEndReagentCode2());
-//                    opeList.add(opeApply);
-//                    OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
-//                    lr.setReagentId(list2.get(i).getReagentId());
-//                    lr.setHouseId(laboratoryId);
-//                    lr.setContainerId(laboratoryContainerId);
-//                    lr.setReserve(list2.get(i).getSelectNum());
-//                    lr.setUserId(userId);
-//                    lr.setValidFlag(ValidFlag.VALID);
-//                    this.opeLaboratoryReserveService.insert(lr);
-//                    //opeList.add(this.opeApplyService.getOpeApply(list2.get(i).getId()));
-//                    ApplyListDto lis = new ApplyListDto();
-//                    Map reagentDetail = sysReagentService.getReagentDetail(list2.get(i).getReagentId());
-//
-//                    lis.setNum(String.valueOf(list2.get(i).getSelectNum())); //数量
-//                    lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit")));
-//                    lis.setControlProducts((String) reagentDetail.get("controlProducts"));
-//                    lis.setProductName((String) reagentDetail.get("name"));
-//                    lis.setReagentFormat((String) reagentDetail.get("reagentFormat"));
-//                    lis.setProductCode((String)reagentDetail.get("productCode"));
-//                    lis.setMemo((String)reagentDetail.get("memo"));
-//                    applyList.add(lis);
-//
-//                    sum += list2.get(i).getSelectNum();
-//                }
-//                this.opeWarehouseReserveService.reagentDStore2(opeList,userId);
-//                for(int i=0;i<list2.size();i++){
-//                    list2.get(i).setReserve(list2.get(i).getReserve()-list2.get(i).getSelectNum());
-//                    opeWarehouseReserveDao.updateOpeWarehouseReserve(list2.get(i));
-//                }
-//
-//
-//                //opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve()-opeWarehouseReserve.getSelectNum());
-//                //opeWarehouseReserveDao.updateOpeWarehouseReserve(opeWarehouseReserve);
-//                //this.opeWarehouseReserveService.claim(list2, userId,projectNum);
-//            }
-//
-//            //领用票最后一行
-//            applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), ""));
-//            printTable.put("applyList", applyList);
-//
-//            FacesUtils.info("申领成功。");
-//            RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
-////            this.menuController.goToPage(Constants.PAGE_WAREHOUSE_STOCK_MNG, Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW);
-//        } catch (Exception e) {
-//            logger.error(e.getMessage(), e);
-//            FacesUtils.warn("操作失败。");
-//        }
-//    }
+    @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+",该试剂在库存中不存在");
+                }
+            }
+            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());
+                opeUseFlowService.insertOpeUseFlow(opeUseFlow);
+            }
+            return ResponseModel.getOkInstence("转移成功");
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return  ResponseModel.getErrInstance("操作失败");
+        }
+    }
 
     /**
      * @Description: 危废登录
@@ -1517,7 +1470,7 @@
                 return  ResponseModel.getErrInstance("账户名为空");
             }
 
-            HazardousWasteUser sysUser = sysUserService.getUserByAccount(account);
+            HazardousWasteUser sysUser = sysUserService.getUserByAccount(account,null);
             if (sysUser == null){
                 return  ResponseModel.getErrInstance("账户名不存在");
             }else{
@@ -1611,14 +1564,15 @@
     public Object putWasteInfo(@RequestBody HazardousWaste hazardousWaste){
         try {
             if (StringUtils.isBlank(hazardousWaste.getDepartment()) || StringUtils.isBlank(hazardousWaste.getApplyPerson())
-            || StringUtils.isBlank(hazardousWaste.getProject()) || StringUtils.isBlank(hazardousWaste.getUnit())
-                    || StringUtils.isBlank(hazardousWaste.getCreator())){
-                return  ResponseModel.getErrInstance("部门、单位、课题组、确认者、创建者、不能为空");
+            || 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));
             }
@@ -1635,7 +1589,7 @@
                 hazardousWaste.setMedical(new BigDecimal(0));
             }
             hazardousWaste.setUpdator(hazardousWaste.getCreator());
-            hazardousWaste.setUpdatetime(new Date());
+//            hazardousWaste.setUpdatetime(new Date());
             hazardousWasteService.insertInfo(hazardousWaste);
             return ResponseModel.getOkInstence("添加成功");
         }catch (Exception e){
@@ -1652,7 +1606,7 @@
      */
     @ResponseBody
     @RequestMapping("hazardousWaste/getWasteInfo")
-    public Object getLabAndUser(@RequestParam(required=true) int adminFlag,@RequestParam(required=true) String name,@RequestParam(required=false) String status
+    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)){
@@ -1677,7 +1631,7 @@
      */
     @ResponseBody
     @RequestMapping("hazardousWaste/changeStatus")
-    public Object getLabAndUser(@RequestParam(required=true) String tid,@RequestParam(required=true) String status,
+    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)){
@@ -1764,4 +1718,69 @@
     }
 
 
+    /**
+     * 根据用户名获取危废全年统计列表
+     *
+     */
+    @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<HazardousWaste> 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();
+    }
 }

--
Gitblit v1.9.2