Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsAuthorizationForm.js =================================================================== diff -u -r21862 -r21904 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsAuthorizationForm.js (.../expensiveGoodsAuthorizationForm.js) (revision 21862) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsAuthorizationForm.js (.../expensiveGoodsAuthorizationForm.js) (revision 21904) @@ -242,7 +242,7 @@ }] }); - if (id != '') {// 编辑 + if (id) {// 编辑 form.form.load( { url : WWWROOT + '/disinfectSystem/expensiveGoods/expensiveGoodsAuthorizationAction!loadExpensiveGoodsAuthorization.do', method : 'POST', Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManager.java =================================================================== diff -u -r21862 -r21904 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManager.java (.../ExpensiveGoodsAuthorizationManager.java) (revision 21862) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManager.java (.../ExpensiveGoodsAuthorizationManager.java) (revision 21904) @@ -1,12 +1,11 @@ package com.forgon.disinfectsystem.expensiveGoods.service; -import java.util.Map; - import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsAuthorization; +import com.forgon.tools.hibernate.BasePoManager; -public interface ExpensiveGoodsAuthorizationManager { +public interface ExpensiveGoodsAuthorizationManager extends BasePoManager { /** * 根据高值耗材id查出对应的高值耗材名称 Index: ssts-web/src/main/webapp/js/forExpensiveGoods.js =================================================================== diff -u -r21862 -r21904 --- ssts-web/src/main/webapp/js/forExpensiveGoods.js (.../forExpensiveGoods.js) (revision 21862) +++ ssts-web/src/main/webapp/js/forExpensiveGoods.js (.../forExpensiveGoods.js) (revision 21904) @@ -197,7 +197,7 @@ } var tempName =''; var tempId =''; - var returnVal = new Array(); + var returnVal = []; for(var i =0;i getExpensiveGoodsAuthorization( ExpensiveGoodsAuthorization expensiveGoodsAuthorization, @@ -2310,12 +2312,78 @@ String[] strs = expensiveGoodsIds.split(";"); String[] names = expensiveGoodsName.split(";"); List authorization = new ArrayList(); - for(int i=0,len=strs.length;i newExpensiveGoodsIds = new ArrayList(); + List oldExpensiveGoodsIds = new ArrayList(); + for(int i=0,len=strs.length;i expensiveGoodsAuthorizationList= rga.getExpensiveGoodsAuthorization(); + for(ExpensiveGoodsAuthorization eg :expensiveGoodsAuthorizationList){ + oldExpensiveGoodsIds.add(eg.getExpensiveGoodsId()); + } + //新录入的授权记录的高值耗材id + Collection needAddedExpensiveGoodsIds = CollectionUtils.subtract( + newExpensiveGoodsIds, oldExpensiveGoodsIds); + //待移除的授权记录的高值耗材id + Collection needDeletedExpensiveGoodsIds = CollectionUtils.subtract( + oldExpensiveGoodsIds, newExpensiveGoodsIds); + //待修改的授权记录的高值耗材id + Collection needUpdateExpensiveGoodsIds = CollectionUtils.intersection( + oldExpensiveGoodsIds, newExpensiveGoodsIds); + + if(CollectionUtils.isNotEmpty(needAddedExpensiveGoodsIds)){ + for(Long expensiveGoodsId : needAddedExpensiveGoodsIds){ + ExpensiveGoods goods = (ExpensiveGoods) objectDao.getByID_ForUpdate(ExpensiveGoods.class.getSimpleName(), expensiveGoodsId); + ExpensiveGoodsAuthorization egAuthorization = new ExpensiveGoodsAuthorization(); + egAuthorization.setAuthorizedCompanyId(expensiveGoodsAuthorization.getAuthorizedCompanyId()); + egAuthorization.setAuthorizedCompanyName(expensiveGoodsAuthorization.getAuthorizedCompanyName()); + egAuthorization.setAuthorizerCompanyId(expensiveGoodsAuthorization.getAuthorizerCompanyId()); + egAuthorization.setAuthorizerCompanyName(expensiveGoodsAuthorization.getAuthorizerCompanyName()); + egAuthorization.setValidityTime(expensiveGoodsAuthorization.getValidityTime()); + egAuthorization.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + egAuthorization.setExpensiveGoodsId(expensiveGoodsId); + egAuthorization.setExpensiveGoodsName(goods.getName()); + authorization.add(egAuthorization); + objectDao.saveOrUpdate(egAuthorization); + } + } + if(CollectionUtils.isNotEmpty(needDeletedExpensiveGoodsIds)){ + objectDao.excuteSQL("delete from " + ExpensiveGoodsAuthorization.class.getSimpleName() + + " where relevancyGoodsAuthorization_id = " + rga.getId() + " and " + + SqlUtils.getNonStringFieldInCollectionsPredicate("expensiveGoodsId", needDeletedExpensiveGoodsIds)); + } + if(CollectionUtils.isNotEmpty(needUpdateExpensiveGoodsIds)){ + for(Long expensiveGoodsId : needUpdateExpensiveGoodsIds){ + ExpensiveGoods goods = (ExpensiveGoods) objectDao.getByID_ForUpdate(ExpensiveGoods.class.getSimpleName(), expensiveGoodsId); + ExpensiveGoodsAuthorization egaTemp = + (ExpensiveGoodsAuthorization)objectDao.getBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), + " where relevancyGoodsAuthorization.id = " + rga.getId() + " and expensiveGoodsId = " + expensiveGoodsId); + egaTemp.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + egaTemp.setExpensiveGoodsId(expensiveGoodsId); + egaTemp.setExpensiveGoodsName(goods.getName()); + egaTemp.setValidityTime(expensiveGoodsAuthorization.getValidityTime()); + authorization.add(egaTemp); + objectDao.update(egaTemp);; + } + } + }else{ + for(int i=0,len=strs.length;i godownBriefHandler = GodownBriefHandler.getInstance(); godownBriefHandler.handleList(list); } + + //如果查询的高值耗材授权记录,关联授权ID相同只查询一条 + else if(ExpensiveGoodsAuthorization.class.getSimpleName().equals(poClass)){ + List ids = new ArrayList(); + List lists = new ArrayList(); + for(Object obj : list){ + ExpensiveGoodsAuthorization ega = (ExpensiveGoodsAuthorization)obj; + if(!ids.contains(ega.getRelevancyGoodsAuthorization().getId())){ + lists.add(ega); + ids.add(ega.getRelevancyGoodsAuthorization().getId()); + } + } + if(lists.size()>0){ + totalResults = lists.size(); + list = lists; + } + + } Map map = new HashMap(); map.put("totalResults", totalResults); Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsAuthorizationTableManager.java =================================================================== diff -u -r21862 -r21904 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsAuthorizationTableManager.java (.../ExpensiveGoodsAuthorizationTableManager.java) (revision 21862) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/dwr/table/ExpensiveGoodsAuthorizationTableManager.java (.../ExpensiveGoodsAuthorizationTableManager.java) (revision 21904) @@ -53,7 +53,7 @@ } public String findList(Map> parameterListMap){ - String sql = "where 1=1 "; + String sql = "where 1=1"; return gridManager.renderGrid(parameterListMap, ExpensiveGoodsAuthorization.class.getSimpleName(), sql, new String[]{"itemList"}); } Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManagerImpl.java =================================================================== diff -u -r21862 -r21904 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManagerImpl.java (.../ExpensiveGoodsAuthorizationManagerImpl.java) (revision 21862) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsAuthorizationManagerImpl.java (.../ExpensiveGoodsAuthorizationManagerImpl.java) (revision 21904) @@ -75,12 +75,13 @@ String sql2 = "where 1 = 1 and po.authorizedCompanyId = " + expensiveGoodsAuthorization.getAuthorizerCompanyId(); List egaz = objectDao.findBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), sql2); for(ExpensiveGoodsAuthorization eg : egaz){ - if(eg.getAuthorizerCompanyName().equals(expensiveGoodsAuthorization.getAuthorizedCompanyName()) && eg.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>0){ + if(eg.getAuthorizerCompanyName().equals(expensiveGoodsAuthorization.getAuthorizedCompanyName()) && eg.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>0 + && !DatabaseUtil.isPoIdValid(expensiveGoodsAuthorization.getId())){ throw new RuntimeException("授权方有授权过被授权方此物品"+ names[i]+"不能再授权!"); } } ExpensiveGoods expensiveGood = (ExpensiveGoods) objectDao.getByID_ForUpdate(ExpensiveGoods.class.getSimpleName(),Long.parseLong(strs[i])); - if(expensiveGood.getCertificationId() != null && expensiveGood.getCertificationId() !=0L){ + if(DatabaseUtil.isPoIdValid(expensiveGood.getCertificationId())){ RegistrationCertification registrationCertification = (RegistrationCertification) objectDao.getByID_ForUpdate(RegistrationCertification.class.getSimpleName(), expensiveGood.getCertificationId()); if(registrationCertification != null){ //判断高值耗材属不属于授权方 @@ -90,14 +91,16 @@ for(ExpensiveGoodsAuthorization eg : ega){ // 判断被授权方有被授权过这高值耗材没,并且授权时间已过期,授权方不是此次授权方 if(eg.getRelevancyGoodsAuthorization() != null){ - if(eg.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>0 && eg.getValidityTime().getTime() < new Date().getTime()){ + if(eg.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>0 && eg.getValidityTime().getTime() < new Date().getTime() + && !DatabaseUtil.isPoIdValid(expensiveGoodsAuthorization.getId())){ throw new RuntimeException("被授权方有授权过此物品"+ names[i]+"不能再授权!"); } } if(eg.getValidityTime().getTime() < new Date().getTime()){ throw new RuntimeException("物品:"+ names[i]+"的授权时间已失效!"); } - if(eg.getAuthorizerCompanyId().equals(expensiveGoodsAuthorization.getAuthorizerCompanyId())){ + if(eg.getAuthorizerCompanyId().equals(expensiveGoodsAuthorization.getAuthorizerCompanyId()) + && eg.getExpensiveGoodsName().equals(names[i]) && !DatabaseUtil.isPoIdValid(expensiveGoodsAuthorization.getId())){ throw new RuntimeException("被授权方有被同一个授权方授权过"+ names[i]+ "物品!"); } } @@ -106,7 +109,7 @@ String sql = "where 1 = 1 and po.authorizedCompanyId = " + expensiveGoodsAuthorization.getAuthorizerCompanyId(); List egz = objectDao.findBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), sql); for(ExpensiveGoodsAuthorization e : egz){ - if(e.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>0 && e.getValidityTime().getTime() < new Date().getTime()){ + if(e.getRelevancyGoodsAuthorization().getExpensiveGoodsIds().indexOf(strs[i].toString())>=0 && expensiveGoodsAuthorization.getId() == null && expensiveGoodsAuthorization.getId() == 0L){ String sql1 = "where 1 = 1 and po.authorizedCompanyId = " + expensiveGoodsAuthorization.getAuthorizedCompanyId(); List egt = objectDao.findBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), sql1); for(ExpensiveGoodsAuthorization egc : egt){ @@ -119,7 +122,8 @@ if(egc.getValidityTime().getTime() < new Date().getTime()){ throw new RuntimeException("物品:"+ names[i]+"的授权时间已失效!"); } - if(egc.getAuthorizerCompanyId().equals(expensiveGoodsAuthorization.getAuthorizerCompanyId())){ + if(egc.getAuthorizerCompanyId().equals(expensiveGoodsAuthorization.getAuthorizerCompanyId()) + && egc.getExpensiveGoodsName().equals(names[i])){ throw new RuntimeException("被授权方有被同一个授权方授权过"+ names[i]+ "物品!"); } } @@ -136,15 +140,29 @@ throw new RuntimeException("授权方不具备物品"+names[i]+"!"); } } - - RelevancyGoodsAuthorization relevancyGoodsAuthorization = new RelevancyGoodsAuthorization(); - if(expensiveGoodsAuthorization.getRelevancyGoodsAuthorization() != null){ - relevancyGoodsAuthorization.setId(expensiveGoodsAuthorization.getRelevancyGoodsAuthorization().getId()); + RelevancyGoodsAuthorization relevancyGoodsAuthorization = null; + if(DatabaseUtil.isPoIdValid(expensiveGoodsAuthorization.getId())){ + ExpensiveGoodsAuthorization eg = (ExpensiveGoodsAuthorization) objectDao.getByID_ForUpdate(ExpensiveGoodsAuthorization.class.getSimpleName(), expensiveGoodsAuthorization.getId()); + if(eg != null && eg.getRelevancyGoodsAuthorization() != null){ + relevancyGoodsAuthorization = eg.getRelevancyGoodsAuthorization(); + relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGoodsIds); + relevancyGoodsAuthorization.setExpensiveGoodsName(expensiveGoodsName); + relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(expensiveGoodsManager.getExpensiveGoodsAuthorization(expensiveGoodsAuthorization, relevancyGoodsAuthorization, expensiveGoodsIds,expensiveGoodsName)); + objectDao.saveOrUpdate(relevancyGoodsAuthorization); + }else{ + relevancyGoodsAuthorization = new RelevancyGoodsAuthorization(); + relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGoodsIds); + relevancyGoodsAuthorization.setExpensiveGoodsName(expensiveGoodsName); + relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(expensiveGoodsManager.getExpensiveGoodsAuthorization(expensiveGoodsAuthorization, relevancyGoodsAuthorization, expensiveGoodsIds,expensiveGoodsName)); + objectDao.saveOrUpdate(relevancyGoodsAuthorization); + } + }else{ + relevancyGoodsAuthorization = new RelevancyGoodsAuthorization(); + relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGoodsIds); + relevancyGoodsAuthorization.setExpensiveGoodsName(expensiveGoodsName); + relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(expensiveGoodsManager.getExpensiveGoodsAuthorization(expensiveGoodsAuthorization, relevancyGoodsAuthorization, expensiveGoodsIds,expensiveGoodsName)); + objectDao.saveOrUpdate(relevancyGoodsAuthorization); } - relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGoodsIds); - relevancyGoodsAuthorization.setExpensiveGoodsName(expensiveGoodsName); - relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(expensiveGoodsManager.getExpensiveGoodsAuthorization(expensiveGoodsAuthorization, relevancyGoodsAuthorization, expensiveGoodsIds,expensiveGoodsName)); - objectDao.saveOrUpdate(relevancyGoodsAuthorization); } @Override