From 47a751cb301d05276ae5d75145d57b2d090fe4e1 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期一, 01 七月 2024 10:58:35 +0800
Subject: [PATCH] change

---
 src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java |  129 ++++++++++++++++++++++++++++++++----------
 1 files changed, 97 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java
index 0ee0932..646f52e 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysWarehouseServiceImpl.java
@@ -1,6 +1,7 @@
 package com.nanometer.smartlab.service;
 
 import com.nanometer.smartlab.dao.BaseMetaDao;
+import com.nanometer.smartlab.dao.OpeReagentStatusDao;
 import com.nanometer.smartlab.dao.SysWarehouseDao;
 import com.nanometer.smartlab.entity.*;
 import com.nanometer.smartlab.entity.dto.InWarehouseInfoDto;
@@ -23,10 +24,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * Created by cmower on 17/11/20.
@@ -52,6 +51,10 @@
     OpeUseFlowService opeUseFlowService;
     @Resource
     OpeWarehouseReserveService opeWarehouseReserveService;
+    @Resource
+    private SysLaboratoryService sysLaboratoryService;
+    @Resource
+    private OpeReagentStatusDao opeReagentStatusDao;
 
     @Transactional(propagation = Propagation.REQUIRED)
     public List<SysWarehouse> getSysWarehouseList(String type, String name, Integer first, Integer pageSize) {
@@ -89,7 +92,7 @@
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public SysWarehouse getSysWarehouse(String id) {
+    public SysWarehouse getSysWarehouse(Long id) {
         try {
             return this.sysWarehouseDao.getSysWarehouse(id);
         } catch (DataAccessException e) {
@@ -101,9 +104,9 @@
     @Transactional(propagation = Propagation.REQUIRED)
     public SysWarehouse insertSysWarehouse(SysWarehouse sysWarehouse) {
         try {
-            if (sysWarehouse.getId() == null) {
-                sysWarehouse.setId(IDUtils.uuid());
-            }
+//            if (sysWarehouse.getId() == null) {
+//                sysWarehouse.setId(IDUtils.uuid());
+//            }
             this.sysWarehouseDao.insertSysWarehouse(sysWarehouse);
             return sysWarehouse;
         } catch (DuplicateKeyException ex) {
@@ -146,7 +149,7 @@
                 return false;
             }
 
-            List<String> ids = new ArrayList<String>();
+            List<Long> ids = new ArrayList<Long>();
             for (SysWarehouse sysWarehouse : sysWarehouseList) {
                 ids.add(sysWarehouse.getId());
             }
@@ -168,9 +171,9 @@
 	public List<SysWarehouse> getAllSysWarehouseList() {
 		return this.sysWarehouseDao.getAllSysWarehouseList();
 	}
-	
+
 	@Transactional(propagation = Propagation.REQUIRED)
-    public boolean isSysWarehouseExist(String barCode, String editId) {
+    public boolean isSysWarehouseExist(String barCode, Long editId) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("barCode", barCode);
@@ -190,7 +193,7 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.REQUIRED)
     public void putInWarehouse(InWarehouseInfoDto inWarehouseInfo) throws Exception {
         List<String> codes = inWarehouseInfo.getReagentCode();
         if (codes !=null && codes.size()>0){
@@ -224,6 +227,21 @@
 
                 String reagentName = dangerousEncodes.get(0).getReagentName();
                 String cas = dangerousEncodes.get(0).getCas();
+                //危险性质 reagent_character
+                String dangerousInfo = dangerousEncodes.get(0).getMemo();
+                BaseMeta meta = baseMetaService.getBaseMeta("reagent_character", null, dangerousInfo);
+                BaseMeta baseMeta = new BaseMeta();
+                if (meta == null){
+                 //   baseMeta.setId(IDUtils.uuid());
+                    baseMeta.setGroupCode("reagent_character");
+                    baseMeta.setValidFlag(ValidFlag.VALID);
+                    baseMeta.setMetaValue(dangerousInfo);
+                    baseMeta.setMetaKey(dangerousInfo);
+                    baseMetaService.insertBaseMeta(baseMeta);
+                }else{
+                    baseMeta = meta;
+                }
+
                 //查找是否存在试剂
                 List<SysReagent> reagent = sysReagentService
                         .getReagent(reagentName, cas, factory.getId(), specifications.getId(), packing.getId());
@@ -231,32 +249,34 @@
                     OpeReagentStatus ors = new OpeReagentStatus();
                 if (reagent != null &&reagent.size()>0){
                     //存在试剂
-                    String reagentId = reagent.get(0).getId();
+                    Long reagentId = reagent.get(0).getId();
                     ors.setReagentId(reagentId);
 
                 }else{
                     //试剂不存在
                     SysReagent sr = new SysReagent();
-                    sr.setId(IDUtils.uuid());
+                 //   sr.setId(IDUtils.uuid());
                     sr.setCas(cas);
                     sr.setName(reagentName);
-                    sr.setProductHome(factory.getId());
-                    sr.setReagentFormat(specifications.getId());
-                    sr.setReagentUnit(packing.getId());
+                //    sr.setProductHome(factory.getId());
+//                    sr.setReagentFormat(specifications.getId());
+//                    sr.setReagentUnit(packing.getId());
+//                    //危险性质
+//                    sr.setReagentCharacter(baseMeta.getId());
                     //设备生成试剂类型 为3
                     sr.setType(3);
                     sr.setDangerousFlag(DangerousFlag.NORMAL);
                     SysReagent sysReagent = sysReagentService.insertSysReagent(sr);
-                    String reagentId = sysReagent.getId();
+                    Long reagentId = sysReagent.getId();
                     ors.setReagentId(reagentId);
                 }
 
-                ors.setId(IDUtils.uuid());
+              //  ors.setId(IDUtils.uuid());
                 //入仓库
-                ors.setStatus(ArrivalStatus.WAREHOUSE);
+                ors.setStatus(ArrivalStatus.WAREHOUSE.getKey());
                 //批号
                 ors.setArticleNumber(inWarehouseInfo.getArticleNumber());
-                ors.setValidFlag(ValidFlag.VALID);
+                ors.setValidFlag(ValidFlag.VALID.getKey());
                 ors.setContainerId(inWarehouseInfo.getContainerId());
                 ors.setHouseId(inWarehouseInfo.getWarehouseId());
                 ors.setUserId(inWarehouseInfo.getUser());
@@ -266,18 +286,14 @@
                 //更新试剂流向
                 OpeUseFlow opeUseFlow = new OpeUseFlow();
                 //入仓库
-                opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
+                opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE.getKey());
                 opeUseFlow.setContainerId(inWarehouseInfo.getContainerId());
                 opeUseFlow.setHouseId(inWarehouseInfo.getWarehouseId());
-                opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
+                opeUseFlow.setStoreType(StoreType.DIRECTSTORE.getKey());
                 opeUseFlow.setReagentCode(code);
                 //持有者
                 opeUseFlow.setUserId(inWarehouseInfo.getUser());
-                Map<String, String> metaMap = new HashMap<>();
-                metaMap.put("groupId", "operate_status");
-                metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
-                List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
-                opeUseFlow.setOperateState(baseMetaList.get(0).getId());
+                opeUseFlow.setOperateState(OperateStatus.WAREHOUSEIN.getKey());
                 opeUseFlowService.insertOpeUseFlow(opeUseFlow);
 
                 //更新仓库库存
@@ -290,10 +306,11 @@
                     opeWarehouseReserve.setArticleNumber(inWarehouseInfo.getArticleNumber());
                     opeWarehouseReserve.setReserve(0);
                     opeWarehouseReserve.setWarehouseId(inWarehouseInfo.getWarehouseId());
+                    opeWarehouseReserve.setUserId(1L);
                 }
                 //库存加1
                 opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + 1);
-                if (StringUtils.isBlank(opeWarehouseReserve.getId())) {
+                if (opeWarehouseReserve.getId()!=null) {
                     this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve);
                 } else {
                     this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
@@ -305,19 +322,67 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.REQUIRED)
     public void reagentReceiving(ReagentReceivingDto reagentReceiving) {
+
+
+
+        String number = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
+        String receiptNum = "BS" + number;
 
         reagentReceiving.getReagentCode().forEach(code->{
                 //
             OpeReagentStatus ors = opeReagentStatusService.getOpeReagentStatusByReagentCode(code);
             //1.更新试剂状态  在仓库-》领用
-            ors.setStatus(ArrivalStatus.PERSONAL);
+//            ors.setStatus(ArrivalStatus.PERSONAL);
             ors.setContainerId(reagentReceiving.getLabContainerId());
             ors.setHouseId(reagentReceiving.getLabId());
             ors.setUserId(reagentReceiving.getApplyUserId());
-            opeReagentStatusService.updateReagentStatus(ors);
+
+            if (opeReagentStatusService.isAllowWarehouseUse(ors)) {
+                // 减少库存
+                OpeWarehouseReserve opeWarehouseReserve = opeWarehouseReserveService.getOpeWarehouseReserve(
+                        ors.getReagent().getId(), ors.getArticleNumber());
+                opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() - 1);
+                opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
+            }
+            ors.setStatus(ArrivalStatus.NOREGISTER.getKey());
+            opeReagentStatusDao.updateOpeReagentStatusDao(ors);
+            OpeUseFlow opeUseFlow = new OpeUseFlow();
+            opeUseFlow.setReagentCode(ors.getReagentCode());
+            opeUseFlow.setStatus(ors.getStatus());
+            opeUseFlow.setHouseId(ors.getHouseId());
+            opeUseFlow.setContainerId(ors.getContainerId());
+            opeUseFlow.setUserId(ors.getUserId());
+            opeUseFlow.setPlace(ors.getPlace());
+            opeUseFlow.setRemainder(ors.getRemainder());
+            //新增 领用单号
+            opeUseFlow.setReceiptNumber(receiptNum);
+
+
+            opeUseFlow.setOperateState(OperateStatus.WAREHOUSEOUT.getKey());
+            this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
+
         });
 
     }
+
+    @Override
+    @Transactional
+    public void updateSysWarehouse2(SysWarehouse sysWarehouse, SysLaboratory sysLaboratory) {
+        //1.0更新自己
+        this.updateSysWarehouse(sysWarehouse);
+        //2.更新实验室
+        sysLaboratory.setInfoCode(sysWarehouse.getInfoCode());
+        sysLaboratory.setBarCode(sysWarehouse.getBarCode());
+        sysLaboratory.setLocation1(sysWarehouse.getLocation1());
+        sysLaboratory.setLocation2(sysWarehouse.getLocation2());
+        sysLaboratory.setDepartment(sysWarehouse.getDepartment());
+        sysLaboratoryService.updateSysLaboratory(sysLaboratory);
+    }
+
+    @Override
+    public List<Map> getAllWarehouse() {
+        return sysWarehouseDao.selectAllWarehouse();
+    }
 }

--
Gitblit v1.9.2