Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/foreigntoussedefinition/action/ForeignTousseDefinitionAction.java =================================================================== diff -u -r12331 -r22886 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/foreigntoussedefinition/action/ForeignTousseDefinitionAction.java (.../ForeignTousseDefinitionAction.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/foreigntoussedefinition/action/ForeignTousseDefinitionAction.java (.../ForeignTousseDefinitionAction.java) (revision 22886) @@ -200,7 +200,12 @@ } return null; } - + + /** + * 好像没有地方调用此方法,暂时标记为过时方法 + * @return + */ + @Deprecated public String getForeignTousseDefinitionNames() { String str = ""; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r22691 -r22886 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 22691) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 22886) @@ -35,6 +35,7 @@ import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; +import com.forgon.disinfectsystem.basedatamanager.supplier.service.SupplierManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; @@ -43,15 +44,16 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.SupplierContact; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; -import com.forgon.disinfectsystem.entity.recall.RecallRecord; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager; import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; @@ -115,6 +117,7 @@ private ExpensiveGoodsManager expensiveGoodsManager; + private SupplierManager supplierManager; public void setExpensiveGoodsManager(ExpensiveGoodsManager expensiveGoodsManager) { this.expensiveGoodsManager = expensiveGoodsManager; @@ -172,6 +175,10 @@ this.diposableGoodsManager = diposableGoodsManager; } + public void setSupplierManager(SupplierManager supplierManager) { + this.supplierManager = supplierManager; + } + @Override public void saveOrUpdate(TousseDefinition tousseDefinition) { @@ -227,9 +234,6 @@ List tousseItemList = objectDao.findByProperty(TousseItem.class.getSimpleName(), "tousseDefinitionId", tousseDefinition.getId() + ""); - List tousseInstanceList = objectDao.findBySql(TousseInstance.class.getSimpleName(), - String.format("where tousseName='%s'", tousseDefinition.getName())); - // 判断是否有标识牌 List idCardDefinitionList = objectDao.findByProperty(IDCardDefinition.class.getSimpleName(), "tousseDefinitionID", tousseDefinition.getId() + ""); @@ -238,7 +242,17 @@ } if (CollectionUtils.isNotEmpty(tousseItemList)) { return false; - } else if (CollectionUtils.isNotEmpty(tousseInstanceList)) { + } + + List tousseInstanceList = null; + if(StringUtils.isNotBlank(tousseDefinition.getName())){ + tousseInstanceList = objectDao.findBySql(TousseInstance.class.getSimpleName(), + String.format("where tousseName='%s'", tousseDefinition.getName())); + }else{ + tousseInstanceList = objectDao.findBySql(TousseInstance.class.getSimpleName(), + String.format("where tousseDefinition.id = %s", tousseDefinition.getId())); + } + if (CollectionUtils.isNotEmpty(tousseInstanceList)) { if (tousseInstanceList.size() == 1 && tousseInstanceList.get(0).getTousseFixedBarcode()) { //1、只产生了一条包实例说明是固定条码(为了保险,还是加一个判断确认他是固定条码才可以删除) tousseInstanceManager.delete(tousseInstanceList.get(0)); //一定要先删除固定条码,在删除包定义(他们有主外键关系) return doDelete(tousseDefinition); @@ -574,18 +588,19 @@ //7、ClassifiedItem(清洗篮筐项,拆包清洗) updateSqlList.add(String.format("update ClassifiedItem set tousseNameForMaterial='%s' where itemType='%s' and tousseNameForMaterial='%s'", newName, ClassifiedItem.TYPE_MATERIAL, oldName)); //8、PackingRecord(装配记录) - updateSqlList.add(String.format("update PackingRecord set tousseName='%s' where tousseType='%s' and tousseName='%s'", newName, tousseType, oldName)); + updateSqlList.add(String.format("update PackingRecord set tousseName='%s' where tousseDefinitionId=%s", newName, id)); //9、InvoiceItem(发货项) - updateSqlList.add(String.format("update InvoiceItem set tousseName='%s' where tousseType='%s' and tousseName='%s'", newName, tousseType, oldName)); - //10、RecallRecord(召回记录) - updateSqlList.add(String.format("update RecallRecord set objectName='%s' where type='%s' and objectName='%s'", newName,RecallRecord.TYPE_TOUSSE, oldName)); + updateSqlList.add(String.format("update InvoiceItem set tousseName='%s' where tousseDefinitionId=%s", newName, id)); + //10、RecyclingItem(回收项) + updateSqlList.add(String.format("update RecyclingItem set tousseName='%s' where tousseDefinitionId=%s", newName, id)); /** * 11、ReturnGoodsItem(退物项) 12、TousseInstance(器械包实例) 13、TousseItem(申请项) 14、ClassifiedItem(清洗篮筐项,整包清洗) * 这四个表,消毒物品处理方式有所不同,需要修改所有子代产生的数据 */ if(td.isDisinfection()){ //消毒物品 updateSqlList.add(String.format("update ReturnGoodsItem set tousseName='%s' where tousseDefinition_id in (select id from TousseDefinition where ancestorId=%s)", newName, id)); + updateSqlList.add(String.format("update TousseDefinition set name='%s' where id<>%s and ancestorId=%s", newName, id, id)); updateSqlList.add(String.format("update TousseInstance set tousseName='%s' where tousseDefinition_id in (select id from TousseDefinition where ancestorId=%s)", newName, id)); updateSqlList.add(String.format("update TousseItem set tousseName='%s' where tousseDefinitionId in (select id from TousseDefinition where ancestorId=%s)", newName, id)); updateSqlList.add(String.format("update ClassifiedItem set name='%s' where itemType<>'%s' and toussedefinition_id in (select id from TousseDefinition where ancestorId=%s)", newName, ClassifiedItem.TYPE_MATERIAL, id)); @@ -835,16 +850,20 @@ sql += " and po.tousseType = '" + TousseDefinition.PACKAGE_TYPE_INSIDE + "'"; } else if (TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(tousseType)) {// 外来器械包 - // 外来器械包申请单 + // 外来器械包 sql += " and po.tousseType = '" + TousseDefinition.PACKAGE_TYPE_FOREIGN + "'"; + // 如果当前登录用户为外来器械供应商的申请人员时,只查询该申请人员关联的供应商下的外来器械包或未配置申请人员的供应商的外来器械包 + List supplierNameList = supplierManager.getSupplierNameListByTypeAndUserCode(Supplier.SUPPLIER_TYPE_RENTTOUSSE, AcegiHelper.getLoginUser().getUserName()); + if(CollectionUtils.isNotEmpty(supplierNameList)){ + sql += " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("supplierName", supplierNameList); + } } else if (TousseDefinition.PACKAGE_TYPE_DISINFECTION .equals(tousseType)) { - // 内容物不固定消毒物品申请单 - sql += " and (po.tousseType = '" + // 消毒物品 + sql += " and po.tousseType = '" + TousseDefinition.PACKAGE_TYPE_DISINFECTION - + "' or po.tousseType = '" - + TousseDefinition.PACKAGE_TYPE_STERILIZATION + "')"; + + "'"; } else if (TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY.equals(tousseType)) {// 外部代理灭菌器械包 // 外部代理灭菌器械包 sql += " and po.tousseType = '" Index: ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js =================================================================== diff -u -r22802 -r22886 --- ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 22802) +++ ssts-web/src/main/webapp/disinfectsystem/foreigntousseapplication/foreignTousseInfoForm.js (.../foreignTousseInfoForm.js) (revision 22886) @@ -794,7 +794,7 @@ ] }); - //供应室联系人Store + //供应商联系人Store supplierContacJsonStore = new Ext4.data.Store({ proxy : { type : 'ajax', Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java =================================================================== diff -u -r22537 -r22886 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 22537) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 22886) @@ -8,12 +8,15 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.forgon.component.grid.GridManager; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.disinfectsystem.basedatamanager.supplier.service.SupplierManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; @@ -23,6 +26,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; /** * @author panhaowen @@ -38,6 +42,11 @@ private TousseInstanceManager tousseInstanceManager; private SupplyRoomConfigManager supplyRoomConfigManager; + + /** + * 供应商manager + */ + private SupplierManager supplierManager; private ObjectDao objectDao; @@ -64,10 +73,14 @@ this.gridManager = gridManager; } + public void setSupplierManager(SupplierManager supplierManager) { + this.supplierManager = supplierManager; + } + public String findForeignTousseApplicationTableList( Map> parameterMap) { - StringBuilder sqlBuilder = new StringBuilder(); + StringBuilder sqlBuilder = new StringBuilder(" where 1=1 "); String currentOrgUnitCode = AcegiHelper.getLoginUser().getCurrentOrgUnitCode(); @@ -92,11 +105,22 @@ default: // 对于一级供应室以外的其他科室,如果没有查看所有外来器械申请单的权限,加上按部门过滤的语句,只能查看本部门的申请单 if ("false".equalsIgnoreCase(showAllForeignTousseApplicationPermission)){ - sqlBuilder.append(String.format(" WHERE po.departCoding = '%s'", + sqlBuilder.append(String.format(" and po.departCoding = '%s'", currentOrgUnitCode)); } } + //1.如果当前登录用户为外来器械供应商的申请人员时 + String foreignTousseAppFilterSql = ""; + List supplierNameList = supplierManager.getSupplierNameListByTypeAndUserCode(Supplier.SUPPLIER_TYPE_RENTTOUSSE, AcegiHelper.getLoginUser().getUserName()); + if(CollectionUtils.isNotEmpty(supplierNameList)){ + foreignTousseAppFilterSql = " (po.type <> '"+ InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION +"' or " + + "(po.type='"+ InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION +"' and po.id in (select id from "+ ForeignTousseApplication.class.getSimpleName() +" where "+ SqlUtils.getStringFieldInLargeCollectionsPredicate("supplierName", supplierNameList) +")))"; + } + + String loginUserSql = String.format(" and ((po.handleDepartCoding = '%s' and po.committedStatus = 1) or po.departCoding = '%s' or po.applicant='%s' or "+ foreignTousseAppFilterSql +") ", currentOrgUnitCode, currentOrgUnitCode, AcegiHelper.getLoginUser().getUserFullName()); + sqlBuilder.append(loginUserSql); + String sql = sqlBuilder.toString(); String result = gridManager Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js =================================================================== diff -u -r22525 -r22886 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 22525) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 22886) @@ -148,6 +148,10 @@ name : 'id', id : 'id' }, { + xtype:'hidden', + id:'userIds', + name:'userIds' + }, { layout : 'column', items : [ { layout : 'form', @@ -231,10 +235,36 @@ editable : false, mode : 'local', triggerAction : 'all', - anchor : '95%' + anchor : '95%', + listeners : { + 'select' : function(){ + if(this.value == renttousse){ + top.Ext.getCmp('allowApplyUser').show(); + }else{ + top.Ext.getCmp('allowApplyUser').hide(); + } + } + } }] - }, { + },{ layout : 'form', + columnWidth : 1.0, + labelWidth : 70, + id : 'allowApplyUser', + hidden : true, + items : [{ + fieldLabel: '允许申请人', + width: 460, + height: 200, + xtype : 'trigger', + readOnly:true, + name: 'userNames', + id: 'userNames', + onTriggerClick : function(){openSelectUser();}, + triggerClass : 'x-form-search-trigger' + }] + }, { + layout : 'form', columnWidth : 1, labelWidth : 70, items : [ @@ -285,6 +315,12 @@ }); configStore.add(supplierRegistrationCertificates); } + //如果类型为外来器械租用商时,显示申请人员并对申请人进行设值 + if(action.result.data.rentTousse == renttousse){ + top.Ext.getCmp('allowApplyUser').show(); + top.Ext.getCmp('userIds').setValue(action.result.data.userIds); + top.Ext.getCmp('userNames').setValue(action.result.data.userNames); + } }, failure : function(form, action) { }, @@ -316,6 +352,9 @@ } supplierContacts.push(supplierContact); } + //提交前,先将允许的申请人员的前缀去掉 + var userIdsValue = top.Ext.getCmp('userIds').getValue(); + top.Ext.getCmp('userIds').setValue(userIdsValue.replace(/USERID_/g,"")); Ext.Ajax.request({ url : WWWROOT + '/disinfectSystem/baseData/supplierAction!validate.do', params : {validateId : top.Ext.getCmp('id').getValue(),valifateName:top.Ext.getCmp('companyName').getValue(), valifateType:top.Ext.getCmp('rentTousse').getValue()}, //多传一个供应商类型(陈家儒改) Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManager.java =================================================================== diff -u -r22525 -r22886 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManager.java (.../SupplierManager.java) (revision 22525) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManager.java (.../SupplierManager.java) (revision 22886) @@ -1,22 +1,17 @@ package com.forgon.disinfectsystem.basedatamanager.supplier.service; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.SupplierContact; -import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManager; /** * @author WangYi */ -public interface SupplierManager { +public interface SupplierManager extends BasePoManager { public void saveOrUpdate(Supplier supplier); @@ -58,5 +53,12 @@ * @return 供应商List集合 */ public List> findSupplierContactList(String contactName,String supplierName); - + + /** + * 根据供应商类型及用户帐号查询供应室名称(未配置申请人员或配置了申请人员工号包含该人员工号参数的都查出来) + * @param supplierType 供应商类型 + * @param userCode 人员工号 + * @return + */ + public List getSupplierNameListByTypeAndUserCode(String supplierType , String userCode); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java =================================================================== diff -u -r22653 -r22886 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 22653) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 22886) @@ -34,16 +34,19 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.basedatamanager.supplier.service.SupplierManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.tousseGroup.service.TousseGroupManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; @@ -71,6 +74,7 @@ import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -106,25 +110,11 @@ private TousseGroupManager tousseGroupManager; - private TousseInstanceManager tousseInstanceManager; - - private TousseMaterialErrorDamageManager tousseMaterialErrorDamageManager; - - private TousseItemManager tousseItemManager; + /** + * 供应商manager + */ + private SupplierManager supplierManager; - public void setTousseItemManager(TousseItemManager tousseItemManager) { - this.tousseItemManager = tousseItemManager; - } - - public void setTousseMaterialErrorDamageManager( - TousseMaterialErrorDamageManager tousseMaterialErrorDamageManager) { - this.tousseMaterialErrorDamageManager = tousseMaterialErrorDamageManager; - } - - public void setTousseInstanceManager(TousseInstanceManager tousseInstanceManager) { - this.tousseInstanceManager = tousseInstanceManager; - } - public void setTousseGroupManager(TousseGroupManager tousseGroupManager) { this.tousseGroupManager = tousseGroupManager; } @@ -169,6 +159,10 @@ this.recyclingApplicationManager = recyclingApplicationManager; } + public void setSupplierManager(SupplierManager supplierManager) { + this.supplierManager = supplierManager; + } + public String findBorrowingsingleApplicationList( Map> parameterMap) { @@ -204,11 +198,20 @@ Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap); StringBuilder sqlBuilder = new StringBuilder(" where 1=1 "); - //1、当前登录用户的过滤(即:1、处理科室用户能看到已经提交的单 2、申请科室用户只能看到本科室申请的单 3、自己填的单) + //1、当前登录用户的过滤(即:1、处理科室用户能看到已经提交的单 2、申请科室用户只能看到本科室申请的单 3、自己填的单 4、外来器械厂商人员的外来器械申请单) LoginUserData loginUserData = AcegiHelper.getLoginUser(); String currentOrgUnitCode = loginUserData.getCurrentOrgUnitCode(); String userFullName = loginUserData.getUserFullName(); - String loginUserSql = String.format(" and ((po.handleDepartCoding = '%s' and po.committedStatus = 1) or po.departCoding = '%s' or po.applicant='%s') ", currentOrgUnitCode, currentOrgUnitCode, userFullName); + + //1.1.如果当前登录用户为外来器械供应商的申请人员时(对于外来器械申请单只查询该人员对应的供应商的申请单或无未配置申请人员的供应商的申请单、其它类型申请单业务不变) + String foreignTousseAppFilterSql = ""; + List supplierNameList = supplierManager.getSupplierNameListByTypeAndUserCode(Supplier.SUPPLIER_TYPE_RENTTOUSSE, loginUserData.getUserName()); + if(CollectionUtils.isNotEmpty(supplierNameList)){ + foreignTousseAppFilterSql = " (po.type <> '"+ InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION +"' or " + + "(po.type='"+ InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION +"' and po.id in (select id from "+ ForeignTousseApplication.class.getSimpleName() +" where "+ SqlUtils.getStringFieldInLargeCollectionsPredicate("supplierName", supplierNameList) +")))"; + } + + String loginUserSql = String.format(" and ((po.handleDepartCoding = '%s' and po.committedStatus = 1) or po.departCoding = '%s' or po.applicant='%s' or "+ foreignTousseAppFilterSql +") ", currentOrgUnitCode, currentOrgUnitCode, userFullName); sqlBuilder.append(loginUserSql); //2、不包含的申请单类型 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java =================================================================== diff -u -r22525 -r22886 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java (.../SupplierManagerImpl.java) (revision 22525) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java (.../SupplierManagerImpl.java) (revision 22886) @@ -1,10 +1,8 @@ package com.forgon.disinfectsystem.basedatamanager.supplier.service; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.regex.Matcher; @@ -13,46 +11,32 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; -import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; -import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.ExpensiveGoodsSupplier; -import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.SupplierContact; -import com.forgon.disinfectsystem.entity.expensivegoods.AuthorizationCertification; -import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsAuthorization; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.security.tools.Util; import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; -import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.db.DatabaseUtil; -import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.SqlUtils; /** * @author WangYi */ -public class SupplierManagerImpl implements SupplierManager { +public class SupplierManagerImpl extends BasePoManagerImpl implements SupplierManager { private final Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 - private ObjectDao objectDao; - - private RegistrationCertificationManager registrationCertificationManager; - - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; - } - - public void setRegistrationCertificationManager( - RegistrationCertificationManager registrationCertificationManager) { - this.registrationCertificationManager = registrationCertificationManager; - } - public void saveOrUpdate(Supplier supplier){ // 设置五笔码和拼音码 String companyName = supplier.getCompanyName(); @@ -265,6 +249,11 @@ if(StringUtils.isNotBlank(type)){ sql += " and po.rentTousse = '" + type + "'"; } + //1.如果当前登录用户为外来器械供应商的申请人员时 + List supplierNameList = getSupplierNameListByTypeAndUserCode(Supplier.SUPPLIER_TYPE_RENTTOUSSE, AcegiHelper.getLoginUser().getUserName()); + if(CollectionUtils.isNotEmpty(supplierNameList)){ + sql += " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("companyName", supplierNameList); + } @SuppressWarnings("unchecked") List suppliers = objectDao.findBySql(Supplier.class.getSimpleName(), sql); List> mapList = new ArrayList>(); @@ -362,4 +351,24 @@ } return null; } + + @Override + public List getSupplierNameListByTypeAndUserCode(String supplierType , String userCode){ + String hql = "select companyName from " + Supplier.class.getSimpleName() + " where rentTousse='"+ supplierType +"'"; + //以及所有未配置申请人员的供应商 + hql += " and (userIds is null or"; + String database = CssdUtils.getConfigProperty("database"); + if(DatabaseUtil.isSqlServer(database)){ + hql += " ';'+userIds+';' like '%;"+ userCode +";%')"; + }else if(DatabaseUtil.isOracle(database)){ + hql += " ';'|userIds|';' like '%;"+ userCode +";%')"; + } + List list = null; + try{ + list = objectDao.findByHql(hql); + }catch(Exception e){ + throw new RuntimeException("根据供应商类型及人员工号查询供应商出错."); + } + return list; + } }