Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/DepartRecycleTousse.java =================================================================== diff -u --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/DepartRecycleTousse.java (revision 0) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/DepartRecycleTousse.java (revision 21986) @@ -0,0 +1,40 @@ +package com.forgon.disinfectsystem.recyclingrecord.vo; +/** + * 科室回收器械包的数量 + * @author kzh + * + */ +public class DepartRecycleTousse { + /** + * 科室名称 + */ + private String depart; + /** + * 科室回收的器械包名称 + */ + private String tousseName; + /** + * 科室回收器械包数量 + */ + private Integer amount; + + public String getDepart() { + return depart; + } + public void setDepart(String depart) { + this.depart = depart; + } + public String getTousseName() { + return tousseName; + } + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public Integer getAmount() { + return amount; + } + public void setAmount(Integer amount) { + this.amount = amount; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js =================================================================== diff -u -r19642 -r21986 --- ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js (.../printRecyclingDetailWin.js) (revision 19642) +++ ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js (.../printRecyclingDetailWin.js) (revision 21986) @@ -210,6 +210,28 @@ showResult(result.cause); } }); + }else if(sstsConfig.printRecyclingDetailWithDepartGroup){ + //按科室分组打印回收清单 + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/recyclingRecordAction!printRecyclingDetailWithDepartmentGroup.do', + params : { + startDateTime : startDateTime, + endDateTime : endDateTime, + handlerDepartCoding : handlerDepartCoding + }, + success : function(response, options) { + var obj = JSON.parse(response.responseText); + if(obj.success){ + printRecyclingDetailWithDepartgroup(printType,startDateTime,endDateTime,obj.printUser,obj); + }else{ + showResult(obj.message); + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + showResult(result.cause); + } + }); } // 根据项目的JSON配置进行打印 else { @@ -447,6 +469,42 @@ return ""; } +function printRecyclingDetailWithDepartgroup(printType,startDateTime,endDateTime,printUser,recyclingDetail){ + var LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM')); + LODOP.SET_PRINT_STYLE("FontSize",17); + LODOP.ADD_PRINT_TEXT(5,300,"100%",5,"CSSD每日回收登记表"); + LODOP.SET_PRINT_STYLE("FontSize",11); + LODOP.ADD_PRINT_TEXT(35,50,"100%",5,"制单人: " + printUser); + LODOP.ADD_PRINT_TEXT(35,200,"100%",5,"开始时间:" + startDateTime); + LODOP.ADD_PRINT_TEXT(35,450,"100%",5,"结束时间: " + endDateTime); + +// LODOP.SET_PRINT_STYLE("ItemType", 2); +// LODOP.ADD_PRINT_TEXT(10,600,"95%",5,"第#页/共&页"); + + var htmlTable =""; + var departmentGroupNames = recyclingDetail.departmentGroupNames + for(var i = 0; i < departmentGroupNames.length;++i){ + //分院 + htmlTable += ""; + } + //备注 +// htmlTable += ""; + + + htmlContent = "" + htmlTable + ""; + LODOP.ADD_PRINT_HTM(55,5,"100%","100%",htmlContent); + + if(printType == 0){//直接打印 + LODOP.PRINT(); + }else{//打印预览 + LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD",1); + LODOP.PREVIEW(); + } +} function dongGuangZhongYiYuanRecyclingDetailPrint(printType,startDateTime,endDateTime,printUser,recyclingDetail){ var LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM')); LODOP.SET_PRINT_STYLE("FontSize",17); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r21236 -r21986 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 21236) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 21986) @@ -91,6 +91,7 @@ import com.forgon.disinfectsystem.recyclingapplication.service.RecyclingApplicationManager; import com.forgon.disinfectsystem.recyclingerror.vo.RecyclingErrorVo; import com.forgon.disinfectsystem.recyclingrecord.service.RecyclingRecordManager; +import com.forgon.disinfectsystem.recyclingrecord.vo.DepartRecycleTousse; import com.forgon.disinfectsystem.recyclingrecord.vo.DisinfectionDetailVo; import com.forgon.disinfectsystem.recyclingrecord.vo.ErrorDamageDetailVo; import com.forgon.disinfectsystem.recyclingrecord.vo.ExpressRecyclingVo; @@ -116,6 +117,7 @@ import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; +import com.forgon.tools.util.SqlUtils; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -1866,8 +1868,77 @@ e.printStackTrace(); } } - /** + * 按科室分组打印回收清单 + */ + public void printRecyclingDetailWithDepartmentGroup(){ + String fromTime = StrutsParamUtils.getPraramValue("startDateTime",""); + String toTime = StrutsParamUtils.getPraramValue("endDateTime", ""); + String handlerDepartCoding = StrutsParamUtils.getPraramValue("handlerDepartCoding",""); + if (StringUtils.isNotBlank(fromTime) && StringUtils.isNotBlank(toTime) && StringUtils.isNotBlank(handlerDepartCoding)) { + fromTime = dateQueryAdapter.dateAdapter(fromTime); + toTime = dateQueryAdapter.dateAdapter(toTime); + List departGroups = departmentGroupManager.getAll(); + if(CollectionUtils.isNotEmpty(departGroups)){ + List departAllCodes = new ArrayList<>(); + for(DepartmentGroup dg : departGroups){ + Collection col = dg.departCodes(); + if(CollectionUtils.isNotEmpty(col)){ + departAllCodes.addAll(col); + } + } + String orOrgUnitNameSQL = SqlUtils.getStringFieldInLargeCollectionsPredicate("po.departCode", departAllCodes); + + String sql = String + .format("select min(po.depart) departName,po.departCode,td.ancestorID,min(bo.tousseName) tousseName,sum(bo.amount) amount,td.id tousseDefId from %s po " + + "join %s bo on po.id = bo.recyclingRecord_id join %s td on td.id = bo.tousseDefinitionId " + + "where po.recyclingTime between %s and %s and po.orgUnitCoding = '%s' and %s group by po.departCode,td.ancestorID,td.id", + RecyclingRecord.class.getSimpleName(), RecyclingItem.class.getSimpleName(), + TousseDefinition.class.getSimpleName(),fromTime, toTime, handlerDepartCoding,orOrgUnitNameSQL); + + ResultSet rs = objectDao.executeSql(sql); + Map>> departGroupDetail = new HashMap<>(); + try { + while(rs.next()){ + String depart = rs.getString("departName"); + String departCode = rs.getString("departCode"); + String tousseName = rs.getString("tousseName"); + Integer amount = rs.getInt("amount"); + for(DepartmentGroup dg : departGroups){ + Collection coll = dg.departCodes(); + if(CollectionUtils.isNotEmpty(coll)&&coll.contains(departCode)){ + Map> groupMap = departGroupDetail.get(dg.getName()); + if(groupMap == null){ + groupMap = new HashMap>(); + departGroupDetail.put(dg.getName(), groupMap); + } + buildTousseItemJson(groupMap, departCode, depart, + tousseName, amount); + continue; + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + JSONObject data = new JSONObject(); + data.put("success",true); + for(Map.Entry>> entry : departGroupDetail.entrySet()){ + data.put(entry.getKey(), buildDepartToussJson(entry.getValue(),null)); + } + data.put("printUser", AcegiHelper.getLoginUserFullName()); + data.put("departmentGroupNames", departGroupDetail.keySet()); + StrutsResponseUtils.output(data); + }else{ + StrutsResponseUtils.output(false,"未设置科室分组"); + } + }else{ + StrutsResponseUtils.output(false); + } + } + /** * 东莞中医院回收清单定制方法 */ public void dongGuanZhongYiYuanProcess(){ @@ -2021,10 +2092,10 @@ Map 普通器械map = new HashMap(); Map 呼吸机管道map = new HashMap(); - Map> 住院专科回收清单map = new HashMap>(); - Map> 门诊专科回收清单map = new HashMap>(); - Map> 分院回收清单map = new HashMap>(); - Map> 其他器械回收清单map = new HashMap>(); + Map> 住院专科回收清单map = new HashMap>(); + Map> 门诊专科回收清单map = new HashMap>(); + Map> 分院回收清单map = new HashMap>(); + Map> 其他器械回收清单map = new HashMap>(); try { while(rs.next()){ @@ -2078,24 +2149,24 @@ } boolean isExist3 = isConfigExist(configMap.get(住院专科), departCode); if (isExist3) { - buildTousseItemJson(printConfig,住院专科回收清单map, departCode, depart, - tousseName, amount,住院专科); + buildTousseItemJson(住院专科回收清单map, departCode, depart, + tousseName, amount); continue; } boolean isExist4 = isConfigExist(configMap.get(门诊专科), departCode); if (isExist4) { - buildTousseItemJson(printConfig,门诊专科回收清单map, departCode, depart, - tousseName, amount,门诊专科); + buildTousseItemJson(门诊专科回收清单map, departCode, depart, + tousseName, amount); continue; } boolean isExist5 = isConfigExist(configMap.get(分院), departCode); if (isExist5) { - buildTousseItemJson(printConfig,分院回收清单map, departCode, depart, - tousseName, amount,分院); + buildTousseItemJson(分院回收清单map, departCode, depart, + tousseName, amount); continue; } - buildTousseItemJson(printConfig,其他器械回收清单map, departCode, depart, - tousseName, amount,""); + buildTousseItemJson(其他器械回收清单map, departCode, depart, + tousseName, amount); } } catch (SQLException e) { e.printStackTrace(); @@ -2187,16 +2258,16 @@ return amount; } - private JSONArray buildDepartToussJson(Map> map,JSONArray config){ + private JSONArray buildDepartToussJson(Map> map,JSONArray config){ JSONArray array = new JSONArray(); for (String departCode : map.keySet()) { JSONObject obj = new JSONObject(); obj.put("departCode", departCode); String showDepart = getShowDepart(config,departCode); if(StringUtils.isBlank(showDepart)){ - List list = map.get(departCode); - if(list != null && list.size() > 0){ - showDepart = list.get(0).optString("depart"); + List list = map.get(departCode); + if(CollectionUtils.isNotEmpty(list)){ + showDepart = list.get(0).getDepart(); } } obj.put("showDepart", showDepart); @@ -2225,17 +2296,17 @@ return isExist; } - public void buildTousseItemJson(JSONObject printConfig,Map> map, - String departCode, String depart, String tousseName, Integer amount,String model) { - List list = map.get(departCode); + public void buildTousseItemJson(Map> map, + String departCode, String depart, String tousseName, Integer amount) { + List list = map.get(departCode); if (list == null) { - list = new ArrayList(); + list = new ArrayList(); map.put(departCode, list); } - JSONObject obj = new JSONObject(); - obj.put("depart", depart); - obj.put("tousseName", tousseName); - obj.put("amount", amount); + DepartRecycleTousse obj = new DepartRecycleTousse(); + obj.setDepart(depart); + obj.setTousseName(tousseName); + obj.setAmount(amount); list.add(obj); } Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjyy/config.js =================================================================== diff -u -r13180 -r21986 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjyy/config.js (.../config.js) (revision 13180) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjyy/config.js (.../config.js) (revision 21986) @@ -51,5 +51,7 @@ //入库单是否显示发票 godownEntryShowInvoice:true, //入库单是否显示生物检测信息 - godownEntryShowBiologicalTestReport:true + godownEntryShowBiologicalTestReport:true, + //是否按科室分组打印回收清单,与recyclingRecordListFilterByAssetBelong不能同时并存(recyclingRecordListFilterByAssetBelong的优先级更高) + printRecyclingDetailWithDepartGroup:true } \ No newline at end of file
"; + htmlTable += buildDepartTable(recyclingDetail,departmentGroupNames[i]); + htmlTable += "
"; +// htmlTable += buildRemarkTable(recyclingDetail.remarks,"备注"); +// htmlTable += "