Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java
===================================================================
diff -u -r20280 -r26757
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java (.../WareHouseManager.java) (revision 20280)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java (.../WareHouseManager.java) (revision 26757)
@@ -128,4 +128,10 @@
* @return
*/
public JSONArray searchWareHouseOrOperationRoom(String spell);
+ /**
+ * 验证仓库是否是一级供应室的仓库
+ * @param id 仓库id
+ * @return
+ */
+ public boolean checkIsOneCSSDWareHouse(Long id);
}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/action/WareHouseAction.java
===================================================================
diff -u -r26724 -r26757
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/action/WareHouseAction.java (.../WareHouseAction.java) (revision 26724)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/action/WareHouseAction.java (.../WareHouseAction.java) (revision 26757)
@@ -30,6 +30,7 @@
import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse;
import com.forgon.tools.StrutsParamUtils;
import com.forgon.tools.json.JsonPropertyFilter;
+import com.forgon.tools.StrutsResponseUtils;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
@@ -303,6 +304,20 @@
public WareHouse getModel() {
return wareHouse;
}
-
-
+ /**
+ * 获取指定科室的所有仓库
+ */
+ public void getWareHouseByDepartCoding(){
+ JSONObject json = new JSONObject();
+ try {
+ String departCoding = StrutsParamUtils.getPraramValue("departCoding", null);
+ if(StringUtils.isNotBlank(departCoding)){
+ json = wareHouseManager.getAllWareHouse(departCoding);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ json.put("success", false);
+ }
+ StrutsResponseUtils.output(json);
+ }
}
Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java
===================================================================
diff -u -r26602 -r26757
--- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 26602)
+++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 26757)
@@ -39,6 +39,7 @@
import com.forgon.disinfectsystem.basedatamanager.sterilisation.service.SterilisationManager;
import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager;
import com.forgon.disinfectsystem.basedatamanager.urgent.vo.UrgentLevelVo;
+import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager;
import com.forgon.disinfectsystem.common.CssdUtils;
import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods;
@@ -139,6 +140,11 @@
private IDCardDefinitionManager idCardDefinitionManager;
+ private WareHouseManager wareHouseManager;
+
+ public void setWareHouseManager(WareHouseManager wareHouseManager) {
+ this.wareHouseManager = wareHouseManager;
+ }
public void setIdCardDefinitionManager(
IDCardDefinitionManager idCardDefinitionManager) {
this.idCardDefinitionManager = idCardDefinitionManager;
@@ -1631,4 +1637,94 @@
}
StrutsResponseUtils.output(obj);
}
+ /**
+ * 获取科室库存盘点信息
+ */
+ public void getDepartInventoryInfo(){
+ Long id = StrutsParamUtils.getPraramLongValue("id", null);
+ JSONArray arr = null;
+ if(id != null){
+ arr = tousseInstanceManager.getInventoryOfBaseAmoutById(id);
+ }else{
+ String departCoding = StrutsParamUtils.getPraramValue("departCoding", null);
+ String tousseNames = StrutsParamUtils.getPraramValue("tousseNames", null);
+ String wareHouseId = StrutsParamUtils.getPraramValue("wareHouseId",null);
+ arr = tousseInstanceManager.getDepartInventoryInfo(departCoding, wareHouseId, tousseNames);
+ }
+ StrutsResponseUtils.output(arr);
+ }
+ /**
+ * 通过包条码获取包实例,供部门库存盘点使用
+ */
+ public void getTousseInstanceByBarcodeForDepartInventory(){
+ String barcode = StrutsParamUtils.getPraramValue("barcode", null);
+ String departCoding = StrutsParamUtils.getPraramValue("departCoding", null);
+ Long wareHouseId = StrutsParamUtils.getPraramLongValue("wareHouseId", null);
+ JSONObject obj = new JSONObject();
+ try {
+ TousseInstance ti = tousseInstanceManager.getTousseInstanceByBarcode(barcode);
+ if(ti == null){
+ throw new RuntimeException("查无此包!");
+ }
+ TousseDefinition td = ti.getTousseDefinition();
+ if(td == null){
+ throw new RuntimeException("找不到条码对应的包定义!");
+ }
+ //仓库为空,或仓库属于供应室仓库
+ if(wareHouseId == null || (ti.getWareHouseId() != null && !wareHouseId.equals(ti.getWareHouseId()) && !wareHouseManager.checkIsOneCSSDWareHouse(ti.getWareHouseId()))){
+ throw new RuntimeException(String.format("[%s]仓库位置不匹配且不为一级供应室仓库!仓库为%s", ti.getTousseName(), ti.getWareHouseName()));
+ }
+ if(!departCoding.equals(ti.getDepartCoding())){
+ throw new RuntimeException(String.format("[%s]申请科室不一致!申请科室为%s", ti.getTousseName(), ti.getDepart()));
+ }
+ if(ti.getTousseFixedBarcode()){
+ throw new RuntimeException(String.format("[%s]有固定条码!", ti.getTousseName()));
+ }
+ if(ti.getComboTousseInstanceId() != null){
+ throw new RuntimeException("不支持聚合包");
+ }
+ if(!TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType()) &&
+ !TousseDefinition.PACKAGE_TYPE_INSIDE.equals(td.getTousseType())){
+ throw new RuntimeException(String.format("%s的包类型为%s,只支持%和%s",
+ td.getName(),td.getTousseType(),TousseDefinition.PACKAGE_TYPE_DISINFECTION,
+ TousseDefinition.PACKAGE_TYPE_INSIDE));
+ }
+ JSONObject tousseInstanceJSON = new JSONObject();
+ tousseInstanceJSON.put("id",ti.getId());
+ tousseInstanceJSON.put("barcode",ti.getBarcode());
+ tousseInstanceJSON.put("tousseName",td.getName());
+ obj.put("success", true);
+ obj.put("tousseInstance", tousseInstanceJSON);
+ } catch (Exception e) {
+ e.printStackTrace();
+ obj.put("success", false);
+ obj.put("msg", e.getMessage());
+ }
+ StrutsResponseUtils.output(obj);
+ }
+ /**
+ * 部门库存盘点时,获取差异数量的包实例信息或打开盘点记录盘点项
+ * scanTousseInstanceIds 已扫描的包ids
+ * diffAmount 误差数量
+ * wareHouseId 仓库id
+ */
+ public void getDifftousseInstanceInfo(){
+ Long id = StrutsParamUtils.getPraramLongValue("id", null);
+ JSONArray arr = null;
+ if(id != null){//获取盘点记录盘点项信息
+ arr = tousseInstanceManager.getDifftousseInstanceInfo(id,null, null, null, null, null);
+ }else{//基数盘点获取盘点项信息
+ String departCoding = StrutsParamUtils.getPraramValue("departCoding", null);
+ Long wareHouseId = StrutsParamUtils.getPraramLongValue("wareHouseId", null);
+ String tousseName = StrutsParamUtils.getPraramValue("tousseName", null);
+ String[] scanTousseInstanceIds = StrutsParamUtils.getPrarmArrValue("scanTousseInstanceIds");
+ String idStr = StrutsParamUtils.getPraramValue("ids", null);
+ String[] ids = null;
+ if(StringUtils.isNotBlank(idStr)){
+ ids = idStr.split(",");
+ }
+ arr = tousseInstanceManager.getDifftousseInstanceInfo(null,departCoding, tousseName, wareHouseId, scanTousseInstanceIds, ids);
+ }
+ StrutsResponseUtils.output(arr);
+ }
}
\ No newline at end of file
Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp
===================================================================
diff -u -r26717 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp (.../departmentStockInputView.jsp) (revision 26717)
+++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.jsp (.../departmentStockInputView.jsp) (revision 26757)
@@ -72,6 +72,8 @@
+
+
Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/baseCountInventory.js
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/departmentStock/baseCountInventory.js (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/baseCountInventory.js (revision 26757)
@@ -0,0 +1,320 @@
+var itemsOfBaseNum;
+var sanBarcode=[];//扫描的包条码
+var departCoding = null;
+var departName = null;
+var wareHouseId = null;
+var baseCountInventoryWin;
+/**
+ * 打开盘点项目信息,id为null则是基数盘点,不为null则为历史盘点记录查看盘点项
+ */
+function goBaseCountInventory(id,departCoding,departName,wareHouseId,wareHouseName,tousseNames) {
+ var idIsNotNull = false;
+ if(id != null){
+ idIsNotNull = true;
+ }
+ sanBarcode = [];
+ this.departCoding = departCoding;
+ this.wareHouseId = wareHouseId;
+ this.wareHouseName = wareHouseName;
+ this.departName = departName;
+ var tbar;
+ var saveBtn = {
+ text : '保存',
+ hidden : idIsNotNull,
+ handler : save
+ };
+ var cancelBtn = {
+ text : '取消',
+ handler : function() {
+ baseCountInventoryWin.close();
+ }
+ };
+ tbar = [saveBtn, cancelBtn];
+ var rd = new Ext.data.JsonReader( {
+ fields : [
+ {name : 'id'},
+ {name : 'tousseName'},
+ {name : 'amount'},
+ {name : 'ids'},
+ {name : 'scanIds'},
+ {name : 'scanAmount'},
+ {name : 'diffAmount'}
+ ]
+ });
+ /*var sm = new top.Ext.grid.CheckboxSelectionModel({
+ singleSelect : false
+ });*/
+ itemsOfBaseNum = new Ext.data.Store({
+ proxy : new Ext.data.HttpProxy({
+ url : WWWROOT + '/disinfectSystem/tousseInstanceAction!getDepartInventoryInfo.do',
+ method : 'POST'
+ }),
+ reader : rd
+ , sortInfo: {
+ field: 'diffAmount',
+ direction: 'DESC' // 'ASC'or 'DESC'
+ }
+ });
+ itemsOfBaseNum.on("beforeload", function(thiz, options) {
+ thiz.baseParams["id"] = id;
+ thiz.baseParams["departCoding"] = departCoding;
+ thiz.baseParams["wareHouseId"] = wareHouseId;
+ thiz.baseParams["tousseNames"] = tousseNames;
+ });
+ itemsOfBaseNum.load();
+ var tousseCm = new Ext.grid.ColumnModel([/*sm,*/
+ {id : 'id',dataIndex : 'id',hidden : true},
+ {header : "名称",dataIndex : 'tousseName',width : 40,menuDisabled : true},
+ {header : "ids",dataIndex : 'ids',hidden:true, width : 40,menuDisabled : true},
+ {header : "scanIds",dataIndex : 'scanIds',hidden:true, width : 40,menuDisabled : true},
+ {header : "库存数量",dataIndex : 'amount',width : 30,menuDisabled : true},
+ {header : "扫描数量",dataIndex : 'scanAmount',width : 30,menuDisabled : true},
+ {header : "差异数量",dataIndex : 'diffAmount',width : 30,menuDisabled : true,
+ renderer: function(v,p,record,index){
+ return "" + v + "";
+ }
+ }
+ ]);
+ var formWidth = 930;
+ var windowWidth = 930;
+ var windowHeight = 550;itemsOfBaseNum
+ formObj = new top.Ext.FormPanel({
+ id : 'useRecordForm',
+ frame : true,
+ labelSeparator : ':',
+ bodyStyle : 'padding:5px 5px 0px 5px',
+ labelAlign : 'right',
+ width : formWidth,
+ autoScroll : true,
+ labelWidth : 80,
+ items : [new top.Ext.grid.EditorGridPanel({
+ id : 'tousseInstanceGrid',
+ store : itemsOfBaseNum,
+ cm : tousseCm,
+ height : 500,
+ width:900,
+ autoExpandColumn : 'delAction',
+ frame : false,
+ viewConfig: {
+ forceFit:true
+ },
+ bodyStyle : 'border:1px solid #afd7af',
+ //selModel :sm,
+ listeners: {
+ headerclick:function(ct,column,e,t,opts) {
+ if(column == 6){
+ var tousseInstanceGrid = top.Ext.getCmp('tousseInstanceGrid');
+ var inventoryList = tousseInstanceGrid.store.data;
+ var s = 0;
+ var st = top.Ext.getCmp('tousseInstanceGrid').store;
+ if(st.getSortState().direction == 'ASC'){
+ st.sort('diffAmount', 'DESC');
+ }else{
+ st.sort('diffAmount', 'ASC');
+ }
+ }
+ }
+ },
+ tbar : [{
+ text : '扫描条码:',
+ hidden : idIsNotNull
+ }, {
+ xtype : 'textfield',
+ fieldLabel : '扫描条码',
+ id : 'tempBarcode',
+ name : 'tempBarcode',
+ width : 200,
+ hidden : idIsNotNull,
+ anchor : '99%',
+ enableKeyEvents : true,
+ listeners : {
+ render : function(c) {
+ c.getEl().on('keypress', function(e) {
+ if (e.getKey() == 13) {//
+ loadScanGoods();
+ }
+ });
+ }
+ }
+ }]
+ })],
+ buttons : tbar
+ });
+ baseCountInventoryWin = new top.Ext.Window( {
+ id : 'useRecordApplicationWin',
+ layout : 'fit',
+ title : '盘点信息',
+ width : windowWidth,
+ height : windowHeight,
+ border : false,
+ modal : true,
+ plain : true,
+ items : [ formObj ]
+ });
+ baseCountInventoryWin.show();
+
+}
+/**
+ * 扫描器械包条码
+ */
+function loadScanGoods() {
+ var barcode = top.Ext.getCmp('tempBarcode').getValue();
+ top.Ext.getCmp('tempBarcode').setValue('');
+ if (barcode != '') {
+ if(barcode.indexOf(",")){
+ var barcodeArray = barcode.split(",");
+ barcode = barcodeArray[barcodeArray.length - 1];
+ }
+ if (checkBarcodeIsExist(barcode)) {
+ showResult('条码为:' + barcode + '的物品已在当前扫描物品里!');
+ top.Ext.getCmp('tempBarcode').setValue('');
+ return;
+ }
+ Ext.Ajax.request({
+ url : WWWROOT + '/disinfectSystem/tousseInstanceAction!getTousseInstanceByBarcodeForDepartInventory.do',
+ params : {
+ barcode : barcode,
+ wareHouseId : wareHouseId,
+ departCoding : departCoding
+ },
+ success : function(response, options) {
+ var result = Ext.decode(response.responseText);
+ if(result.success){
+ addScanTousseInstance(result.tousseInstance,barcode);
+ }else{
+ showResult(result.msg);
+ }
+ },
+ failure : function(response, options) {
+ showResult('加载出错!请稍候再试。');
+ }
+ });
+ }
+}
+//检测该条码是否已在扫描的物品里
+function checkBarcodeIsExist(currentBarcode) {
+ var exist = false;
+ if (currentBarcode == ""){
+ return exist;
+ }
+ if(sanBarcode.indexOf(currentBarcode) > -1){
+ exist = true;
+ }
+ /*if(sanBarcode.includes(currentBarcode)){
+ exist = true;
+ }*/
+ return exist;
+}
+function addScanTousseInstance(tousseInstance,barcode){
+ var flag = true;
+ for ( var i = 0; i < itemsOfBaseNum.getCount(); i++) {
+ var currentRecord = itemsOfBaseNum.getAt(i);
+ var tousseName = currentRecord.get('tousseName');
+ if(tousseName == tousseInstance.tousseName){
+ var scanAmount = currentRecord.get('scanAmount');
+ var diffAmount = currentRecord.get('diffAmount');
+ var ids = currentRecord.get('ids');
+ var scanIds = currentRecord.get('scanIds');
+ var amount = currentRecord.get('amount');
+ currentRecord.set('scanAmount',scanAmount + 1);
+ sanBarcode.push(barcode);
+ scanIds.push(tousseInstance.id);
+ var ids = currentRecord.get('ids');
+ /*var intersection = scanIds.filter(function(v){
+ return ids.indexOf(v)!==-1; // 利用filter方法来遍历是否有相同的元素
+ })*/
+ var intersection = includeSet(ids, scanIds);
+ currentRecord.set('diffAmount',scanIds.length + ids.length - intersection.length * 2);
+ flag = false;
+ break;
+ }
+ }
+ if(flag){
+ showResult('列表无'+ tousseInstance.tousseName +'!');
+ }
+}
+/**
+ * 打开包实例信息之前
+ * @param v
+ * @param p
+ * @param record
+ * @returns
+ */
+function beforeGoDiffTousseInfoWin(id, tousseName , ids, scanIds,diffAmount){
+ if(diffAmount == 0){
+ return;
+ }
+ if(diffAmount < 0 && sanBarcode.length == 0){
+ showResult(tousseName+'扫描数量为0!');
+ return;
+ }
+ goDiffTousseInfoWin(id,departCoding,wareHouseId,tousseName,scanIds,ids);
+}
+function save() {
+ this.disable();
+ var tousseInstanceGrid = top.Ext.getCmp('tousseInstanceGrid');
+ var inventoryList = tousseInstanceGrid.store.data;
+ var inventoryListInfo = [];
+ var hasWasteTousse = false;//有需要废弃的包,有就提示
+ var tousseNamesUnscanned = '';//未扫描的科室库存
+ for(var i = 0; i < inventoryList.keys.length; i++){
+ var item = inventoryList.get(inventoryList.keys[i]).data;
+ if(item.scanIds == null || item.scanIds.length == 0){
+ tousseNamesUnscanned += '['+item.tousseName+']';
+ }
+ if(!hasWasteTousse && subSet(item.ids,item.scanIds).length > 0){
+ hasWasteTousse = true;
+ }
+ inventoryListInfo.push(item);
+ }
+ if(tousseNamesUnscanned != ''){
+ showResult( tousseNamesUnscanned + '未扫描盘点,请确认盘点信息!');
+ this.enable();
+ return false;
+ }
+ this.enable();
+ if(hasWasteTousse){
+ top.Ext.MessageBox.confirm("请确认","是否确认废弃没有盘点成功的器械包?",
+ function(button, text) {
+ if ("yes" == button){
+ formObj.form.submit({
+ url : WWWROOT + '/disinfectSystem/inventoryRecordAction!saveInventoryRecordOfBaseAmount.do',
+ method:'POST',
+ params:{inventoryInfo:JSON.stringify(inventoryListInfo),
+ wareHouseName : wareHouseName,
+ wareHouseId : wareHouseId,
+ departName : departName,
+ departCoding : departCoding},
+ waitMsg:'正在保存数据,请稍候',
+ waitTitle:'提交表单',
+ success:function(form,action){
+ showResult("保存成功!");
+ baseCountInventoryWin.close();
+ grid.dwrReload();
+ },
+ failure:function(form, action){
+ showResult(action.result.message);
+ }
+ });
+ }
+ });
+ }
+}
+function subSet(arr1, arr2) {
+ var subArr = [];
+ for(var i = 0; i < arr1.length; i++){
+ if (arr2.indexOf(arr1[i]) == -1) {
+ subArr.push(arr1[i]);
+ }
+ }
+ return subArr;
+};
+function includeSet(arr1, arr2){
+ var includeArr = [];
+ for(var i = 0; i < arr1.length; i++){
+ if (arr2.indexOf(arr1[i]) != -1) {
+ includeArr.push(arr1[i]);
+ }
+ }
+ return includeArr;
+}
\ No newline at end of file
Index: ssts-web/src/main/webapp/disinfectsystem/config/szszlyy/menu/menuconfigure.js
===================================================================
diff -u -r26726 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/config/szszlyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26726)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szszlyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -419,7 +419,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",
Index: ssts-web/src/main/webapp/homepage/menuconfigure.js
===================================================================
diff -u -r26725 -r26757
--- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 26725)
+++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -428,7 +428,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",
Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java
===================================================================
diff -u -r26534 -r26757
--- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java (.../InventoryRecordManager.java) (revision 26534)
+++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManager.java (.../InventoryRecordManager.java) (revision 26757)
@@ -93,6 +93,14 @@
public JSONArray importMaterialInventoryRecordFromInputStreams_TRANS_REQUIRED(
HttpServletRequest request, List inputStreams,
List errInfos);
-
-
+ /**
+ * 保存基数盘点记录
+ * @param arr 盘点项数组
+ * @param wareHouseName 仓库名
+ * @param wareHouseId 仓库id
+ * @param departCoding 部门编码
+ * @param departName 部门名字
+ */
+ public void saveInventoryInfo(JSONArray arr, String wareHouseName, Long wareHouseId, String departCoding,
+ String departName);
}
Index: ssts-web/src/main/webapp/disinfectsystem/config/dgfy/menu/menuconfigure.js
===================================================================
diff -u -r26603 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/config/dgfy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26603)
+++ ssts-web/src/main/webapp/disinfectsystem/config/dgfy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -411,7 +411,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",
Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js
===================================================================
diff -u -r22838 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js (.../inventoryrecordView.js) (revision 22838)
+++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.js (.../inventoryrecordView.js) (revision 26757)
@@ -544,16 +544,22 @@
getDisposablegoodsInventoryRecord(id,time,operator,wareHouseName,status);
}else if(inventoryTypeCodeExpensiveGoods == type){
getExpensiveGoodsInventoryRecord(id,time,operator,wareHouseName,status);
+ }else if(inventoryTypeCodeBaseAmount == type){
+ goBaseCountInventory(id,null,null,null,null,null);
}
}
Ext.onReady(function() {
var columns = new Array();
+ var isBaseAmountInventory = false;
+ if(type == inventoryTypeCodeBaseAmount){
+ isBaseAmountInventory = true;
+ }
columns.push(
{header : "盘点日期",width : 150,dataIndex : 'time',renderer : myDateFormatByMinute,renderer : modifyRecord},
{header : "盘点人",width : 100,dataIndex : 'operator'},
- {header : "状态",width : 135,dataIndex : 'status'},
+ {header : "状态",width : 135,hidden:isBaseAmountInventory,dataIndex : 'status'},
{header : "仓库名称",width : 135,dataIndex : 'wareHouseName'},
{header : "备注",width : 200,hidden:true,dataIndex : 'remark'}
);
@@ -580,21 +586,26 @@
var tbar = [{
text : '添加盘点记录',
iconCls : 'btn_ext_application_add',
- hidden:SSTS_StockTakeInfo_Create,
+ hidden:SSTS_StockTakeInfo_Create || isBaseAmountInventory,
handler : function() {
addInventoryRecord();
}
},{
text : '删除',
iconCls : 'btn_ext_application_del',
- hidden:SSTS_StockTakeInfo_Delete,
+ hidden:SSTS_StockTakeInfo_Delete || isBaseAmountInventory,
handler : function() {
deleteStockRecord(grid);
}
},{
text : '导出',
iconCls:'btn_ext_download',
+ hidden : isBaseAmountInventory,
handler : function() {
+ if(inventoryTypeCodeBaseAmount == type){
+ showResult("未有打印格式!");
+ return false;
+ }
var records = grid.getSelectionModel().getSelections();
if (records.length == 0) {
showResult("请选择要导出的记录!");
Index: ssts-web/src/main/webapp/disinfectsystem/config/ggsrmyy/menu/menuconfigure.js
===================================================================
diff -u -r26603 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/config/ggsrmyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26603)
+++ ssts-web/src/main/webapp/disinfectsystem/config/ggsrmyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -411,7 +411,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",
Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java
===================================================================
diff -u -r26738 -r26757
--- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26738)
+++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26757)
@@ -93,6 +93,7 @@
import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItem;
import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItemVO;
import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord;
+import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItemOfBaseNum;
import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO;
import com.forgon.disinfectsystem.entity.tousseitem.TousseItem;
import com.forgon.disinfectsystem.entity.urgent.UrgentLevel;
@@ -6295,4 +6296,196 @@
return result;
}
+ @Override
+ public JSONArray getDepartInventoryInfo(String departCoding,
+ String wareHouseIds, String tousseNames) {
+ if(StringUtils.isBlank(wareHouseIds)){
+ return null;
+ }
+ ResultSet rs = null;
+ JSONArray arr = new JSONArray();
+ try {
+ rs = objectDao.executeSql(buildSqlOfGetDepartInventoryInfo(departCoding, wareHouseIds, tousseNames));
+ JSONObject nameAndItem = new JSONObject();
+ while(rs.next()){
+ String tousseName = rs.getString("tousseName");
+ Long id = rs.getLong("id");
+ JSONObject item = null;
+ if(nameAndItem.containsKey(tousseName)){
+ item = (JSONObject)nameAndItem.get(tousseName);
+ item.put("amount", (Integer)item.get("amount") + 1);
+ item.getJSONArray("ids").add(id);
+ }else{
+ item = new JSONObject();
+ item.put("tousseName", tousseName);
+ item.put("amount", 1);
+ JSONArray ids = new JSONArray();
+ item.put("scanIds", ids);
+ ids.add(id);
+ item.put("ids", ids);
+ item.put("scanAmount", 0);
+ item.put("diffAmount", 0);
+ nameAndItem.put(tousseName, item);
+ }
+ }
+ if(nameAndItem.size() > 0){
+ Set tousseNameSet = nameAndItem.keySet();
+ for (String tousseName : tousseNameSet){
+ JSONObject obj = (JSONObject)nameAndItem.get(tousseName);
+ arr.add(obj);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ DatabaseUtil.closeResultSetAndStatement(rs);
+ }
+ return arr;
+ }
+ /**
+ * 构建getDepartInventoryInfo方法的sql语句
+ * @param departCoding
+ * @param wareHouseId
+ * @return
+ */
+ private String buildSqlOfGetDepartInventoryInfo(String departCoding, String wareHouseIds, String tousseNames){
+ Set tousseNamesSet = null;
+ String tousseNameSql = "";
+ String wareHouseIdSql = null;
+ if(wareHouseIds.indexOf("all") != -1){
+ wareHouseIds = wareHouseIds.replace("all,", "");
+ }
+ if(wareHouseIds.indexOf(",") == -1){
+ wareHouseIdSql = String.format("and wareHouseId =%s ", wareHouseIds);
+ }else{
+ StringBuffer sbf = new StringBuffer();
+ wareHouseIdSql = sbf.insert(0, "and wareHouseId in(").append(wareHouseIds).append(")").toString();
+ }
+ if(StringUtils.isNotBlank(tousseNames)){
+ tousseNamesSet = new HashSet();
+ String[] names = tousseNames.split(",");
+ for (int i = 0; i < names.length; i++) {
+ tousseNamesSet.add(names[i]);
+ }
+ tousseNameSql = String.format(" and %s ", SqlUtils.getStringFieldInLargeCollectionsPredicate("ti.tousseName", tousseNamesSet));
+ }
+ String startDateStr = CssdUtils.getSystemSetConfigByName("startDateOfDepartmentStock");
+ String endDateStr = null;//结束时间
+ String dateSql = "";
+ if(StringUtils.isNotBlank(startDateStr)){
+ startDateStr = dateQueryAdapter.dateAdapter(startDateStr);
+ endDateStr = dateQueryAdapter.dateAdapter(new Date());
+ dateSql = String.format(" and operationTime between %s and %s and (ds.startTime is null or ds.startTime < operationTime) ", startDateStr, endDateStr);
+ }
+ String sql = String.format(" select ti.tousseName,ti.id from %s ti "
+ + " inner join %s ds on ds.tousseDefinition_id=ti.tousseDefinition_id "
+ + " where ti.departCoding=ds.departCoding and ti.departCoding='%s' and tousseFixedBarcode=0 %s and status='%s' %s and comboTousseInstanceId is null %s",
+ TousseInstance.class.getSimpleName(),DepartmentStock.class.getSimpleName(),
+ departCoding,wareHouseIdSql,TousseInstance.STATUS_SIGNED, tousseNameSql, dateSql);
+ return sql;
+ }
+ @Override
+ public JSONArray getDifftousseInstanceInfo(Long id, String departCoding,
+ String tousseName, Long wareHouseId , String[] scanTousseInstanceIds, String[] ids) {
+ ResultSet rs = null;
+ JSONArray arr = new JSONArray();
+ try {
+ String s = bulidSqlOfGetDifftousseInstanceInfo(id, departCoding, tousseName, wareHouseId, scanTousseInstanceIds,ids);
+ rs = objectDao.executeSql(s);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ while(rs.next()){
+ Long tiId = rs.getLong("id");
+ String barcode = rs.getString("barcode");
+ String status = rs.getString("status");
+ JSONObject obj = new JSONObject();
+ obj.put("id", tiId);
+ obj.put("barcode", barcode);
+ obj.put("status", status);
+ setDateOfJSONobject(sdf, "sterileEndTime", obj, rs);
+ setDateOfJSONobject(sdf, "invoiceSendTime", obj, rs);
+ setDateOfJSONobject(sdf, "signedDate", obj, rs);
+ arr.add(obj);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ DatabaseUtil.closeResultSetAndStatement(rs);
+ }
+ return arr;
+ }
+ /**
+ * 从ResultSet读取key的日期值,赋值给obj的key,防止空串报错影响程序继续读取
+ * @param sdf
+ * @param key obj key
+ * @param obj
+ * @param ResultSet rs
+ */
+ private void setDateOfJSONobject(SimpleDateFormat sdf, String key, JSONObject obj, ResultSet rs){
+ Date date = null;
+ try {//防止空串报错
+ date = rs.getTimestamp(key);
+ obj.put(key, sdf.format(date));
+ } catch (Exception e) {
+ }
+ }
+ /**
+ * 构建GetDifftousseInstanceInfo方法的sql
+ * @param departCoding
+ * @param tousseName
+ * @param wareHouseId
+ * @param diffAmount 误差数量
+ * @param scanTousseInstanceIds 扫描包实例的ids
+ * @return
+ */
+ private String bulidSqlOfGetDifftousseInstanceInfo(Long id, String departCoding,
+ String tousseName, Long wareHouseId, String[] scanTousseInstanceIds, String[] ids){
+ String sql = null;
+ if(id != null){
+ sql = String.format("select ti.id,barcode,status,sterileEndTime,invoiceSendTime,signedDate from %s ti "
+ + "inner join %s bd on ti.id=bd.id "
+ + "inner join TousseInstance_InventoryItemOfBaseNum tii on tii.tousseInstanceId=ti.id where tii.inventoryItemOfBaseNumId=%s ",
+ TousseInstance.class.getSimpleName(),BarcodeDevice.class.getSimpleName(),id);
+ }else{
+ Set scanIdSet = new HashSet<>(Arrays.asList(scanTousseInstanceIds));
+ Set idSet = new HashSet<>(Arrays.asList(ids));
+ Collection result = CollectionUtils.disjunction(scanIdSet, idSet);
+ sql = String.format("select ti.id,barcode,status,sterileEndTime,invoiceSendTime,signedDate from %s ti "
+ + "inner join %s bd on ti.id=bd.id where %s ",
+ TousseInstance.class.getSimpleName(),BarcodeDevice.class.getSimpleName(),
+ SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ti.id", result));
+ }
+ return sql;
+ }
+
+ @Override
+ public JSONArray getInventoryOfBaseAmoutById(Long inventoryRecordId) {
+ JSONArray arr =new JSONArray();
+ ResultSet rs = null;
+ try {
+ String sql = String.format("select * from %s where inventoryRecordId=%s ", InventoryItemOfBaseNum.class.getSimpleName(), inventoryRecordId);
+ rs = objectDao.executeSql(sql);
+ JSONArray ids = new JSONArray();
+ while(rs.next()){
+ String tousseName = rs.getString("tousseName");
+ Integer diffAmount = rs.getInt("diffAmount");
+ Integer scanAmount = rs.getInt("scanAmount");
+ Integer inventoryNum = rs.getInt("inventoryNum");
+ Long id = rs.getLong("id");
+ JSONObject item =new JSONObject();
+ item.put("id", id);
+ item.put("tousseName", tousseName);
+ item.put("amount", inventoryNum);
+ item.put("scanIds", ids);
+ item.put("ids", ids);
+ item.put("scanAmount", scanAmount);
+ item.put("diffAmount", diffAmount);
+ arr.add(item);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ DatabaseUtil.closeResultSetAndStatement(rs);
+ }
+ return arr;
+ }
}
Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java
===================================================================
diff -u -r26738 -r26757
--- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 26738)
+++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 26757)
@@ -951,6 +951,30 @@
* @return
*/
public Map getUseRecordMapByTousseInstanceList(List instances);
+ /**
+ * 获取科室库存盘点信息
+ * @param departCoding 盘点科室编码
+ * @param wareHouseId 盘点仓库id
+ * @return
+ */
+ public JSONArray getDepartInventoryInfo(String departCoding, String wareHouseIds, String tousseNames);
+ /**
+ * 基数盘点获取差异器械包信息 查看历史盘点项时,除了id,其他参数可为null
+ * @param id 盘点项 null:基数盘点 非null:历史盘点记录盘点项id
+ * @param departCoding 盘点部门编码
+ * @param tousseName 包名
+ * @param wareHouseId 仓库id
+ * @param scanTousseInstanceIds 扫描器械包id
+ * @param ids 库存数量对应的包id
+ * @return
+ */
+ public JSONArray getDifftousseInstanceInfo(Long id, String departCoding, String tousseName, Long wareHouseId, String[] scanTousseInstanceIds, String[] ids);
+ /**
+ * 通过盘点记录id获取盘点项
+ * @param inventoryRecordId
+ * @return
+ */
+ public JSONArray getInventoryOfBaseAmoutById(Long inventoryRecordId);
}
Index: ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp
===================================================================
diff -u -r24232 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp (.../inventoryrecordView.jsp) (revision 24232)
+++ ssts-web/src/main/webapp/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp (.../inventoryrecordView.jsp) (revision 26757)
@@ -29,6 +29,8 @@
+
+
盘点记录
@@ -50,7 +52,7 @@
var inventoryTypeCodeMaterial = '<%=InventoryRecord.TYPECODE_MATERIAL %>';
var inventoryTypeCodeDisposableGoods = '<%=InventoryRecord.TYPECODE_DISPOSABLEGOODS %>';
var inventoryTypeCodeExpensiveGoods = '<%=InventoryRecord.TYPECODE_EXPENSIVEGOODS %>';
-
+ var inventoryTypeCodeBaseAmount = '<%=InventoryRecord.TYPE_BASEAMOUNT %>';
//高值耗材供应商
var expensiveGoodsSupplier = '<%=ExpensiveGoodsSupplier.SUPPLIER_TYPE_EXPENSIVEGOODSSUPPLIER%>';
Index: ssts-web/src/main/resources/systemset/operationDefine.xml
===================================================================
diff -u -r26725 -r26757
--- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 26725)
+++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 26757)
@@ -361,6 +361,7 @@
+
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryRecord.java
===================================================================
diff -u -r23492 -r26757
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryRecord.java (.../InventoryRecord.java) (revision 23492)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryRecord.java (.../InventoryRecord.java) (revision 26757)
@@ -52,7 +52,7 @@
public static String TYPE_MATERIALENTRY = "材料";//材料(器械仓库)
public static String TYPE_DISPOSABLEGOOD = "一次性物品";//一次性物品
public static String TYPE_EXPENSIVEGOODS = "高值耗材";//高值耗材
-
+ public static String TYPE_BASEAMOUNT = "基数盘点";//基数盘点
private String type;//盘点物品的类型 //材料(器械仓库)或一次性物品
/**
Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java
===================================================================
diff -u -r26534 -r26757
--- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 26534)
+++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/service/InventoryRecordManagerImpl.java (.../InventoryRecordManagerImpl.java) (revision 26757)
@@ -9,12 +9,15 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
@@ -48,21 +51,22 @@
import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods;
-import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsBill;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsGodownEntry;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsInstance;
import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoodsStock;
import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry;
import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem;
import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition;
import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse;
import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsModel;
import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsModelStock;
import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntry;
import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryExpensiveGoodsItem;
import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryExpensiveItem;
import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItem;
+import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItemOfBaseNum;
import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryRecord;
import com.forgon.disinfectsystem.exception.ImportDataException;
import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsGodownEntryManager;
@@ -90,8 +94,8 @@
import com.forgon.tools.excel.ExcelHelper;
import com.forgon.tools.excel.ParerUtils;
import com.forgon.tools.hibernate.BasePoManagerImpl;
-import com.forgon.tools.hibernate.ObjectDao;
import com.forgon.tools.json.JSONUtil;
+import com.forgon.tools.util.SqlUtils;
import edu.emory.mathcs.backport.java.util.Arrays;
@@ -2360,5 +2364,91 @@
return importInventoryRecord;
}
-
+ @Override
+ public void saveInventoryInfo(JSONArray arr, String wareHouseName, Long wareHouseId, String departCoding,
+ String departName){
+ //保存盘点记录
+ InventoryRecord ir = new InventoryRecord();
+ LoginUserData currentLoginUser = AcegiHelper.getLoginUser();
+ String userFullName = currentLoginUser.getUserFullName();
+ ir.setOperator(userFullName);
+ ir.setOrgUnitCode(departCoding);
+ ir.setOrgUnitName(departName);
+ ir.setTime(new Date());
+ ir.setType(InventoryRecord.TYPE_BASEAMOUNT);
+ ir.setWareHouseId(wareHouseId);
+ ir.setWareHouseName(wareHouseName);
+ objectDao.save(ir);
+ //处理器械包、保存盘点项
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String nowDateStr = sdf.format(new Date());
+ userFullName = String.format("盘点:%s", userFullName);
+ for (int i = 0; i < arr.size(); i++) {
+ JSONObject item = (JSONObject)arr.get(i);
+ String tousseName = item.optString("tousseName");
+ Integer amount = item.optInt("amount");
+ JSONArray ids = item.optJSONArray("ids");
+ JSONArray scanIds = item.optJSONArray("scanIds");
+ Integer scanAmount = item.optInt("scanAmount");
+ Integer diffAmount = item.optInt("diffAmount");
+ InventoryItemOfBaseNum iib = new InventoryItemOfBaseNum();
+ iib.setDiffAmount(diffAmount);
+ iib.setScanAmount(scanAmount);
+ iib.setTousseName(tousseName);
+ iib.setInventoryNum(amount);
+ Collection diffIds = CollectionUtils.disjunction(ids, scanIds);
+ setTousseInstances(iib, diffIds);
+ iib.setInventoryRecord(ir);
+ objectDao.save(iib);//保存盘点项
+ Collection idSubScanId = CollectionUtils.subtract(ids, scanIds);
+ //废弃未扫描到的科室库存里的器械包信息
+ updateTousseOfUnscanned(idSubScanId, userFullName, nowDateStr);
+ Collection scanIdSubId = CollectionUtils.subtract(scanIds, ids);
+ //修改扫描到且未在库存数量里的器械包信息
+ updateTousseInfoOfNotInInventoryNum(scanIdSubId, userFullName, nowDateStr);
+ }
+ }
+ /**
+ * InventoryItemOfBaseNum设置TousseInstances
+ * @param iib InventoryItemOfBaseNum
+ * @param diffIds 包实例id
+ */
+ private void setTousseInstances(InventoryItemOfBaseNum iib ,Collection diffIds){
+ if(diffIds == null || diffIds.size() < 1){
+ return;
+ }
+ Set tousseInstances = null;
+ tousseInstances = new HashSet();
+ for(Integer diffId : diffIds ){
+ TousseInstance tiItem = new TousseInstance();
+ tiItem.setId(diffId.longValue());
+ tousseInstances.add(tiItem);
+ }
+ iib.setTousseInstances(tousseInstances);
+ }
+ /**
+ * 修改扫描到且未在库存数量里的器械包信息
+ * @param scanIdSubId
+ */
+ private void updateTousseInfoOfNotInInventoryNum(Collection scanIdSubId, String userFullName, String nowDateStr){
+ if(scanIdSubId == null || scanIdSubId.size() < 1){
+ return;
+ }
+ objectDao.executeUpdate(String.format("update %s set status='%s',invoiceSender='%s',invoiceSendTime='%s',signedUser='%s',signedDate='%s' where %s",
+ TousseInstance.class.getSimpleName(),TousseInstance.STATUS_SIGNED,userFullName,nowDateStr,
+ userFullName,nowDateStr,SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", scanIdSubId)));
+ }
+ /**
+ * 废弃未扫描到的科室库存里的器械包信息
+ * @param idSubScanId
+ * @param userFullName
+ * @param nowDateStr
+ */
+ private void updateTousseOfUnscanned(Collection idSubScanId, String userFullName, String nowDateStr){
+ if(idSubScanId == null || idSubScanId.size() < 1){
+ return;
+ }
+ objectDao.executeUpdate(String.format("update %s set status='%s',wasteDate='%s',wasteReason='基数盘点',operateUser='%s' where %s ",
+ TousseInstance.class.getSimpleName(),TousseInstance.STATUS_DISCARD,nowDateStr, userFullName,SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", idSubScanId)));
+ }
}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryItemOfBaseNum.java
===================================================================
diff -u
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryItemOfBaseNum.java (revision 0)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/stocktakemanager/InventoryItemOfBaseNum.java (revision 26757)
@@ -0,0 +1,104 @@
+package com.forgon.disinfectsystem.entity.stocktakemanager;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+
+@Entity
+@DynamicInsert(false)
+@DynamicUpdate(true)
+@Table(name = "InventoryItemOfBaseNum")
+@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
+public class InventoryItemOfBaseNum {
+ private Long id;
+ /**
+ * 库存数量
+ */
+ private Integer inventoryNum;
+ /**
+ * 扫描数量
+ */
+ private Integer scanAmount;
+ /**
+ * 差异数量(库存数量对应的包和扫描数量对应的包,存在差异的包数.如库存数量包含1,2,3,4;扫描包数量含3,4,5,6;差异包为1256,差异数量为4)
+ */
+ private Integer diffAmount;
+ /**
+ * 器械包名称
+ */
+ private String tousseName;
+ /**
+ * 盘点记录
+ */
+ private InventoryRecord inventoryRecord;
+ /**
+ *
+ */
+ private Set tousseInstances = new HashSet(0);
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public Integer getInventoryNum() {
+ return inventoryNum;
+ }
+ public void setInventoryNum(Integer inventoryNum) {
+ this.inventoryNum = inventoryNum;
+ }
+ public Integer getScanAmount() {
+ return scanAmount;
+ }
+ public void setScanAmount(Integer scanAmount) {
+ this.scanAmount = scanAmount;
+ }
+ public Integer getDiffAmount() {
+ return diffAmount;
+ }
+ public void setDiffAmount(Integer diffAmount) {
+ this.diffAmount = diffAmount;
+ }
+ public String getTousseName() {
+ return tousseName;
+ }
+ public void setTousseName(String tousseName) {
+ this.tousseName = tousseName;
+ }
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "inventoryRecordId")
+ public InventoryRecord getInventoryRecord() {
+ return inventoryRecord;
+ }
+ public void setInventoryRecord(InventoryRecord inventoryRecord) {
+ this.inventoryRecord = inventoryRecord;
+ }
+ @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)
+ @JoinTable(name = "TousseInstance_InventoryItemOfBaseNum", joinColumns = { @JoinColumn(name = "inventoryItemOfBaseNumId") }, inverseJoinColumns = { @JoinColumn(name = "tousseInstanceId") })
+ public Set getTousseInstances() {
+ return tousseInstances;
+ }
+ public void setTousseInstances(Set tousseInstances) {
+ this.tousseInstances = tousseInstances;
+ }
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfy/menu/menuconfigure.js
===================================================================
diff -u -r26636 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26636)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzzyyfy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -417,7 +417,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",
Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/action/InventoryRecordAction.java
===================================================================
diff -u -r26490 -r26757
--- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/action/InventoryRecordAction.java (.../InventoryRecordAction.java) (revision 26490)
+++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/action/InventoryRecordAction.java (.../InventoryRecordAction.java) (revision 26757)
@@ -359,5 +359,16 @@
}
return null;
}
-
+ /**
+ * 保存基数盘点记录相关信息
+ */
+ public void saveInventoryRecordOfBaseAmount(){
+ String inventoryInfo = StrutsParamUtils.getPraramValue("inventoryInfo", null);
+ String wareHouseName = StrutsParamUtils.getPraramValue("wareHouseName", null);
+ Long wareHouseId = StrutsParamUtils.getPraramLongValue("wareHouseId", null);
+ String departName = StrutsParamUtils.getPraramValue("departName", null);
+ String departCoding = StrutsParamUtils.getPraramValue("departCoding", null);
+ JSONArray arr = JSONArray.fromObject(inventoryInfo);
+ inventoryRecordManager.saveInventoryInfo(arr, wareHouseName, wareHouseId, departCoding, departName);
+ }
}
Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java
===================================================================
diff -u -r23826 -r26757
--- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java (.../InventoryRecordTableManager.java) (revision 23826)
+++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java (.../InventoryRecordTableManager.java) (revision 26757)
@@ -50,6 +50,8 @@
sql += " and po.type = '"+InventoryRecord.TYPE_MATERIALENTRY+"'";
}else if("disposableGoods".equals(type)){
sql += " and po.type = '"+InventoryRecord.TYPE_DISPOSABLEGOOD+"'";
+ }else if(InventoryRecord.TYPE_BASEAMOUNT.equals(type)){
+ sql = " po.type = '"+InventoryRecord.TYPE_BASEAMOUNT+"'";
}
}
return gridManager.renderGrid(parameterListMap,
Index: ssts-web/src/main/webapp/homepage/menu.jsp
===================================================================
diff -u -r26725 -r26757
--- ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 26725)
+++ ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 26757)
@@ -29,6 +29,7 @@
var inventoryTypeCodeMaterial = '<%=InventoryRecord.TYPECODE_MATERIAL %>';
var inventoryTypeCodeDisposableGoods = '<%=InventoryRecord.TYPECODE_DISPOSABLEGOODS %>';
var inventoryTypeCodeExpensiveGoods = '<%=InventoryRecord.TYPECODE_EXPENSIVEGOODS %>';
+var inventoryTypeCodeBaseAmount= '<%=InventoryRecord.TYPE_BASEAMOUNT %>';
//科室分组设置类型(审核)
var departmentGroupOption_REVIEWE = '<%=DepartmentGroupOption.TYPE_GROUP_REVIEWE%>';//审核科室分组
@@ -1442,7 +1443,15 @@
SSTS_DisposableGoodsCheck_Manager = false;
}
+
/**
+ * 《基数盘点历史记录》权限
+ */
+var SSTS_BaseAmountinventoryCheck_Manager = true;
+
+ SSTS_BaseAmountinventoryCheck_Manager = false;
+
+/**
* 《一次性物品结算管理》权限
*/
var SSTS_DisposableGoodSsettleAccounts_Manager = true;
@@ -1459,7 +1468,7 @@
SSTS_DisposableGoodsStock_Manager && SSTS_DisposableGoodsOutOfStorage_Manager &&
SSTS_DisposableGoodsGodownEntry_Manager && SSTS_DisposableGoodsCancellingStocks_Manager &&
SSTS_DisposableGoodsAllot_Manager && SSTS_DisposableGoodsProfitAndLoss_Manager &&
- SSTS_DisposableGoodsCheck_Manager && SSTS_DisposableGoodSsettleAccounts_Manager
+ SSTS_DisposableGoodsCheck_Manager && SSTS_BaseAmountinventoryCheck_Manager && SSTS_DisposableGoodSsettleAccounts_Manager
;
/**
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java
===================================================================
diff -u -r26368 -r26757
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 26368)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 26757)
@@ -5,13 +5,18 @@
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
@@ -42,6 +47,7 @@
import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection;
import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyItem;
import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord;
+import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryItemOfBaseNum;
import com.forgon.disinfectsystem.entity.urgent.UrgentLevel;
import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
import com.forgon.disinfectsystem.idpredicate.IDAble;
@@ -721,7 +727,8 @@
*/
private UrgentLevel urgentLevel;
-
+ private Set inventoryItemOfBaseNums = new HashSet(0);
+
public static final String[] filterProperties = { "handler",
"hibernateLazyInitializer", "fieldHandler", "materialInstances",
"sterilizationRecords", "isUploadImage", "isUploadVideo", "images",
@@ -2526,4 +2533,13 @@
public void setOperationRoomName(String operationRoomName) {
this.operationRoomName = operationRoomName;
}
+ @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)
+ @JoinTable(name = "TousseInstance_InventoryItemOfBaseNum", joinColumns = { @JoinColumn(name = "tousseInstanceId") }, inverseJoinColumns = { @JoinColumn(name = "inventoryItemOfBaseNumId") })
+ public Set getInventoryItemOfBaseNums() {
+ return inventoryItemOfBaseNums;
+ }
+
+ public void setInventoryItemOfBaseNums(Set inventoryItemOfBaseNums) {
+ this.inventoryItemOfBaseNums = inventoryItemOfBaseNums;
+ }
}
\ No newline at end of file
Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js
===================================================================
diff -u -r26717 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js (.../departmentStockInputView.js) (revision 26717)
+++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockInputView.js (.../departmentStockInputView.js) (revision 26757)
@@ -13,6 +13,8 @@
Ext.getCmp("tousseName2").setValue("");
Ext.getCmp("tousseGroupName").setValue("");
Ext.getCmp("tousseGroupName").setRawValue("");
+ Ext.getCmp("wareHouseName").store.baseParams.departCoding = currentClickNode.attributes.keyId;
+ Ext.getCmp("wareHouseName").store.load();
$Id("parm_s_currentOrgUnitCoding").value = currentClickNode.attributes.keyId;
$Id("parm_s_tousseName").value = "";
$Id("parm_s_tousseGroupName").value = "";
@@ -129,6 +131,33 @@
]
)
});
+ var records = Ext.data.Record.create([
+ {name : 'id',mapping : 'id'},
+ {name : 'name',mapping : 'name'}
+ ]);
+ var newRecord = new records({id:"all",name:"全部"});
+ //仓库
+ var wareHouseStore = new Ext.data.JsonStore({
+ url : WWWROOT + '/disinfectSystem/baseData/wareHouseAction!getWareHouseByDepartCoding.do',
+ root: 'data',
+ fields: [
+ {name : 'id',mapping : 'id'},
+ {name : 'name',mapping : 'name'}
+ ],
+ listeners : {
+ load : function(store,record) {
+ if(record.length > 1){//大于1个仓库才显示全部
+ store.insert(0,newRecord);
+ }
+ if(record.length > 0) {
+ if (Ext.getCmp('wareHouseName')) {
+ Ext.getCmp('wareHouseName').setValue(record[0].data.id);
+ }
+ }
+ }
+ }
+ });
+ wareHouseStore.load();
var stockItem = Ext.data.Record.create([
{name : 'id'},
{name : 'tousseName'},
@@ -294,7 +323,38 @@
+ record.data["id"]+"','"+departCoding+"','"+departName+"','"+record.data.tousseName + "','"+STATUS_SHIPPED +"','"+v +"');return false;\" >" + v + "";
return str;
}
-
+ //盘点验证
+ function checkBaseCountInventory(inventoryType){
+ if(!currentClickNode){
+ showResult("请选择申请科室!");
+ return false;
+ }
+ var wareHouseId = Ext.getCmp('wareHouseName').getValue();
+ var wareHouseName = Ext.getCmp('wareHouseName').getRawValue();
+ var departCoding = currentClickNode.attributes.keyId;
+ var departName = currentClickNode.attributes.text;
+ var tousseNames = "";
+ if('部分盘点' == inventoryType){
+ var recordArr = grid.getSelectionModel().getSelections();
+ if(recordArr.length < 1){
+ showResult("请选择需要盘点的科室库存!");
+ return false;
+ }else{
+ for (var i = 0; i < recordArr.length; i++) {
+ if(i == 0){
+ tousseNames += recordArr[i].data["tousseName"];
+ }else{
+ tousseNames += ',' + recordArr[i].data["tousseName"];
+ }
+ }
+ }
+ }
+ if(wareHouseId == null || wareHouseId == ''){
+ showResult("请选择盘点仓库!");
+ return false;
+ }
+ goBaseCountInventory(null,departCoding,departName,wareHouseId,wareHouseName,tousseNames);
+ }
var columns = [
{header:"器械包名称",width:300,dataIndex:'tousseName',menuDisabled:true, renderer : gotoPage},
{header:"库存数量",width:100,dataIndex:'signedAmount',menuDisabled:true,renderer :amountDetailsStock},
@@ -500,6 +560,7 @@
Ext.getCmp('tousseName2').setValue("");
$Id("parm_s_tousseName").value = "";
Ext.getCmp("tousseGroupName").setValue("");
+ Ext.getCmp("wareHouseName").setValue("");
$Id("parm_s_tousseGroupName").value = "";
}
},{
@@ -510,6 +571,50 @@
handler : function() {
queryDepartmentTousse();
}
+ },{
+ text: "仓库:"
+ },{
+ /*xtype : 'combo',
+ id : 'wareHouseName',
+ name : 'wareHouseName',
+ editable:false,
+ valueField : 'id',
+ displayField : 'name',
+ store : wareHouseStore,
+ forceSelection : true,
+ allowBlank : false,
+ triggerAction : 'all',
+ anchor : '100%'*/
+ xtype : 'multiSelect',
+ id : 'wareHouseName',
+ name : 'wareHouseName',
+ valueField : 'id',
+ displayField : 'name',
+ allowBlank : true,
+ editable : false,
+ fieldLabel:'仓库',
+ listeners : {
+ select : function(combo, record, index){
+ onAllChoosedOrNot(combo, record,index,'name');
+ }
+ },
+ store : wareHouseStore,
+ triggerAction : 'all',
+ anchor : '95%'
+ },{
+ xtype : 'button',
+ text : '全部盘点',
+ minWidth : 70,
+ handler : function() {
+ checkBaseCountInventory('全部盘点');
+ }
+ },{
+ xtype : 'button',
+ text : '部分盘点',
+ minWidth : 70,
+ handler : function() {
+ checkBaseCountInventory('部分盘点');
+ }
}
]
});
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java
===================================================================
diff -u -r23823 -r26757
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 23823)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 26757)
@@ -498,4 +498,10 @@
}
return jsonArray;
}
+
+ @Override
+ public boolean checkIsOneCSSDWareHouse(Long id) {
+ WareHouse wh = getWareHouseById(id);
+ return supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(wh.getOrgUnitCode());
+ }
}
Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/diffFousseInstanceInfo.js
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/departmentStock/diffFousseInstanceInfo.js (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/diffFousseInstanceInfo.js (revision 26757)
@@ -0,0 +1,128 @@
+var diffTousseStore;
+/**
+ * 点击差异数量,打开差异器械包信息
+ * @param id 盘点项id,id有值时,其他参数均可为空
+ * @param departCoding 部门编码
+ * @param wareHouseId 仓库id
+ * @param tousseName 器械包名
+ * @param scanTousseInstanceIds 扫描的器械包id
+ * @param ids 库存数量对应的器械包
+ */
+function goDiffTousseInfoWin(id, departCoding, wareHouseId, tousseName,
+ scanTousseInstanceIds, ids) {
+ var tbar;
+ var cancelBtn = {
+ text : '取消',
+ handler : function() {
+ diffTousseWin.close();
+ }
+ };
+ tbar = [ cancelBtn ];
+ var rd = new Ext.data.JsonReader({
+ fields : [ {
+ name : 'id'
+ }, {
+ name : 'barcode'
+ }, {
+ name : 'status'
+ }, {
+ name : 'sterileEndTime'
+ }, {
+ name : 'invoiceSendTime'
+ }, {
+ name : 'signedDate'
+ } ]
+ });
+ /*var sm = new top.Ext.grid.CheckboxSelectionModel({
+ singleSelect : false
+ });*/
+ diffTousseStore = new Ext.data.Store(
+ {
+ proxy : new Ext.data.HttpProxy(
+ {
+ url : WWWROOT
+ + '/disinfectSystem/tousseInstanceAction!getDifftousseInstanceInfo.do',
+ method : 'POST'
+ }),
+ reader : rd
+ });
+ diffTousseStore.on("beforeload", function(thiz, options) {
+ thiz.baseParams["departCoding"] = departCoding;
+ thiz.baseParams["wareHouseId"] = wareHouseId;
+ thiz.baseParams["tousseName"] = tousseName;
+ thiz.baseParams["scanTousseInstanceIds"] = scanTousseInstanceIds;
+ thiz.baseParams["ids"] = ids;
+ thiz.baseParams["id"] = id;
+ });
+ diffTousseStore.load();
+ var tousseCm = new Ext.grid.ColumnModel([ /*sm,*/ {
+ id : 'id',
+ dataIndex : 'id',
+ hidden : true
+ }, {
+ header : "条码",
+ dataIndex : 'barcode',
+ width : 40,
+ menuDisabled : true
+ }, {
+ header : "状态",
+ dataIndex : 'status',
+ width : 30,
+ menuDisabled : true
+ }, {
+ header : "灭菌时间",
+ dataIndex : 'sterileEndTime',
+ width : 30,
+ menuDisabled : true
+ }, {
+ header : "发货时间",
+ dataIndex : 'invoiceSendTime',
+ width : 30,
+ menuDisabled : true
+ }, {
+ header : "签收时间",
+ dataIndex : 'signedDate',
+ width : 30,
+ menuDisabled : true
+ } ]);
+ var formWidth = 930;
+ var windowWidth = 930;
+ var windowHeight = 550;
+ diffFormObj = new top.Ext.FormPanel({
+ id : 'diffTousseForm',
+ frame : true,
+ labelSeparator : ':',
+ bodyStyle : 'padding:5px 5px 0px 5px',
+ labelAlign : 'right',
+ width : formWidth,
+ autoScroll : true,
+ labelWidth : 80,
+ items : [ new top.Ext.grid.EditorGridPanel({
+ id : 'diffTousseInstanceGrid',
+ store : diffTousseStore,
+ cm : tousseCm,
+ height : 500,
+ width : 900,
+ autoExpandColumn : 'delAction',
+ frame : false,
+ viewConfig : {
+ forceFit : true
+ },
+ bodyStyle : 'border:1px solid #afd7af'
+ //selModel : sm
+ }) ],
+ buttons : tbar
+ });
+ var diffTousseWin = new top.Ext.Window({
+ id : 'diffTousseWin',
+ layout : 'fit',
+ title : tousseName + '误差信息',
+ width : windowWidth,
+ height : windowHeight,
+ border : false,
+ modal : true,
+ plain : true,
+ items : [ diffFormObj ]
+ });
+ diffTousseWin.show();
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js
===================================================================
diff -u -r26603 -r26757
--- ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26603)
+++ ssts-web/src/main/webapp/disinfectsystem/config/xjjqzyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 26757)
@@ -410,7 +410,8 @@
{hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true},
{hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true},
- {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}
+ {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},
+ {hidden :SSTS_BaseAmountinventoryCheck_Manager,text:"基数盘点历史记录",href:WWWROOT+'/disinfectsystem/stocktakerecordmanager/inventoryrecordView.jsp?type='+inventoryTypeCodeBaseAmount,hrefTarget:linkTarget,leaf:true}
]
},{
text:"手术仪器管理",