From 8e2b983273b816b33e7456f6c30a2577d443fb43 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期四, 22 四月 2021 10:26:44 +0800
Subject: [PATCH] 根据课题组展示库存情况

---
 src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml              |  119 +++++++++++++++++++++++++++++++++++++--
 src/main/webapp/laboratory_stock_mng.xhtml                                    |    4 
 src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java |   29 +++++++++
 3 files changed, 142 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
index 25b2cd3..52a4829 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeReagentStatusDao.xml
@@ -206,12 +206,71 @@
   </select>
 
 	<select id="getOpeReagentStatusListForLab" parameterType="java.util.Map" resultMap="OpeReagentStatus">
-		<include refid="queryColumns"/>
+		select oa.*,
+		sr.*,
+		sr.id as reagentId,
+		su.name as userName,
+		<if test="status != null">
+			<choose>
+				<when test="status == 1 or status == 2">
+					swc.container_code as containerCode,
+					sw.name as houseName,
+				</when>
+			</choose>
+		</if>
+		ss.name as supplierName
 		from ope_reagent_status as oa
-		<include refid="queryJoins"/>
+		left join sys_reagent sr on oa.reagent_id = sr.id
+		left join sys_supplier as ss on sr.supplier_id = ss.id
+		left join sys_user as su on oa.user_id = su.id
+		<if test="status != null">
+			<choose>
+				<when test="status == 1">
+					left join sys_warehouse as sw on sw.id = oa.house_id
+					left join sys_warehouse_container as swc on swc.id = oa.container_id
+				</when>
+				<when test="status == 2">
+					left join sys_laboratory as sw on sw.id = oa.house_id
+					left join sys_laboratory_container as swc on swc.id = oa.container_id
+				</when>
+			</choose>
+		</if>
 		where oa.valid_flag = 1
-		<include refid="queryWhereSqlForLab"/>
-
+		<if test="reagentId != null and reagentId != ''">
+			and oa.reagent_id = #{reagentId}
+		</if>
+		<if test="userId != null and userId != ''">
+			and oa.user_id = #{userId}
+		</if>
+		<if test="department != null and department != ''">
+			and sw.department = #{department}
+		</if>
+		<if test="departmentUserIds != null">
+			and oa.user_id in
+			<foreach collection="departmentUserIds" item="item" index="index" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		</if>
+		<if test="articleNumber != null and articleNumber != ''">
+			and oa.article_number = #{articleNumber}
+		</if>
+		<if test="editId != null and editId != ''">
+			and oa.id != #{editId}
+		</if>
+		<if test="reagentCode != null and reagentCode != ''">
+			and oa.reagent_code like #{reagentCode}
+		</if>
+		<if test="status != null">
+			and oa.status = #{status}
+		</if>
+		<if test="name != null and name != ''">
+			and sr.name like #{name}
+		</if>
+		<choose>
+			<when test="status == 2 and project != null and project != ''">
+				and sw.project like concat("%",#{project},"%")
+			</when>
+		</choose>
 		order by oa.reagent_code asc
 		<if test="first != null and pageSize != null">
 			limit #{first}, #{pageSize}
@@ -251,9 +310,57 @@
 	<select id="getOpeReagentStatusTotalCountForLab" parameterType="java.util.Map" resultType="int">
 		select count(1)
 		from ope_reagent_status as oa
-		<include refid="queryJoins"/>
+		left join sys_reagent sr on oa.reagent_id = sr.id
+		left join sys_supplier as ss on sr.supplier_id = ss.id
+		left join sys_user as su on oa.user_id = su.id
+		<if test="status != null">
+			<choose>
+				<when test="status == 1">
+					left join sys_warehouse as sw on sw.id = oa.house_id
+					left join sys_warehouse_container as swc on swc.id = oa.container_id
+				</when>
+				<when test="status == 2">
+					left join sys_laboratory as sw on sw.id = oa.house_id
+					left join sys_laboratory_container as swc on swc.id = oa.container_id
+				</when>
+			</choose>
+		</if>
 		where oa.valid_flag = 1
-		<include refid="queryWhereSqlForLab"/>
+		<if test="reagentId != null and reagentId != ''">
+			and oa.reagent_id = #{reagentId}
+		</if>
+		<if test="userId != null and userId != ''">
+			and oa.user_id = #{userId}
+		</if>
+		<if test="department != null and department != ''">
+			and sw.department = #{department}
+		</if>
+		<if test="departmentUserIds != null">
+			and oa.user_id in
+			<foreach collection="departmentUserIds" item="item" index="index" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		</if>
+		<if test="articleNumber != null and articleNumber != ''">
+			and oa.article_number = #{articleNumber}
+		</if>
+		<if test="editId != null and editId != ''">
+			and oa.id != #{editId}
+		</if>
+		<if test="reagentCode != null and reagentCode != ''">
+			and oa.reagent_code like #{reagentCode}
+		</if>
+		<if test="status != null">
+			and oa.status = #{status}
+		</if>
+		<if test="name != null and name != ''">
+			and sr.name like #{name}
+		</if>
+		<choose>
+			<when test="status == 2 and project != null and project != ''">
+				and sw.project like concat("%",#{project},"%")
+			</when>
+		</choose>
 	</select>
 
   <select id="getPersonReagentStatusTotalCount" parameterType="java.util.Map" resultType="int">
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
index f4c3e7a..8b14efa 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
@@ -17,6 +17,7 @@
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.dao.DuplicateKeyException;
+import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -62,6 +63,8 @@
 	private OpeUseFlowDao opeUseFlowDao;
 	@Resource
 	private OpeWarehouseReserveDao opeWarehouseReserveDao;
+	@Resource
+	private BaseRoleService baseRoleService;
 
     @Resource(name="baseMetaDao")
     BaseMetaDao baseMetaDao;
@@ -106,7 +109,18 @@
 			params.put("name", "%" + name + "%");
 			params.put("articleNumber", articleNumber);
 			params.put("status", status);
-			addParamByUserId(userId, params);
+//			addParamByUserId(userId, params);
+			if (StringUtils.isNotBlank(userId)) {
+				SysUser sysUser = sysUserService.getSysUser(userId);
+				BaseRole baseRole = baseRoleService.getBaseRole(sysUser.getRoleId());
+				//不是系统管理员 根据用户的课题组判断可视(用户所在课题组是否 在实验室的课题组下)
+				if (!"系统管理员".equals(baseRole.getName())) {
+					if (StringUtils.isBlank(sysUser.getProject())) {
+						return null;
+					}
+					params.put("project", sysUser.getProject());
+				}
+			}
 			if (StringUtils.isNotBlank(reagentCode)) {
 				params.put("reagentCode", "%" + reagentCode + "%");
 			}
@@ -127,8 +141,19 @@
 			Map<String, Object> params = new HashMap<String, Object>();
 			params.put("name", "%" + name + "%");
 
-			addParamByUserId(userId, params);
+//			addParamByUserId(userId, params);
 			params.put("articleNumber", articleNumber);
+			if (StringUtils.isNotBlank(userId)) {
+				SysUser sysUser = sysUserService.getSysUser(userId);
+				BaseRole baseRole = baseRoleService.getBaseRole(sysUser.getRoleId());
+				//不是系统管理员 根据用户的课题组判断可视(用户所在课题组是否 在实验室的课题组下)
+				if (!"系统管理员".equals(baseRole.getName())) {
+					if (StringUtils.isBlank(sysUser.getProject())) {
+						return 0;
+					}
+					params.put("project", sysUser.getProject());
+				}
+			}
 			if (StringUtils.isNotBlank(reagentCode)) {
 				params.put("reagentCode", "%" + reagentCode + "%");
 			}
diff --git a/src/main/webapp/laboratory_stock_mng.xhtml b/src/main/webapp/laboratory_stock_mng.xhtml
index c863421..c85d79c 100644
--- a/src/main/webapp/laboratory_stock_mng.xhtml
+++ b/src/main/webapp/laboratory_stock_mng.xhtml
@@ -46,7 +46,7 @@
 				value="#{laboratoryStockMngController.reagentStatusDataModel}"
 				var="row" rowKey="#{row.id}" emptyMessage="无数据" rows="20"
 				pageLinks="5">
-				<p:column headerText="实验室名">
+				<p:column headerText="实验室名" width="150">
 					<h:outputText value="#{row.houseName}"></h:outputText>
 				</p:column>
 
@@ -54,7 +54,7 @@
 					<h:outputText value="#{row.containerCode}"></h:outputText>
 				</p:column>
 
-				<p:column headerText="试剂条形码">
+				<p:column headerText="试剂条形码" width="200">
 					<h:outputText value="#{row.reagentCode}"></h:outputText>
 				</p:column>
 

--
Gitblit v1.9.2