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