Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r27572 -r27588 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 27572) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 27588) @@ -1984,17 +1984,27 @@ } if(CollectionUtils.isNotEmpty(list)){ - JSONObject result = new JSONObject(); - result.put("totalCount", list.size()); - - int startIndex = StrutsParamUtils.getPraramValue("start", 0); - int limit = StrutsParamUtils.getPraramValue("limit", 0); - if (limit > 0) { - int endIndex = (startIndex + limit <= list.size() - 1) ? startIndex + limit : list.size(); - list = list.subList(startIndex, endIndex); + // 只支持整包申请的消毒物品进行绑定,非整包申请的消毒物品,不支持进行绑定。 + List> tdList = new ArrayList>(list); + for (Map map : list) { + if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(map.get("type")) + && TousseDefinition.STR_NO.equals(map.get("isApplyEntireTousse"))){ + tdList.remove(map); + } } - result.put("data", list); - StrutsResponseUtils.output(result); + if(CollectionUtils.isNotEmpty(tdList)){ + JSONObject result = new JSONObject(); + result.put("totalCount", tdList.size()); + + int startIndex = StrutsParamUtils.getPraramValue("start", 0); + int limit = StrutsParamUtils.getPraramValue("limit", 0); + if (limit > 0) { + int endIndex = (startIndex + limit <= tdList.size() - 1) ? startIndex + limit : tdList.size(); + tdList = tdList.subList(startIndex, endIndex); + } + result.put("data", tdList); + StrutsResponseUtils.output(result); + } } } @@ -2005,8 +2015,9 @@ BindGoodVo bindGoodVo = buildBindGoodVo(); String handleDepartCode = StrutsParamUtils.getPraramValue("handleDepartCode", ""); //处理科室的科室编码 String settleAccountsDepartCoding = StrutsParamUtils.getPraramValue("settleAccountsDepartCoding", ""); //结算科室的科室编码 + Boolean returnGoodsWithCountZero = StrutsParamUtils.getBoolPraramValue("returnGoodsWithCountZero", false); try { - JSONArray jsonArray = tousseDefinitionManager.getBindGoods(bindGoodVo, settleAccountsDepartCoding, handleDepartCode); + JSONArray jsonArray = tousseDefinitionManager.getBindGoods(bindGoodVo, settleAccountsDepartCoding, handleDepartCode, returnGoodsWithCountZero); if (jsonArray != null) { StrutsResponseUtils.output(true,jsonArray); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r27572 -r27588 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 27572) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 27588) @@ -723,8 +723,9 @@ * @param bindGoodVo 申请的物品{@link BindGoodVo} * @param settleAccountsDepartCoding 结算科室的科室编码(用于获取一次性物品的浮动系数) * @param handleDepartCode 处理科室的科室编码(计算一次性物品库存时用的,如果你不需要知道库存可以不传此参数) + * @param returnGoodsWithCountZero 用于判断是否返回数量为0的绑定物品 */ - public JSONArray getBindGoods(BindGoodVo bindGoodVo, String settleAccountsDepartCoding, String handleDepartCode); + public JSONArray getBindGoods(BindGoodVo bindGoodVo, String settleAccountsDepartCoding, String handleDepartCode, Boolean returnGoodsWithCountZero); /** * 根据祖先id查找包定义 * @param tds Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r27572 -r27588 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 27572) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 27588) @@ -3318,6 +3318,9 @@ throw new RuntimeException("已申请该物品,不能修改包定义类型!"); } } + // 如果包的类型为消毒物品,要检查是否修改了它的【是否整包申请】属性,如果属性修改为“否”, + // 并且该消毒物品被定义了物品绑定关系,则不能修改(必须解除物品绑定关系后再修改) + judgeCanUpdateDisinfectionTousse(origineTd, tousseDefinition); // 记录:基础属性修改日志 modifyStr = compareTousseDefinition(origineTd, tousseDefinition); String basePropertyUpdateLog = String.format("包定义ID:%s,修改信息:%s",origineTd.getId(), modifyStr); @@ -3522,6 +3525,24 @@ } /** + * 如果包的类型为消毒物品,要检查是否修改了它的【是否整包申请】属性,如果属性为“否”, + * 并且该消毒物品被定义了物品绑定关系,则需要解除物品绑定关系后再修改(DGSFYBJY-31) + * @param origineTd + * @param tousseDefinition + */ + private void judgeCanUpdateDisinfectionTousse(TousseDefinition origineTd, TousseDefinition tousseDefinition) { + if(StringUtils.equals(TousseDefinition.PACKAGE_TYPE_DISINFECTION, tousseDefinition.getTousseType()) + && !StringUtils.equals(origineTd.getIsApplyEntireTousse(), tousseDefinition.getIsApplyEntireTousse()) + && StringUtils.equals(tousseDefinition.getIsApplyEntireTousse(), TousseDefinition.STR_NO)){ + StringBuilder hql = new StringBuilder("from GoodsBindingConfig po where 1 = 1"); + hql.append(String.format(" and po.secondaryGoodId = %d or po.mainGoodId = %d", origineTd.getId(), origineTd.getId())); + List goods = objectDao.findByHql(hql.toString()); + if(CollectionUtils.isNotEmpty(goods)){ + throw new RuntimeException(origineTd.getName() + "定义了物品绑定关系,不能将【是否整包申请】属性改为【否】,请解除物品绑定关系后再修改!"); + } + } + } + /** * 器械包信息转xml * @param td 修改后的器械包定义 * @param action 操作(insert、update、delete) @@ -3741,7 +3762,7 @@ * @param showExternalCodeOfDisposableGoods 是否显示一次性物品的外部编码 */ private void iterateHandleBindGoods(JSONArray jsonArray, BindGoodVo bindGoodVo, GoodType type, - String settleAccountsDepartCoding, String handleDepartCode, boolean showReferencePrice, boolean showExternalCodeOfDisposableGoods) { + String settleAccountsDepartCoding, String handleDepartCode, boolean showReferencePrice, boolean showExternalCodeOfDisposableGoods, boolean returnGoodsWithCountZero) { Integer count = bindGoodVo.getBindCount(); if (count == null || count <= 0) { throw new ParameterException("请输入大于0的数量!"); @@ -3775,7 +3796,7 @@ } } - if (bindCount == 0) { + if (!returnGoodsWithCountZero && bindCount == 0) { continue; } @@ -3809,6 +3830,8 @@ } else if (GoodType.SECOND.equals(type)) { jsonObject.put("goodType", GoodType.MAIN); } + jsonObject.put("mainCount", good.getMainCount()); + jsonObject.put("secondaryCount", good.getSecondaryCount()); jsonArray.add(jsonObject); } } @@ -3840,7 +3863,7 @@ } @Override - public JSONArray getBindGoods(BindGoodVo bindGoodVo, String settleAccountsDepartCoding, String handleDepartCode) { + public JSONArray getBindGoods(BindGoodVo bindGoodVo, String settleAccountsDepartCoding, String handleDepartCode, Boolean returnGoodsWithCountZero) { //是否显示一次性物品的参考价 boolean hideDiposableGoodsPrice = CssdUtils.getSystemSetConfigByNameBool("hideDiposableGoodsPrice", false); boolean showReferencePrice = true; @@ -3861,9 +3884,9 @@ JSONArray jsonArray = new JSONArray(); //1、先用主绑物品的身份找出所有次绑物品 - iterateHandleBindGoods(jsonArray, bindGoodVo, GoodType.MAIN, settleAccountsDepartCoding, handleDepartCode, showReferencePrice, showExternalCodeOfDisposableGoods); + iterateHandleBindGoods(jsonArray, bindGoodVo, GoodType.MAIN, settleAccountsDepartCoding, handleDepartCode, showReferencePrice, showExternalCodeOfDisposableGoods, returnGoodsWithCountZero); //2、再以次绑物品的身份找出所有的主绑物品(前提条件他们是双向绑定) - iterateHandleBindGoods(jsonArray, bindGoodVo, GoodType.SECOND, settleAccountsDepartCoding, handleDepartCode, showReferencePrice, showExternalCodeOfDisposableGoods); + iterateHandleBindGoods(jsonArray, bindGoodVo, GoodType.SECOND, settleAccountsDepartCoding, handleDepartCode, showReferencePrice, showExternalCodeOfDisposableGoods, returnGoodsWithCountZero); return jsonArray; }