Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java =================================================================== diff -u -r27056 -r27761 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 27056) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 27761) @@ -8,6 +8,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -323,11 +324,25 @@ //获得rows的json数组 net.sf.json.JSONArray rows = obj.optJSONArray("rows"); String currentOrgunitCode = AcegiHelper.getCurrentOrgUnitCode(); + LinkedHashMap map = new LinkedHashMap(); for (Object object : rows) { JSONObject jsonObj = (JSONObject) object; //获得rows中的diposableGoods json对象 JSONObject diposableGoods = jsonObj.optJSONObject("diposableGoods"); String disposableGoodsId = diposableGoods.getString("disposableGoodsID"); + map.put(disposableGoodsId, jsonObj); + } + // 去除重复数据 + net.sf.json.JSONArray newRows = new net.sf.json.JSONArray(); + for(JSONObject value : map.values()){ + newRows.add(value); + } + obj.put("rows", newRows); + for (Object object : newRows) { + JSONObject jsonObj = (JSONObject) object; + //获得rows中的diposableGoods json对象 + JSONObject diposableGoods = jsonObj.optJSONObject("diposableGoods"); + String disposableGoodsId = diposableGoods.getString("disposableGoodsID"); List DisposableGoodsBatchStocks = diposableGoodsManager.getExpdateDisposableGoodsBatchStocks(Long.valueOf(disposableGoodsId), expdateType); int expDateAmount = 0; for (DisposableGoodsBatchStock disposableGoodsBatchStock : DisposableGoodsBatchStocks) { Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r27678 -r27761 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 27678) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 27761) @@ -3308,4 +3308,40 @@ } return returnObj; } + + @Override + public List getExpdateDisposableGoodsBatchStocksByIdList( + List idList, String expdateType) { + if(CollectionUtils.isEmpty(idList)){ + return null; + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.DAY_OF_YEAR, 30);// 默认告警日期为30天 + String warningDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); + String currentDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + //sql语句 + String sql = String.format(" where po.storage > 0 and %s ",SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.disposableGoodsId", idList)); + switch (expdateType) { + case SystemWarningItemVO.WARNING_TYPE_DIPOSABLEGOODS: + sql += " and po.expDate between " + + dateQueryAdapter.dateAdapter(currentDate) + " and " + + dateQueryAdapter.dateAdapter(warningDate) + + "order by expDate"; + break; + case SystemWarningItemVO.WARNING_TYPE_DISABLED_DIPOSABLEGOODS: + sql += " and po.expDate < " + + dateQueryAdapter.dateAdapter(currentDate) + + "order by expDate"; + break; + default: + sql += " and po.expDate < " + + dateQueryAdapter.dateAdapter(warningDate) + + "order by expDate"; + break; + } + List disposableGoodsBatchStocks = objectDao.findBySql(DisposableGoodsBatchStock.class.getSimpleName(),sql); + + return disposableGoodsBatchStocks; + } } Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java =================================================================== diff -u -r26275 -r27761 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 26275) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 27761) @@ -67,6 +67,8 @@ import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; +import edu.emory.mathcs.backport.java.util.Arrays; + @ParentPackage(value = "default") @Namespace(value = "/disinfectSystem") @Action(value = "diposableGoodsAction") @@ -1520,6 +1522,40 @@ } } + @SuppressWarnings("unchecked") + public void loadExpiredGodownEntryItemJSONByid() { + String expdateType = StrutsParamUtils.getPraramValue("type","");//警告类型 + String disposableGoodsIDs = StrutsParamUtils.getPraramValue("ids", ""); + if (StringUtils.isNotBlank(disposableGoodsIDs)) {// 初始化加载的数据 + String[] idArr = disposableGoodsIDs.split(";"); + List idList = Arrays.asList(idArr); + if(CollectionUtils.isNotEmpty(idList)){ + try { + List DisposableGoodsBatchStocks = diposableGoodsManager.getExpdateDisposableGoodsBatchStocksByIdList(idList, expdateType); + List list = new ArrayList(); + String currentOrgunitCode = AcegiHelper.getCurrentOrgUnitCode(); + for (DisposableGoodsBatchStock disposableGoodsBatchStock : DisposableGoodsBatchStocks) { + //只有同科室下的仓库的库存才能相加 + if(DatabaseUtil.isPoIdValid(disposableGoodsBatchStock.getWarehouseID())){ + WareHouse warehouse = + wareHouseManager.getWareHouseById(disposableGoodsBatchStock.getWarehouseID()); + if(warehouse != null && StringUtils.equals(warehouse.getOrgUnitCode(), currentOrgunitCode)){ + list.add(disposableGoodsBatchStock); + } + } + } + JSONArray jsonArr = JSONUtil.toJSONArray(list); + JSONObject itemsList = new JSONObject(); + itemsList.put("itemsList", jsonArr); + JSONObject jsonObj = JSONUtil.buildJsonObject(true, itemsList); + StrutsResponseUtils.output(jsonObj); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + /** * 根据警告类型和一次性物品id获得已过期的一次性物品信息 */ Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java =================================================================== diff -u -r26620 -r27761 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 26620) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 27761) @@ -336,4 +336,13 @@ * @return */ public JSONObject getDisposableGoodsInfoByAmountAndIdsMap(Map amountAndIdsMap, Long wareHouseId); + + /** + * 根据一次性物品id获取多个物品的批次库存信息 + * @param idList + * @param expdateType + * @return + */ + public List getExpdateDisposableGoodsBatchStocksByIdList( + List idList, String expdateType); } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java =================================================================== diff -u -r27419 -r27761 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 27419) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 27761) @@ -24,6 +24,7 @@ import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.assestmanagement.Contract; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsInstance; @@ -144,11 +145,11 @@ String warningDate = simpleDateFormat.format(calendar.getTime()); // 一级供应室才能看到 if (supplyRoomType == SupplyRoomConfig.SUPPLYROOM_TYPE_FIRST_SUPPLYROOM) { - String sql = " where warehouseID in (select id from "+ WareHouse.class.getSimpleName() +" where orgUnitCode='"+ AcegiHelper.getCurrentOrgUnitCode() +"') " - + " and po.storage > 0 and po.expDate between " + String sql = "where po.id in (select dgb.disposableGoodsId from DisposableGoodsBatchStock dgb where dgb.warehouseID in (select id from "+ WareHouse.class.getSimpleName() +" where orgUnitCode='"+ AcegiHelper.getCurrentOrgUnitCode() +"') " + + " and dgb.storage > 0 and dgb.expDate between " + dateQueryAdapter.dateAdapter(currentDate) + " and " - + dateQueryAdapter.dateAdapter(warningDate); - int goodsAmount = objectDao.countObjectBySql(DisposableGoodsBatchStock.class.getSimpleName(),sql); + + dateQueryAdapter.dateAdapter(warningDate) + ")"; + int goodsAmount = objectDao.countObjectBySql(DisposableGoods.class.getSimpleName(),sql); return goodsAmount; } return 0; @@ -163,9 +164,9 @@ // 只有一级供应室才能看到 if (supplyRoomType == SupplyRoomConfig.SUPPLYROOM_TYPE_FIRST_SUPPLYROOM) { String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); - String sql = " where warehouseID in (select id from "+ WareHouse.class.getSimpleName() +" where orgUnitCode='"+ AcegiHelper.getCurrentOrgUnitCode() +"') " - + " and po.storage > 0 and po.expDate < " + dateQueryAdapter.dateAdapter(date); - int goodsAmount = objectDao.countObjectBySql(DisposableGoodsBatchStock.class.getSimpleName(),sql); + String sql = " where po.id in (select dgb.disposableGoodsId from DisposableGoodsBatchStock dgb where dgb.warehouseID in (select id from "+ WareHouse.class.getSimpleName() +" where orgUnitCode='"+ AcegiHelper.getCurrentOrgUnitCode() +"') " + + " and dgb.storage > 0 and dgb.expDate < " + dateQueryAdapter.dateAdapter(date) + ")";; + int goodsAmount = objectDao.countObjectBySql(DisposableGoods.class.getSimpleName(),sql); return goodsAmount; } return 0;