From 5758b702aceacd76f2a1e1a63d848cd4948e99e1 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期五, 02 七月 2021 10:15:52 +0800
Subject: [PATCH] 导出试剂流向,修改个人领用查询
---
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml | 27 +++++
src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java | 17 ++
src/main/java/com/nanometer/smartlab/util/Constants.java | 2
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java | 8 +
src/main/webapp/reagent_user_flow_info.xhtml | 23 ++++
src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java | 25 ++++
src/main/webapp/apply_mng_new.xhtml | 6 -
src/main/webapp/personal_use_info.xhtml | 4
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java | 2
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java | 130 ++++++++++++++++++++++++-
10 files changed, 219 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java b/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
index 2d8c5cb..03dd8aa 100644
--- a/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
@@ -52,6 +52,8 @@
private String containerCode;
+ private String operatestate;
+
public String getHouseName() {
return houseName;
}
@@ -105,10 +107,10 @@
Map<String, Object> filters) {
List<OpeUseFlow> list = null;
try {
- int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate);
+ int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate,operatestate);
this.setRowCount(count);
if (count > 0) {
- list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate, first, pageSize);
+ list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate, first, pageSize,operatestate);
}
selectedOne = null;
} catch (Exception e) {
@@ -138,6 +140,17 @@
}
return dataModel;
+ }
+
+ public void export2Excel() {
+
+ List<Map> list = opeUseFlowService.selectAll(houseName,reagentId, reagentCode, containerCode,getUserId(),startDate,endDate);
+ try{
+ boolean isexport = opeUseFlowService.export2Excel(list);
+ }catch (Exception e){
+ e.printStackTrace();
+ FacesUtils.warn("导出失败");
+ }
}
public String getReagentId() {
@@ -275,4 +288,12 @@
public void setSelectedOne(OpeUseFlow selectedOne) {
this.selectedOne = selectedOne;
}
+
+ public void setOperatestate(String operatestate) {
+ this.operatestate = operatestate;
+ }
+
+ public String getOperatestate(){
+ return operatestate;
+ }
}
diff --git a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
index 6c0e9a5..fdc21d8 100644
--- a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
@@ -323,16 +323,27 @@
}
public Date getStartTime() {
- return startTime;
+ if (null == startTime){
+ Date now = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(now);
+ cal.add(Calendar.DATE, -7);
+ return cal.getTime();
+ }else {
+ return startTime;
+ }
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
-
public Date getEndTime() {
- return endTime;
+ if (null == endTime){
+ return new Date();
+ }else {
+ return endTime;
+ }
}
public void setEndTime(Date endTime) {
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
index 087f536..a381280 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
@@ -50,4 +50,6 @@
OpeUseFlow selectById(@Param("id") String id);
OpeUseFlow selectByReceiptNumber(Map params);
+
+ List<Map> selectAll(Map params);
}
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
index d490fe9..4f0ff72 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -85,6 +85,9 @@
<if test="endDate != null and endDate !=''">
and oa.create_time <= #{endDate}
</if>
+ <if test="operatestate != null and operatestate !=''">
+ and bm1.id = #{operatestate}
+ </if>
<if test="containerCode != null and containerCode !=''">
and wc.container_code = #{containerCode}
or lc.container_code =#{containerCode}
@@ -361,6 +364,30 @@
group by ouf.receipt_number
ORDER BY ouf.create_time desc
</select>
+ <select id="selectAll" resultType="java.util.Map">
+ select
+ oa.reagent_code as reagentCode,
+ sr.`name` as reagentName,
+ CASE WHEN wc.container_code is NULL THEN lc.container_code ELSE wc.container_code END as laboratoryContainerCode,
+ bm1.meta_value as operatestateName,
+ CASE WHEN bm1.meta_value = '仓库入库' or bm1.meta_value='仓库领用' THEN NULL ELSE oa.remainder END as remainder,
+ CASE WHEN w.name is NULL THEN l.name ELSE w.name END as warehouseContainerName,
+ su.name as userName,
+ oa.create_time as createTime
+ from ope_use_flow as oa
+ left join ope_reagent_status ors on ors.reagent_code = oa.reagent_code
+ left join sys_reagent sr on ors.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
+ left join sys_warehouse_container wc on wc.id = oa.container_id
+ left join sys_warehouse w on w.id = wc.warehouse_id
+ left join sys_laboratory_container lc on lc.id = oa.container_id
+ left join sys_laboratory l on l.id = lc.laboratory_id
+ left join base_meta bm1 on bm1.id = oa.operatestate
+ where oa.valid_flag = 1
+ <include refid="queryWhereSql"/>
+ order by oa.create_time desc
+ </select>
<insert id="insertOpeUseFlow" parameterType="com.nanometer.smartlab.entity.OpeUseFlow">
insert into ope_use_flow(id, reagent_code, status, house_id, container_id, user_id, remainder, place, store_type, valid_flag, create_time, realstatus, operatestate
<if test="receiptNumber != null">
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
index d88b180..2e97dae 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
@@ -24,9 +24,9 @@
int getOpeUseFlowTotalCount(String reagentId, String reagentCode, Integer status, String userId);
List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate,
- Integer first, Integer pageSize);
+ Integer first, Integer pageSize,String operatestate);
- int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate);
+ int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate,String operatestate);
boolean update(OpeUseFlow opeUseFlow);
@@ -63,4 +63,8 @@
OpeUseFlow selectById(String rowKey);
OpeUseFlow selectByReceiptNumber(String receiptNumber,String userId);
+
+ List<Map> selectAll(String houseName, String reagentId, String reagentCode, String containerCode, String userId, Date startDate, Date endDate);
+
+ boolean export2Excel(List<Map> list) throws Exception;
}
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
index 31e9bad..b0a143e 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -13,6 +13,7 @@
import com.nanometer.smartlab.entity.dto.PersonUseDetail;
import com.nanometer.smartlab.entity.enumtype.OperateStatus;
import com.nanometer.smartlab.util.Constants;
+import com.nanometer.smartlab.util.ExcelUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.log4j.Logger;
@@ -134,7 +135,7 @@
@Transactional(propagation = Propagation.REQUIRED)
public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,
- Date startDate,Date endDate,Integer first, Integer pageSize) {
+ Date startDate,Date endDate,Integer first, Integer pageSize,String operatestate) {
try {
Map<String, Object> params = new HashMap<String, Object>();
@@ -173,6 +174,7 @@
params.put("status", status);
params.put("houseName", houseName);
+ params.put("operatestate", operatestate);
params.put("containerCode", containerCode);
addParamByUserId(userId, params);
@@ -187,7 +189,7 @@
}
@Transactional(propagation = Propagation.REQUIRED)
- public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate) {
+ public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate,String operatestate) {
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("reagentName", reagentId);
@@ -224,6 +226,7 @@
params.put("endDate",sdfend.format(now));
}
+ params.put("operatestate", operatestate);
params.put("houseName", houseName);
params.put("containerCode", containerCode);
addParamByUserId(userId, params);
@@ -452,12 +455,39 @@
}
@Override
- public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber,
+ public int getPersonalUseInfoCount(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber,
String department, String project,String applyPerson,String reagentName) {
Map<String,Object> params = new HashMap<>();
+
+ SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+ SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+ Date now = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(now);
+ cal.add(Calendar.DATE, -7);
+ Date startTime = cal.getTime();
+
+ if (null != startDate){
+ try {
+ params.put("startDate",sdfstart.format(startDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("startDate",sdfstart.format(startTime));
+ }
+
+ if (null != endDate){
+ try {
+ params.put("endDate",sdfend.format(endDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("endDate",sdfend.format(now));
+ }
+
params.put("userId", userId);
- params.put("startTime", startTime);
- params.put("endTime", endTime);
params.put("receiptNumber", receiptNumber);
params.put("department", department);
params.put("project", project);
@@ -480,12 +510,35 @@
}
@Override
- public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber,
+ public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startDate, Date endDate, String receiptNumber,
String department, String project,String applyPerson,String reagentName, int first, int pageSize) {
Map<String, Object> params = new HashMap<>();
+ SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+ SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+ Date now = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(now);
+ cal.add(Calendar.DATE, -7);
+ Date startTime = cal.getTime();
+ if (null != startDate){
+ try {
+ params.put("startDate",sdfstart.format(startDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("startDate",sdfstart.format(startTime));
+ }
+ if (null != endDate){
+ try {
+ params.put("endDate",sdfend.format(endDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("endDate",sdfend.format(now));
+ }
params.put("userId", userId);
- params.put("startTime", startTime);
- params.put("endTime", endTime);
params.put("receiptNumber", receiptNumber);
params.put("department", department);
params.put("project", project);
@@ -599,4 +652,65 @@
return opeUseFlowDao.selectByReceiptNumber(params);
}
+ @Override
+ public List<Map> selectAll(String houseName, String reagentId, String reagentCode, String containerCode, String userId, Date startDate, Date endDate) {
+ try {
+ Map<String, Object> params = new HashMap<String, Object>();
+
+ params.put("reagentName", reagentId);
+ if (StringUtils.isNotBlank(reagentCode)) {
+ params.put("reagentCode", "%" + reagentCode + "%");
+ }
+ SimpleDateFormat sdfstart = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
+ SimpleDateFormat sdfend = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+ Date now = new Date();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(now);
+ cal.add(Calendar.DATE, -7);
+ Date startTime = cal.getTime();
+
+ if (null != startDate){
+ try {
+ params.put("startDate",sdfstart.format(startDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("startDate",sdfstart.format(startTime));
+ }
+ if (null != endDate){
+ try {
+ params.put("endDate",sdfend.format(endDate));
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }else {
+ params.put("endDate",sdfend.format(now));
+ }
+ params.put("houseName", houseName);
+ params.put("containerCode", containerCode);
+ addParamByUserId(userId, params);
+ return opeUseFlowDao.selectAll(params);
+ } catch (DataAccessException e) {
+ logger.error(e.getMessage(), e);
+ throw new BusinessException(ExceptionEnumCode.DB_ERR,
+ MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
+ }
+ }
+
+ @Override
+ public boolean export2Excel(List<Map> list) throws Exception {
+ Map<String,String> map = new LinkedHashMap<>();
+ map.put("reagentCode", "试剂条形码");
+ map.put("reagentName", "试剂名称");
+ map.put("laboratoryContainerCode", "柜号");
+ map.put("operatestateName", "操作状态");
+ map.put("remainder", "残存量");
+ map.put("userName", "持有者");
+ map.put("createTime", "更新时间");
+ map.put("warehouseContainerName", "场所名");
+ ExcelUtils.export2Excel(list,"试剂流向追踪列表",map);
+ return true;
+ }
+
}
diff --git a/src/main/java/com/nanometer/smartlab/util/Constants.java b/src/main/java/com/nanometer/smartlab/util/Constants.java
index 026ea58..e297ba7 100644
--- a/src/main/java/com/nanometer/smartlab/util/Constants.java
+++ b/src/main/java/com/nanometer/smartlab/util/Constants.java
@@ -72,6 +72,7 @@
public static final String BASE_META_GROUP_CONTRILLER_TYPE = "controller_type";
public static final String SEQ_APPLY_CODE = "apply_code_seq";
public static final String SEQ_ORDER_CODE = "order_code_seq";
+ public static final String OPERATE_STATUS = "operate_status";
public int getACTION_ADD() {
return ACTION_ADD;
@@ -105,4 +106,5 @@
public String getBASE_META_GROUP_PROJECT_NUM() {
return BASE_META_GROUP_PROJECT_NUM;
}
+ public String getOPERATE_STATUS() { return OPERATE_STATUS; }
}
diff --git a/src/main/webapp/apply_mng_new.xhtml b/src/main/webapp/apply_mng_new.xhtml
index 063b66f..b169d24 100644
--- a/src/main/webapp/apply_mng_new.xhtml
+++ b/src/main/webapp/apply_mng_new.xhtml
@@ -297,12 +297,6 @@
<p:commandLink styleClass="search reagentSearch" process="@form" update="@form"></p:commandLink>
</p:panelGrid>
- <p:commandButton value="新增试剂" process="@this"
- actionListener="#{applyMngController.onReagentNewBtnClick}"
- oncomplete="PF('dialog').show();"
- update="@parent:@parent:@parent:dialog"
- styleClass="new-btn" style="position: absolute;display: none;right: 42px;top:62px"></p:commandButton>
-
<p:dataTable id="applyMngNewReagentDataTable" styleClass="data-table" style="margin-left: 2px"
resizableColumns="true" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
lazy="true" value="#{applyMngController.reagentDataModel}" var="row" rowKey="#{row.id}"
diff --git a/src/main/webapp/personal_use_info.xhtml b/src/main/webapp/personal_use_info.xhtml
index ef84dc5..327e4e1 100644
--- a/src/main/webapp/personal_use_info.xhtml
+++ b/src/main/webapp/personal_use_info.xhtml
@@ -66,9 +66,9 @@
<p:inputText value="#{personalUseInfoController.department}"/>
<p:outputLabel for="startTime" value="开始时间:" />
- <p:calendar id="startTime" value="#{personalUseInfoController.startTime}" pattern="yyyy-MM-dd HH:mm" />
+ <p:calendar id="startTime" value="#{personalUseInfoController.startTime}" />
<p:outputLabel for="endTime" value="截止时间:" />
- <p:calendar id="endTime" value="#{personalUseInfoController.endTime}" pattern="yyyy-MM-dd HH:mm" />
+ <p:calendar id="endTime" value="#{personalUseInfoController.endTime}" />
<p:commandLink styleClass="search" process="@form" update="@form"/>
diff --git a/src/main/webapp/reagent_user_flow_info.xhtml b/src/main/webapp/reagent_user_flow_info.xhtml
index a868bfc..835ed83 100644
--- a/src/main/webapp/reagent_user_flow_info.xhtml
+++ b/src/main/webapp/reagent_user_flow_info.xhtml
@@ -15,7 +15,15 @@
<p:outputLabel styleClass="title" value="试剂流向追踪"></p:outputLabel>
<p:panel styleClass="center-header">
- <p:panelGrid styleClass="filter" columns="13">
+ <p:panelGrid styleClass="filter" columns="16">
+ <style type="text/css">
+ .ui-selectonemenu.ui-widget.ui-state-default.ui-corner-all{
+ min-width: 60px !important;
+ }
+ .ui-selectonemenu-items.ui-selectonemenu-list.ui-widget-content.ui-widget.ui-corner-all.ui-helper-reset{
+ width: 77px !important;
+ }
+ </style>
<p:outputLabel value="开始时间:"></p:outputLabel>
<p:calendar value="#{opeUseFlowInfoController.startDate}"></p:calendar>
@@ -33,6 +41,15 @@
<p:outputLabel value="场所名:"></p:outputLabel>
<p:inputText value="#{opeUseFlowInfoController.houseName}"></p:inputText>
+
+ <p:outputLabel value="操作状态:"></p:outputLabel>
+ <p:selectOneMenu value="#{opeUseFlowInfoController.operatestate}" style="width: 60px;">
+ <f:selectItem itemLabel="全部" itemValue="#{null}" noSelectionOption="true"></f:selectItem>
+ <f:selectItems value="#{baseMetaService.getBaseMetaList(constants.OPERATE_STATUS)}"
+ var="item" itemLabel="#{item.metaValue}" itemValue="#{item.id}"></f:selectItems>
+ </p:selectOneMenu>
+
+
<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
</p:panelGrid>
</p:panel>
@@ -40,8 +57,10 @@
<p:panel styleClass="center-body">
- <p:panelGrid columns="1" styleClass="btn">
+ <p:panelGrid columns="2" styleClass="btn">
<p:commandButton value="报废" styleClass="del-btn" ajax="false" actionListener="#{opeUseFlowInfoController.scrapReagent}" />
+ <p:commandButton value="导出" styleClass="new-btn" ajax="false" id="exportButton" widgetVar="exportButton"
+ actionListener="#{opeUseFlowInfoController.export2Excel}" />
</p:panelGrid>
<p:dataTable id="reagentUseFlowInfoDataTable" styleClass="data-table"
paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
--
Gitblit v1.9.2