Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r26620 -r27435 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 26620) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 27435) @@ -20,6 +20,7 @@ import com.forgon.disinfectsystem.recyclingapplication.vo.ApplicationGoodsVo; import com.forgon.disinfectsystem.recyclingapplication.vo.ExpensiveGoodsInvoicePlanVo; import com.forgon.disinfectsystem.recyclingapplication.vo.ExpressInvoiceInvoicePlanVo; +import com.forgon.disinfectsystem.recyclingapplication.vo.ExpressRecyclingVo; import com.forgon.disinfectsystem.recyclingapplication.vo.InvoicePlanVo; import com.forgon.disinfectsystem.vo.ApplicationItemVO; import com.forgon.disinfectsystem.vo.RecyclingApplicationVo; @@ -244,7 +245,13 @@ * @return */ public List getExpressRecyclingTousse(int supplyRoomType, String handleDepartCodings); + /** + * 获取快速回收的待回收申请项。申请单回收状态为待回收和部分回收的。外来器械包申请单不处理(包括通用申请单里的外来器械也不处理)。isThereIdentificationCard为是的也不处理。expressRecycling不为是的也过滤掉 + * @return + */ + public List getExpressRecyclingTousseVo(); + /** * 发货计划列表扫描科室条码或者单号条码,打开对应的发货单。先按条码找科室,找不到科室就按流水号找申请单 * @param barcode 科室条码或者单号条码 * @param departCodings 科室分组中的科室编码 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ExpressRecyclingVo.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ExpressRecyclingVo.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ExpressRecyclingVo.java (revision 27435) @@ -0,0 +1,170 @@ +package com.forgon.disinfectsystem.recyclingapplication.vo; + +import java.util.Date; + +/** + * @author WangYi + * + * 2014-8-18 下午5:41:24 + */ +public class ExpressRecyclingVo { + + private Long applicationId; + + /** + * 申请单的版本号 + */ + private Integer invoicePlanVersion; + + private String depart; + + private String departCoding; + + /** + * 科室分组Id + */ + private String departGroupId; + + private Date applicationTime; + + private String tousseName; + /** + * 消毒物品材料 + */ + private String materialName; + private Integer amount; + + private String tousseType; + + private String isCleanedEntirely; + + private String isApplyEntireTousse; + /** + * 预回收数量 + */ + private Integer prepareRecycleAmount; + + private Long tousseDefinitionID; + /** + * 器械包分组id + */ + private Long tousseGroupId; + public ExpressRecyclingVo(){} + 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; + } + + public Date getApplicationTime() { + return applicationTime; + } + + public void setApplicationTime(Date applicationTime) { + this.applicationTime = applicationTime; + } + + public String getTousseType() { + return tousseType; + } + + public void setTousseType(String tousseType) { + this.tousseType = tousseType; + } + + public Long getApplicationId() { + return applicationId; + } + + public void setApplicationId(Long applicationId) { + this.applicationId = applicationId; + } + public String getMaterialName() { + return materialName; + } + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getIsCleanedEntirely() { + return isCleanedEntirely; + } + + public void setIsCleanedEntirely(String isCleanedEntirely) { + this.isCleanedEntirely = isCleanedEntirely; + } + + public Integer getPrepareRecycleAmount() { + return prepareRecycleAmount; + } + + public void setPrepareRecycleAmount(Integer prepareRecycleAmount) { + this.prepareRecycleAmount = prepareRecycleAmount; + } + + public String getIsApplyEntireTousse() { + return isApplyEntireTousse; + } + + public void setIsApplyEntireTousse(String isApplyEntireTousse) { + this.isApplyEntireTousse = isApplyEntireTousse; + } + + public Long getTousseDefinitionID() { + return tousseDefinitionID; + } + + public void setTousseDefinitionID(Long tousseDefinitionID) { + this.tousseDefinitionID = tousseDefinitionID; + } + + public String getDepartCoding() { + return departCoding; + } + + public void setDepartCoding(String departCoding) { + this.departCoding = departCoding; + } + + public String getDepartGroupId() { + return departGroupId; + } + + public void setDepartGroupId(String departGroupId) { + this.departGroupId = departGroupId; + } + + public Long getTousseGroupId() { + return tousseGroupId; + } + + public void setTousseGroupId(Long tousseGroupId) { + this.tousseGroupId = tousseGroupId; + } + + public Integer getInvoicePlanVersion() { + return invoicePlanVersion; + } + + public void setInvoicePlanVersion(Integer invoicePlanVersion) { + this.invoicePlanVersion = invoicePlanVersion; + } +} Fisheye: Tag 27435 refers to a dead (removed) revision in file `ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/ExpressRecyclingVo.java'. Fisheye: No comparison available. Pass `N' to diff? Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r27394 -r27435 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 27394) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 27435) @@ -98,7 +98,7 @@ 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; +import com.forgon.disinfectsystem.recyclingapplication.vo.ExpressRecyclingVo; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingContext; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingDetailItemVo; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingDetailVo; @@ -1312,12 +1312,21 @@ obj.put("urgent",ip.getUrgent()); jsonArray.add(obj); } - /** - * 获取快速回收器械包列表 + * 获取快速回收器械包列表 新版本1 + */ + public void getAwaitForQuickRecyclingTousse() { + try { + StrutsResponseUtils.output(JSONArray.fromObject(invoicePlanManager.getExpressRecyclingTousseVo())); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** + * 获取快速回收器械包列表 版本0 * @return */ - public String getAwaitForQuickRecyclingTousse() { + public String getAwaitForQuickRecyclingTousseOld() { int supplyRoomType = SupplyRoomConfig.SUPPLYROOM_TYPE_SYSTEM_CONFIG; String loginUserOrgUnitCoding = AcegiHelper.getLoginUser() .getOrgUnitCodingFromSupplyRoomConfig(); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r27126 -r27435 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 27126) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 27435) @@ -1,5 +1,7 @@ package com.forgon.disinfectsystem.recyclingapplication.service; +import java.sql.ResultSet; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -25,6 +27,7 @@ import org.apache.commons.collections4.PredicateUtils; import org.apache.commons.collections4.Transformer; import org.apache.commons.collections4.functors.NotNullPredicate; +import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ObjectUtils; @@ -39,6 +42,7 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.basedatamanager.departmentgroup.service.DepartmentGroupManager; import com.forgon.disinfectsystem.basedatamanager.invoice.service.InvoiceUtils; import com.forgon.disinfectsystem.basedatamanager.sterilisation.service.SterilisationManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; @@ -67,6 +71,7 @@ import com.forgon.disinfectsystem.entity.invoicemanager.enums.BorrowConfirmStatus; import com.forgon.disinfectsystem.entity.materialerrordamage.MaterialErrorDamageDetail; 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.recyclingerror.RecyclingError; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingItem; @@ -87,6 +92,7 @@ import com.forgon.disinfectsystem.recyclingapplication.vo.ApplicationGoodsVo; import com.forgon.disinfectsystem.recyclingapplication.vo.ExpensiveGoodsInvoicePlanVo; import com.forgon.disinfectsystem.recyclingapplication.vo.ExpressInvoiceInvoicePlanVo; +import com.forgon.disinfectsystem.recyclingapplication.vo.ExpressRecyclingVo; import com.forgon.disinfectsystem.recyclingapplication.vo.GridDataVo; import com.forgon.disinfectsystem.recyclingapplication.vo.InvoicePlanVo; import com.forgon.disinfectsystem.recyclingapplication.vo.MaterialVO; @@ -111,6 +117,7 @@ import com.forgon.tools.GB2WB; import com.forgon.tools.MathTools; import com.forgon.tools.SqlBuilder; +import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; @@ -167,6 +174,18 @@ protected UrgentLevelManager urgentLevelManager; + private RecyclingApplicationManager recyclingApplicationManager; + + private DepartmentGroupManager departmentGroupManager; + + public void setDepartmentGroupManager( + DepartmentGroupManager departmentGroupManager) { + this.departmentGroupManager = departmentGroupManager; + } + public void setRecyclingApplicationManager( + RecyclingApplicationManager recyclingApplicationManager) { + this.recyclingApplicationManager = recyclingApplicationManager; + } public void setUrgentLevelManager(UrgentLevelManager urgentLevelManager) { this.urgentLevelManager = urgentLevelManager; } @@ -1276,6 +1295,135 @@ return objectDao.findBySql(TousseItem.class.getSimpleName(), sql); } + @Override + public List getExpressRecyclingTousseVo(){ + StringBuffer sql = new StringBuffer(800); + sql.append(" select ip.id,po.tousseDefinitionId,ip.readed,ip.depart,ip.departCoding,ip.[version],ip.applicationTime,po.tousseName,po.amount,po.prepareRecycleAmount,po.isCleanedEntirely,po.isApplyEntireTousse,po.tousseType,td.tousseGroupID ") + .append(" from ") + .append(TousseItem.class.getSimpleName()) + .append(" po inner join ") + .append(InvoicePlan.class.getSimpleName()) + .append(" ip on ip.id=po.recyclingApplication_ID ") + .append(" left join ") + .append(TousseDefinition.class.getSimpleName()) + .append(" td on td.id=po.tousseDefinitionId ") + .append(" where ip.recyclingStatus in('") + .append(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE) + .append("','") + .append(InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE) + .append("')") + .append(" and ip.committedStatus=1 ") + .append("and ip.type != '") + .append(InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION) + .append("' and po.tousseType != '") + .append(TousseDefinition.PACKAGE_TYPE_FOREIGN) + .append("' and po.tousseType != '") + .append(TousseDefinition.PACKAGE_TYPE_SPLIT) + .append("' and (ip.includeRecyclingItems is null or ip.includeRecyclingItems =") + .append(InvoicePlan.SIGNED_TRUE) + .append(") and po.expressRecycling = '") + .append(Constants.STR_YES) + .append("' and po.recyclingAmount is not null") + .append(" order by po.tousseName asc ").toString(); + ResultSet rs = null; + List quickRecyclingList = new ArrayList(); + Set ipIds = new HashSet(); + Set departCodings = new HashSet(); + try { + rs = objectDao.executeSql(sql.toString()); + if (rs != null) { + while (rs.next()) { + Long ipId = rs.getLong("id"); + Long tousseDefinitionId = rs.getLong("tousseDefinitionId"); + int readed = rs.getInt("readed"); + String depart = rs.getString("depart"); + String departCoding = rs.getString("departCoding"); + int version = rs.getInt("version"); + Date applicationTime = rs.getTimestamp("applicationTime"); + String tousseName = rs.getString("tousseName"); + int amount = rs.getInt("amount"); + int prepareRecycleAmount = rs.getInt("prepareRecycleAmount"); + String isCleanedEntirely = rs.getString("isCleanedEntirely"); + String isApplyEntireTousse = rs.getString("isApplyEntireTousse"); + String tousseType = rs.getString("tousseType"); + Long tousseGroupID = rs.getLong("tousseGroupID"); + ExpressRecyclingVo vo = new ExpressRecyclingVo(); + if(readed == 0){ + ipIds.add(ipId); + } + vo.setApplicationId(ipId); + vo.setDepart(depart); + vo.setInvoicePlanVersion(version); + vo.setApplicationTime(applicationTime); + vo.setTousseName(tousseName); + vo.setAmount(amount); + vo.setPrepareRecycleAmount(prepareRecycleAmount); + vo.setTousseDefinitionID(tousseDefinitionId); + vo.setIsCleanedEntirely(StringUtils.isBlank(isCleanedEntirely)?"是":isCleanedEntirely); + vo.setIsApplyEntireTousse(StringUtils.isBlank(isApplyEntireTousse)?"是":isApplyEntireTousse); + vo.setTousseType(tousseType); + vo.setDepartCoding(departCoding); + vo.setTousseGroupId(tousseGroupID); + departCodings.add(departCoding); + quickRecyclingList.add(vo); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + //为ExpressRecyclingVoList设置科室分组Id + setDepartGroupIdForExpressRecyclingVoList(departCodings, quickRecyclingList); + //相关申请单改为已查看 + if(CollectionUtils.isNotEmpty(ipIds)){ + recyclingApplicationManager.updateBySql("update invoicePlan set readed = "+InvoicePlan.READED+" where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", ipIds)); + } + return quickRecyclingList; + + } + /** + * 为ExpressRecyclingVoList设置科室分组Id + * @param departCodings + * @param quickRecyclingList + */ + private void setDepartGroupIdForExpressRecyclingVoList(Set departCodings, List quickRecyclingList){ + if(CollectionUtils.isEmpty(departCodings)){ + return; + } + Map departGroupIdMap = getDepartGroupId(departCodings); + for (ExpressRecyclingVo vo : quickRecyclingList) { + vo.setDepartGroupId(departGroupIdMap.get(vo.getDepartCoding())); + } + } + /** + * 获取科室所属回收分组 + * @param departCodings 科室编码 + * @return + */ + private Map getDepartGroupId(Set departCodings){ + List groups = departmentGroupManager.getAll(); + String groupId = ""; + Map result = new HashMap(); + for (DepartmentGroup departmentGroup : groups) { + String codings = departmentGroup.getDepartCodes(); + if (StringUtils.isNotBlank(codings)) { + String[] codingArray = codings.split(";"); + for (String coding : codingArray) { + //一个科室有可能属于多个分组的情况 + if (departCodings.contains(coding)) { + if(StringUtils.isNotBlank(groupId)){ + groupId += ";"; + } + groupId += departmentGroup.getId().toString(); + result.put(coding,groupId); + break; + } + } + } + } + return result; + } private List getWaitingforRecyclingInvoicePlans(String sql){ List list = null; try {