Index: ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialOutView.js =================================================================== diff -u -r12331 -r12724 --- ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialOutView.js (.../materialOutView.js) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialOutView.js (.../materialOutView.js) (revision 12724) @@ -553,7 +553,7 @@ var columns = [ {header : "单号",width : 200,dataIndex : 'serialNumber', renderer : modifyRecord}, {header : "操作员",width : 200,dataIndex : 'operator'}, - {header : "退库时间",width : 200,dataIndex : 'time' , renderer : myDateFormat}, + {header : "退库时间",width : 200,dataIndex : 'time' , renderer : myDateFormatByMinute}, {id : 'operationRemark',header : "备注",width : 120,dataIndex : 'remark'} ]; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java =================================================================== diff -u -r12713 -r12724 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java (.../MaterialDefinitionManagerImpl.java) (revision 12713) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/materialdefinition/service/MaterialDefinitionManagerImpl.java (.../MaterialDefinitionManagerImpl.java) (revision 12724) @@ -214,15 +214,15 @@ List materialDefinitions = objectDao.findBySql( MaterialDefinition.class.getSimpleName(), sql); - for (MaterialDefinition materialDefinition : materialDefinitions) { + for (MaterialDefinition md : materialDefinitions) { Map temp = new HashMap(); - temp.put("id", materialDefinition.getId()); - String materialName = CssdUtils.getMaterialName(materialDefinition); + temp.put("id", md.getId()); + String materialName = CssdUtils.getMaterialName(md); temp.put("name", materialName); temp.put("type", "器械"); - temp.put("spelling", materialDefinition.getSpelling()); - temp.put("cost", materialDefinition.getCost()); - temp.put("storage", materialDefinition.getStorage()); + temp.put("spelling", md.getSpelling()); + temp.put("cost", md.getCost()); + temp.put("storage", md.getStorage()); mapList.add(temp); } } else {// 一次性材料 Index: ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/action/StockTakeInfoAction.java =================================================================== diff -u -r12720 -r12724 --- ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/action/StockTakeInfoAction.java (.../StockTakeInfoAction.java) (revision 12720) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/action/StockTakeInfoAction.java (.../StockTakeInfoAction.java) (revision 12724) @@ -58,15 +58,17 @@ JSONObject formParamsObj = JSONObject.fromObject(formParams); Long id = JSONUtil.optLong(formParamsObj, "id", null); String remark = formParamsObj.optString("remark"); - String timeStr = formParamsObj.optString("stockTakeDateStr"); + String timeStr = formParamsObj.optString("stockTakeDate"); + if(StringUtils.isNotBlank(timeStr)){ + timeStr = timeStr.replace("T", " "); + } stockTakeInfo.setId(id); stockTakeInfo.setRemark(remark); Date stockTakeDate; try { stockTakeDate = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM.parse(timeStr); } catch (ParseException e) { e.printStackTrace(); -// throw new RuntimeException("日期格式错误!"); stockTakeDate = new Date(); } stockTakeInfo.setStockTakeDate(stockTakeDate); Index: ssts-web/src/main/webapp/disinfectsystem/stocktakeinfomanager/stockTakeInfoView.js =================================================================== diff -u -r12719 -r12724 --- ssts-web/src/main/webapp/disinfectsystem/stocktakeinfomanager/stockTakeInfoView.js (.../stockTakeInfoView.js) (revision 12719) +++ ssts-web/src/main/webapp/disinfectsystem/stocktakeinfomanager/stockTakeInfoView.js (.../stockTakeInfoView.js) (revision 12724) @@ -307,8 +307,8 @@ listeners : { load : function(store,records) { if(records.length > 0 && id == "") { - if (top.Ext.getCmp('wareHouse')) { - top.Ext.getCmp('wareHouse').setValue(records[0].data.id); + if (top.Ext.getCmp('wareHouseName')) { + top.Ext.getCmp('wareHouseName').setValue(records[0].data.id); } } } @@ -359,10 +359,6 @@ name : 'wareHouseId', id : 'wareHouseId' },{ - xtype : 'hidden', - name : 'wareHouseName', - id : 'wareHouseName' - },{ columnWidth : .3, layout : 'form', labelWidth : 50, @@ -385,8 +381,8 @@ items : [{ xtype : 'datefieldWithMin', fieldLabel : '盘点时间', - id : 'stockTakeDateStr', - name : 'stockTakeDateStr', + id : 'stockTakeDate', + name : 'stockTakeDate', format : 'Y-m-d H:i', allowBlank : false, value : new Date(), @@ -399,8 +395,8 @@ items : [{ xtype : 'combo', fieldLabel : '仓库', - id : 'wareHouse', - name : 'wareHouse', + id : 'wareHouseName', + name : 'wareHouseName', editable:false, valueField : 'id', displayField : 'name', @@ -498,15 +494,12 @@ top.Ext.getCmp('updateStockBt').disable(); top.Ext.getCmp('saveBt').disable(); } - top.Ext.getCmp('stockTakeDateStr').setValue(Ext.util.Format.date(new Date(action.result.data.stockTakeDate.time), 'Y-m-d H:i')); -// var materialDataArr = eval("("+action.result.materialData+")"); -// top.Ext.getCmp('stockTakeItemGrid').getStore().loadData(action.result.materialData); + top.Ext.getCmp('stockTakeDate').setValue(Ext.util.Format.date(new Date(action.result.data.stockTakeDate.time), 'Y-m-d H:i')); top.Ext.getCmp('stockTakeItemGrid').getStore().loadData(action.result.data.stockTakeItems); // 保存原始数据,只需要保存需要修改的属性 - setOriginalFormParams(form,['id','remark','type','stockTakeDateStr']); + setOriginalFormParams(form,['id','remark','type','stockTakeDate']); var originalItems = buildJSONStringFromStore(top.Ext.getCmp('stockTakeItemGrid').getStore()); - //alert(originalItems); top.Ext.getCmp("originalItems").setValue(originalItems); }, failure : function(form, action) { @@ -525,26 +518,16 @@ btThis.enable(); return false; } - setFormParams(form,['id','remark','type','stockTakeDateStr']); + setFormParams(form,['id','remark','type','stockTakeDate']); var items = buildJSONStringFromStore(top.Ext.getCmp('stockTakeItemGrid').getStore()); top.Ext.getCmp("items").setValue(items); - top.Ext.getCmp("wareHouseId").setValue(top.Ext.getCmp("wareHouse").getValue()); - top.Ext.getCmp("wareHouseName").setValue(top.Ext.getCmp("wareHouse").getRawValue()); + top.Ext.getCmp("wareHouseId").setValue(top.Ext.getCmp("wareHouseName").getValue()); - // items为json数组字符串,不会为null if(items == '[]'){ showResult('盘点明细列表不能为空'); return false; } -// var items = getMaterialItems(); -//// alert(items); -// if(items==''){ -// showResult('盘点明细列表不能为空'); -// btThis.enable(); -// return false; -// } -// top.Ext.getCmp("items").setValue(items); var msg = isUpdateStock ? ('是否更新'+type+'库存') : ('是否提交'+type+'盘点信息'); top.Ext.MessageBox.confirm("请确认", msg, function(btn){ @@ -827,7 +810,7 @@ pageSize : 20, defaultSortField : 'id', title : entityName + '列表', - defaultSortDirection : 'ASC', + defaultSortDirection : 'DESC', isCheckboxSelectionModel : true, rememberSelected : false, isShowSearchField : true, Index: ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js =================================================================== diff -u -r12713 -r12724 --- ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js (.../materialEntryView.js) (revision 12713) +++ ssts-web/src/main/webapp/disinfectsystem/materialmanager/materialEntryView.js (.../materialEntryView.js) (revision 12724) @@ -698,7 +698,7 @@ pageSize : 20, defaultSortField : 'id', title : '材料入库单列表', - defaultSortDirection : 'ASC', + defaultSortDirection : 'DESC', isCheckboxSelectionModel : true, rememberSelected : false, isShowSearchField : true, Index: ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/service/StockTakeInfoManagerImpl.java =================================================================== diff -u -r12713 -r12724 --- ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/service/StockTakeInfoManagerImpl.java (.../StockTakeInfoManagerImpl.java) (revision 12713) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/stocktakemanager/service/StockTakeInfoManagerImpl.java (.../StockTakeInfoManagerImpl.java) (revision 12724) @@ -16,15 +16,18 @@ import org.apache.commons.lang.StringUtils; +import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.diposablegoods.util.DiposableGoodsUtils; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.assestmanagement.IdentificationOfDiposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntry; import com.forgon.disinfectsystem.entity.stocktakemanager.StockTakeInfo; import com.forgon.disinfectsystem.entity.stocktakemanager.StockTakeItem; +import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.materialmanager.service.MaterialEntryManager; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; @@ -48,6 +51,19 @@ private SerialNumManager serialNumManager; + private GoodsStockManager goodsStockManager; + + private MaterialDefinitionManager materialDefinitionManager; + + public void setMaterialDefinitionManager( + MaterialDefinitionManager materialDefinitionManager) { + this.materialDefinitionManager = materialDefinitionManager; + } + + public void setGoodsStockManager(GoodsStockManager goodsStockManager) { + this.goodsStockManager = goodsStockManager; + } + public void setSerialNumManager(SerialNumManager serialNumManager) { this.serialNumManager = serialNumManager; } @@ -360,9 +376,9 @@ } // 获取并锁定材料相关资源 - private void lockAndGetMaterialDefinitionResources( + private void lockAndGetMaterialStockResources( Set materialDefinitionIDsSet, - Map idToMaterialDefinitionMap) { + Map idToMaterialDefinitionMap,Long wareHouseId) { // 锁定材料 String materialDefinitionIDsStr = SqlUtils .joinToWhereInConditionForNonStringProperties(materialDefinitionIDsSet); @@ -378,9 +394,16 @@ .size()) { throw new RuntimeException("某些材料已被删除!"); } - for (MaterialDefinition materialDefinition : materialDefinitions) { - idToMaterialDefinitionMap.put(materialDefinition.getId(), - materialDefinition); + for (MaterialDefinition md : materialDefinitions) { + GoodsStock materialStock = new GoodsStock(); + materialStock.setWareHouseId(wareHouseId); + materialStock.setMaterialDefinitionId(md.getId()); + List stockList = goodsStockManager.getGoodsStockList(materialStock); + GoodsStock defaultStock = null; + if(stockList != null && stockList.size() > 0){ + defaultStock = stockList.get(0); + } + idToMaterialDefinitionMap.put(md.getId(),defaultStock); } } } @@ -523,25 +546,24 @@ StockTakeInfo stockTakeInfo, boolean isUpdateStock, Map result) { Set materialDefinitionIDsSet = new HashSet();// 材料定义id集合 - Map idToMaterialDefinitionMap = new HashMap(); + Map idToMaterialStockMap = new HashMap(); // 汇总信息 summaryMaterialDefinitionInfo(stockTakeInfo, materialDefinitionIDsSet); // 锁定并获取材料 if (materialDefinitionIDsSet.size() == 0) { throw new RuntimeException("材料已被删除!"); } - lockAndGetMaterialDefinitionResources(materialDefinitionIDsSet, - idToMaterialDefinitionMap); + lockAndGetMaterialStockResources(materialDefinitionIDsSet, + idToMaterialStockMap,stockTakeInfo.getWareHouseId()); - saveMaterialDefinitionStockTakeInfo(stockTakeInfo, isUpdateStock, - idToMaterialDefinitionMap); + saveMaterialDefinitionStockTakeInfo(stockTakeInfo, isUpdateStock, idToMaterialStockMap); } private void updateMaterialDefinitionStockTakeInfo_internal( StockTakeInfo original, StockTakeInfo stockTakeInfo, boolean isUpdateStock, Map result) { Set materialDefinitionIDsSet = new HashSet();// 材料定义id集合 - Map idToMaterialDefinitionMap = new HashMap(); + Map idToMaterialStockMap = new HashMap(); // 锁定并获取盘点信息 StockTakeInfo curStockTakeInfo = getStockTakeInfoById_ForUpdate(original @@ -568,17 +590,17 @@ if (materialDefinitionIDsSet.size() == 0) { throw new RuntimeException("材料已被删除!"); } - lockAndGetMaterialDefinitionResources(materialDefinitionIDsSet, - idToMaterialDefinitionMap); + lockAndGetMaterialStockResources(materialDefinitionIDsSet, + idToMaterialStockMap,stockTakeInfo.getWareHouseId()); curStockTakeInfo.setStockTakeItems(stockTakeInfo.getStockTakeItems()); saveMaterialDefinitionStockTakeInfo(curStockTakeInfo, isUpdateStock, - idToMaterialDefinitionMap); + idToMaterialStockMap); } private void saveMaterialDefinitionStockTakeInfo( StockTakeInfo stockTakeInfo, boolean isUpdateStock, - Map idToMaterialDefinitionMap) { + Map idToMaterialStockMap) { if(stockTakeInfo.getWareHouseId() == null){ throw new RuntimeException("未选择仓库,不能保存!"); } @@ -591,25 +613,28 @@ if (materialID == null) { throw new RuntimeException("材料ID为空!"); } - MaterialDefinition materialDefinition = idToMaterialDefinitionMap + GoodsStock materialStock = idToMaterialStockMap .get(materialID); - if (materialDefinition == null) { - throw new RuntimeException("材料已被删除!"); + if (materialStock == null) { + materialStock = new GoodsStock(); + materialStock.setAmount(0); } long actualCountedQuantity = stockTakeItem .getActualCountedQuantity(); // 差值 = 实际盘点的数量 - 库存的数量(按批次) long storageDifference = actualCountedQuantity - - materialDefinition.getStorage(); + - materialStock.getAmount(); stockTakeItem.setStorageDifference(storageDifference);// 差值 - stockTakeItem.setMaterialDefinition(materialDefinition); + stockTakeItem.setMaterialDefinition(materialDefinitionManager + .getMaterialDefinitionById("" + materialID)); if (stockTakeItem.getStockTakeInfoID() == null) {// 关联stockTakeInfoID stockTakeItem.setStockTakeInfoID(stockTakeInfo.getId()); } objectDao.saveOrUpdate(stockTakeItem); } //创建材料入库单、退库单 if(isUpdateStock){ + stockTakeInfo.setStatus(StockTakeInfo.STATUS_HAS_BEEN_UPDATED); JSONArray in_array = new JSONArray(); JSONArray out_array = new JSONArray(); for (StockTakeItem si : items){