Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java =================================================================== diff -u -r21900 -r22140 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 21900) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 22140) @@ -362,6 +362,11 @@ * 当前审批节点名称 */ private String currentNodeDefinitionName; + /** + * 回收清单的打印状态。在申请单还是待回收状态,供应室打印科室的所有申请物品及数量,以这份打印的清单去做回收。这里记录这张单的打印状态,值为是或者否或者空。打印过的一定为是。 + * 另外,回收清单的打印,只打印待回收的申请单,部分回收的申请单不打印 + */ + private String recyclingSummaryPrintStatus = com.forgon.Constants.STR_NO; @Override @Id @@ -1176,5 +1181,13 @@ public void setCurrentNodeDefinitionName(String currentNodeDefinitionName) { this.currentNodeDefinitionName = currentNodeDefinitionName; } + + public String getRecyclingSummaryPrintStatus() { + return recyclingSummaryPrintStatus; + } + + public void setRecyclingSummaryPrintStatus(String recyclingSummaryPrintStatus) { + this.recyclingSummaryPrintStatus = recyclingSummaryPrintStatus; + } } Index: forgon-tools/src/main/java/com/forgon/tools/util/SqlUtils.java =================================================================== diff -u -r21435 -r22140 --- forgon-tools/src/main/java/com/forgon/tools/util/SqlUtils.java (.../SqlUtils.java) (revision 21435) +++ forgon-tools/src/main/java/com/forgon/tools/util/SqlUtils.java (.../SqlUtils.java) (revision 22140) @@ -106,7 +106,27 @@ return " 1=0 "; } + /** + * 获取非字符串集合的sql条件,集合对象可以是大集合 + * @param field + * @param p + * @return + */ + public static String getNonStringFieldInLargeCollectionsPredicate(String field, + Collection p) { + List> list = MyCollectionUtils.split(p); + if(CollectionUtils.isNotEmpty(list)){ + List itemSqls = new ArrayList<>(); + for(List item : list){ + String itemSql = getNonStringFieldInCollectionsPredicate(field,item); + itemSqls.add(String.format("(%s)",itemSql)); + } + return String.join(" or ", itemSqls); + } + return " 1=0 "; + } + /** * 获取字符串集合的sql条件 * @param field * @param p Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp =================================================================== diff -u -r22079 -r22140 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 22079) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 22140) @@ -470,6 +470,7 @@ .script("${ctx}/js/CookieManager.js") .script("${ctx}/disinfectsystem/common/cssdUtils.js").wait() + .script('${ctx}/disinfectsystem/packing/printRecyclingDetailWin.js') .script("goodsApplicationView.js").wait() .script("goodsApplicationForm.js").wait() .script("syncDisposableGoodsApplicationForm.js") Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java =================================================================== diff -u -r20064 -r22140 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 20064) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 22140) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.basedatamanager.departmentgroup.service; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -66,5 +67,18 @@ } return groupArray; } + @Override + public DepartmentGroup findBelongTo( + Collection departGroups, String departCode) { + if(CollectionUtils.isNotEmpty(departGroups)){ + for(DepartmentGroup dg : departGroups){ + Collection departCodes = dg.departCodes(); + if(CollectionUtils.isNotEmpty(departCodes) && departCodes.contains(departCode)){ + return dg; + } + } + } + return null; + } } Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js =================================================================== diff -u -r22079 -r22140 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 22079) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 22140) @@ -2157,6 +2157,37 @@ }); } } + },{ + text: '打印回收汇总单', hidden: !sstsConfig.printWaitRecyclingInvoicePlanSummary, handler: function () { + top.Ext.MessageBox.confirm("请确认", "要打印回收汇总单吗?", + function (btn) { + if (btn == 'yes') { + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/recyclingRecordAction!printWaitRecyclingInvoicePlanSummary.do', + success : function(response, options) { + var obj = Ext.decode(response.responseText); + if(obj.success){ + printWaitRecyclingInvoicePlanSummary(Ext4.Date.format(new Date(),'Y-m-d H:i:s'),obj.printUser,obj); + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/recyclingRecordAction!updateInvoicePlanRecyclingSummaryPrintStatus.do', + params : {invoicePlanIds : Ext.encode(obj.invoicePlanIds)} + }) + }else{ + showResult(obj.message); + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + if(result && result.message){ + showResult(result.message); + }else{ + showResult('打印失败'); + } + } + }); + } + }); + } }] }) }, { Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r22014 -r22140 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 22014) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 22140) @@ -5,6 +5,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -27,13 +28,15 @@ import org.apache.log4j.Logger; import com.forgon.Constants; +import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.ClassifiedItemManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.ClassifyBasketManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ContainerManager; +import com.forgon.disinfectsystem.basedatamanager.departmentgroup.service.DepartmentGroupManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; @@ -50,6 +53,7 @@ import com.forgon.disinfectsystem.entity.materialerrordamage.MaterialErrorDamageDetail; import com.forgon.disinfectsystem.entity.packing.IDCardInfoForPackingTask; import com.forgon.disinfectsystem.entity.packing.PackingTask; +import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingBasketSequence; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingItem; @@ -71,6 +75,7 @@ import com.forgon.disinfectsystem.recyclingapplication.vo.ReturnGoodVo; import com.forgon.disinfectsystem.recyclingrecord.vo.CustomIntoBasket; import com.forgon.disinfectsystem.recyclingrecord.vo.CustomIntoBasketItem; +import com.forgon.disinfectsystem.recyclingrecord.vo.DepartRecycleTousse; import com.forgon.disinfectsystem.recyclingrecord.vo.MaterialErrorDamageDetailVo; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingBasketItemMaterialVo; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingBasketItemVo; @@ -160,7 +165,20 @@ private BarcodeManager barcodeManager; private ClassifyBasketRecyclingSequenceManager classifyBasketRecyclingSequenceManager; + + private DateQueryAdapter dateQueryAdapter; + + private DepartmentGroupManager departmentGroupManager; + public void setDepartmentGroupManager( + DepartmentGroupManager departmentGroupManager) { + this.departmentGroupManager = departmentGroupManager; + } + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + public void setClassifyBasketRecyclingSequenceManager( ClassifyBasketRecyclingSequenceManager classifyBasketRecyclingSequenceManager) { this.classifyBasketRecyclingSequenceManager = classifyBasketRecyclingSequenceManager; @@ -3784,4 +3802,137 @@ //包实例的回收时间是取的回收记录的时间,没有要修改的 appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_INTERFERE, Log.TYPE_UPDATE, description); } + + @Override + public JSONObject printWaitRecyclingInvoicePlanSummary() { + Calendar now = Calendar.getInstance(); + String toTime = ForgonDateUtils.safelyFormatDate(now.getTime(), Constants.SIMPLEDATEFORMAT_YYYYMMDD, ""); + now.add(Calendar.DATE, -1); + String fromTime = ForgonDateUtils.safelyFormatDate(now.getTime(), Constants.SIMPLEDATEFORMAT_YYYYMMDD, ""); + String handlerDepartCoding = AcegiHelper.getCurrentOrgUnitCode(); + if(StringUtils.isBlank(handlerDepartCoding)){ + throw new SystemException("登录用户的所属科室不能为空"); + } + String dateSql = dateQueryAdapter.dateAreaSql("po.applicationTime", fromTime, toTime, true, true); + List departGroups = departmentGroupManager.getAll(); + + String sql = String + .format("select po.id,min(po.depart) departName,po.departCoding,td.ancestorID,min(bo.tousseName) tousseName,sum(bo.amount) amount,td.id tousseDefId from %s po " + + "join %s bo on po.id = bo.recyclingApplication_ID join %s td on td.id = bo.tousseDefinitionId " + + "where %s and po.handleDepartCoding = '%s' and po.recyclingStatus='%s' and bo.tousseType in ('%s','%s','%s') " + + " and po.type in ('%s','%s','%s','%s') and po.recyclingSummaryPrintStatus <> '%s'" + + " and td.isRecycling='%s' group by po.departCoding,po.id,td.ancestorID,td.id", + InvoicePlan.class.getSimpleName(), TousseItem.class.getSimpleName(), + TousseDefinition.class.getSimpleName(),dateSql, handlerDepartCoding,InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE,TousseDefinition.PACKAGE_TYPE_INSIDE, + TousseDefinition.PACKAGE_TYPE_DISINFECTION,TousseDefinition.PACKAGE_TYPE_CUSTOM, + InvoicePlan.TYPE_COMBO_FORM,InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM,InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM, + InvoicePlan.TYPE_CUSTOM_TOUSSE_APPLIACTION_FORM,Constants.STR_YES,Constants.STR_YES); + + logger.debug("回收汇总单sql:" + sql); + ResultSet rs = objectDao.executeSql(sql); + Map>> departGroupDetail = new HashMap<>(); + List invoicePlanIds = new ArrayList<>(); + try { + while(rs.next()){ + String depart = rs.getString("departName"); + Long invoicePlanId = rs.getLong("id"); + String departCode = rs.getString("departCoding"); + String tousseName = rs.getString("tousseName"); + Integer amount = rs.getInt("amount"); + invoicePlanIds.add(invoicePlanId); + DepartmentGroup departmentGroup = departmentGroupManager.findBelongTo(departGroups, departCode); + String key = null; + if(departmentGroup != null && StringUtils.isNotBlank(departmentGroup.getName())){ + key = departmentGroup.getName(); + }else{ + key = "未分组"; + } + Map> groupMap = departGroupDetail.get(key); + if(groupMap == null){ + groupMap = new HashMap>(); + departGroupDetail.put(key, groupMap); + } + buildTousseItemJson(groupMap, departCode, depart, + tousseName, amount,true); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(departGroupDetail.isEmpty()){ + throw new SystemException("没有待打印的物品"); + } + 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()); + data.put("invoicePlanIds", invoicePlanIds); + return data; + } + private void buildTousseItemJson(Map> map, + String departCode, String depart, String tousseName, Integer amount){ + buildTousseItemJson(map,departCode,depart,tousseName,amount,false); + } + private void buildTousseItemJson(Map> map, + String departCode, String depart, String tousseName, Integer amount,boolean merge) { + List list = map.get(departCode); + if (list == null) { + list = new ArrayList(); + map.put(departCode, list); + } + DepartRecycleTousse find = null; + if(merge){ + find = CollectionUtils.find(list, new Predicate(){ + @Override + public boolean evaluate(DepartRecycleTousse object) { + if(object != null){ + return StringTools.equals(tousseName, object.getTousseName()); + } + return false; + }}); + } + if(find == null){ + find = new DepartRecycleTousse(); + find.setDepart(depart); + find.setTousseName(tousseName); + list.add(find); + } + find.setAmount(MathTools.add(find.getAmount(), amount).intValue()); + } + + 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(CollectionUtils.isNotEmpty(list)){ + showDepart = list.get(0).getDepart(); + } + } + obj.put("showDepart", showDepart); + obj.put("items", map.get(departCode)); + array.add(obj); + } + return array; + } + private String getShowDepart(JSONArray config,String departCode){ + String showDepart = ""; + if(config != null){ + for (int i = 0; i < config.size(); i++) { + JSONObject obj = config.optJSONObject(i); + if(obj.optString("departCoding").equals(departCode)){ + showDepart = obj.optString("showDepart"); + break; + } + } + } + return showDepart; + } } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java =================================================================== diff -u -r22009 -r22140 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 22009) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 22140) @@ -87,4 +87,8 @@ * @param recyclingTime */ public void interfere_modifyRecyclingTime(String id, String recyclingTime); + /** + * 打印待回收的申请单的物品汇总,供回收的时候使用。按打印单上的物品及数量进行回收 + */ + public JSONObject printWaitRecyclingInvoicePlanSummary(); } Index: ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js =================================================================== diff -u -r21986 -r22140 --- ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js (.../printRecyclingDetailWin.js) (revision 21986) +++ ssts-web/src/main/webapp/disinfectsystem/packing/printRecyclingDetailWin.js (.../printRecyclingDetailWin.js) (revision 22140) @@ -468,7 +468,34 @@ } return ""; } - +function printWaitRecyclingInvoicePlanSummary(printDateTime,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,"回收汇总清单"); + LODOP.SET_PRINT_STYLE("FontSize",11); + LODOP.ADD_PRINT_TEXT(35,50,"100%",5,"制单人: " + printUser); + LODOP.ADD_PRINT_TEXT(35,450,"100%",5,"打印时间:" + printDateTime); + + 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); + + //直接打印 + LODOP.PRINT(); +} function printRecyclingDetailWithDepartgroup(printType,startDateTime,endDateTime,printUser,recyclingDetail){ var LODOP = getLodop(document.getElementById('LODOP'), document.getElementById('LODOP_EM')); LODOP.SET_PRINT_STYLE("FontSize",17); Index: ssts-web/src/main/webapp/disinfectsystem/config/dgfy/config.js =================================================================== diff -u -r21991 -r22140 --- ssts-web/src/main/webapp/disinfectsystem/config/dgfy/config.js (.../config.js) (revision 21991) +++ ssts-web/src/main/webapp/disinfectsystem/config/dgfy/config.js (.../config.js) (revision 22140) @@ -39,5 +39,7 @@ //是否默认无条件显示循环次数(不管有无配置灭菌炉接口) showCycleCountWithoutCondition : true, //是否按科室分组打印回收清单,与recyclingRecordListFilterByAssetBelong不能同时并存(recyclingRecordListFilterByAssetBelong的优先级更高) - printRecyclingDetailWithDepartGroup:true + printRecyclingDetailWithDepartGroup:true, + //待回收申请单,是否打印回收汇总单 + printWaitRecyclingInvoicePlanSummary:true } \ No newline at end of file Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r22009 -r22140 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 22009) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 22140) @@ -25,10 +25,12 @@ import net.sf.json.util.PropertyFilter; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Predicate; import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.collections4.map.MultiValueMap; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.BooleanUtils; +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; @@ -117,6 +119,7 @@ import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.SqlUtils; +import com.google.common.reflect.TypeToken; import com.opensymphony.xwork2.ModelDriven; import edu.emory.mathcs.backport.java.util.Arrays; @@ -131,7 +134,7 @@ @Action(value = "recyclingRecordAction") @Results({ @Result(name = "success", location = "/common/ReloadSelf.jsp") }) public class RecyclingRecordAction implements ModelDriven { - + private Logger logger = Logger.getLogger(this.getClass()); private RecyclingContext recyclingContext = new RecyclingContext(); private String ids; @@ -1712,6 +1715,28 @@ e.printStackTrace(); } } + + public void printWaitRecyclingInvoicePlanSummary(){ + try{ + JSONObject data = recyclingRecordManager.printWaitRecyclingInvoicePlanSummary(); + StrutsResponseUtils.output(data); + }catch(Exception e){ + exceptionHandler.handleException(StrutsParamUtils.getResponse(), e); + } + } + public void updateInvoicePlanRecyclingSummaryPrintStatus(){ + try{ + String invoicePlanIds = StrutsParamUtils.getPraramValue("invoicePlanIds", ""); + Collection ids = new com.google.gson.Gson().fromJson(invoicePlanIds, new TypeToken >(){ + private static final long serialVersionUID = 1L; + }.getType()); + objectDao.excuteSQL(String.format("update %s set recyclingSummaryPrintStatus='%s' where %s", + InvoicePlan.class.getSimpleName(),Constants.STR_YES,SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", ids))); + StrutsResponseUtils.output(true); + }catch(Exception e){ + exceptionHandler.handleException(StrutsParamUtils.getResponse(), e); + } + } /** * 按科室分组打印回收清单 */ @@ -2139,19 +2164,35 @@ } return isExist; } - public void buildTousseItemJson(Map> map, - String departCode, String depart, String tousseName, Integer amount) { + String departCode, String depart, String tousseName, Integer amount){ + buildTousseItemJson(map,departCode,depart,tousseName,amount,false); + } + public void buildTousseItemJson(Map> map, + String departCode, String depart, String tousseName, Integer amount,boolean merge) { List list = map.get(departCode); if (list == null) { list = new ArrayList(); map.put(departCode, list); } - DepartRecycleTousse obj = new DepartRecycleTousse(); - obj.setDepart(depart); - obj.setTousseName(tousseName); - obj.setAmount(amount); - list.add(obj); + DepartRecycleTousse find = null; + if(merge){ + find = CollectionUtils.find(list, new Predicate(){ + @Override + public boolean evaluate(DepartRecycleTousse object) { + if(object != null){ + return StringTools.equals(tousseName, object.getTousseName()); + } + return false; + }}); + } + if(find == null){ + find = new DepartRecycleTousse(); + find.setDepart(depart); + find.setTousseName(tousseName); + list.add(find); + } + find.setAmount(MathTools.add(find.getAmount(), amount).intValue()); } private String getShowDepart(JSONArray config,String departCode){ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java =================================================================== diff -u -r20064 -r22140 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java (.../DepartmentGroupManager.java) (revision 20064) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java (.../DepartmentGroupManager.java) (revision 22140) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.basedatamanager.departmentgroup.service; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -31,4 +32,11 @@ * @return */ List> loadDeptGroup(); + /** + * 查找科室所属的科室分组。如果一个科室属于多个科室分组,返回第一个查找到的科室分组 + * @param departGroups 待查找的科室分组 + * @param departCode 科室编码 + * @return + */ + public DepartmentGroup findBelongTo(Collection departGroups,String departCode); }
"; + htmlTable += buildDepartTable(recyclingDetail,departmentGroupNames[i]); + htmlTable += "
"; +// htmlTable += buildRemarkTable(recyclingDetail.remarks,"备注"); +// htmlTable += "