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 += buildDepartTable(recyclingDetail,departmentGroupNames[i]);
+ htmlTable += " |
";
+ }
+ //备注
+// htmlTable += "";
+// htmlTable += buildRemarkTable(recyclingDetail.remarks,"备注");
+// 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