From 5ef5c096c23869fff7872cf498077d6924c679b2 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期四, 14 一月 2021 12:22:53 +0800
Subject: [PATCH] 添加智能柜转移试剂接口

---
 src/main/java/com/nanometer/smartlab/api/ApiAction.java |  206 ++++++++++++++++-----------------------------------
 1 files changed, 64 insertions(+), 142 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
index fc6e474..91c0c46 100644
--- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java
+++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -87,6 +87,10 @@
     private SysLaboratoryService sysLaboratoryService;
     @Resource
     private HazardousWasteService hazardousWasteService;
+    @Resource
+    private OpeLaboratoryReserveService opeLaboratoryReserveService;
+    @Resource
+    private OpeUseFlowService opeUseFlowService;
     @Value("${institute.url}")
     String instituteUrl;
 
@@ -1360,149 +1364,67 @@
 
     /**
      * @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.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: 危废登录

--
Gitblit v1.9.2