From 59d9ea33f503e363f2e2941c7c00cc9dd9d9d1c7 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期二, 28 十一月 2023 11:00:42 +0800
Subject: [PATCH] 修改课题管理bug

---
 src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java |  198 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 186 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
index a960d8d..87ac3c1 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
@@ -1,12 +1,15 @@
 package com.nanometer.smartlab.service;
 
 import com.nanometer.smartlab.dao.SysReagentDao;
+import com.nanometer.smartlab.entity.OpeWarehouseReserve;
 import com.nanometer.smartlab.entity.SysReagent;
 import com.nanometer.smartlab.entity.SysUser;
 import com.nanometer.smartlab.exception.AlarmCode;
 import com.nanometer.smartlab.exception.AlarmException;
 import com.nanometer.smartlab.exception.BusinessException;
 import com.nanometer.smartlab.exception.ExceptionEnumCode;
+import com.nanometer.smartlab.model.CommonPage;
+import com.nanometer.smartlab.util.ExcelUtils;
 import com.nanometer.smartlab.util.IDUtils;
 import com.nanometer.smartlab.util.MessageUtil;
 import org.apache.commons.lang.StringUtils;
@@ -20,10 +23,8 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 /**
  * Created by johnny on 17/11/29.
@@ -35,6 +36,8 @@
 
     @Resource(name = "sysReagentDao")
     SysReagentDao sysReagentDao;
+    @Resource
+    OpeWarehouseReserveService opeWarehouseReserveService;
 
     @Transactional(propagation = Propagation.REQUIRED)
     public List<SysReagent> getSysReagentList(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize) {
@@ -61,7 +64,7 @@
         }
     }
 
-    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize) {
+    public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId,Integer type, Integer first, Integer pageSize,String productSn) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("name", name);
@@ -70,6 +73,7 @@
             params.put("type", type);
             params.put("first", first);
             params.put("pageSize", pageSize);
+            params.put("productSn", productSn);
             return this.sysReagentDao.getSysReagentListNew(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
@@ -112,6 +116,164 @@
         return sysReagentDao.favorList(params);
     }
 
+    @Override
+    public int reagentCount(SysUser user, String name, String cas, String supplierId, String productSn) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("user", user.getId());
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("supplierId", supplierId);
+        params.put("productSn", productSn);
+        return sysReagentDao.reagentCount(params);
+    }
+
+    @Override
+    public List<SysReagent> reagentList(SysUser user, String name, String cas, String supplierId, String productSn, int first, int pageSize,int count) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("user", user.getId());
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("supplierId", supplierId);
+        params.put("productSn", productSn);
+        params.put("first", first);
+        params.put("pageSize", pageSize);
+        params.put("MaxSize", count);
+        return sysReagentDao.reagentList(params);
+    }
+
+    @Override
+    public CommonPage<SysReagent> reagentList(Integer pageNum,Integer pageSize,String name,String cas){
+        if(pageNum==null||pageNum<1){
+            pageNum=1;
+        }
+        if(pageSize==null||pageSize<1){
+            pageSize=10;
+        }
+        if(pageSize>50){
+            pageSize=50;
+        }
+        Map<String, Object> params = new HashMap<>();
+
+        params.put("name",name);
+        params.put("cas",cas);
+        params.put("first", (pageNum-1)*pageSize);
+        params.put("pageSize", pageSize);
+        CommonPage commonPage=new CommonPage();
+        commonPage.setPageNum(pageNum);
+        commonPage.setPageSize(pageSize);
+        Long total=new Long(sysReagentDao.reagentSimpleInfoCount(params));
+        commonPage.setTotal(total);
+        commonPage.setTotalPage(CommonPage.getTotalPage(total,pageSize));
+        List<SysReagent> sysReagents=sysReagentDao.reagentSimpleInfoList(params);
+        commonPage.setList(sysReagents);
+        return commonPage;
+    }
+
+    @Override
+    public String getReagentUnitByReagentId(String reagentId) {
+        return sysReagentDao.getReagentUnitByReagentId(reagentId);
+    }
+
+    @Override
+    public List<SysReagent> getReagent(String name, String cas, String factory, String specifications, String packing) {
+        Map<String, String> params = new HashMap<>();
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("factory", factory);
+        params.put("specifications", specifications);
+        params.put("packing", packing);
+        return sysReagentDao.getReagent(params);
+    }
+
+    @Override
+    public List<SysReagent> selectReagentSafetyNum() {
+
+        return sysReagentDao.selectReagentSafetyNum();
+    }
+
+    @Override
+    public void updateSafetyNum(SysReagent sysReagent) {
+        sysReagentDao.updateSafetyNum(sysReagent.getId(), sysReagent.getSafetynum());
+    }
+
+
+    /**
+    * @Description: 根据detail的信息获取试剂的id
+    * @date 2021/6/21 9:45
+    */
+    @Override
+    public SysReagent getReagentByDetail(Map<String, Object> detail) {
+        List<SysReagent> reagentIds = sysReagentDao.countReagentByDetail(detail);
+        if (reagentIds.size() != 1) {
+            return null;
+        }
+        return reagentIds.get(0);
+    }
+
+    @Override
+    public SysReagent getRowData(String rowKey) {
+        return sysReagentDao.getRowData(rowKey);
+    }
+
+    @Override
+    public SysReagent getSysReagentListNewRowData(String rowKey) {
+        return sysReagentDao.getSysReagentListNewRowData(rowKey);
+    }
+
+    @Override
+    public boolean export2Excel(List<Map> list, Integer type) throws Exception {
+        Map<String,String> map = new LinkedHashMap<>();
+        if (type == 0){
+            map.put("kind", "种类");
+            map.put("name", "名称");
+            map.put("productSn", "产品编号");
+            map.put("cas", "CAS");
+            map.put("reagentType", "试剂类型");
+            map.put("reagentCharacter", "危险性质");
+            map.put("supplierName", "供应商");
+            map.put("productHomeName", "厂家");
+            map.put("reagentFormat", "规格");
+            map.put("reagentUnit", "包装");
+            map.put("price", "含税售价");
+            map.put("perBox", "每箱数量");
+            ExcelUtils.export2Excel(list,"耗材列表",map);
+        }else {
+            map.put("kind", "种类");
+            map.put("name", "试剂名称");
+            map.put("control_products_name", "管制品");
+            map.put("productSn", "产品编号");
+            map.put("cas", "CAS");
+            map.put("reagentType", "试剂类型");
+            map.put("reagentCharacter", "危险性质");
+            map.put("supplierName", "供应商");
+            map.put("productHomeName", "厂家");
+            map.put("reagentFormat", "规格");
+            map.put("reagentUnit", "包装");
+            map.put("price", "含税售价");
+//            map.put("originprice", "原始售价");
+            map.put("perBox", "每箱数量");
+            map.put("safetynum", "安全库存");
+            ExcelUtils.export2Excel(list,"试剂列表",map);
+        }
+        return true;
+    }
+
+    @Override
+    public List<Map> selectAll(String name, String cas, String supplierId, Integer type, String productSn) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("supplierId", supplierId);
+        params.put("type", type);
+        params.put("productSn", productSn);
+        return sysReagentDao.selectAll(params);
+    }
+
+    @Override
+    public void updateSysReagentPrice(String reagentId, BigDecimal applyPrice) {
+        sysReagentDao.updateSysReagentPriceById(reagentId, applyPrice);
+    }
+
 
     @Transactional(propagation = Propagation.REQUIRED)
     public int getSysReagentTotalCount(String name, String cas, String supplierId,Integer type) {
@@ -135,13 +297,14 @@
     }
 
 
-    public int getSysReagentTotalCountNew(String name, String cas, String supplierId,Integer type) {
+    public int getSysReagentTotalCountNew(String name, String cas, String supplierId,Integer type,String productSn) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("name", name);
             params.put("cas", cas);
             params.put("type", type);
             params.put("supplierId", supplierId);
+            params.put("productSn", productSn);
             return this.sysReagentDao.getSysReagentTotalCountNew(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
@@ -169,7 +332,7 @@
             if (sysReagent.getId() == null) {
                 sysReagent.setId(IDUtils.uuid());
             }
-
+            sysReagent.setName(sysReagent.getName().trim());
             this.sysReagentDao.insertSysReagent(sysReagent);
             return sysReagent;
         } catch (DuplicateKeyException ex) {
@@ -187,6 +350,7 @@
     @Transactional(propagation = Propagation.REQUIRED)
     public boolean updateSysReagent(SysReagent sysReagent) {
         try {
+            sysReagent.setName(sysReagent.getName().trim());
             int row = this.sysReagentDao.updateSysReagent(sysReagent);
 
             if (row == 0) {
@@ -214,6 +378,11 @@
 
             List<String> ids = new ArrayList<String>();
             for (SysReagent sysReagent : sysReagentList) {
+                //判断试剂在库中是否存在
+                int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCount(sysReagent.getId(), sysReagent.getSupplierId());
+                if (count > 0) {
+                    throw new Exception();
+                }
                 ids.add(sysReagent.getId());
             }
 
@@ -229,20 +398,25 @@
         } catch (DataAccessException ex) {
             logger.error(ex.getMessage(), ex);
             throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw  new BusinessException(ExceptionEnumCode.SYS_ERR,"试剂在库中已经有了不能删除");
         }
     }
 
     @Override
+    @Transactional
     public int insertSysReagentList(List<SysReagent> sysReagentList) {
         try {
             int i = 0;
             for (SysReagent sysReagent:sysReagentList
                  ) {
-                SysReagent sysReagentTmpl = new SysReagent();
-                sysReagentTmpl = sysReagentDao.getSysReagentByCas(sysReagent);
-                if(sysReagentTmpl!=null){
-                    sysReagent.setId(sysReagentTmpl.getId());
-                    this.sysReagentDao.updateSysReagentForExport(sysReagent);
+                List<SysReagent> sysReagentTmpl = sysReagentDao.getSysReagentByCas(sysReagent);
+                if(sysReagentTmpl.size()>0){
+                    for (SysReagent sr : sysReagentTmpl) {
+                        sysReagent.setId(sr.getId());
+                        this.sysReagentDao.updateSysReagentForExport(sysReagent);
+                    }
                 }else{
                     if (sysReagent.getId() == null) {
                         sysReagent.setId(IDUtils.uuid());

--
Gitblit v1.9.2