Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java =================================================================== diff -u -r27812 -r27815 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 27812) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 27815) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.recyclingapplication.service; +import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -804,6 +805,51 @@ } @Override + protected void addApplicationGoodsVoStatus( + Collection list) { + if(CollectionUtils.isNotEmpty(list)){ + List tousseNameList = list.stream().filter(vo -> { + return !StringUtils.equals(DisposableGoods.TYPE_NAME, vo.getGoodsType()); + }).map(ApplicationGoodsVo::getName).collect(Collectors.toList()); + //包名称对应已灭菌库存数量map + Map tousseNameToSteriledAmountMap = new HashMap(); + if(CollectionUtils.isNotEmpty(tousseNameList)){ + ResultSet rs = null; + String querySql = String.format("select ti.tousseName,count(0) cnt from %s ti " + + "where ti.orgUnitCoding='%s' and %s " + + "and ti.status='%s' " + + "group by ti.tousseName having count(0) > 0", + TousseInstance.class.getSimpleName(),AcegiHelper.getCurrentOrgUnitCode(), + SqlUtils.getStringFieldInLargeCollectionsPredicate("ti.tousseName", tousseNameList), + TousseInstance.STATUS_STERILED + ); + try { + rs = objectDao.executeSql(querySql); + while(rs.next()){ + tousseNameToSteriledAmountMap.put(rs.getString("tousseName"), + ((Number)rs.getInt("cnt")).intValue()); + } + } catch (Exception e) { + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + for (ApplicationGoodsVo vo : list) { + if(StringUtils.equals(vo.getGoodsType(), DisposableGoods.TYPE_NAME)){ + vo.setStatus(ApplicationGoodsVo.STATUS_STERILED); + }else{ + if(tousseNameToSteriledAmountMap.containsKey(vo.getName())){ + vo.setStatus(ApplicationGoodsVo.STATUS_STERILED); + }else{ + vo.setStatus(ApplicationGoodsVo.STATUS_UNSTERILED); + } + } + } + } + } + + @Override public Collection getWaitDeliverGoods( Long invoicePlanId, String orgUnitCoding, Long warehouseId, String applyDate, String tousseType, String disposableGoodsType, Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java =================================================================== diff -u -r27812 -r27815 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 27812) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceOptimizeManagerImpl.java (.../InvoiceOptimizeManagerImpl.java) (revision 27815) @@ -2,7 +2,6 @@ import java.sql.PreparedStatement; import java.sql.SQLException; -import java.sql.SQLType; import java.sql.Timestamp; import java.sql.Types; import java.util.ArrayList; @@ -17,7 +16,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -29,7 +27,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.jdbc.core.BatchPreparedStatementSetter; -import org.springframework.jdbc.core.SqlTypeValue; import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; @@ -2359,7 +2356,8 @@ Arrays.asList(new String[]{ InvoicePlan.TYPE_COMBO_FORM, InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, - InvoicePlan.TYPE_BORROWINGSINGLE + InvoicePlan.TYPE_BORROWINGSINGLE, + InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION }); //对器械包按是否回收进行分组(先不按是否回收来分组了,统一查询),申请单查询条件也暂时不按回收状态过滤了 @@ -2606,7 +2604,8 @@ InvoicePlan.TYPE_COMBO_FORM, InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM, - InvoicePlan.TYPE_BORROWINGSINGLE + InvoicePlan.TYPE_BORROWINGSINGLE, + InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION }); /* * 根据消毒物品包实例查出祖先包定义 @@ -2855,7 +2854,8 @@ Arrays.asList(new String[]{ InvoicePlan.TYPE_COMBO_FORM, InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, - InvoicePlan.TYPE_BORROWINGSINGLE + InvoicePlan.TYPE_BORROWINGSINGLE, + InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION }); String invoicePlanCondition = buildInvoicePlanCondition(invoicePlanId, departCoding, invoiceGroupByConfig, invoicePlanTypeList, invoiceOrigin, @@ -3138,7 +3138,8 @@ InvoicePlan.TYPE_COMBO_FORM, InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM, - InvoicePlan.TYPE_BORROWINGSINGLE + InvoicePlan.TYPE_BORROWINGSINGLE, + InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION }); /* @@ -5051,6 +5052,8 @@ Map invoicePlanToInvoiceMap, OrgUnit orgUnit,WareHouse targetWarehouse,JSONObject params,Date currentDateTime){ List> tousseInstanceUpdateMapList = new ArrayList>(); + //包实例对应的申请项map + Map tousseInstanceToTousseItemMap = new HashMap(); for (Entry>> entry : tousseItemToTdIdToTiListMapMap.entrySet()) { TousseItem tousseItem = entry.getKey(); InvoicePlan invoicePlan = tousseItem.getInvoicePlan(); @@ -5080,18 +5083,43 @@ tousseInstanceUpdateMap.put("id", tousseInstance.getId()); tousseInstanceUpdateMap.put("status", statusAfterInvoice); tousseInstanceUpdateMapList.add(tousseInstanceUpdateMap); + //包实例对应的申请项 + TousseItem tousseItemOfTousseInstanceMapping = tousseInstanceToTousseItemMap.get(tousseInstance); + if(tousseItemOfTousseInstanceMapping != null){ + InvoicePlan invoicePlanOfTousseInstanceMapping = tousseItemOfTousseInstanceMapping.getInvoicePlan(); + if(invoicePlanOfTousseInstanceMapping != null){ + tousseInstanceUpdateMap.put("settleAccountsDepart", invoicePlanOfTousseInstanceMapping.getSettleAccountsDepart()); + tousseInstanceUpdateMap.put("settleAccountsDepartCoding", invoicePlanOfTousseInstanceMapping.getSettleAccountsDepartCoding()); + } + } + tousseInstanceToTousseItemMap.put(tousseInstance, tousseItem); } } } if(CollectionUtils.isNotEmpty(tousseInstanceUpdateMapList)){ + String sender = params.optString("sender"); + //(如果invoice_id不为null,表示二次发货,一次发货的几个字段不设值,二次发货的不设值) String updateTousseInstanceBatchSql = String.format( "update %s set location='%s',locationForDisplay='%s'," - + "wareHouseId=%s,wareHouseName='%s',invoice_id=?,invoiceSender='%s'," - + "invoiceSendTime=%s,invoiceserialNumber=?,status=? where id=?", + + "wareHouseId=%s,wareHouseName='%s'," + + "invoice_id=(case when invoice_id is null then ? else invoice_id end)," + + "invoiceSender=(case when invoice_id is null then '%s' else invoiceSender end)," + + "invoiceSendTime=(case when invoice_id is null then %s else invoiceSendTime end)," + + "invoiceserialNumber=?,status=?," + + "settleAccountsDepart=(case when invoice_id is null then ? else settleAccountsDepart end)," + + "settleAccountsDepartCode=(case when invoice_id is null then ? else settleAccountsDepartCode end)," + + "invoice2_id=(case when invoice_id is null then null else ? end)," + + "settleAccountsDepart2=(case when invoice_id is null then null else ? end), " + + "settleAccountsDepartCode2=(case when invoice_id is null then null else ? end)," + + "invoiceSender2=(case when invoice_id is null then null else '%s' end)," + + "invoiceSendTime2=(case when invoice_id is null then null else %s end)" + + "where id=?", TousseInstance.class.getSimpleName(), orgUnit.getOrgUnitCoding(),orgUnit.getName(), - targetWarehouse.getId(),targetWarehouse.getName(),params.optString("sender"), - dateQueryAdapter.dateAdapter(currentDateTime)); + targetWarehouse.getId(),targetWarehouse.getName(),sender, + dateQueryAdapter.dateAdapter(currentDateTime), + + sender,dateQueryAdapter.dateAdapter(currentDateTime)); jdbcTemplate.batchUpdate(updateTousseInstanceBatchSql, new BatchPreparedStatementSetter() { @Override @@ -5102,7 +5130,13 @@ ps.setLong(1, invoice_id); ps.setString(2, (String)tousseInstanceUpdateMap.get("invoiceserialNumber")); ps.setString(3, (String)tousseInstanceUpdateMap.get("status")); - ps.setLong(4, id); + ps.setString(4, (String)tousseInstanceUpdateMap.get("settleAccountsDepart")); + ps.setString(5, (String)tousseInstanceUpdateMap.get("settleAccountsDepartCoding")); + + ps.setLong(6, invoice_id); + ps.setString(7, (String)tousseInstanceUpdateMap.get("settleAccountsDepart")); + ps.setString(8, (String)tousseInstanceUpdateMap.get("settleAccountsDepartCoding")); + ps.setLong(9, id); } @Override