Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java =================================================================== diff -u -r28088 -r28248 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 28088) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 28248) @@ -71,7 +71,7 @@ @Override public Collection getDepartInvoicePlan_NEW( String departCodes, String applyDate, - String tousseType,String disposableGoodsType, + String tousseTypes,String disposableGoodsType, String sterilingMethods, String tousseGroupIds, String appFormType,HttpServletRequest request) { @@ -84,7 +84,7 @@ //是否启用加急功能,如果启用,则按是否加急进行排序 boolean enableUrgentFunction = CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction",false); Collection invoicePlans = - getInvoicePlans_NEW(departCodes, applyDate, tousseType, disposableGoodsType, + getInvoicePlans_NEW(departCodes, applyDate, tousseTypes, disposableGoodsType, sterilingMethods,tousseGroupIds , appFormType, enableUrgentFunction, invoiceOrigin , afterRecyclingTousseDeliver); //优化后可能会用不上暂时先注释掉 @@ -129,7 +129,7 @@ * 根据相关的条件查询发货计划单 * @param departCodes * @param applyDate - * @param tousseType + * @param tousseTypes * @param disposableGoodsType 一次性物品类型 * @param sterilingMethods 灭菌程序(多个用逗号分隔) * @param tousseGroupIds 器械包分组 @@ -138,7 +138,7 @@ * @return */ private Collection getInvoicePlans_NEW(String departCodes, String applyDate, - String tousseType,String disposableGoodsType, + String tousseTypes,String disposableGoodsType, String sterilingMethods, String tousseGroupIds, String appFormType, boolean isSortedByUrgency, String invoiceOrigin,boolean afterRecyclingTousseDeliver){ @@ -147,7 +147,7 @@ //根据条件参与构造查询需要条件语句 String sqlCondition = buildWaitSendInvoicePlanSqlContion(departCodes, applyDate, - tousseType,disposableGoodsType, + tousseTypes,disposableGoodsType, sterilingMethods, tousseGroupIds, appFormType, invoicePlanTableAlias, invoiceOrigin,afterRecyclingTousseDeliver); @@ -266,7 +266,7 @@ * 构造发货计划过滤条件,包括按申请项及申请项,where开头 * @param departCodes 科室编码 * @param applyDate 申请日期 - * @param tousseType 物品类型,多个以逗号分隔 + * @param tousseTypes 物品类型,多个以逗号分隔 * @param disposableGoodsType 一次性物品类型 * @param sterilingMethods 灭菌程序 * @param tousseGroupIds 器械包分组 @@ -276,7 +276,7 @@ */ private String buildWaitSendInvoicePlanSqlContion( String departCodes, String applyDate, - String tousseType,String disposableGoodsType, + String tousseTypes,String disposableGoodsType, String sterilingMethods, String tousseGroupIds, String appFormType, String invoicePlanTableAlias, String invoiceOrigin,boolean afterRecyclingTousseDeliver){ @@ -286,7 +286,7 @@ //表1的字段的前缀 String invoicePlanTableColumnAliasPre1 = (StringUtils.isNotBlank(invoicePlanTableAlias)) ? invoicePlanTableAlias + "." : ""; String tousseItemTableAlias = "ti"; - String where2 = buildWaitSendInvoicePlanSqlContionOnlyTousseItem(tousseType, disposableGoodsType, sterilingMethods, tousseGroupIds,tousseItemTableAlias,invoicePlanTableAlias,invoiceOrigin,afterRecyclingTousseDeliver); + String where2 = buildWaitSendInvoicePlanSqlContionOnlyTousseItem(tousseTypes, disposableGoodsType, sterilingMethods, tousseGroupIds,tousseItemTableAlias,invoicePlanTableAlias,invoiceOrigin,afterRecyclingTousseDeliver); String condition = String .format(" where %s and ("+ invoicePlanTableColumnAliasPre1 +"type='%s' or "+ invoicePlanTableColumnAliasPre1 +"id in (select recyclingApplication_ID from %s "+ tousseItemTableAlias +" where %s))", where1,InvoicePlan.TYPE_PROXYDISINFECTION, TousseItem.class.getSimpleName() , where2); @@ -516,7 +516,7 @@ /** * 构造发货计划申请项的过滤条件(自定义器械申请单的相关过滤),无where开头 - * @param tousseType 物品类型,多个以逗号分隔 + * @param tousseTypes 物品类型,多个以逗号分隔 * @param disposableGoodsType 一次性物品类型 * @param sterilingMethods 灭菌程序 * @param tousseGroupIds 器械包分组 @@ -525,7 +525,7 @@ * @return String 示例如下: 条件1 and 条件2 。。。 */ private String buildWaitSendInvoicePlanSqlContionOnlyTousseItem( - String tousseType,String disposableGoodsType, + String tousseTypes,String disposableGoodsType, String sterilingMethods, String tousseGroupIds, String tousseItemTableAlias , String invoicePlanTableAlias, String invoiceOrigin , boolean afterRecyclingTousseDeliver){ @@ -567,15 +567,15 @@ sterilingMethodList = Arrays.asList(sterilingMethods.split(",")); } - if (StringUtils.isNotBlank(tousseType)) { - if(TousseItem.DIPOSABLE_YES.equals(tousseType)){ + if (StringUtils.isNotBlank(tousseTypes)) { + if(TousseItem.DIPOSABLE_YES.equals(tousseTypes)){ tousseItemCondition = String.format("%s and "+ tableColumnAliasPre +"diposable='%s' and "+ tableColumnAliasPre +"tousseType = '%s'", tousseItemCondition , TousseItem.DIPOSABLE_YES , TousseItem.TYPE_DIPOSABLE_GOODS); if(CollectionUtils.isNotEmpty(disposableGoodsTypeList)){ tousseItemCondition = String.format("%s and %s", tousseItemCondition , SqlUtils.getStringFieldInLargeCollectionsPredicate(tableColumnAliasPre +"disposableGoodsType", disposableGoodsTypeList)); } - }else if(TousseItem.DIPOSABLE_NO.equals(tousseType)){ + }else if(TousseItem.DIPOSABLE_NO.equals(tousseTypes)){ tousseItemCondition = String.format("%s and "+ tableColumnAliasPre +"diposable='%s'", tousseItemCondition , TousseItem.DIPOSABLE_NO); if(hideUnprintedTousseItems){ @@ -602,7 +602,7 @@ } } }else{ - Set tousseTypeSet = buildTousseTypeSet(tousseType); + Set tousseTypeSet = buildTousseTypeSet(tousseTypes); if(CollectionUtils.isNotEmpty(tousseTypeSet)){ tousseItemCondition = String.format("%s and %s",tousseItemCondition,SqlUtils.getStringFieldInLargeCollectionsPredicate(tableColumnAliasPre +"tousseType", tousseTypeSet)); //1.检查是否同时包含一次性物品与非一次性物品 @@ -777,7 +777,7 @@ @Override public JSONArray getInvoicePlansByOrgAndTousseType( - Collection departCodeList, String applyDate, String tousseType,String disposableGoodsType,String sterilingMethods, String tousseGroupIds,String appFormType) { + Collection departCodeList, String applyDate, String tousseTypes,String disposableGoodsType,String sterilingMethods, String tousseGroupIds,String appFormType) { String departCodes = null; if(CollectionUtils.isNotEmpty(departCodeList)){ departCodes = StringUtils.join(departCodeList , ";"); @@ -790,7 +790,7 @@ //申请单表的别名 String invoicePlanTableAlias = "po"; String condition = buildWaitSendInvoicePlanSqlContion(departCodes, applyDate, - tousseType, disposableGoodsType, sterilingMethods, tousseGroupIds, + tousseTypes, disposableGoodsType, sterilingMethods, tousseGroupIds, appFormType, invoicePlanTableAlias,invoiceOrigin, afterRecyclingTousseDeliver); String querySql = String.format("select id,type,serialNumber,remark from %s "+ invoicePlanTableAlias +" %s order by applicationTime", InvoicePlan.class.getSimpleName() , condition); List> list = jdbcTemplate.queryForList(querySql); @@ -858,7 +858,7 @@ @Override public Collection getWaitDeliverGoods( Long invoicePlanId, String orgUnitCoding, Long warehouseId, String applyDate, - String tousseType, String disposableGoodsType, + String tousseTypes, String disposableGoodsType, String sterilingMethods, String tousseGroupIds,String appFormType) { Collection result = null; Collection list = null; @@ -964,8 +964,16 @@ appFormType , excludeInvoicePlanTypeList , invoicePlanTableAlias , invoiceOrigin , afterRecyclingTousseDeliver)); } + List tousseTypeList = null; + if(StringUtils.isNotBlank(tousseTypes)){ + tousseTypeList = Arrays.asList(tousseTypes.split(",")); + } + boolean includeForeignTousseType = false; + if(CollectionUtils.isEmpty(tousseTypeList) || tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + includeForeignTousseType = true; + } //1.如果存在外来器械单的查询条件时 - if(StringUtils.isNotBlank(invoicePlanForeignTousseCondition)){ + if(StringUtils.isNotBlank(invoicePlanForeignTousseCondition) && includeForeignTousseType){ //申请项的过滤条件 //申请项表的别名 String tousseItemTableAlias = "ti"; @@ -1038,7 +1046,7 @@ //申请项表的别名 String tousseItemTableAlias = "ti"; String tousseItemCondition = - buildWaitSendInvoicePlanSqlContionOnlyTousseItem(tousseType, null, + buildWaitSendInvoicePlanSqlContionOnlyTousseItem(tousseTypes, null, sterilingMethods, tousseGroupIds , tousseItemTableAlias , invoicePlanTableAlias, invoiceOrigin,afterRecyclingTousseDeliver); @@ -1079,18 +1087,6 @@ //申请项的过滤条件 //申请项表的别名 String tousseItemTableAlias = "ti"; - //通用物品类型,即器械包、敷料包、一次性物品(排除消毒物品) - String tousseItemCommonGoodsExcludeDisinfectGoodsCondition = - buildWaitSendInvoicePlanSqlContionOnlyTousseItem( - StringUtils.join(new String[]{ - TousseDefinition.PACKAGE_TYPE_INSIDE, - TousseDefinition.PACKAGE_TYPE_DRESSING, - DisposableGoods.TYPE_NAME - }, ","), - disposableGoodsType, sterilingMethods, tousseGroupIds , - tousseItemTableAlias , invoicePlanTableAlias,invoiceOrigin, - afterRecyclingTousseDeliver); - //应发货数量 String shouldSendAmountCaseSql = CssdUtils.buildTousseItemShouldDeliverAmountSql(invoicePlanTableAlias, tousseItemTableAlias, @@ -1103,58 +1099,88 @@ + "else "+ tousseItemTableAlias +".amount end " + "else "+ shouldSendAmountCaseSql +" " + "end) - sendOutAmount)"; - //1.器械包、敷料包、一次性物品 - String queryNotDisinfectTousseItemSql = String.format("select tousseName,tousseType,diposable," - + "max(ul.grade) grade,min("+ invoicePlanTableAlias +".applicationTime) applicationTime," - + "dg.ttsName ,sum"+ tousseItemWaitSendAmountSumSql +" amount," - //+ "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " - + "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null) then 0 else ("+ tousseItemTableAlias +".urgentAmount) end) urgentAmount " - + "from %s "+ tousseItemTableAlias +" " - + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " - + "left join %s ul on "+ tousseItemTableAlias +".urgentLevel_id=ul.id " - + "left join %s dg on dg.id="+ tousseItemTableAlias +".disposableGoodsId " - + "where %s and %s and " + tousseItemWaitSendAmountSumSql +" > 0 " - + "group by tousseName,tousseType,diposable,dg.ttsName " - + "order by max(ul.grade) desc ," - + "(case when tousseType='%s' then 1 else 2 end)," - + "min("+ invoicePlanTableAlias +".applicationTime)", - TousseItem.class.getSimpleName() , InvoicePlan.class.getSimpleName(), UrgentLevel.class.getSimpleName() , - DisposableGoods.class.getSimpleName() ,invoicePlanCommonGoodsCondition , - tousseItemCommonGoodsExcludeDisinfectGoodsCondition , TousseItem.TYPE_DIPOSABLE_GOODS); - Collection list1 = getWaitDeliverGoodsForCommonGoodsButNotDisinfectGoods(queryNotDisinfectTousseItemSql); - if(CollectionUtils.isNotEmpty(list1)){ - if(list == null){ - list = new ArrayList(); + + //1.器械包、敷料包、一次性物品的待发货查询 + if(CollectionUtils.isEmpty(tousseTypeList) || tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_INSIDE) + || tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_DRESSING) || tousseTypeList.contains(DisposableGoods.TYPE_NAME)){ + List queryTousseTypeList = new ArrayList(); + if(CollectionUtils.isEmpty(tousseTypeList)){ + queryTousseTypeList.add(TousseDefinition.PACKAGE_TYPE_INSIDE); + queryTousseTypeList.add(TousseDefinition.PACKAGE_TYPE_DRESSING); + queryTousseTypeList.add(DisposableGoods.TYPE_NAME); + }else{ + if(tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_INSIDE)){ + queryTousseTypeList.add(TousseDefinition.PACKAGE_TYPE_INSIDE); + } + if(tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_DRESSING)){ + queryTousseTypeList.add(TousseDefinition.PACKAGE_TYPE_DRESSING); + } + if(tousseTypeList.contains(DisposableGoods.TYPE_NAME)){ + queryTousseTypeList.add(DisposableGoods.TYPE_NAME); + } } - list.addAll(list1); + //通用物品类型,即器械包、敷料包、一次性物品(排除消毒物品) + String tousseItemCommonGoodsExcludeDisinfectGoodsCondition = + buildWaitSendInvoicePlanSqlContionOnlyTousseItem( + StringUtils.join(queryTousseTypeList, ","), + disposableGoodsType, sterilingMethods, tousseGroupIds , + tousseItemTableAlias , invoicePlanTableAlias,invoiceOrigin, + afterRecyclingTousseDeliver); + + String queryNotDisinfectTousseItemSql = String.format("select tousseName,tousseType,diposable," + + "max(ul.grade) grade,min("+ invoicePlanTableAlias +".applicationTime) applicationTime," + + "dg.ttsName ,sum"+ tousseItemWaitSendAmountSumSql +" amount," + //+ "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + + "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null) then 0 else ("+ tousseItemTableAlias +".urgentAmount) end) urgentAmount " + + "from %s "+ tousseItemTableAlias +" " + + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " + + "left join %s ul on "+ tousseItemTableAlias +".urgentLevel_id=ul.id " + + "left join %s dg on dg.id="+ tousseItemTableAlias +".disposableGoodsId " + + "where %s and %s and " + tousseItemWaitSendAmountSumSql +" > 0 " + + "group by tousseName,tousseType,diposable,dg.ttsName " + + "order by max(ul.grade) desc ," + + "(case when tousseType='%s' then 1 else 2 end)," + + "min("+ invoicePlanTableAlias +".applicationTime)", + TousseItem.class.getSimpleName() , InvoicePlan.class.getSimpleName(), UrgentLevel.class.getSimpleName() , + DisposableGoods.class.getSimpleName() ,invoicePlanCommonGoodsCondition , + tousseItemCommonGoodsExcludeDisinfectGoodsCondition , TousseItem.TYPE_DIPOSABLE_GOODS); + Collection list1 = getWaitDeliverGoodsForCommonGoodsButNotDisinfectGoods(queryNotDisinfectTousseItemSql); + if(CollectionUtils.isNotEmpty(list1)){ + if(list == null){ + list = new ArrayList(); + } + list.addAll(list1); + } } //2.消毒物品 - //通用物品类型(排除消毒物品) - String tousseItemDisinfectGoodsCondition = - buildWaitSendInvoicePlanSqlContionOnlyTousseItem(TousseDefinition.PACKAGE_TYPE_DISINFECTION, null, sterilingMethods, tousseGroupIds , tousseItemTableAlias , invoicePlanTableAlias,invoiceOrigin,afterRecyclingTousseDeliver); - String queryDisinfectTousseItemSql = String.format("select "+ tousseItemTableAlias +".tousseName," - + tousseItemTableAlias +".tousseType,'%s' diposable,max(ul.grade) grade," - + "td.id tdId,td.materialsMD5,td.materialAmount,td.isApplyEntireTousse," - + "min("+invoicePlanTableAlias +".applicationTime) applicationTime," - + "sum"+ tousseItemWaitSendAmountSumSql +" amount," - + "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " - + "from %s "+ tousseItemTableAlias +" " - + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " - + "left join %s ul on "+ tousseItemTableAlias +".urgentLevel_id=ul.id " - + "left join %s td on td.id="+ tousseItemTableAlias +".tousseDefinitionId " - + "where %s and %s and " + tousseItemWaitSendAmountSumSql +" > 0 " - + "group by "+ tousseItemTableAlias +".tousseName,"+ tousseItemTableAlias +".tousseType,ul.grade,td.id ,td.materialsMD5,td.materialAmount,td.isApplyEntireTousse " - + "order by ul.grade desc ,min(" + invoicePlanTableAlias +".applicationTime)", Constants.STR_NO, - TousseItem.class.getSimpleName() , InvoicePlan.class.getSimpleName(), UrgentLevel.class.getSimpleName() , - TousseDefinition.class.getSimpleName() ,invoicePlanCommonGoodsCondition , - tousseItemDisinfectGoodsCondition); - Collection list2 = getWaitDeliverGoodsForDisinfectGoods(queryDisinfectTousseItemSql); - if(CollectionUtils.isNotEmpty(list2)){ - if(list == null){ - list = new ArrayList(); + if(CollectionUtils.isEmpty(tousseTypeList) || tousseTypeList.contains(TousseDefinition.PACKAGE_TYPE_DISINFECTION)){ + + String tousseItemDisinfectGoodsCondition = + buildWaitSendInvoicePlanSqlContionOnlyTousseItem(TousseDefinition.PACKAGE_TYPE_DISINFECTION, null, sterilingMethods, tousseGroupIds , tousseItemTableAlias , invoicePlanTableAlias,invoiceOrigin,afterRecyclingTousseDeliver); + String queryDisinfectTousseItemSql = String.format("select "+ tousseItemTableAlias +".tousseName," + + tousseItemTableAlias +".tousseType,'%s' diposable,max(ul.grade) grade," + + "td.id tdId,td.materialsMD5,td.materialAmount,td.isApplyEntireTousse," + + "min("+invoicePlanTableAlias +".applicationTime) applicationTime," + + "sum"+ tousseItemWaitSendAmountSumSql +" amount," + + "sum(case when ("+ tousseItemTableAlias +".urgentAmount is null or "+ tousseItemTableAlias +".urgentAmount <= "+ tousseItemTableAlias +".sendoutAmount) then 0 else ("+ tousseItemTableAlias +".urgentAmount - "+ tousseItemTableAlias +".sendoutAmount) end) urgentAmount " + + "from %s "+ tousseItemTableAlias +" " + + "join %s "+ invoicePlanTableAlias +" on "+ tousseItemTableAlias +".recyclingApplication_ID="+ invoicePlanTableAlias +".id " + + "left join %s ul on "+ tousseItemTableAlias +".urgentLevel_id=ul.id " + + "left join %s td on td.id="+ tousseItemTableAlias +".tousseDefinitionId " + + "where %s and %s and " + tousseItemWaitSendAmountSumSql +" > 0 " + + "group by "+ tousseItemTableAlias +".tousseName,"+ tousseItemTableAlias +".tousseType,ul.grade,td.id ,td.materialsMD5,td.materialAmount,td.isApplyEntireTousse " + + "order by ul.grade desc ,min(" + invoicePlanTableAlias +".applicationTime)", Constants.STR_NO, + TousseItem.class.getSimpleName() , InvoicePlan.class.getSimpleName(), UrgentLevel.class.getSimpleName() , + TousseDefinition.class.getSimpleName() ,invoicePlanCommonGoodsCondition , + tousseItemDisinfectGoodsCondition); + Collection list2 = getWaitDeliverGoodsForDisinfectGoods(queryDisinfectTousseItemSql); + if(CollectionUtils.isNotEmpty(list2)){ + if(list == null){ + list = new ArrayList(); + } + list.addAll(list2); } - list.addAll(list2); } } Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js =================================================================== diff -u -r28039 -r28248 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js (.../invoicePlanExtractedView.js) (revision 28039) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.js (.../invoicePlanExtractedView.js) (revision 28248) @@ -11,7 +11,8 @@ var selectedTousseType; var selectedDisposableGoodsType = ''; var selectedSterilingMethods = ''; -var appFormType = ''; +var selectedAppFormType; + var invoiceDepartGroups = ''; var appDepartCode = ''; var view_recyclingapplicationStore = null; @@ -100,7 +101,7 @@ var startDate = Ext.getCmp('startDate'); var endDate = Ext.getCmp('endDate'); - appFormType = Ext.getCmp('appFormType').getValue(); + selectedAppFormType = Ext.getCmp('appFormType').getValue(); if (!isUndefinedOrNullOrEmpty(isSetDateValue) && isSetDateValue == true){ var dateArray = selectedApplyDate.split(';'); startDate.setValue(dateArray[0]); @@ -140,7 +141,7 @@ store.baseParams['tousseType'] = selectedTousseType; store.baseParams['disposableGoodsType'] = selectedDisposableGoodsType; store.baseParams['sterilingMethods'] = selectedSterilingMethods; - store.baseParams['appFormType'] = appFormType; + store.baseParams['appFormType'] = selectedAppFormType; store.baseParams['tousseGroupIds'] = tousseGroupIds; //刷新列表界面 store.load(); @@ -243,6 +244,7 @@ ['全部申请单', ''] ,['通用申请单', '通用申请单'] ,['器械包申请单', '器械包申请单'] + ,['回收申请单', '回收申请单'] ,['一次性物品申请单', '一次性物品申请单'] ,['消毒物品申请单', '消毒物品申请单'] ,['外来器械包申请单', '外来器械包申请单'] @@ -498,6 +500,8 @@ view_recyclingapplicationStore.baseParams['sterilingMethods'] = encodeURI(selectedSterilingMethods); } view_recyclingapplicationStore.baseParams['tousseGroupIds'] = tousseGroupIds; + //申请单类型 + view_recyclingapplicationStore.baseParams['appFormType'] = encodeURI(selectedAppFormType); }); Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js =================================================================== diff -u -r28095 -r28248 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 28095) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedForm.js (.../invoicePlanExtractedForm.js) (revision 28248) @@ -1524,6 +1524,8 @@ } if(tousseGroupIdsForApplyList){ urls += '&tousseGroupIds=' + encodeURI(tousseGroupIdsForApplyList); + }if(selectedAppFormType){ + urls += '&appFormType=' + encodeURI(selectedAppFormType); } var departApplicationStore = new Ext.data.Store({ @@ -1600,6 +1602,8 @@ recyclingapplicationStore1.baseParams['sterilingMethods'] = encodeURI(selectedSterilingMethods); } recyclingapplicationStore1.baseParams['tousseGroupIds'] = tousseGroupIds; + //申请单类型 + recyclingapplicationStore1.baseParams['appFormType'] = encodeURI(selectedAppFormType); if(top.Ext.getCmp("sendOutGoodsDetail")){ top.Ext.getCmp("sendOutGoodsDetail").getEl().mask("加载中,请稍候..."); } @@ -1904,6 +1908,11 @@ value:selectedTousseType },{ xtype :'hidden', + name : 'appFormType', + id : 'appFormTypeHidden', + value:selectedAppFormType + },{ + xtype :'hidden', name : 'invoicePlanId', id : 'invoicePlanIdHidden', value:selectedInvoicePlanId Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r28039 -r28248 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 28039) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 28248) @@ -19,7 +19,6 @@ import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -126,6 +125,7 @@ import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonMapUtils; import com.forgon.tools.util.ForgonStringUtils; import com.forgon.tools.util.IntegerUtils; @@ -2330,6 +2330,10 @@ tousseTypeSet .add(TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY); break; + case TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY: + tousseTypeSet + .add(TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY); + break; case ExpensiveGoods.TYPE_NAME: tousseTypeSet .add(ExpensiveGoods.TYPE_NAME); @@ -4169,4 +4173,36 @@ } return map; } + + @Override + public List getAllApplyType(boolean needAllOption, boolean needCustomDeliveryType) { + List list = new ArrayList(); + if(needAllOption){ + list.add("全部"); + } + list.add(InvoicePlan.TYPE_COMBO_FORM); + list.add(InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM); + list.add(InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM); + list.add(InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM); + list.add(InvoicePlan.TYPE_BORROWINGSINGLE); + list.add(InvoicePlan.TYPE_SPECIALIZED_INSTRUMENT_APPLICATION_FROM); + list.add(InvoicePlan.TYPE_APPLYING_FOR_RETURN_FORM); + list.add(InvoicePlan.TYPE_PROXYDISINFECTION); + list.add(InvoicePlan.TYPE_FOREIGNPROXYDISINFECTION); + list.add(InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION); + list.add(InvoicePlan.TYPE_CUSTOM_TOUSSE_APPLIACTION_FORM); + list.add(InvoicePlan.TYPE_SECOND_SUPPLY_ROOM); + list.add(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION); + list.add(InvoicePlan.TYPE_QUALITY_MONITOR_RECYCLE_APPLICATION); + list.add(InvoicePlan.TYPE_OPERATION_RESERVATION_APPLICATION); + if (needCustomDeliveryType) { + list.add(Invoice.TYPE_CUSTOM); + } + // 启用物品预约功能(ASSDGSZYY-77) + if (ConfigUtils.getSystemSetConfigByNameBool("enableGoodsReservateion", false)) { + list.add(InvoicePlan.TYPE_GOODS_RESERVATION_FORM); + } + return list; + } + } Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r28152 -r28248 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 28152) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 28248) @@ -242,6 +242,8 @@ private OrgUnitManager orgUnitManager; @Autowired private InvoicePlanManager invoicePlanManager; + @Autowired + private InvoicePlanManager invoicePlanOptimizeManager; /** * 快速发货manager实例类bean @@ -250,6 +252,8 @@ private InvoicePlanManager expressInvoicePlanManager; @Autowired private InvoiceManager invoiceManager; + @Autowired + private InvoiceManager invoiceOptimizeManager; /** * 快速发货manager实现类 @@ -390,6 +394,7 @@ } @Override public String invoke(String remoteAddr, String jsonParams) { + logger.debug("param jsonParams=" + jsonParams); JSONObject jsonObject = null; String result = null; RuntimeException retException = null; @@ -416,7 +421,6 @@ logger.error("方法返回值类型不正确"); return JSONUtil.buildErrorMsgJsonResult("调用异常"); } - logger.debug("param jsonObject=" + jsonObject); result = (String) method.invoke(this, jsonObject); logger.debug("return result=" + result); } catch (NoSuchMethodException ex) { @@ -1033,13 +1037,25 @@ //申请日期与物品类型 String applyDate = params.optString("applyDate" , null); - String tousseType = params.optString("tousseType" , null); + //物品类型,多个以逗号分隔 + String tousseTypes = params.optString("tousseType" , null); String disposableGoodsType = params.optString("disposableGoodsType" , null); String sterilingMethods = params.optString("sterilingMethods" , null); String tousseGroupIds = params.optString("tousseGroupIds" , null); - Collection vos = invoicePlanManager - .getDepartInvoicePlan(departCodes,applyDate ,tousseType,disposableGoodsType,sterilingMethods,tousseGroupIds); - JSONArray jsonArray = JSONArray.fromObject(vos); + //优化前的旧方法 + /*Collection vos = invoicePlanManager + .getDepartInvoicePlan(departCodes,applyDate ,tousseType,disposableGoodsType,sterilingMethods,tousseGroupIds);*/ + + //优化后的新方法 + Collection vos = invoicePlanOptimizeManager + .getDepartInvoicePlan_NEW(StringUtils.join(departCodes,";"),applyDate ,tousseTypes,disposableGoodsType, + sterilingMethods,tousseGroupIds,params.optString("invoicePlanType", null),null); + JSONArray jsonArray = null; + if(CollectionUtils.isNotEmpty(vos)){ + jsonArray = JSONArray.fromObject(vos); + }else{ + jsonArray = new JSONArray(); + } return new JSONStringer().object().key("success").value(true) .key("invoicePlans").value(jsonArray).endObject().toString(); } @@ -1108,8 +1124,14 @@ */ public String getInvoicePlan(JSONObject params) { String mode = params.optString("mode", ""); + Long sourceWarehouseId = params.has("sourceWarehouseId") ? new Long(params.optLong("sourceWarehouseId")) : null; String disposableGoodsType = params.optString("disposableGoodsType" , null); String sterilingMethods = params.optString("sterilingMethods" , null); + String tousseType = params.optString("tousseType",null); + //器械包分组 + String tousseGroupIds = params.optString("tousseGroupIds", null); + //申请单类型 + String appFormType = params.optString("appFormType", null); switch(mode){ case "depart":{ String departCode = params.optString("departCode"); @@ -1134,14 +1156,24 @@ //已替换成调下面一行的代码 /*Collection invoiceGoodsOfAll = invoiceManager .getWaitDeliverGoods(departCode, TimeQuantum.All);*/ - //增加申请单日期与物品类型的条件 - Collection invoiceGoodsOfAll = invoiceManager - .getWaitDeliverGoods(departCode, params.optString("applyDate",""), params.optString("tousseType",""),disposableGoodsType,sterilingMethods,params.optString("tousseGroupIds","")); + Collection invoiceGoodsOfAll = null; + //增加申请单日期与物品类型的条件(优化之前的方法) + /*invoiceGoodsOfAll = invoiceManager + .getWaitDeliverGoods(departCode, params.optString("applyDate",""), params.optString("tousseType",""),disposableGoodsType,sterilingMethods,params.optString("tousseGroupIds",""));*/ + //优化后的新方法 + invoiceGoodsOfAll = invoicePlanOptimizeManager + .getWaitDeliverGoods(null , departCode, sourceWarehouseId, params.optString("applyDate",""), tousseType,disposableGoodsType, sterilingMethods, + tousseGroupIds, appFormType); + // 去除消毒物品显示名称前用中文括号包围的科室名称 fixApplicationGoodsVoShowTousseName(invoiceGoodsOfAll); - JSONArray invoiceGoodsOfAllJsonArray = JSONArray - .fromObject(invoiceGoodsOfAll); + JSONArray invoiceGoodsOfAllJsonArray = null; + if(CollectionUtils.isEmpty(invoiceGoodsOfAll)){ + invoiceGoodsOfAllJsonArray = new JSONArray(); + }else{ + invoiceGoodsOfAllJsonArray = JSONArray.fromObject(invoiceGoodsOfAll); + } return new JSONStringer().object().key("success") .value(true) @@ -1153,14 +1185,17 @@ case "invoicePlan":{ long invoicePlanId = params.optLong("invoicePlanId"); - String tousseGroupIds = params.optString("tousseGroupIds", null); //已替换成调下面一行的代码 /*Collection goods = invoiceManager.getWaitDeliverGoods(invoicePlanId);*/ - //增加申请单日期与物品类型器械包分组的条件 - Collection goods = invoiceManager - .getWaitDeliverGoods(invoicePlanId, params.optString("applyDate",""), params.optString("tousseType",""),disposableGoodsType,sterilingMethods,tousseGroupIds); + //增加申请单日期与物品类型器械包分组的条件(优化前的旧方法) + /*Collection goods = invoiceManager + .getWaitDeliverGoods(invoicePlanId, params.optString("applyDate",""), params.optString("tousseType",""),disposableGoodsType,sterilingMethods,tousseGroupIds);*/ + //优化后的新方法 + Collection goods = invoicePlanOptimizeManager + .getWaitDeliverGoods(invoicePlanId , null, sourceWarehouseId, params.optString("applyDate",""), tousseType,disposableGoodsType, sterilingMethods, + tousseGroupIds, appFormType); if(goods.size() == 0){ InvoicePlan invoiceplan = invoicePlanManager.get(invoicePlanId); return JSONUtil.buildErrorMsgJsonResult("该单状态"+invoiceplan.getDeliverStatus()+",无待发货物品"); @@ -1361,7 +1396,13 @@ try{ //解决广医二院2019-11-29一次性物品固定条码pda发货报json格式的问题 params = JSONObject.fromObject(params.toString().replace("\\\\\\", "\\")); - invoiceManager.submitInvoice(params); + if(CssdUtils.getSystemSetConfigByNameBool("useOldInvoiceVersion")){ + //优化前的方法 + invoiceManager.submitInvoice(params); + }else{ + //优化后的方法 + invoiceOptimizeManager.submitInvoiceForInvoicePlanModule(params); + } return JSONUtil.buildJsonObject(true).toString(); } catch (Exception ex){ ex.printStackTrace(); @@ -4231,7 +4272,20 @@ return ret.toString(); } + /** + * 获取全部申请单类型 + * @param params + * @return + */ + public String getInvoicePlanType(JSONObject params){ + List list = invoicePlanManager.getAllApplyType(false,false); + JSONArray jSONArray = JSONArray.fromObject(list); + JSONObject ret = JSONUtil.buildJsonObject(true, jSONArray); + return ret.toString(); + } + + /** * 获取申请科室列表。 * @param params * @return 返回科室供应室配置中,科室申领配置列表中的科室 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java =================================================================== diff -u -r28144 -r28248 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 28144) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanAction.java (.../InvoicePlanAction.java) (revision 28248) @@ -424,7 +424,7 @@ //申请日期,格式为:yyyy-MM-dd;yyyy-MM-dd String applyDate = StrutsParamUtils.getPraramValue("applyDate", ""); //器械包类型,可多选,以逗号分隔 - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); + String tousseTypes = StrutsParamUtils.getPraramValue("tousseType", ""); //一次性物品类型,可多选,以逗号分隔 String disposableGoodsType = StrutsParamUtils.getPraramValue("disposableGoodsType", ""); //灭菌程序,可多选,以逗号分隔 @@ -442,7 +442,7 @@ //优化后的新方法调用 Collection vos = invoicePlanOptimizeManager - .getDepartInvoicePlan_NEW(departCodes,applyDate ,tousseType,disposableGoodsType, + .getDepartInvoicePlan_NEW(departCodes,applyDate ,tousseTypes,disposableGoodsType, sterilingMethods,tousseGroupIds,appFormType,StrutsParamUtils.getRequest()); long duration = System.currentTimeMillis() - currentTimeMillis; currentTimeMillis = System.currentTimeMillis(); @@ -469,16 +469,18 @@ String appFormType = StrutsParamUtils.getPraramValue("appFormType", ""); String applyDate = StrutsParamUtils.getPraramValue("applyDate", ""); String tousseGroupIds = StrutsParamUtils.getPraramValue("tousseGroupIds", ""); - String tousseType = null; + String tousseTypes = null; try { - tousseType = URLDecoder.decode(StrutsParamUtils.getPraramValue("tousseType", ""),"utf-8"); + tousseTypes = URLDecoder.decode(StrutsParamUtils.getPraramValue("tousseType", ""),"utf-8"); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String disposableGoodsType = null; try { disposableGoodsType = URLDecoder.decode(StrutsParamUtils.getPraramValue("disposableGoodsType", ""),"utf-8"); + //增加申请单类型参数过滤条件 + appFormType = URLDecoder.decode(appFormType,"utf-8"); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -491,7 +493,7 @@ departCodeList = Arrays.asList(departCodes); } JSONArray jsonArray = invoicePlanOptimizeManager - .getInvoicePlansByOrgAndTousseType(departCodeList,applyDate ,tousseType,disposableGoodsType,sterilingMethods,tousseGroupIds,appFormType); + .getInvoicePlansByOrgAndTousseType(departCodeList,applyDate ,tousseTypes,disposableGoodsType,sterilingMethods,tousseGroupIds,appFormType); StrutsResponseUtils.output(jsonArray); } @@ -518,10 +520,13 @@ String tousseGroupIds = StrutsParamUtils.getPraramValue("tousseGroupIds", ""); //申请单类型,目前为单选(后期考虑支持多选,以逗号分隔) String appFormType = StrutsParamUtils.getPraramValue("appFormType", ""); - //物品类型 - String tousseType = null; + //物品类型,多选时以逗号分隔 + String tousseTypes = null; try { - tousseType = URLDecoder.decode(StrutsParamUtils.getPraramValue("tousseType", ""),"utf-8"); + tousseTypes = URLDecoder.decode(StrutsParamUtils.getPraramValue("tousseType", ""),"utf-8"); + if(StringUtils.isNotBlank(appFormType)){ + appFormType = URLDecoder.decode(appFormType,"utf-8"); + } } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -547,17 +552,18 @@ if(StringUtils.isNotBlank(invoicePlanId)){ //改成增加申请单日期与物品类型两个条件 list = invoicePlanOptimizeManager - .getWaitDeliverGoods(Long.parseLong(invoicePlanId), orgUnitCoding , null , applyDate, tousseType,disposableGoodsType, sterilingMethods,tousseGroupIds, appFormType); + .getWaitDeliverGoods(Long.parseLong(invoicePlanId), orgUnitCoding , null , applyDate, tousseTypes,disposableGoodsType, sterilingMethods,tousseGroupIds, appFormType); }else{ list = invoicePlanOptimizeManager - .getWaitDeliverGoods(null , orgUnitCoding, null, applyDate, tousseType,disposableGoodsType, sterilingMethods,tousseGroupIds, appFormType); + .getWaitDeliverGoods(null , orgUnitCoding, null, applyDate, tousseTypes,disposableGoodsType, sterilingMethods,tousseGroupIds, appFormType); } JSONArray jsonArray = null; if(list == null){ jsonArray = new JSONArray(); }else{ jsonArray = JSONArray.fromObject(list); } + logger.debug("loadDepartApplicationAllGoodsByCondition jsonArray=" +jsonArray ); StrutsResponseUtils.output(jsonArray); } @@ -898,38 +904,21 @@ * 获取所有的申请单的类型. */ public void getAllApplyType() { + //是否需要"自定义发货"类型(只有pc端发货管理页面用到) + boolean needCustomDeliveryType = StringTools.equals(StrutsParamUtils.getPraramValue("neddCustomDeliveryType", null), "yes"); + List applyTypeList = invoicePlanManager.getAllApplyType(true, needCustomDeliveryType); List list = new ArrayList(); - - list.add(createApplyTypeJSONObject("全部")); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_COMBO_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_BORROWINGSINGLE)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_SPECIALIZED_INSTRUMENT_APPLICATION_FROM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_APPLYING_FOR_RETURN_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_PROXYDISINFECTION)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_FOREIGNPROXYDISINFECTION)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_CUSTOM_TOUSSE_APPLIACTION_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_TOUSSE_EXPANSION_FORM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_SECOND_SUPPLY_ROOM)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_QUALITY_MONITOR_RECYCLE_APPLICATION)); - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_OPERATION_RESERVATION_APPLICATION)); - if (StringTools.equals(StrutsParamUtils.getPraramValue("neddCustomDeliveryType", ""), "yes")) { - list.add(createApplyTypeJSONObject(Invoice.TYPE_CUSTOM)); + if(CollectionUtils.isNotEmpty(applyTypeList)){ + applyTypeList.stream().forEach(type -> { + list.add(createApplyTypeJSONObject(type)); + }); } - // 启用物品预约功能(ASSDGSZYY-77) - if (ConfigUtils.getSystemSetConfigByNameBool("enableGoodsReservateion", false)) { - list.add(createApplyTypeJSONObject(InvoicePlan.TYPE_GOODS_RESERVATION_FORM)); - } JSONObject result = new JSONObject(); result.put("totalCount", list.size()); result.put("data", list); StrutsResponseUtils.output(result); } - + /** * 创建申请类型的JSONObject * @param applyType @@ -940,7 +929,7 @@ obj.put("applyType", applyType); return obj; } - + /** * 查询高值耗材申请单 */ Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.6.92_20200611_v4_1_6p_release.apk =================================================================== diff -u -r28152 -r28248 Binary files differ Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r27812 -r28248 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 27812) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 28248) @@ -3,6 +3,7 @@ */ package com.forgon.disinfectsystem.recyclingapplication.service; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -421,4 +422,12 @@ * @return key:申请单id value:申请单 */ public Map getIdToInvoicePlanMap(Collection ids); + + /** + * 获取所有的申请单的类型. + * @param needAllOption 是否需要"全部"的选项 + * @param needCustomDeliveryType 是否需要"自定义发货"类型(只有pc端发货管理页面用到) + */ + public List getAllApplyType(boolean needAllOption , boolean needCustomDeliveryType); + } Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.6.92_20200611_v4_1_release.apk =================================================================== diff -u -r28152 -r28248 Binary files differ Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.6.92_20200612_v4_1_release.apk =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/mobileClient/clientForAndroid.json =================================================================== diff -u -r28152 -r28248 --- ssts-web/src/main/webapp/mobileClient/clientForAndroid.json (.../clientForAndroid.json) (revision 28152) +++ ssts-web/src/main/webapp/mobileClient/clientForAndroid.json (.../clientForAndroid.json) (revision 28248) @@ -1,6 +1,6 @@ { "success":"true", "version":"4.6.92", - "urlSuffix":"/mobileClient/SterileSupplySystem_Android_V4.6.92_20200611_v4_1_release.apk", - "urlSuffix-6p":"/mobileClient/SterileSupplySystem_Android_V4.6.92_20200611_v4_1_6p_release.apk", + "urlSuffix":"/mobileClient/SterileSupplySystem_Android_V4.6.92_20200612_v4_1_release.apk", + "urlSuffix-6p":"/mobileClient/SterileSupplySystem_Android_V4.6.92_20200612_v4_1_6p_release.apk", } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp =================================================================== diff -u -r27618 -r28248 --- ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp (.../invoicePlanExtractedView.jsp) (revision 27618) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/invoicePlanExtractedView.jsp (.../invoicePlanExtractedView.jsp) (revision 28248) @@ -139,7 +139,7 @@ } Index: ssts-web/src/main/webapp/mobileClient/SterileSupplySystem_Android_V4.6.92_20200612_v4_1_6p_release.apk =================================================================== diff -u Binary files differ