Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManager.java =================================================================== diff -u -r13418 -r16631 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManager.java (.../TaskGroupManager.java) (revision 13418) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManager.java (.../TaskGroupManager.java) (revision 16631) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.basedatamanager.taskGroup.service; import java.util.List; +import java.util.Map; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; @@ -28,4 +29,10 @@ public List findAllTaskGroup(); public List findTaskGroupByDepartCode(String departCode); + + /** + * 根据用户部门编号查找对应的任务组(用于extJs的下拉选择框) + * @return + */ + List> loadTaskGroupStore(); } Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl2.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl2.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl2.java (revision 16631) @@ -0,0 +1,239 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import com.forgon.entity.PageEntity; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.PageUtil; +import org.apache.commons.collections.map.HashedMap; +import org.apache.log4j.Logger; + +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @implNote 消毒供应中心运作监控查询服务层实现类 + * @since 2017-01-06 + */ +public class SupplyRoomControlManagerImpl2 implements SupplyRoomControlManager2 { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private ObjectDao objectDao; + + private SupplyRoomControlManager supplyRoomControlManager; + + private SupplyRoomControlHelper raRoomControlHelper; + + private SupplyRoomControlHelper wdRoomControlHelper; + + private SupplyRoomControlHelper pkRoomControlHelper; + + private SupplyRoomControlHelper rvRoomControlHelper; + + private SupplyRoomControlHelper stRoomControlHelper; + + private SupplyRoomControlHelper ipRoomControlHelper; + + public void setSupplyRoomControlManager(SupplyRoomControlManager supplyRoomControlManager) { + this.supplyRoomControlManager = supplyRoomControlManager; + } + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public void setRaRoomControlHelper(SupplyRoomControlHelper raRoomControlHelper) { + this.raRoomControlHelper = raRoomControlHelper; + } + + public void setWdRoomControlHelper(SupplyRoomControlHelper wdRoomControlHelper) { + this.wdRoomControlHelper = wdRoomControlHelper; + } + + public void setPkRoomControlHelper(SupplyRoomControlHelper pkRoomControlHelper) { + this.pkRoomControlHelper = pkRoomControlHelper; + } + + public void setRvRoomControlHelper(SupplyRoomControlHelper rvRoomControlHelper) { + this.rvRoomControlHelper = rvRoomControlHelper; + } + + public void setStRoomControlHelper(SupplyRoomControlHelper stRoomControlHelper) { + this.stRoomControlHelper = stRoomControlHelper; + } + + public void setIpRoomControlHelper(SupplyRoomControlHelper ipRoomControlHelper) { + this.ipRoomControlHelper = ipRoomControlHelper; + } + + @Override + public Map getRecyclingApplicationList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = raRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = raRoomControlHelper.buildWhereSql(supplyRoomVo); + String countSql = "select count(*),sum(po.amount),sum(po.recyclingAmount) "; + selectSql += whereSql; + countSql += whereSql; + logger.debug("[sql]:" + selectSql); + return this.getResult(raRoomControlHelper, selectSql, countSql); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + @Override + public Map getWashDisinfectionList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = wdRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = wdRoomControlHelper.buildWhereSql(supplyRoomVo); + String countSql = "select count(*),sum(ci.amount),1"; + countSql += whereSql; + selectSql += whereSql + " order by wr.endDate desc"; + logger.debug("[sql]:" + selectSql); + return this.getResult(wdRoomControlHelper, selectSql, countSql); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + @Override + public Map getPackingList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = pkRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = pkRoomControlHelper.buildWhereSql(supplyRoomVo); + String countSql = "select count(*),sum(po.amount),1 "; + countSql += whereSql; + selectSql += whereSql + " order by po.packTime desc"; + logger.debug("[sql]:" + selectSql); + return this.getResult(pkRoomControlHelper, selectSql, countSql); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + @Override + public Map getReviewList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = rvRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = rvRoomControlHelper.buildWhereSql(supplyRoomVo); + Map countSqlS = rvRoomControlHelper.getCountSqlS(whereSql); + whereSql += " group by po.tousseName,po.reviewer,po.reviewTime,po.sterilizationBasket"; + selectSql += whereSql; + logger.debug("[sql]:" + selectSql); + return this.getResult(rvRoomControlHelper, selectSql, countSqlS); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + @Override + public Map getSterilizationList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = stRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = stRoomControlHelper.buildWhereSql(supplyRoomVo); + Map countSqlS = stRoomControlHelper.getCountSqlS(whereSql); + selectSql += whereSql; + logger.debug("[sql]:" + selectSql); + return this.getResult(stRoomControlHelper, selectSql, countSqlS); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + @Override + public Map getInvoicePlanList(SupplyRoomVo supplyRoomVo) { + try { + String selectSql = ipRoomControlHelper.buildSelectSql(supplyRoomVo); + String whereSql = ipRoomControlHelper.buildWhereSql(supplyRoomVo); + String countSql = "select count(*),sum(po.amount),1 "; + selectSql += whereSql; + countSql += whereSql; + logger.debug("[sql]:" + selectSql); + return this.getResult(ipRoomControlHelper, selectSql, countSql); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + /** + * 查询TousseOperate结果集 + * + * @param sql 要查询的sql + * @return TousseOperate的结果集 + */ + private List findTousseOperate(String sql) { + PageEntity pagePara = PageUtil.getPagePara(); + List list = objectDao.findBySql(TousseOperate.class, sql, pagePara.getStart(), pagePara.getLimit()); + return list; + } + + /** + * 执行统计sql(默认设置key为countResult,只支持执行一条) + * + * @param countSql 统计的sql + * @return 统计的结果 + */ + private Map countBySql(String countSql) { + Map map = new HashedMap(); + map.put("countResult", supplyRoomControlManager.countBySql(countSql)); + return map; + } + + /** + * 执行统计sql(支持多条) + * + * @param countSqlS 需要执行统计的sqls + * @return + */ + private Map countBySql(Map countSqlS) { + Map map = new HashedMap(); + for (String content : countSqlS.keySet()) { + Integer[] countResult = supplyRoomControlManager.countBySql(countSqlS.get(content).toString()); + map.put(content, countResult); + } + return map; + } + + + /** + * 利用多态得到最终的结果 + * + * @param supplyRoomControlHelper {@link SupplyRoomControlHelper} + * @param sql 要查询的sql + * @param countSql 要统计的sql + * @return + */ + private Map getResult(SupplyRoomControlHelper supplyRoomControlHelper, String sql, String countSql) { + List list = this.findTousseOperate(sql); + return supplyRoomControlHelper.setResult(list, this.countBySql(countSql)); + } + + /** + * 利用多态得到最终的结果 + * + * @param supplyRoomControlHelper {@link SupplyRoomControlHelper} + * @param selectSql 要查询的sql + * @param countSqlS 要统计的所有sql + * @return + */ + private Map getResult(SupplyRoomControlHelper supplyRoomControlHelper, String selectSql, Map countSqlS) { + List list = this.findTousseOperate(selectSql); + return supplyRoomControlHelper.setResult(list, this.countBySql(countSqlS)); + } + + +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/IpRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/IpRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/IpRoomControlHelper.java (revision 16631) @@ -0,0 +1,85 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @since 2017-01-06 + * @apiNote 消毒供应中心运作监控发货信息查询 + */ +public class IpRoomControlHelper implements SupplyRoomControlHelper { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + private SupplyRoomControlManager supplyRoomControlManager; + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setSupplyRoomControlManager(SupplyRoomControlManager supplyRoomControlManager) { + this.supplyRoomControlManager = supplyRoomControlManager; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + return "select po.tousseName as \"tousseName\",i.depart as \"depart\",i.id as \"id\" ,i.applicant as \"applicant\",i.sender as \"sender\"," + + "i.serialNumber as \"serialNumber\",i.sendTime as \"senderTime\",i.applicationTime as \"applicationTime\",po.amount as \"amount\" "; + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + String orgUnitCoding = config.getOrgUnitCoding(); + String departCoding = supplyRoomVo.getDepartment(); + String taskGroup = supplyRoomVo.getTaskGroup(); + String whereSql = "from Invoice i,InvoicePlan ip,InvoiceItem po" + + " where i.id = po.invoice_id and ip.id = i.invoicePlan_ID" + + " and ip.type in (" + SupplyRoomControlManagerImpl.INVOICEPLAN_TYPE + ") and i.status in ('已发货','收货签收')" + + " and i.orgUnitCoding = '" + orgUnitCoding + "'" + + " and i.sendTime between " + dateQueryAdapter.dateAdapter(supplyRoomVo.getStartDate()) + " and " + dateQueryAdapter.dateAdapter(supplyRoomVo.getEndDate()); + whereSql = supplyRoomControlManager.setDisinfectionGoodsQuerySql(supplyRoomVo.getTousseName(), supplyRoomVo.getTousseType(), whereSql); + if (StringUtils.isNotBlank(departCoding)) { + whereSql += " and i.depart = '" + departCoding + "'"; + } + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + whereSql += String.format(" and ip.id in (select distinct ip.id from invoicePlan ip join tousseItem ti on ip.id = ti.recyclingApplication_ID " + + " join CssdHandleTousses cht on ti.tousseDefinitionId = cht.tousseDefinitionId where cht.taskGroup = '%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + } + return whereSql; + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Map washMap = new HashMap(); + washMap.put("totalCount", results[0]); + washMap.put("invoiceTotalAmount", results[1]); + washMap.put("data", list); + return washMap; + } + + @Override + public Map getCountSqlS(String whereSql) { + return null; + } +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager2.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager2.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager2.java (revision 16631) @@ -0,0 +1,62 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; + +import java.util.Map; + +/** + * @author zhonghaowen + * @since 2017-01-06 + * @apiNote 消毒供应中心运作监控查询服务层 + */ +public interface SupplyRoomControlManager2 { + + /** + * 申请单 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getRecyclingApplicationList(SupplyRoomVo supplyRoomVo); + + /** + * 获取清洗记录数据 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getWashDisinfectionList(SupplyRoomVo supplyRoomVo); + + /** + * 待装配任务列表 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getPackingList(SupplyRoomVo supplyRoomVo); + + /** + * 获取审核数量,器械包名称 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getReviewList(SupplyRoomVo supplyRoomVo); + + + /** + * 获取灭菌记录的已灭菌器械包 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getSterilizationList(SupplyRoomVo supplyRoomVo); + + /** + * 发货计划单 + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return + */ + Map getInvoicePlanList(SupplyRoomVo supplyRoomVo); +} Index: ssts-web/src/main/webapp/homepage/supplyRoomOperate.js =================================================================== diff -u -r15794 -r16631 --- ssts-web/src/main/webapp/homepage/supplyRoomOperate.js (.../supplyRoomOperate.js) (revision 15794) +++ ssts-web/src/main/webapp/homepage/supplyRoomOperate.js (.../supplyRoomOperate.js) (revision 16631) @@ -64,65 +64,107 @@ function loadData(){ - var goodNmae = $Id('goodsSearch').value; + var goodName = $Id('goodsSearch').value; var tousseType = $Id('tousseType').value; var department = $Id('department').value; - var startDate= $Id('startDate').value; - var endDate= $Id('endDate').value; - + //ie下不加IDS也能找到对应的dom + var startDate= $Id('startDate' + IDS).value || $Id('startDate').value; + var endDate= $Id('endDate' + IDS).value || $Id('endDate').value; + //任务组的displayName + var taskGroup = Ext.getCmp('taskGroup').getRawValue(); + if(startDate == null || startDate == '' || endDate == null || endDate == ''){ showResult('查询时间有误,请正确选择查询时间。'); return false; } - + applicationStore.removeAll(); washStore.removeAll(); packingStore.removeAll(); reviewStore.removeAll(); sterilizationStore.removeAll(); invoicePlanStore.removeAll(); + + var queryParam1 = { + tousseName : goodName, + tousseType : tousseType, + startDate : startDate, + endDate : endDate, + taskGroup : taskGroup, + department : department + }; + var queryParam2 = { + tousseName : goodName, + tousseType : tousseType, + startDate : startDate, + endDate : endDate, + taskGroup : taskGroup + }; + loadStoreByParams(applicationStore, queryParam1); + loadStoreByParams(washStore, queryParam2); + loadStoreByParams(packingStore, queryParam2); + loadStoreByParams(reviewStore, queryParam2); + loadStoreByParams(sterilizationStore, queryParam2); + loadStoreByParams(invoicePlanStore, queryParam1); + // applicationStore.baseParams['tousseName'] = goodName; + // applicationStore.baseParams['tousseType'] = tousseType; + // applicationStore.baseParams['department'] = department; + // applicationStore.baseParams['startDate'] = startDate; + // applicationStore.baseParams['endDate'] = endDate; + // applicationStore.baseParams['taskGroup'] = taskGroup; + // applicationStore.load({params:{start: 0, limit: 10}}); - applicationStore.baseParams['tousseName'] = goodNmae; - applicationStore.baseParams['tousseType'] = tousseType; - applicationStore.baseParams['department'] = department; - applicationStore.baseParams['startDate'] = startDate; - applicationStore.baseParams['endDate'] = endDate; - applicationStore.load({params:{start: 0, limit: 10}}); + // washStore.baseParams['tousseName'] = goodName; + // washStore.baseParams['tousseType'] = tousseType; + // washStore.baseParams['startDate'] = startDate; + // washStore.baseParams['endDate'] = endDate; + // washStore.baseParams['taskGroup'] = taskGroup; + // washStore.load({params:{start: 0, limit: 10}}); + + // packingStore.baseParams['tousseName'] = goodName; + // packingStore.baseParams['tousseType'] = tousseType; + // packingStore.baseParams['startDate'] = startDate; + // packingStore.baseParams['endDate'] = endDate; + // packingStore.baseParams['taskGroup'] = taskGroup; + // packingStore.load({params:{start: 0, limit: 10}}); + + // reviewStore.baseParams['tousseName'] = goodName; + // reviewStore.baseParams['tousseType'] = tousseType; + // reviewStore.baseParams['startDate'] = startDate; + // reviewStore.baseParams['endDate'] = endDate; + // reviewStore.baseParams['taskGroup'] = taskGroup; + // reviewStore.load({params:{start: 0, limit: 10}}); + + // sterilizationStore.baseParams['tousseName'] = goodName; + // sterilizationStore.baseParams['tousseType'] = tousseType; + // sterilizationStore.baseParams['startDate'] = startDate; + // sterilizationStore.baseParams['endDate'] = endDate; + // sterilizationStore.baseParams['taskGroup'] = taskGroup; + // sterilizationStore.load({params:{start: 0, limit: 10}}); + + // invoicePlanStore.baseParams['tousseName'] = goodName; + // invoicePlanStore.baseParams['tousseType'] = tousseType; + // invoicePlanStore.baseParams['department'] = department; + // invoicePlanStore.baseParams['startDate'] = startDate; + // invoicePlanStore.baseParams['endDate'] = endDate; + // invoicePlanStore.baseParams['taskGroup'] = taskGroup; + // invoicePlanStore.load({params:{start: 0, limit: 10}}); - washStore.baseParams['tousseName'] = goodNmae; - washStore.baseParams['tousseType'] = tousseType; - washStore.baseParams['startDate'] = startDate; - washStore.baseParams['endDate'] = endDate; - washStore.load({params:{start: 0, limit: 10}}); - - packingStore.baseParams['tousseName'] = goodNmae; - packingStore.baseParams['tousseType'] = tousseType; - packingStore.baseParams['startDate'] = startDate; - packingStore.baseParams['endDate'] = endDate; - packingStore.load({params:{start: 0, limit: 10}}); - - reviewStore.baseParams['tousseName'] = goodNmae; - reviewStore.baseParams['tousseType'] = tousseType; - reviewStore.baseParams['startDate'] = startDate; - reviewStore.baseParams['endDate'] = endDate; - reviewStore.load({params:{start: 0, limit: 10}}); - - sterilizationStore.baseParams['tousseName'] = goodNmae; - sterilizationStore.baseParams['tousseType'] = tousseType; - sterilizationStore.baseParams['startDate'] = startDate; - sterilizationStore.baseParams['endDate'] = endDate; - sterilizationStore.load({params:{start: 0, limit: 10}}); - - invoicePlanStore.baseParams['tousseName'] = goodNmae; - invoicePlanStore.baseParams['tousseType'] = tousseType; - invoicePlanStore.baseParams['department'] = department; - invoicePlanStore.baseParams['startDate'] = startDate; - invoicePlanStore.baseParams['endDate'] = endDate; - invoicePlanStore.load({params:{start: 0, limit: 10}}); - } +/** + * 根据参数加载对应的store + * @param store 要加载的store + * @param queryParam 请求的参数 + */ +function loadStoreByParams(store, queryParam) { + var pageParam = {start: 0, limit: 10}; + Ext.apply(store.baseParams, queryParam); + store.load({params: pageParam}); +} + + function GetDateStr(AddDayCount,hh,mm) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 @@ -179,7 +221,25 @@ ] ) }); - + + //任务组store + var taskStore = new Ext.data.Store({ + hidden : !sstsConfig.isShowTaskGroup, + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/taskGroupAction!loadTaskGroupStore.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data', + totalProperty: 'totalCount' + },[ + {name : 'id',mapping : 'valueField'}, + {name : 'taskGroupName',mapping : 'displayField'} + ] + ) + }); + + var startDate = new Date(); startDate.setHours(0,0,0); @@ -204,7 +264,7 @@ height : 40, labelWidth : 70, items : [{ - columnWidth : .3, + columnWidth : .18, layout : 'form', labelWidth : 60, items : [{ @@ -232,7 +292,7 @@ } }] },{ - columnWidth : .2, + columnWidth : .15, layout : 'form', labelWidth : 60, items : [{ @@ -258,9 +318,36 @@ } } }] - },{ - columnWidth : .25, + columnWidth : .15, + layout : 'form', + labelWidth : 60, + items : [{ + xtype : 'combo', + id : 'taskGroup', + name : 'taskGroup', + hidden : !sstsConfig.isShowTaskGroup, + queryParam : 'spell', + fieldLabel : '任务组', + minChars : 0, + valueField : 'id', + displayField : 'taskGroupName', + anchor : '95%', + listWidth : 150, + store : taskStore, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true, + listeners : { + select : function(combo, record, index) { + // Ext.getCmp('department').setValue(record.data.name); + } + } + }] + },{ + columnWidth : .18, layout : 'form', labelWidth : 60, items : [{ @@ -288,7 +375,7 @@ } }] },{ - columnWidth : .25, + columnWidth : .18, layout : 'form', labelWidth : 60, items : [{ Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/WdRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/WdRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/WdRoomControlHelper.java (revision 16631) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控清洗记录信息查询 + * @since 2017-01-06 + */ +public class WdRoomControlHelper implements SupplyRoomControlHelper { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + return "select wr.id as \"id\",ci.name as \"tousseName\",ci.amount as \"amount\"," + + "wr.startDate as \"startDate\",wr.endDate as \"endDate\"," + + "wr.operator as \"operator\",wr.disinfectIdentification as \"disinfectIdentification\"," + + "wr.disinfectProgram as \"disinfectProgram\",cb.containerName as \"basketName\" "; + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + String orgUnitCoding = config.getOrgUnitCoding(); + String startDate = supplyRoomVo.getStartDate(); + String endDate = supplyRoomVo.getEndDate(); + String tousseName = supplyRoomVo.getTousseName(); + String tousseType = supplyRoomVo.getTousseType(); + String taskGroup = supplyRoomVo.getTaskGroup(); + String whereSql = "from WashAndDisinfectRecord wr " + + " left join ClassifyBasket_WashRecord cw on wr.id = cw.WashAndDisinfectRecord_ID" + + " left join ClassifyBasket cb on cb.id = cw.ClassifyBasket_ID" + + " left join ClassifiedItem ci on cb.id = ci.classifybasket_id " + + " where wr.orgUnitCoding = '" + orgUnitCoding + "'" + + " and (ci.itemType = '材料' or ci.itemType in (" + SupplyRoomControlManagerImpl.TOUSSE_TYPE + "))" + + " and wr.recordCreateDate between " + + dateQueryAdapter.dateAdapter(startDate) + + " and " + + dateQueryAdapter.dateAdapter(endDate); + + if (StringUtils.isNotBlank(tousseName)) { + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)) { + whereSql += " and (ci.tousseNameForMaterial like '%" + tousseName + "%' or (ci.itemType = '" + TousseDefinition.PACKAGE_TYPE_DISINFECTION + "' and ci.name = '" + tousseName + "'))"; + } + else { + whereSql += " and ci.name = '" + tousseName + "'"; + } + } + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + whereSql += String.format(" and ci.toussedefinition_id in (select cht.tousseDefinitionId from CssdHandleTousses cht where cht.taskGroup = '%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + } + return whereSql; + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Map washMap = new HashMap(); + washMap.put("totalCount", results[0]); + washMap.put("totalWashAmount", results[1]); + washMap.put("data", list); + return washMap; + } + + + + @Override + public Map getCountSqlS(String whereSql) { + return null; + } +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/action/SupplyRoomControlAction.java =================================================================== diff -u -r14030 -r16631 --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/action/SupplyRoomControlAction.java (.../SupplyRoomControlAction.java) (revision 14030) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/action/SupplyRoomControlAction.java (.../SupplyRoomControlAction.java) (revision 16631) @@ -2,7 +2,15 @@ import java.io.IOException; import java.util.Map; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; + +import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; +import com.forgon.disinfectsystem.supplyroomcontrol.service.SupplyRoomControlManager2; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; @@ -17,31 +25,40 @@ @ParentPackage(value = "default") @Namespace(value = "/disinfectSystem") @Action(value = "supplyRoomControlAction") -public class SupplyRoomControlAction { +public class SupplyRoomControlAction implements ModelDriven, Preparable { private SupplyRoomControlManager supplyRoomControlManager; + private SupplyRoomControlManager2 supplyRoomControlManager2; + + private SupplyRoomVo supplyRoomVo = new SupplyRoomVo(); + + public SupplyRoomVo getSupplyRoomVo() { + return supplyRoomVo; + } + + public void setSupplyRoomVo(SupplyRoomVo supplyRoomVo) { + this.supplyRoomVo = supplyRoomVo; + } + + public void setSupplyRoomControlManager2(SupplyRoomControlManager2 supplyRoomControlManager2) { + this.supplyRoomControlManager2 = supplyRoomControlManager2; + } + public void setSupplyRoomControlManager( SupplyRoomControlManager supplyRoomControlManager) { this.supplyRoomControlManager = supplyRoomControlManager; } public void searchRecyclingApplication(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String department = StrutsParamUtils.getPraramValue("department", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map applicationMap = supplyRoomControlManager.getRecyclingApplicationList(statDate, endDate, department,start, limit, tousseName,tousseType); + Map applicationMap = supplyRoomControlManager2.getRecyclingApplicationList(supplyRoomVo); + // Map applicationMap = supplyRoomControlManager.getRecyclingApplicationList(statDate, endDate, department,start, limit, tousseName,tousseType); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(applicationMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } outPrintJson(applicationData); @@ -80,109 +97,82 @@ } public void searchWashDisinfection(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map washDisinfectionMap = supplyRoomControlManager.getWashDisinfectionList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + // String statDate = StrutsParamUtils.getPraramValue("startDate", ""); + // String endDate = StrutsParamUtils.getPraramValue("endDate", ""); + // String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); + // String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); + // String department = StrutsParamUtils.getPraramValue("department", ""); + // String limit = StrutsParamUtils.getPraramValue("limit", ""); + // String start = StrutsParamUtils.getPraramValue("start", ""); + // String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); + Map washDisinfectionMap = supplyRoomControlManager2.getWashDisinfectionList(supplyRoomVo); + // Map washDisinfectionMap = supplyRoomControlManager.getWashDisinfectionList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(washDisinfectionMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } outPrintJson(applicationData); } public void searchPacking(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map packingMap = supplyRoomControlManager.getPackingList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + // Map packingMap = supplyRoomControlManager.getPackingList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + Map packingMap = supplyRoomControlManager2.getPackingList(supplyRoomVo); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(packingMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } outPrintJson(applicationData); } public void searchReview(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map reviewMap = supplyRoomControlManager.getReviewList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + // Map reviewMap = supplyRoomControlManager.getReviewList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + Map reviewMap = supplyRoomControlManager2.getReviewList(supplyRoomVo); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(reviewMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } outPrintJson(applicationData); } public void searchSterilization(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map sterilizationMap = supplyRoomControlManager.getSterilizationList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); + Map sterilizationMap = supplyRoomControlManager2.getSterilizationList(supplyRoomVo); + // Map sterilizationMap = supplyRoomControlManager.getSterilizationList(statDate, endDate, departCoding,start, limit, tousseName,tousseType); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(sterilizationMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } outPrintJson(applicationData); } public void searchInvoice(){ - - String statDate = StrutsParamUtils.getPraramValue("startDate", ""); - String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - String department = StrutsParamUtils.getPraramValue("department", ""); - String limit = StrutsParamUtils.getPraramValue("limit", ""); - String start = StrutsParamUtils.getPraramValue("start", ""); - Map invoiceMap = supplyRoomControlManager.getInvoicePlanList(statDate, endDate, department,start, limit, tousseName,tousseType); + // Map invoiceMap = supplyRoomControlManager.getInvoicePlanList(statDate, endDate, department,start, limit, tousseName,tousseType); + Map invoiceMap = supplyRoomControlManager2.getInvoicePlanList(supplyRoomVo); ObjectMapper mapper = new ObjectMapper(); String applicationData = ""; try { mapper.setSerializationInclusion(Include.NON_NULL); applicationData = mapper.writeValueAsString(invoiceMap); - } catch (JsonProcessingException e) { + } catch (Exception e) { e.printStackTrace(); } @@ -341,5 +331,13 @@ outPrintJson(invoicePlanData); } - + + @Override + public SupplyRoomVo getModel() { + return supplyRoomVo; + } + + @Override + public void prepare() throws Exception { + } } Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RaRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RaRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RaRoomControlHelper.java (revision 16631) @@ -0,0 +1,97 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控回收申请信息查询 + * @since 2017-01-06 + */ +public class RaRoomControlHelper implements SupplyRoomControlHelper { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomControlManager supplyRoomControlManager; + + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + public void setSupplyRoomControlManager(SupplyRoomControlManager supplyRoomControlManager) { + this.supplyRoomControlManager = supplyRoomControlManager; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + String dressing1 = ""; + String dressing2 = ""; + String tousseType = supplyRoomVo.getTousseType(); + if (!TousseDefinition.PACKAGE_TYPE_DRESSING.equals(tousseType) && !"一次性物品".equals(tousseType)) { + dressing1 = ",rr.recyclingTime as \"recyclingTime\",po.basketName as \"basketName\""; + dressing2 = "po.recyclingAmount as \"recyclingAmount\","; + } + return "select distinct ip.id as \"id\",po.tousseName as \"tousseName\",po.urgentAmount as \"urgentAmount\",po.sendOutAmount as \"sendOutAmount\"," + + "po.amount as \"amount\",ip.depart as \"depart\"," + dressing2 + + "ip.departCoding as \"departCoding\",ip.applicationTime as \"applicationTime\"," + + "ip.submitTime as \"submitTime\",ip.printTime as \"printTime\"," + + "ip.serialNumber as \"serialNumber\",ip.settleAccountsDepart as \"settleAccountsDepart\"," + + "replace(ip.remark,'\"',' ') as \"remark\",ip.applicant as \"applicant\",po.diposable as \"diposable\"" + dressing1; + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + String tousseType = supplyRoomVo.getTousseType(); + String tousseName = supplyRoomVo.getTousseName(); + String departCoding = supplyRoomVo.getDepartment(); + String taskGroup = supplyRoomVo.getTaskGroup(); + String startDateStr = dateQueryAdapter.dateAdapter(supplyRoomVo.getStartDate()); + String endDateStr = dateQueryAdapter.dateAdapter(supplyRoomVo.getEndDate()); + String whereSql = " from TousseItem po,invoicePlan ip left join RecyclingRecord rr" + + " on rr.recyclingApplication_id = ip.id where po.RecyclingApplication_id = ip.id " + + " and ip.type in (" + SupplyRoomControlManagerImpl.INVOICEPLAN_TYPE + ") and ip.applicationTime between " + + startDateStr + " and " + endDateStr + + " and ip.committedStatus = 1 and (ip.recyclingStatus != '" + + InvoicePlan.STATUS_END + "' or ip.recyclingStatus is null)"; + whereSql = supplyRoomControlManager.setDisinfectionGoodsQuerySql(tousseName, tousseType, whereSql); + if (StringUtils.isNotBlank(departCoding)) { + whereSql += " and ip.depart = '" + departCoding + "'"; + } + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + whereSql += String.format(" and po.id in (select ti.id from TousseItem ti join CssdHandleTousses cht on ti.tousseDefinitionId = cht.tousseDefinitionId " + + " where cht.taskGroup ='%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + } + return whereSql; + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Map applicationMap = new HashMap(); + applicationMap.put("totalCount", results[0]); + applicationMap.put("totalAppAmount", results[1]); + applicationMap.put("totalRecyAmount", results[2]); + applicationMap.put("data", list); + return applicationMap; + } + + + @Override + public Map getCountSqlS(String whereSql) { + return null; + } +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/action/TaskGroupAction.java =================================================================== diff -u -r13425 -r16631 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/action/TaskGroupAction.java (.../TaskGroupAction.java) (revision 13425) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/action/TaskGroupAction.java (.../TaskGroupAction.java) (revision 16631) @@ -9,6 +9,10 @@ import javax.servlet.http.HttpServletResponse; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.vo.LoginUserData; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.util.PageUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -21,6 +25,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; @@ -37,6 +42,7 @@ @Action(value = "taskGroupAction") public class TaskGroupAction implements ModelDriven,Preparable { + protected Logger logger = Logger.getLogger(this.getClass()); private TaskGroup taskGroup; private TaskGroupManager taskGroupManager; @@ -130,6 +136,20 @@ e.printStackTrace(); } } + + /** + * 根据部门编号获取对应的任务组数据源 + */ + public void loadTaskGroupStore(){ + try { + List> list = taskGroupManager.loadTaskGroupStore(); + PageUtil.outPutResult(PageUtil.getPagePara(), list); + } + catch (Exception e) { + logger.error(e, e); + StrutsResponseUtils.output(false); + } + } public void deleteTaskGroup(){ String ids = StrutsParamUtils.getPraramValue("ids", ""); Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/StRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/StRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/StRoomControlHelper.java (revision 16631) @@ -0,0 +1,110 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控灭菌信息查询 + * @since 2017-01-06 + */ +public class StRoomControlHelper implements SupplyRoomControlHelper { + + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + return "select \"tousseName\",\"id\",\"operator\",\"disinfectIdentification\",\"frequency\",\"disinfectProgram\",\"startDate\",\"endDate\",\"basketName\",count(0) as \"amount\" from "; + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + String tousseName = supplyRoomVo.getTousseName(); + String taskGroup = supplyRoomVo.getTaskGroup(); + String querySql = "select ti.tousseName as \"tousseName\",sr.id as \"id\",sr.sterilizationUser as \"operator\",s.name as \"disinfectIdentification\"," + + "sr.frequency as \"frequency\",sr.sterilizationType as \"disinfectProgram\",sr.startDate as \"startDate\",sr.endDate as \"endDate\","; + String joinedBasketSql = querySql + "c.containerName as \"basketName\" "; + String notJoinedBasketSql = querySql + "'' as \"basketName\" "; + String condition = "where 1=1 " + + "and sr.orgUnitCoding = '" + config.getOrgUnitCoding() + "' " + + "and td.tousseType in (" + SupplyRoomControlManagerImpl.TOUSSE_TYPE + ") " + + "and sr.status = '" + SterilizationRecord.STERILIZATION_STATUS_END + "' " + + "and sr.endDate between " + + dateQueryAdapter.dateAdapter(supplyRoomVo.getStartDate()) + + " and " + + dateQueryAdapter.dateAdapter(supplyRoomVo.getEndDate()); + String joinedBasketWhereSql = "from TousseInstance ti left join TousseDefinition td on ti.toussename = td.name " + + "left join ReviewedBasket rb on rb.id = ti.reviewBasket_id " + + "left join Container c on c.id = rb.container_id " + + "left join sterilization_reviewed st on st.reviewedBasket_id = rb.id " + + "left join SterilizationRecord sr on sr.id = st.sterilizationRecord_id " + + "left join Sterilizer s on s.id = sr.sterilizer_id " + + condition; + String notJoinedBasketWhereSql = "from TousseInstance ti left join TousseDefinition td on ti.toussename = td.name " + + "left join sterilization_tousseInstance st on st.tousseInstance_id = ti.id " + + "left join SterilizationRecord sr on sr.id = st.sterilizationRecord_id " + + "left join Sterilizer s on s.id = sr.sterilizer_id " + + condition; + String groupBySql = " group by alias.\"tousseName\",alias.\"id\",alias.\"operator\",alias.\"disinfectProgram\",alias.\"frequency\",alias.\"disinfectIdentification\",alias.\"startDate\",alias.\"endDate\",alias.\"basketName\""; + if (StringUtils.isNotBlank(tousseName)) { + String tousseNameSql = " and ti.tousseName = '" + tousseName + "'"; + joinedBasketWhereSql += tousseNameSql; + notJoinedBasketWhereSql += tousseNameSql; + } + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + String taskGroupSql = String.format("and td.id in (select cht.tousseDefinitionId from CssdHandleTousses cht where cht.taskGroup = '%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + joinedBasketWhereSql += taskGroupSql; + notJoinedBasketWhereSql += taskGroupSql; + } + String whereSql = "(" + joinedBasketSql + joinedBasketWhereSql + " union all " + notJoinedBasketSql + notJoinedBasketWhereSql + ") alias " + groupBySql; + return whereSql; + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Integer[] sterilizationTotalAmount = (Integer[]) param.get("sterilizationTotalAmount"); + Map packingMap = new HashMap(); + packingMap.put("totalCount", results[0]); + packingMap.put("sterilizationTotalAmount", sterilizationTotalAmount[0]); + packingMap.put("data", list); + return packingMap; + } + + + @Override + public Map getCountSqlS(String whereSql) { + String countSql = "select count(*),1,1 from (select alias.* from " + whereSql + ") alias1"; + String totalCountSql = "select sum(alias2.amount),1,1 from (" + ("select count(*) amount from " + whereSql) + ") alias2"; + Map map = new HashedMap(); + map.put("countResult", countSql); + map.put("sterilizationTotalAmount", totalCountSql); + return map; + } +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RvRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RvRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/RvRoomControlHelper.java (revision 16631) @@ -0,0 +1,96 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控审核信息查询 + * @since 2017-01-06 + */ +public class RvRoomControlHelper implements SupplyRoomControlHelper { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + private SupplyRoomControlManager supplyRoomControlManager; + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setSupplyRoomControlManager(SupplyRoomControlManager supplyRoomControlManager) { + this.supplyRoomControlManager = supplyRoomControlManager; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + String sql = "select po.tousseName as \"tousseName\",po.reviewer as \"operator\"," + + "po.reviewTime as \"applicationTime\",po.sterilizationBasket as \"basketName\"," + + "count(*) as \"amount\" "; + logger.debug("[selectSql]: " + sql); + return sql; + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + String taskGroup = supplyRoomVo.getTaskGroup(); + String whereSql = "from tousseinstance po,toussedefinition tf" + + " where po.tousseDefinition_id = tf.id" + + " and po.orgUnitCoding = '" + config.getOrgUnitCoding() + "'" + + " and tf.tousseType in (" + SupplyRoomControlManagerImpl.TOUSSE_TYPE + ")" + + " and po.reviewTime between " + + dateQueryAdapter.dateAdapter(supplyRoomVo.getStartDate()) + + " and " + + dateQueryAdapter.dateAdapter(supplyRoomVo.getEndDate()); + whereSql = supplyRoomControlManager.setDisinfectionGoodsQuerySql(supplyRoomVo.getTousseName(), supplyRoomVo.getTousseType(), whereSql); + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + whereSql += String.format("and tf.id in (select cht.tousseDefinitionId from CssdHandleTousses cht " + + " where cht.taskGroup = '%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + } + logger.debug("[whereSql]: " + whereSql); + return whereSql; + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Integer[] totalReviewAmount = (Integer[]) param.get("totalReviewAmount"); + Map packingMap = new HashMap(); + packingMap.put("totalCount", results[0]); + packingMap.put("totalReviewAmount", totalReviewAmount[0]); + packingMap.put("data", list); + return packingMap; + } + + + @Override + public Map getCountSqlS(String whereSql) { + String totalCountSql = "select count(*),1,1 " + whereSql; + whereSql += " group by po.tousseName,po.reviewer,po.reviewTime,po.sterilizationBasket"; + String countSql = "select count(*),1,1 from (select po.tousseName " + whereSql + ")alias"; + Map map = new HashedMap(); + map.put("countResult", countSql); + map.put("totalReviewAmount", totalCountSql); + return map; + } +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java =================================================================== diff -u -r15815 -r16631 --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java (.../SupplyRoomControlManagerImpl.java) (revision 15815) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManagerImpl.java (.../SupplyRoomControlManagerImpl.java) (revision 16631) @@ -57,7 +57,7 @@ private ContainerManager containerManager; //申请单类型 - private static final String INVOICEPLAN_TYPE = "'" + public static final String INVOICEPLAN_TYPE = "'" + InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM+"','" + InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM+"','" + InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM+"','" @@ -70,7 +70,7 @@ + InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION+"'"; //器械包类型 - private static final String TOUSSE_TYPE = "'" + public static final String TOUSSE_TYPE = "'" + TousseDefinition.PACKAGE_TYPE_INSIDE+"','" + TousseDefinition.PACKAGE_TYPE_DISINFECTION+"','" + TousseDefinition.PACKAGE_TYPE_CUSTOM+"','" @@ -236,8 +236,9 @@ washMap.put("data", list); return washMap; } - - private Integer [] countBySql(String sql){ + + @Override + public Integer [] countBySql(String sql){ Integer [] array = new Integer[3]; if(StringUtils.isNotBlank(sql)){ ResultSet rs = objectDao.executeSql(sql); @@ -497,7 +498,8 @@ return invoiceMap; } - private String setDisinfectionGoodsQuerySql(String tousseName, + @Override + public String setDisinfectionGoodsQuerySql(String tousseName, String tousseType, String sql) { if(StringUtils.isNotBlank(tousseName)){ if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType)){ Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager.java =================================================================== diff -u -r14030 -r16631 --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager.java (.../SupplyRoomControlManager.java) (revision 14030) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlManager.java (.../SupplyRoomControlManager.java) (revision 16631) @@ -36,4 +36,9 @@ * @return */ public String findPendingBasket(String departCoding, String currentPage,String pageSize); + + + Integer []countBySql(String sql); + + String setDisinfectionGoodsQuerySql(String tousseName, String tousseType, String sql); } Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/vo/SupplyRoomVo.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/vo/SupplyRoomVo.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/vo/SupplyRoomVo.java (revision 16631) @@ -0,0 +1,86 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.vo; + +/** + * Created by zhonghaowen on 2017/1/5. + * 消毒供应中心运作监控vo类,用于封装页面传过来的参数 + */ +public class SupplyRoomVo { + + /** + * 器械包类型 + */ + private String tousseType; + + /** + * 器械包名字 + */ + private String tousseName; + + /** + * 部门名字 + */ + private String department; + + /** + * 任务组名字 + */ + private String taskGroup; + + /** + * 开始日期 + */ + private String startDate; + + /** + * 结束日期 + */ + private String endDate; + + public String getTousseType() { + return tousseType; + } + + public void setTousseType(String tousseType) { + this.tousseType = tousseType; + } + + public String getTousseName() { + return tousseName; + } + + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public String getTaskGroup() { + return taskGroup; + } + + public void setTaskGroup(String taskGroup) { + this.taskGroup = taskGroup; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } +} Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js =================================================================== diff -u -r16585 -r16631 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 16585) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 16631) @@ -139,5 +139,7 @@ //是否显示科室分组选择框 isShowDeptGroup : true, //是否显示按器械包分组选择框 - isShowTousseGroup : true + isShowTousseGroup : true, + //消毒供应中心运作监控是否任务组下拉框 + isShowTaskGroup : true } \ No newline at end of file Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/SupplyRoomControlHelper.java (revision 16631) @@ -0,0 +1,49 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; + +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控查询辅助类, 用于创建对应的查询sql + * @since 2017-01-06 + */ +public interface SupplyRoomControlHelper { + + + /** + * 创建查询的sql + * + * @param supplyRoomVo {@link SupplyRoomVo} + * @return 查询的sql + */ + String buildSelectSql(SupplyRoomVo supplyRoomVo); + + /** + * 创建条件的sql + * + * @param supplyRoomVo supplyRoomVo {@link SupplyRoomVo} + * @return 条件的sql + */ + String buildWhereSql(SupplyRoomVo supplyRoomVo); + + /** + * 重新设置结果集 + * + * @param list 查询出来的结果集 + * @param param 需要设置的其他参数 + * @return 最终返回页面的结果 + */ + Map setResult(List list, Map param); + + /** + * 创建要统计的统计sql + * + * @param whereSql 条件sql + * @return + */ + Map getCountSqlS(String whereSql); +} Index: ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/PkRoomControlHelper.java =================================================================== diff -u --- ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/PkRoomControlHelper.java (revision 0) +++ ssts-operationmonitor/src/main/java/com/forgon/disinfectsystem/supplyroomcontrol/service/PkRoomControlHelper.java (revision 16631) @@ -0,0 +1,88 @@ +package com.forgon.disinfectsystem.supplyroomcontrol.service; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.supplyroomcontrol.vo.SupplyRoomVo; +import com.forgon.disinfectsystem.vo.TousseOperate; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 消毒供应中心运作监控装配信息查询 + * @since 2017-01-06 + */ +public class PkRoomControlHelper implements SupplyRoomControlHelper { + + protected Logger logger = Logger.getLogger(this.getClass()); + + private DateQueryAdapter dateQueryAdapter; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + private SupplyRoomControlManager supplyRoomControlManager; + + public void setSupplyRoomControlManager(SupplyRoomControlManager supplyRoomControlManager) { + this.supplyRoomControlManager = supplyRoomControlManager; + } + + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + @Override + public String buildSelectSql(SupplyRoomVo supplyRoomVo) { + String sql = "select po.tousseName as \"tousseName\",po.amount as \"amount\"," + + "po.packTime as \"applicationTime\",po.packer as \"operator\" "; + return sql; + + } + + @Override + public String buildWhereSql(SupplyRoomVo supplyRoomVo) { + String startDate = supplyRoomVo.getStartDate(); + String endDate = supplyRoomVo.getEndDate(); + String tousseName = supplyRoomVo.getTousseName(); + String tousseType = supplyRoomVo.getTousseType(); + String taskGroup = supplyRoomVo.getTaskGroup(); + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + String orgUnitCoding = config.getOrgUnitCoding(); + String whereSql = "from PackingRecord po where po.packTime between " + + dateQueryAdapter.dateAdapter(startDate) + + " and " + + dateQueryAdapter.dateAdapter(endDate) + + " and po.orgUnitCoding = '" + orgUnitCoding + "'"; + whereSql = supplyRoomControlManager.setDisinfectionGoodsQuerySql(tousseName, tousseType, whereSql); + if (StringUtils.isNotBlank(taskGroup) && !"全部".equals(taskGroup)) { + whereSql += String.format("and po.tousseDefinitionId in (select cht.tousseDefinitionId from CssdHandleTousses cht where cht.taskGroup = '%s' and cht.orgUnitCode = '%s')", taskGroup, AcegiHelper.getLoginUser().getCurrentOrgUnitCode()); + } + return whereSql; + + } + + @Override + public Map setResult(List list, Map param) { + Integer[] results = (Integer[]) param.get("countResult"); + Map packingMap = new HashMap(); + packingMap.put("totalCount", results[0]); + packingMap.put("packingTotalAmount", results[1]); + packingMap.put("data", list); + return packingMap; + } + + + @Override + public Map getCountSqlS(String whereSql) { + return null; + } +} Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r16571 -r16631 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 16571) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 16631) @@ -32,7 +32,28 @@ - + + + + + + + + + PROPAGATION_REQUIRED + + + + + + + + + + + + + Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManagerImpl.java =================================================================== diff -u -r13418 -r16631 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManagerImpl.java (.../TaskGroupManagerImpl.java) (revision 13418) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/taskGroup/service/TaskGroupManagerImpl.java (.../TaskGroupManagerImpl.java) (revision 16631) @@ -1,7 +1,11 @@ package com.forgon.disinfectsystem.basedatamanager.taskGroup.service; import java.util.List; +import java.util.Map; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.vo.LoginUserData; +import com.forgon.tools.util.ExtJsUtil; import org.apache.commons.lang.StringUtils; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; @@ -72,4 +76,24 @@ return (List)objectDao.findBySql(TaskGroup.class.getSimpleName(), sql); } + @Override + public List> loadTaskGroupStore() { + //获得当前登录用户的信息 + LoginUserData userData = AcegiHelper.getLoginUser(); + return this.buildTaskGroupRe(this.findTaskGroupByDepartCode(userData.getCurrentOrgUnitCode())); + } + + /** + * 构建返回页面的下拉框结果集 + * @param taskGroupList 任务组结果集 + * @return 以valueField和displayField的形式返回 + */ + private List> buildTaskGroupRe(List taskGroupList){ + List> groupList = ExtJsUtil.buildFirstSelect(); + for (TaskGroup taskGroup : taskGroupList) { + groupList.add(ExtJsUtil.createSelect(taskGroup.getId().toString(), taskGroup.getTaskGroupName())); + } + return groupList; + } + }