Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r26569 -r26573 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 26569) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 26573) @@ -26,6 +26,7 @@ import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.DefaultValueProcessor; +import net.sf.json.util.CycleDetectionStrategy; import net.sf.json.util.JSONBuilder; import net.sf.json.util.JSONStringer; import net.sf.json.util.PropertyFilter; @@ -5051,6 +5052,40 @@ return resultObj.toString(); } /** + * 根据申请科室编码及申请单的物品类型加载处理科室 + * @param applyDepartCode 申请科室编码 + * @param tousseType 申请单的物品类型 + * @return + */ + public String getCssdsByApplyDepartAndType(JSONObject params){ + JSONObject resultObj = null; + try { + String applyDepartCode = params.optString("applyDepartCode", ""); + String tousseType = params.optString("tousseType", ""); + Map result = new HashMap(); + Collection list = orgUnitManager.getCssdsByApplyDepartAndType( + applyDepartCode, tousseType); + List> resultMapList = new ArrayList>(); + if(CollectionUtils.isNotEmpty(list)){ + Map resultMap = null; + for(CssdServiceDepts cssdServiceDepts : list){ + resultMap = new HashMap(); + resultMap.put("defaultHandleDepart", cssdServiceDepts.getDefaultHandleDepart()); + resultMap.put("cssdOrgUnitCode", cssdServiceDepts.getCssdOrgUnitCode()); + resultMap.put("cssdOrgUnitName", cssdServiceDepts.getCssdOrgUnitName()); + resultMapList.add(resultMap); + } + } + result.put("data", resultMapList); + resultObj = JSONObject.fromObject(result); + resultObj.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + resultObj = JSONUtil.buildJsonObject(false, "查询处理科室异常"); + } + return resultObj.toString(); + } + /** * 根据申请科室编码、申请单的物品类型加载处理科室、结算科室 * @param params.applyDepartCode 申请科室编码 * @param params.tousseType 申请单的物品类型 @@ -5529,7 +5564,187 @@ } return resultObj.toString(); } + //-----------------------借物管理---------------------------- /** + * 查询借物单列表 + * @param applicationShowAll 是否有配置科室申领下的‘查看所有申请单’(借物单)的权限 + * @param firstIndex 结果集的开始下标(注意从0开始取值) 等于(pageNo-1)*pageSize + * @param maxResultCount 每页显示条数 + * @return + */ + public String findBorrowingsingleApplicationList(JSONObject params){ + boolean applicationShowAll = params.optBoolean("applicationShowAll", true); + int firstIndex = params.optInt("firstIndex"); + int maxResultCount = params.optInt("maxResultCount"); + String extraWhereSql = ""; + //是否有配置科室申领下的‘查看所有申请单’(借物单)的权限 + if (!applicationShowAll) { + String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + //如未配置此权限,则根据当前用户是否为供应室用户 + if(supplyRoomConfigManager.isSupplyRoomUser()){ + extraWhereSql += " and (po.departCoding = '" + + currentOrgUnitCode+ "' or po.handleDepartCoding = '" + + currentOrgUnitCode+ "')"; + }else{ + extraWhereSql += " and po.departCoding = '" + + AcegiHelper.getLoginUser().getCurrentOrgUnitCode()+ "'"; + } + } + String sql = String.format("where po.type='%s' %s",InvoicePlan.TYPE_BORROWINGSINGLE,extraWhereSql); + Collection invoicePlans = objectDao.findBySql( + InvoicePlan.class.getSimpleName(), sql, firstIndex, + maxResultCount, "case when deliverStatus is null or deliverStatus = '' then '9' when deliverStatus='待发货' then '0' when deliverStatus='部分发货' then '1' when deliverStatus='已发货' then '2' when deliverStatus='已终止' then '3' else '8' end , case when returnStatus is null or returnStatus = '' then '9' when returnStatus='未归还' then '0' when returnStatus='部分归还' then '1' when returnStatus='归还待确认' then '2' when returnStatus='已归还' then '3' when returnStatus='已终止' then '4' else '8' end , applicationTime DESC"); + JsonConfig jc = JSONUtil.buildJsonConfig("id","depart","applicationTime","applicant","deliverStatus","returnStatus"); + jc.registerJsonValueProcessor(Date.class,_defaultDateJsonValueProcessor2); + JSONArray invoicePlansJsonArray = JSONArray.fromObject(invoicePlans,jc); + return new JSONStringer().object().key("success").value(true) + .key("invoicePlans").value(invoicePlansJsonArray).endObject() + .toString(); + } + /** + * 获取能改还的器械包信息 + * @param borrowApplicationIdStr 借物单id + * @return + */ + public String getAvailableForReturnTousses(JSONObject params) { + JSONObject obj = new JSONObject(); + try { + String borrowApplicationIdStr = params.optString("borrowApplicationIdStr", null); + Map unreturnTousses = invoicePlanManager.getCanReturnAmount(Long.valueOf(borrowApplicationIdStr)); + Collection unreturnTousseResult = new ArrayList<>(); + for (Map.Entry entry : unreturnTousses.entrySet()) { + unreturnTousseResult + .add(StringUtils.join(new String[] { entry.getKey(), + entry.getValue().toString() }, ',')); + } + obj.put("success", true); + obj.put("data", StringUtils.join(unreturnTousseResult, ';')); + } catch (Exception e) { + obj = JSONUtil.buildJsonObject(false, "获取器械包信息失败"); + } + return obj.toString(); + } + /** + * 借物界面使用,过滤掉敷料包 + * @param spell 拼音码 + * @param appCode 申请科室 + * @return + */ + public String searchInsideTousseDataForBorrowing(JSONObject params){ + String spell = params.optString("spell",""); + JSONObject obj = new JSONObject(); + try { + spell = java.net.URLDecoder.decode(spell, "UTF-8"); + // 根据拼音码、五笔码获取内部器械包(器械包和自制物品) + List> mapList = tousseDefinitionManager.searchTousseForBorrowing(spell); + String borrowIsUseBwList = CssdUtils.getSystemSetConfigByName("borrowIsUseBwList"); + if (StringUtils.isNotBlank(borrowIsUseBwList) && "true".equals(borrowIsUseBwList)){ + String appCode = params.optString("appCode", ""); + if (StringUtils.isNotBlank(appCode)){ + logger.debug("黑白名单过滤前大小:" + mapList.size()); + mapList = goodFilterConfigManagerImpl.handleBWList(mapList, appCode); + logger.debug("黑白名单过滤后大小:" + mapList.size()); + } + } + if(mapList != null){//过滤非整包的消毒物品 + Iterator> iterator = mapList.iterator(); + while(iterator.hasNext()){ + Map map = iterator.next(); + if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(map.get("tousseType")) && TousseDefinition.STR_NO.equals(map.get("isApplyEntireTousse"))){ + iterator.remove(); + } + } + } + obj.put("success", true); + obj.put("data", mapList); + } catch (Exception e) { + obj = JSONUtil.buildJsonObject(false, "查询异常"); + } + return obj.toString(); + } + /** + * 归还物品,创建申请还物单 + * @param tousseLeaseId 借物单id + * @param returnTousses 此次申请归还物品及数量器械包信息 + * @param isCreateReturnApplication 是否需要创建申请还物单 完全归还为false,否则true + * @return + */ + public String createReturnApplication(JSONObject params){ + JSONObject obj = null; + String msg = null; + try { + long borrowApplicationId = params.optLong("tousseLeaseId"); + String returnTousses = params.optString("returnTousses", + null); + String applicant = AcegiHelper.getLoginUser().getUserFullName(); + Map applyReturnTousses = new HashMap(); + for (String returnTousse : StringUtils.split(returnTousses, ';')) { + if (StringUtils.isNotBlank(returnTousse)) { + String[] temp = StringUtils.split(returnTousse, ','); + applyReturnTousses.put(temp[0], Integer.valueOf(temp[1])); + } + } + boolean isCreateReturnApplication = params.optBoolean("isCreateReturnApplication", true); + recyclingApplicationManager.createReturnApplication(applicant, borrowApplicationId, applyReturnTousses, null, isCreateReturnApplication); + msg = "提交成功。"; + obj = JSONUtil.buildJsonObject(true); + } catch (Exception e) { + msg = "归还提交异常"; + obj = JSONUtil.buildJsonObject(false); + } + obj.put("message", msg); + return obj.toString(); + } + /** + * pda读取借物单 + * @param id 借物单id + * @return + */ + public String loadRecyclingApplication(JSONObject params){ + JSONObject obj = null; + try { + String id = params.optString("id", ""); + RecyclingApplication recyclingApplication = null; + if (StringUtils.isNotBlank(id)) { + throw new RuntimeException("缺失参数id"); + } + recyclingApplication = recyclingApplicationManager.getRecyclingApplicationById(id); + JsonConfig config = new JsonConfig(); + config.setExcludes(new String[] { "handler", + "hibernateLazyInitializer", "fieldHandler", "image", "tousse", + "readers", "administrators", "editors", "readersForDisplay", + "administratorsForDisplay", "editorsForDisplay", "companyId", + "readerOrgUnitCode", "invoice", "invoicePlan", + "diposableGoodsItems", "recyclingRecord", + "recyclingApplications", "parent" }); + config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); + TousseDefinition tousseDefinition = null; + if (InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM + .equals(recyclingApplication.getType()) + || InvoicePlan.TYPE_CUSTOM_TOUSSE_APPLIACTION_FORM + .equals(recyclingApplication.getType())) { + TousseItem item = CollectionUtils.isNotEmpty(recyclingApplication.getApplicationItems()) ? recyclingApplication.getApplicationItems().get(0) : null; + if (item != null) { + if(DatabaseUtil.isPoIdValid(item.getTousseDefinitionId())){ + tousseDefinition = tousseDefinitionManager.get(item.getTousseDefinitionId()); + }else{ + tousseDefinition = tousseDefinitionManager.getTousseDefinitionByName(item.getTousseName()); + } + } + } + Map map = new HashMap(); + map.put("success", true); + map.put("data", recyclingApplication); + map.put("tousseDefinition", tousseDefinition); + obj = JSONObject.fromObject(map, config); + obj.put("success", true); + } catch (Exception e) { + obj = JSONUtil.buildJsonObject(false, "查看借物单异常"); + } + return obj.toString(); + } + //------------借物管理 end-------- + /** * pda获取结算科室Json * @param spell 拼音码 * @param departmentCode 申请科室 @@ -5569,4 +5784,46 @@ } return resultObj.toString(); } + /** + * pda获取申领科室列表 + * @param spell 申领科室拼音 + * @return departmentCode 指定的科室编码 + */ + public String getApplicationDepartJson(JSONObject params){ + JSONObject obj = null; + try { + String spell = params.optString("spell", ""); + String departmentCode = params.optString("departmentCode", ""); + List orgUnitList = new ArrayList(); + + //如果指定了要加载哪个科室,则直接返回即可 + if (StringTools.isNotBlank(departmentCode)) { + OrgUnit specifyDepartment = orgUnitManager.getByCode(departmentCode); + if (specifyDepartment != null) { + orgUnitList.add(specifyDepartment); + } + } else { + orgUnitList = orgUnitManager.searchOrgUnitByRoomTypeSpellOrWbCode(spell, SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, true); + } + List> list = new LinkedList<>(); + if (orgUnitList != null) { + for (int j = 0,size = orgUnitList.size(); j < size; j++) { + Map reMap = new HashMap<>(); + String orgCoding = orgUnitList.get(j).getOrgUnitCoding(); + String orgName = null; + orgName = orgUnitList.get(j).getName(); + //orgName = StringEscapeUtils.escapeEcmaScript(orgName); + reMap.put("id",orgCoding); + reMap.put("departCode",orgCoding); + reMap.put("name",orgName); + list.add(reMap); + } + } + obj = JSONUtil.buildJsonObject(true); + obj.put("data", list); + } catch (Exception e) { + obj = JSONUtil.buildJsonObject(false, "获取申领科室异常"); + } + return obj.toString(); + } }