Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java =================================================================== diff -u -r36735 -r37403 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java (.../SubmitInvoiceContext.java) (revision 36735) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/invoice/service/SubmitInvoiceContext.java (.../SubmitInvoiceContext.java) (revision 37403) @@ -78,6 +78,11 @@ private String sourceWarehouseName = ""; /** + * 供应室编码,一级供应室还是二级供应室的code + */ + private String orgUnitCoding; + + /** * 发货源仓库对象 */ private WareHouse sourceWarehouse; @@ -732,4 +737,12 @@ this.storageLocationAddr = storageLocationAddr; } + public String getOrgUnitCoding() { + return orgUnitCoding; + } + + public void setOrgUnitCoding(String orgUnitCoding) { + this.orgUnitCoding = orgUnitCoding; + } + } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java =================================================================== diff -u -r37391 -r37403 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 37391) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerImpl.java (.../InvoiceManagerImpl.java) (revision 37403) @@ -3190,6 +3190,7 @@ String mode = JSONUtil.optString(params, "mode", ""); String departCode = JSONUtil.optString(params, "departCode", ""); String depart = JSONUtil.optString(params, "depart", ""); + String orgUnitCoding = JSONUtil.optString(params, "orgUnitCoding", ""); if(Invoice.TYPE_APPLICATION.equals(invoiceType)){ if(Invoice.INVOICE_MODE_DEPART.equals(mode)){ if (StringUtils.isBlank(departCode)) { @@ -3200,6 +3201,7 @@ submitInvoiceContext.setInvoiceMode(mode); submitInvoiceContext.setDepartCode(departCode); submitInvoiceContext.setDepart(depart); + submitInvoiceContext.setOrgUnitCoding(orgUnitCoding); submitInvoiceContext.setAssistantSender(assistantSender); submitInvoiceContext.setSender(sender); submitInvoiceContext.setSourceWarehouseId(sourceWarehouseId); @@ -7078,8 +7080,11 @@ .getSerialNumberStr(SerialNum.TYPE_INVOICE)); invoice.setStatus(Invoice.STATUS_DELIVERED); - invoice.setOrgUnitCoding(AcegiHelper.getLoginUser() - .getCurrentOrgUnitCode()); + invoice.setOrgUnitCoding(submitInvoiceContext.getOrgUnitCoding()); + if(StringUtils.isBlank(invoice.getOrgUnitCoding())){ + invoice.setOrgUnitCoding(AcegiHelper.getLoginUser() + .getCurrentOrgUnitCode()); + } // 发货物品总价 { BigDecimal totalPrice = new BigDecimal(0.00); @@ -15214,7 +15219,6 @@ } Map> wareHouseTousseInstanceMap = new HashMap>(); - Map wareHouseMap = new HashMap(); for (TousseInstance tousseInstance : tousseInstances) { if(!tousseInstance.isSteriled() && !tousseInstance.isDisinfected()){ @@ -15240,29 +15244,32 @@ } list.add(tousseInstance); wareHouseTousseInstanceMap.put(wareHouseId, list); - wareHouseMap.put(wareHouseId, tousseInstance.getWareHouseName()); } } if(MapUtils.isEmpty(wareHouseTousseInstanceMap)){ return; } - + Map idWareHouseMap = loadWareHouseMapById(wareHouseTousseInstanceMap.keySet()); String invoiceRemark = "通过卡迪斯货柜取出触发自动发货"; for (Entry> entry : wareHouseTousseInstanceMap.entrySet()) { Long wareHouseId = entry.getKey(); List list = wareHouseTousseInstanceMap.get(wareHouseId); + + WareHouse wareHouse = idWareHouseMap.get(wareHouseId); + JSONObject params = new JSONObject(); params.put("assistantSender", AcegiHelper.getLoginUserFullName()); params.put("depart", storageLocation.getOrgUnitName()); params.put("departCode", storageLocation.getOrgUnitCode()); + params.put("orgUnitCoding", wareHouse.getOrgUnitCode()); params.put("invoiceType", Invoice.TYPE_CUSTOM); params.put("mode", "depart"); params.put("sender", AcegiHelper.getLoginUserFullName()); //供应室 params.put("sourceWarehouseId", wareHouseId); - params.put("sourceWarehouseName", wareHouseMap.get(wareHouseId)); + params.put("sourceWarehouseName", wareHouse.getName()); params.put("invoiceRemark", invoiceRemark); JSONArray invoiceItems = new JSONArray(); @@ -15299,5 +15306,22 @@ this.submitInvoice(params); } } + + @SuppressWarnings("unchecked") + private Map loadWareHouseMapById(Collection wareHouseIds) { + Map wareHouseMap = new HashMap(); + if(CollectionUtils.isEmpty(wareHouseIds)){ + return wareHouseMap; + } + String hql = String.format("select po from %s po where %s ", WareHouse.class.getSimpleName(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", wareHouseIds)); + List wareHouseList = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(wareHouseList)){ + return wareHouseMap; + } + for (WareHouse wareHouse : wareHouseList) { + wareHouseMap.put(wareHouse.getId(), wareHouse); + } + return wareHouseMap; + } } \ No newline at end of file