From 7f01ee9b40b5ee18f53caed2132bbe6150975b3f Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: 星期二, 01 十二月 2020 17:52:04 +0800
Subject: [PATCH] 申购试剂-试剂库优化

---
 src/main/java/com/nanometer/smartlab/controller/ApplyMngController.java |   58 +++++++--
 src/main/java/com/nanometer/smartlab/service/SysReagentService.java     |    6 
 src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml              |  113 ++++++++++++++++++
 src/main/webapp/apply_mng_new.xhtml                                     |   61 +++++++++
 src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java             |    5 
 src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java |   84 ++++++--------
 6 files changed, 259 insertions(+), 68 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/ApplyMngController.java b/src/main/java/com/nanometer/smartlab/controller/ApplyMngController.java
index 948123a..aa4e293 100644
--- a/src/main/java/com/nanometer/smartlab/controller/ApplyMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/ApplyMngController.java
@@ -69,22 +69,17 @@
     private Timestamp endDeadline;
     private Integer status;
     private Integer favor;
-    private boolean favorFlag;
     private List<ApplyStatus> statusSelectList;
 
     private LazyDataModel<SysReagent> reagentDataModel;
+    private LazyDataModel<SysReagent> reagentFavorDataModel;
     private String applyNewReagentName;
     private String applyNewCas;
     private String applyNewSn;
     private SysReagent selectReagent;
 
-    public boolean isFavorFlag() {
-        return favorFlag;
-    }
 
-    public void setFavorFlag(boolean favorFlag) {
-        this.favorFlag = favorFlag;
-    }
+
 
     public SysReagent getSelectReagent() {
         return selectReagent;
@@ -519,10 +514,10 @@
                 public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                     List<SysReagent> list = null;
                     try {
-                        int count = sysReagentService.getSysReagentTotalCount2(getUser(),favorFlag ? 1 :null,applyNewReagentName, applyNewCas, applyNewSn,null);
+                        int count = sysReagentService.favorCount(getUser(), applyNewReagentName, applyNewCas, null, applyNewSn, 0);
                         this.setRowCount(count);
                         if (count > 0) {
-                            list = sysReagentService.getSysReagentList2(getUser(),favorFlag ? 1 : null,applyNewReagentName, applyNewCas, applyNewSn,null, first, pageSize);
+                            list = sysReagentService.favorList(getUser(), applyNewReagentName, applyNewCas, null, applyNewSn, 0, first, pageSize);
                         }
                     } catch (Exception e) {
                         logger.error(e);
@@ -548,6 +543,45 @@
         }
 
         return reagentDataModel;
+    }
+
+
+    public LazyDataModel<SysReagent> getReagentFavorDataModel() {
+        if (this.reagentFavorDataModel == null) {
+            this.reagentFavorDataModel = new LazyDataModel<SysReagent>() {
+                @Override
+                public List<SysReagent> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
+                    List<SysReagent> list = null;
+                    try {
+                        int count = sysReagentService.favorCount(getUser(), null, null, null,null,1);
+                        this.setRowCount(count);
+                        if (count > 0) {
+                            list = sysReagentService.favorList(getUser(),null, null,null, null,1, first, pageSize);
+                        }
+                    } catch (Exception e) {
+                        logger.error(e);
+                    }
+                    return list;
+                }
+
+                @Override
+                public SysReagent getRowData(String rowKey) {
+                    Iterator<SysReagent> iterator = this.iterator();
+                    if (iterator != null) {
+                        SysReagent sr = null;
+                        while (iterator.hasNext()) {
+                            sr = iterator.next();
+                            if (rowKey.equals(sr.getId())) {
+                                return sr;
+                            }
+                        }
+                    }
+                    return null;
+                }
+            };
+        }
+
+        return reagentFavorDataModel;
     }
 
     public LazyDataModel<OpeApply> getApplyHistoryDataModel() {
@@ -915,11 +949,5 @@
     }
 
 
-    public Integer getFavor() {
-        return favor;
-    }
 
-    public void setFavor(Integer favor) {
-        this.favor = favor;
-    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java
index 056dee3..db952e6 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.java
@@ -25,6 +25,9 @@
     public int deleteSysReagent(List<String> ids) throws DataAccessException;
 
     public List<SysReagent> query();
-
+    //试剂库总数
+    int reagentCount(Map params);
+    int favorCount(Map params);
+    List<SysReagent> favorList(Map params);
     Map getSysReagentDetail(String id);
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml
index 21a0e40..f067e14 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysReagentDao.xml
@@ -95,6 +95,103 @@
     </if>
   </select>
 
+  <select id="reagentList" parameterType="java.util.Map" resultType="int">
+    select sr.*, ss.meta_value as product_home_name, bm.meta_value as control_products_name,supplier.name as supplierName,f.id favor,f.create_time favortime
+    from sys_reagent as sr
+    left join base_meta as ss on sr.product_home = ss.id
+    left join base_meta bm	on bm.id = sr.control_products
+    left join sys_supplier supplier on supplier.id = sr.supplier_id
+    LEFT JOIN favor f on f.reagent_id = sr.id AND f.user_id = #{user}
+    where sr.valid_flag = 1
+    <if test="cas != null and cas != ''">
+      and sr.cas = #{cas}
+    </if>
+    <if test="supplierId != null and supplierId != ''">
+      and sr.supplier_id = #{supplierId}
+    </if>
+    <if test="name != null and name != ''">
+      and sr.name like concat("%", #{name} ,"%")
+    </if>
+    <if test="productSn != null and productSn != ''">
+      and sr.product_sn = #{productSn}
+    </if>
+    ORDER BY sr.create_time desc
+    <if test="first != null and pageSize != null">
+      limit #{first}, #{pageSize}
+    </if>
+  </select>
+
+
+  <select id="favorList" parameterType="java.util.Map" resultMap="SysReagent">
+    select sr.*, ss.meta_value as product_home_name, bm.meta_value as control_products_name,supplier.name as supplierName,f.id favor,f.create_time favortime
+    from sys_reagent as sr
+    left join base_meta as ss on sr.product_home = ss.id
+    left join base_meta bm	on bm.id = sr.control_products
+    left join sys_supplier supplier on supplier.id = sr.supplier_id
+    LEFT JOIN favor f on f.reagent_id = sr.id AND f.user_id = #{user}
+    where sr.valid_flag = 1
+    <choose>
+      <when test="favorFlag != ''">
+        and f.id is not null
+      </when>
+      <otherwise>
+        and f.id is  null
+      </otherwise>
+    </choose>
+    <if test="cas != null and cas != ''">
+      and sr.cas = #{cas}
+    </if>
+    <if test="supplierId != null and supplierId != ''">
+      and sr.supplier_id = #{supplierId}
+    </if>
+    <if test="name != null and name != ''">
+      and sr.name like concat("%", #{name} ,"%")
+    </if>
+    <if test="productSn != null and productSn != ''">
+      and sr.product_sn = #{productSn}
+    </if>
+    <choose>
+      <when test="favorFlag != ''">
+        ORDER BY  favortime desc
+      </when>
+      <otherwise>
+        ORDER BY  sr.create_time desc
+      </otherwise>
+    </choose>
+    <if test="first != null and pageSize != null">
+      limit #{first}, #{pageSize}
+    </if>
+  </select>
+
+  <select id="favorCount" parameterType="java.util.Map" resultType="int">
+    select count(1)
+    from sys_reagent as sr
+    left join base_meta as ss on sr.product_home = ss.id
+    left join base_meta bm	on bm.id = sr.control_products
+    left join sys_supplier supplier on supplier.id = sr.supplier_id
+    LEFT JOIN favor f on f.reagent_id = sr.id AND f.user_id = #{user}
+    where sr.valid_flag = 1
+    <choose>
+      <when test="favorFlag != ''">
+       and f.id is not null
+      </when>
+      <otherwise>
+       and f.id is  null
+      </otherwise>
+    </choose>
+    <if test="cas != null and cas != ''">
+      and sr.cas = #{cas}
+    </if>
+    <if test="supplierId != null and supplierId != ''">
+      and sr.supplier_id = #{supplierId}
+    </if>
+    <if test="name != null and name != ''">
+      and sr.name like concat("%", #{name} ,"%")
+    </if>
+    <if test="productSn != null and productSn != ''">
+      and sr.product_sn = #{productSn}
+    </if>
+  </select>
 
   <select id="getSysReagentListNew" parameterType="java.util.Map" resultMap="SysReagent">
     select sr.*, ss.meta_value as product_home_name, ifnull(w.reserve,0)  as reserve, bm.meta_value as control_products_name,supplier.name as supplierName
@@ -140,6 +237,22 @@
     </if>
   </select>
 
+  <select id="reagentCount" parameterType="java.util.Map" resultType="int">
+    select count(1)
+    from sys_reagent as sr
+    left join base_meta as ss on sr.product_home = ss.id
+    left join base_meta bm	on bm.id = sr.control_products
+    left join (select reagent_id, sum(reserve) reserve from ope_warehouse_reserve where valid_flag = 1 group by reagent_id) w on w.reagent_id = sr.id
+
+    left join sys_supplier supplier on supplier.id = sr.supplier_id
+    LEFT JOIN favor f on f.reagent_id = sr.id AND f.user_id = #{user}
+    where sr.valid_flag = 1
+    <include refid="queryWhereSql"/>
+    <if test="favor != null and favor != '' ">
+      and f.id is not null
+    </if>
+  </select>
+
   <select id="getSysReagentTotalCountNew" parameterType="java.util.Map" resultType="int">
     select count(1)
     from sys_reagent as sr
diff --git a/src/main/java/com/nanometer/smartlab/service/SysReagentService.java b/src/main/java/com/nanometer/smartlab/service/SysReagentService.java
index a0e8e5f..5875c73 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysReagentService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysReagentService.java
@@ -19,8 +19,6 @@
     public boolean deleteSysReagent(List<SysReagent> sysReagentList);
     public int insertSysReagentList(List<SysReagent> sysReagentList);
     public int insertSysReagentList2(List<SysReagent> sysReagentList);
-    public List<SysReagent> getSysReagentList2(SysUser user,Integer favorFlag, String name, String cas, String productSn, String supplierId, Integer first, Integer pageSize);
-    public int getSysReagentTotalCount2(SysUser user,Integer favorFlag,String name, String cas,String productSn, String supplierId);
 
     int getSysReagentTotalCountNew(String name, String cas, String supplierId, Integer type);
     public List<SysReagent> query();
@@ -28,4 +26,8 @@
     Map getReagentDetail(String id);
 
     public List<SysReagent> getSysReagentListNew(String name, String cas, String supplierId, Integer type, Integer first, Integer pageSize);
+
+    int favorCount(SysUser user, String name, String cas, String supplierId, String productSn,Integer favorFlag);
+
+    List<SysReagent> favorList(SysUser user, String name, String cas, String supplierId, String productSn,Integer favorFlag, Integer first, Integer pageSize);
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
index 5c9195a..a960d8d 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysReagentServiceImpl.java
@@ -77,6 +77,41 @@
         }
     }
 
+    /**
+    * @Description: 收藏与未收藏  0未收藏  1收藏  统计个数
+    * @date 2020/12/1 17:04
+    */
+    @Override
+    public int favorCount(SysUser user, String name, String cas, String supplierId, String productSn, Integer favorFlag) {
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("user", user.getId());
+        params.put("favorFlag", favorFlag);
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("supplierId", supplierId);
+        params.put("productSn", productSn);
+        return sysReagentDao.favorCount(params);
+    }
+
+    /**
+    * @Description: 收藏与未收藏  0未收藏  1收藏  统计详情
+    * @date 2020/12/1 17:04
+    */
+    @Override
+    public List<SysReagent> favorList(SysUser user, String name, String cas, String supplierId, String productSn, Integer favorFlag, Integer first, Integer pageSize) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("user", user.getId());
+        params.put("favorFlag", favorFlag);
+        params.put("name", name);
+        params.put("cas", cas);
+        params.put("supplierId", supplierId);
+        params.put("productSn", productSn);
+        params.put("first", first);
+        params.put("pageSize", pageSize);
+        return sysReagentDao.favorList(params);
+    }
+
 
     @Transactional(propagation = Propagation.REQUIRED)
     public int getSysReagentTotalCount(String name, String cas, String supplierId,Integer type) {
@@ -115,55 +150,8 @@
     }
 
 
-    @Transactional(propagation = Propagation.REQUIRED)
-    public List<SysReagent> getSysReagentList2(SysUser user,Integer favorFlag, String name, String cas, String productSn, String supplierId, Integer first, Integer pageSize) {
-        try {
-            Map<String, Object> params = new HashMap<String, Object>();
-            if (StringUtils.isNotBlank(name)) {
-                params.put("name", "%" + name + "%");
-            }
-            if (StringUtils.isNotBlank(cas)) {
-                params.put("cas", "%" + cas + "%");
-            }
-            if (StringUtils.isNotBlank(supplierId)) {
-                params.put("supplierId", supplierId);
-            }
-            if (StringUtils.isNotBlank(productSn)) {
-                params.put("productSn","%"+ productSn+"%");
-            }
 
-            params.put("user", user.getId());
-            params.put("favor", favorFlag);
-            params.put("first", first);
-            params.put("pageSize", pageSize);
-            return this.sysReagentDao.getSysReagentList(params);
-        } catch (DataAccessException e) {
-            logger.error(e.getMessage(), e);
-            throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
-        }
-    }
-    @Transactional(propagation = Propagation.REQUIRED)
-    public int getSysReagentTotalCount2(SysUser user,Integer favorFlag, String name, String cas,String productSn, String supplierId) {
-        try {
-            Map<String, Object> params = new HashMap<String, Object>();
-            if (StringUtils.isNotBlank(name)) {
-                params.put("name", "%" + name + "%");
-            }
-            if (StringUtils.isNotBlank(cas)) {
-                params.put("cas", "%" + cas + "%");
-            }
-            if (StringUtils.isNotBlank(productSn)) {
-                params.put("productSn","%"+ productSn+"%");
-            }
-            params.put("user", user.getId());
-            params.put("favor", favorFlag);
-            params.put("supplierId", supplierId);
-            return this.sysReagentDao.getSysReagentTotalCount(params);
-        } catch (DataAccessException e) {
-            logger.error(e.getMessage(), e);
-            throw new BusinessException(ExceptionEnumCode.DB_ERR, MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
-        }
-    }
+
 
     @Transactional(propagation = Propagation.REQUIRED)
     public SysReagent getSysReagent(String id) {
diff --git a/src/main/webapp/apply_mng_new.xhtml b/src/main/webapp/apply_mng_new.xhtml
index bdad796..5d91795 100644
--- a/src/main/webapp/apply_mng_new.xhtml
+++ b/src/main/webapp/apply_mng_new.xhtml
@@ -283,6 +283,65 @@
         </h:form>
 		<br/>
         <p:tabView dynamic="true" style="margin-left: 26px">
+            <p:tab title="我的收藏">
+                <h:form id="myFavor">
+                    <p:dataTable id="favorDataTable" styleClass="data-table" style="margin-left: 2px"
+                                 resizableColumns="true" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
+                                 lazy="true" value="#{applyMngController.reagentFavorDataModel}" var="row" rowKey="#{row.id}"
+                                 emptyMessage="请添加收藏" selectionMode="single"
+                                 rows="50" pageLinks="5">
+
+                        <p:ajax event="rowDblselect" listener="#{applyMngController.onReagentRowSelect}" update=":applyMngNewForm,:applyDialog"></p:ajax>
+                        <p:column headerText="产品编号">
+                            <h:outputText value="#{row.productSn}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="试剂名称">
+                            <h:outputText value="#{row.name}"></h:outputText>
+                            <h:outputText value="收藏" readonly="true" rendered="#{row.favor!=null}" styleClass="favor"></h:outputText>
+                        </p:column>
+                        <p:column headerText="管制品">
+                            <h:outputText value="#{baseMetaService.getBaseMetaValue(row.controlProducts)}"></h:outputText>
+                        </p:column>
+                        <!--<p:column headerText="试剂类型">-->
+                            <!--<h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagentType)}"></h:outputText>-->
+                        <!--</p:column>-->
+                        <!--<p:column headerText="危险性质">-->
+                            <!--<h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagentCharacter)}"></h:outputText>-->
+                        <!--</p:column>-->
+                        <!--  <p:column headerText="供应商">
+                            <h:outputText value="#{row.supplierName}"></h:outputText>
+                        </p:column>-->
+                        <p:column headerText="规格型号">
+                            <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagentFormat)}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="包装">
+                            <h:outputText value="#{''.concat(row.mainMetering).concat(baseMetaService.getBaseMetaValue(row.reagentUnit))}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="含税售价">
+                            <h:outputText value="#{row.price}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="CAS号">
+                            <h:outputText value="#{row.cas}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="危险性质">
+                            <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagentCharacter)}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="厂家">
+                            <h:outputText value="#{row.productHomeName}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="试剂类型">
+                            <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagentType)}"></h:outputText>
+                        </p:column>
+                        <p:column headerText="操作" style="text-align: center;">
+                            <h:commandButton  styleClass="favor-btn-common #{row.favor == null?'favor-btn':'not-favor-btn'}"  value="#{row.favor == null?'加入收藏':'取消收藏'}"  update="@this">
+                                <f:setPropertyActionListener value="#{row}" target="#{applyMngController.selectReagent}" />
+                            </h:commandButton>
+
+                        </p:column>
+                    </p:dataTable>
+                </h:form>
+
+            </p:tab>
             <p:tab title="试剂库">
                 <h:form id="applyMngNewReagentForm">
                     <p:panelGrid styleClass="apply-mng-new-reagent-filter" columns="9" style="margin-left: -18px">
@@ -293,8 +352,6 @@
                         <p:inputText value="#{applyMngController.applyNewCas}"></p:inputText>
                         <p:outputLabel value="产品编号:"></p:outputLabel>
                         <p:inputText value="#{applyMngController.applyNewSn}"></p:inputText>
-                        <p:outputLabel value="我的收藏: " />
-                        <p:inputSwitch value="#{applyMngController.favorFlag}" styleClass="toggle-class"/>
                         <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
                     </p:panelGrid>
 

--
Gitblit v1.9.2