Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/dwr/table/RecyclingRecordTableManager.java =================================================================== diff -u -r12607 -r14632 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/dwr/table/RecyclingRecordTableManager.java (.../RecyclingRecordTableManager.java) (revision 12607) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/dwr/table/RecyclingRecordTableManager.java (.../RecyclingRecordTableManager.java) (revision 14632) @@ -359,8 +359,9 @@ * 篮筐是否装满 * @return */ - public String getTousseIntoBasketAmount(String params){ - return recyclingRecordManager.getTousseIntoBasketAmount(params); + public String getTousseIntoBasketAmount(String tousseDefinitionId ,Integer amount, String params){ + JSONObject result= recyclingRecordManager.recycleTousseIntoBasket(tousseDefinitionId, amount, params); + return result.toString(); } } Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r14566 -r14632 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 14566) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 14632) @@ -624,70 +624,6 @@ } } -function materialIntoBasket(params){ - var success = true; - var msg = ""; - var jsonArray = new Array(); - var basketGroupBarcodeArray = new Array(); - DWREngine.setAsync(false); - TousseDefinitionTableManager.getTousseIncludeMaterialsWithOutDisposableGoods(params,function(result){ - var json = JSON.parse(result); - var basketGroupName = ""; - for (var i = 0; i < json.length; i++) { - var materialName = json[i].materialName; - var materialAmount = json[i].amount; - var washClassifyType = json[i].washClassifyType; -/* if(washClassifyType == ""){ - success = false; - msg = materialName+",未定义材料分类类型!" - return; - } -*/ var exist = false; - var basketBarcode = ""; - $("#basketsUl li").each(function(){ - var hideStr = $(this).find('input').val(); - var hiddenjson = JSON.parse(hideStr); - if(hiddenjson.washClassifyType == washClassifyType){ - exist = true; - basketBarcode = hiddenjson.barcode; - return false; - } - }); - if(!exist){ - success = false; - msg = "缺少装载【" + washClassifyType + "】类型的篮筐,请扫描!"; - return; - } - var len = jsonArray.length; - jsonArray[len] = {}; - jsonArray[len].materialName = materialName; - jsonArray[len].materialAmount = materialAmount; - jsonArray[len].basketBarcode = basketBarcode; - jsonArray[len].washClassifyType = washClassifyType; - //使用的篮筐 - var sigle = true; - for(var c = 0;c 1){ - //添加打开申请单选择页面选择申请单 - $("#depart").val(msg.orgUnit.name); - $("#departCode").val(msg.orgUnit.orgUnitCoding); - msgObj = msg; - openselectRecyclingApplication(); - }else if(msg.application == null || msg.application.length == 0){ - $("#depart").val(msg.orgUnit.name); - $("#departCode").val(msg.orgUnit.orgUnitCoding); - alertDiv("该科室没有申请回收。"); - } */ }else if(msg.basket != null){ //不装配的篮筐不能回收扫描 var containerStatus = msg.basketStatus; @@ -880,84 +779,16 @@ var td = ti.tousseDefinition; var orgUnitName = $('#depart').val(); var addSuccess = false; - if(td.isCleanedEntirely == '是'){ - var basketHideStr = $("#basketsUl li:first").find('input').val(); - if(basketHideStr == null || basketHideStr == ""){ - alertDiv("请扫描篮筐条码!"); - return false; - } - var item = JSON.parse(basketHideStr); - var jsonArray = new Array(); - jsonArray[0] = {}; - jsonArray[0].name = td.name; - jsonArray[0].basketBarcode = item.barcode; - - var amount = getTousseIntoBasketAmount(td.id,td.name,1,'是',jsonArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - var basketItem = { - ci_id: '', - type: '器械包', - orgUnitName: orgUnitName, - tousseName: td.name, - materialName: '', - showName: td.name, - amount: 1, - tousseAmount: 1, - basketBarcode: '', - idCardBarcode: barcode, - tousseDefinitionID: td.id, - basketGroupBarcodes: '' - }; - addBasketItemElement(basketItem); - addSuccess = true; - }else{ - var params = "{tousseDefinitionID:" + td.id + ",tousseName:'" + td.name + "'}"; - var obj = materialIntoBasket(params); - var success = obj.success; - var jsonArray = obj.materials; - if(success){ - //篮筐上限验证 - var dataArray = new Array(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - var d_len = dataArray.length; - dataArray[d_len] = {}; - dataArray[d_len].name = item.materialName; - dataArray[d_len].basketBarcode = item.basketBarcode; - } - var amount = getTousseIntoBasketAmount(td.id,td.name,1,'否',dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - var basketItem = { - ci_id: '', - type: '材料', - orgUnitName: orgUnitName, - tousseName: td.name, - materialName: item.materialName, - showName: item.materialName, - amount: item.materialAmount, - tousseAmount: 1, - basketBarcode: item.basketBarcode, - idCardBarcode: barcode, - tousseDefinitionID: td.id, - basketGroupBarcodes:obj.basketGroupBarcodes - }; - addBasketItemElement(basketItem); - } - addSuccess = true; - }else{ - alertDiv(obj.msg); - } - } - if(addSuccess){ + + var basketHideStr = $("#basketsUl li:first").find('input').val(); + if(basketHideStr == null || basketHideStr == ""){ + alertDiv("请扫描篮筐条码!"); + return false; + } + + var loadedAmount = tousseIntoBasketFunction(td.id,td.name,1,td.isCleanedEntirely,orgUnitName,barcode); + + if(loadedAmount > 0){ var tousseIsExist = false; $('#tousseItemTable').children().first().children().each(function(i,element){ if($('#tousseName'+i).val() == td.name && $('#deleted'+i).val() == '0'){ @@ -990,8 +821,9 @@ noticeIdCardUseAmount(msg.idCardUseAmount); if(msg.isTousseNeedMaintain != null && msg.isTousseNeedMaintain == true){ alertDiv('\'' + msg.tousseInstance.tousseDefinition.name + '\'' + '需要保养了.'); - } - } + } + } + //记住扫描的标志牌 $('#tousseItemTable').children().first().children().each(function(i,element){ if($('#tousseName'+i).val() == td.name && $('#deleted'+i).val() == '0'){ @@ -1385,76 +1217,101 @@ return JSON.stringify(json); } -function getScanedGoods(barcode){ - var scanedGoodsArray = new Array(); +function getScanedGoods(isCleanedEntirely){ + var basketJsonArray = new Array(); $("#basketsUl li").each(function(){ var hideStr = $(this).find('input').val(); var hiddenjson = JSON.parse(hideStr); - if(hiddenjson.barcode == barcode){ - $(this).find('dl').children().each(function(i,element){ - if($(this).attr('type') == 'hidden'){ - var itemJson = $(this).val(); - var json = JSON.parse(itemJson); - if(json.classifiedItemId == ""){ - var len = scanedGoodsArray.length; - scanedGoodsArray[len] = {}; - var type = json.type; - var name = json.tousseName; - if(type == '材料'){ - name = json.materialName; - } - scanedGoodsArray[len].name = name; - scanedGoodsArray[len].type = json.type; - scanedGoodsArray[len].amount = json.amount; + + var scanedGoodsArray = new Array(); + + $(this).find('dl').children().each(function(i,element){ + if($(this).attr('type') == 'hidden'){ + var itemJson = $(this).val(); + var json = JSON.parse(itemJson); + if(json.classifiedItemId == ""){ + var type = json.type; + var name = json.tousseName; + if(type == '材料'){ + name = json.materialName; } - } - }); - } + scanedGoodsArray.push({ + name:name, + tousseDefinitionID:json.tousseDefinitionID, + type:json.type, + amount:json.amount + }); + } + } + }); + + basketJsonArray.push({ + barcode : hiddenjson.barcode, + washClassifyType : hiddenjson.washClassifyType, + scanedGoods : scanedGoodsArray + }); + + if(isCleanedEntirely == "是"){ + return false; + } }); - return scanedGoodsArray; + return basketJsonArray; } -function getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,jsonArray){ - var params = {}; - params.tousseName = tousseName; - params.tousseDefinitionID = tousseDefinitionID; - params.tousseAmount = amount; - params.isCleanedEntirely = isCleanedEntirely; - var dataArray = new Array(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; +function tousseIntoBasketFunction(tousseDefinitionID,tousseName,recycleAmount,isCleanedEntirely,orgUnitName,idCardBarcode){ + var params = getScanedGoods(isCleanedEntirely); + var loadedAmount = 0; + DWREngine.setAsync(false); + RecyclingRecordTableManager.getTousseIntoBasketAmount(tousseDefinitionID,recycleAmount,JSON.stringify(params),function(result){ + var jsonObj = JSON.parse(result); + loadedAmount = jsonObj.success; - var d_len = dataArray.length; - var isExist = false; - var tmp_index = null; - for(var j = 0;j < d_len;j++){ - if(dataArray[j].barcode == item.basketBarcode){ - isExist = true; - tmp_index = j; + if(!jsonObj.success){ + alertDiv(jsonObj.msg); + }else{ + var data = jsonObj.data; + loadedAmount = data.amount; + if(isCleanedEntirely == "是"){ + var basketItem = { + ci_id: "", + type: '器械包', + orgUnitName: orgUnitName, + tousseName: tousseName, + tousseDefinitionID: tousseDefinitionID, + materialName: "", + showName: tousseName, + amount: loadedAmount, + tousseAmount: recycleAmount, + basketBarcode: "", + idCardBarcode: idCardBarcode, + basketGroupBarcodes: '' + }; + addBasketItemElement(basketItem); + }else{ + var materials = data.materials; + for(var i = 0;i < materials.length;i++){ + var item = materials[i]; + var basketItem = { + ci_id: "", + type: '材料', + orgUnitName: orgUnitName, + tousseName: tousseName, + tousseDefinitionID: tousseDefinitionID, + materialName: item.materialName, + showName: item.materialName, + amount: item.materialAmount, + tousseAmount: recycleAmount, + basketBarcode: item.basketBarcode, + idCardBarcode: idCardBarcode, + basketGroupBarcodes:item.basketGroupBarcodes + }; + addBasketItemElement(basketItem); + } } } - if(!isExist){ - dataArray[d_len] = {}; - dataArray[d_len].barcode = item.basketBarcode; - dataArray[d_len].scanedGoods = getScanedGoods(item.basketBarcode); - dataArray[d_len].goodsInfo = new Array(); - dataArray[d_len].goodsInfo[0] = {}; - dataArray[d_len].goodsInfo[0].name = item.name; - }else{ - var le = dataArray[tmp_index].goodsInfo.length; - dataArray[tmp_index].goodsInfo[le] = {}; - dataArray[tmp_index].goodsInfo[le].name = item.name; - } - } - params.data = dataArray; - DWREngine.setAsync(false); - var amount; - RecyclingRecordTableManager.getTousseIntoBasketAmount(JSON.stringify(params),function(result){ - var j = JSON.parse(result); - amount = j.loadedAmount; }); DWREngine.setAsync(true); - return amount; + return loadedAmount; } //将器械包放入篮筐中 @@ -1535,100 +1392,17 @@ if(amount == 0){ alertDiv('没有可以放入篮筐的器械包。'); }else{ - if(isCleanedEntirely == '是'){ - //获取最顶端的篮筐 - var basketHideStr = $("#basketsUl li:first").find('input').val(); - var item = JSON.parse(basketHideStr); - var basketId = item.classifyBasketId; - var tmpBasketBarcode = item.barcode; - if(amount > 0){ - //已入筐数量 - var dataArray = new Array(); - dataArray[0] = {}; - dataArray[0].basketBarcode = tmpBasketBarcode; - dataArray[0].name = tousseName; - amount = getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - } - var basketItem = { - ci_id: "", - type: '器械包', - orgUnitName: orgUnitName, - tousseName: tousseName, - tousseDefinitionID: tousseDefinitionID, - materialName: "", - showName: tousseName, - amount: amount, - tousseAmount: amount, - basketBarcode: "", - idCardBarcode: "", - basketGroupBarcodes: '' - }; - addBasketItemElement(basketItem); - $('#loadedAmount'+row).val(parseInt(amount,10)+parseInt($('#loadedAmount'+row).val(),10)); - //丢失报损器械 + var loadedAmount = tousseIntoBasketFunction(tousseDefinitionID,tousseName,amount,isCleanedEntirely,orgUnitName,""); + + if(loadedAmount > 0){ + $('#loadedAmount'+row).val(parseInt(loadedAmount,10)+parseInt($('#loadedAmount'+row).val(),10)); + //丢失报损器械 if(isIDCard == '是'){ - setIdCardErrorIntoBasketAmount(row,amount); + setIdCardErrorIntoBasketAmount(row,loadedAmount); } //相关器械包样式变更以区分是否已入筐 - $("#loadedAmount" + row).css("background","#b7d9a5"); - - inputSuccess = true; - }else{ - var params = "{tousseDefinitionID:" + tousseDefinitionID + ",tousseName:'" + tousseName + "'}"; - var obj = materialIntoBasket(params); - var jsonArray = obj.materials; - if(obj.success){ - //篮筐上限验证 - var dataArray = new Array(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - var d_len = dataArray.length; - dataArray[d_len] = {}; - dataArray[d_len].name = item.materialName; - dataArray[d_len].basketBarcode = item.basketBarcode; - } - amount = getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - - var orgUnitName = $('#depart').val(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - var basketItem = { - ci_id: "", - type: '材料', - orgUnitName: orgUnitName, - tousseName: tousseName, - tousseDefinitionID: tousseDefinitionID, - materialName: item.materialName, - showName: item.materialName, - amount: (item.materialAmount*amount), - tousseAmount: amount, - basketBarcode: item.basketBarcode, - idCardBarcode: '', - basketGroupBarcodes:obj.basketGroupBarcodes - }; - addBasketItemElement(basketItem); - } - $('#loadedAmount'+row).val(parseInt(amount,10)+parseInt($('#loadedAmount'+row).val(),10)); - //丢失报损器械 - if(isIDCard == '是'){ - setIdCardErrorIntoBasketAmount(row,amount); - } - //相关器械包样式变更以区分是否已入筐 - $('#loadedAmount'+row).css("background","#b7d9a5"); - - inputSuccess = true; - }else{ - alertDiv(obj.msg); - } - } + $("#loadedAmount" + row).css("background","#b7d9a5"); + } } }else{ alertDiv('请先扫描篮筐条码。'); @@ -2096,7 +1870,7 @@ var data = getUnCleanedEntirelyTousseInfo(); if(data != "[]"){ var url = WWWROOT+'/disinfectsystem/touchScreen/recycle/customIntoBasket.jsp?data='+data+'&resolution=1980'; - var style='menubar=no,location=no,directories=no,toolbar=no,statusbar=no,resizable=yes,top=100,left=100,width=1400,height=800,scrollbars=null'; + var style='menubar=no,location=no,directories=no,toolbar=no,statusbar=no,resizable=yes,top=100,left=100,width=1400,height=800,scrollbars=null'; var popwin=window.open(url,"customIntoBasket",style); }else{ alertDiv("没有符合条件待装载的物品!"); @@ -2153,14 +1927,8 @@ var tousseDefinitionID = data[j].tousseDefinitionID; var tousseIdCardBarcode = data[j].idCardBarcode; var basketGroupBarcodeArray = new Array(); - //篮筐上限验证 - var dataArray = new Array(); for(var i = 0;i < jsonArray.length;i++){ var item = jsonArray[i]; - var d_len = dataArray.length; - dataArray[d_len] = {}; - dataArray[d_len].name = item.materialName; - dataArray[d_len].basketBarcode = item.basketBarcode; var sigle = true; var b_len = basketGroupBarcodeArray.length; for(var n = 0;n < b_len;n++){ @@ -2188,12 +1956,6 @@ } } basketGroupBarcodeArray.sort(); - var amount = getTousseIntoBasketAmount(tousseDefinitionID,tousseName,recycleAmount,'否',dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - var orgUnitName = $('#depart').val(); for(var i = 0;i < jsonArray.length;i++){ var item = jsonArray[i]; Index: ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/TousseIntoBasketRestrictionsTests.java =================================================================== diff -u -r14107 -r14632 --- ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/TousseIntoBasketRestrictionsTests.java (.../TousseIntoBasketRestrictionsTests.java) (revision 14107) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/TousseIntoBasketRestrictionsTests.java (.../TousseIntoBasketRestrictionsTests.java) (revision 14632) @@ -36,23 +36,6 @@ makeActiveUser("cssduser1"); } - - /** - * { - tousseName:'胸腔穿刺包', - tousseAmount:5, - isCleanedEntirely:'否', - data:[ - { - barcode:'010000130', //篮筐条码 - scanedGoods:[{name:'剪刀',type:'材料',amount:3}], //已入当前篮筐的物品 - goodsInfo:[{name:'剪刀'},{name:'镊子'}] //待入到当前篮筐的物品 - } - ] - } - * - */ - // Test开胸包 整包清洗 篮筐上限5; // Test开口包 整包清洗 无篮筐上限 // 清洗筐 019000001 @@ -62,12 +45,15 @@ prepareData(); TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); //空篮筐 - String params = "{tousseName:'Test开胸包',tousseDefinitionID:"+td_Test开胸包.getId()+",tousseAmount:3,isCleanedEntirely:'是',data:[{barcode:'019000001',scanedGoods:[{name:'Test开口包',type:'器械包',amount:5}],goodsInfo:[{name:'Test开胸包'}]}]}"; - String result = recyclingRecordManager.getTousseIntoBasketAmount(params); - assertNotNull(result); - JSONObject obj = JSONObject.fromObject(result); - assertEquals(3, obj.optInt("loadedAmount")); + String params = "[{barcode:'019000001',scanedGoods:[{name:'Test开口包',type:'器械包',amount:5}]}]"; + JSONObject result = recyclingRecordManager.recycleTousseIntoBasket("" + td_Test开胸包.getId(),3,params); + boolean success = result.optBoolean("success"); + assertEquals(true, success); + JSONObject data = result.optJSONObject("data"); + + assertEquals(3, data.optInt("amount")); + ClassifyBasket basket = new ClassifyBasket(); basket.setContainerBarcode("019000001"); basket.setContainerName("清洗筐116"); @@ -92,13 +78,13 @@ ObjectDao.save(basket); //篮筐内已经放入物品占80%体积,继续放60%的东西 - String params2 = "{tousseName:'Test开胸包',tousseDefinitionID:"+td_Test开胸包.getId()+",tousseAmount:3,isCleanedEntirely:'是',data:[{barcode:'019000001',scanedGoods:[{name:'Test开胸包',type:'器械包',amount:1},{name:'Test开口包',type:'器械包',amount:3}],goodsInfo:[{name:'Test开胸包'}]}]}"; - String result2 = recyclingRecordManager.getTousseIntoBasketAmount(params2); - assertNotNull(result2); - JSONObject obj2 = JSONObject.fromObject(result2); - assertEquals(1, obj2.optInt("loadedAmount")); + String params2 = "[{barcode:'019000001',scanedGoods:[{name:'Test开胸包',type:'器械包',amount:1},{name:'Test开口包',type:'器械包',amount:3}]}]"; + JSONObject result2 = recyclingRecordManager.recycleTousseIntoBasket("" + td_Test开胸包.getId(),3,params2); + JSONObject data2 = result2.optJSONObject("data"); + assertEquals(1, data2.optInt("amount")); + ClassifyBasket basket2 = beCleanItemManager.getUnWashedBasketByBarcode("019000001"); ClassifiedItem item2 = new ClassifiedItem(); item2.setAmount(2); @@ -110,17 +96,16 @@ ObjectDao.saveOrUpdate(basket2); //篮筐已满是否还能继续放东西 - String params3 = "{tousseName:'Test开胸包',tousseDefinitionID:"+td_Test开胸包.getId()+",tousseAmount:3,isCleanedEntirely:'是',data:[{barcode:'019000001',scanedGoods:[{name:'Test开口包',type:'器械包',amount:3}],goodsInfo:[{name:'Test开胸包'}]}]}"; - String result3 = recyclingRecordManager.getTousseIntoBasketAmount(params3); - assertNotNull(result3); - JSONObject obj3 = JSONObject.fromObject(result3); - assertEquals(0, obj3.optInt("loadedAmount")); + String params3 = "[{barcode:'019000001',scanedGoods:[{name:'Test开口包',type:'器械包',amount:3}]}]"; + JSONObject result3 = recyclingRecordManager.recycleTousseIntoBasket("" + td_Test开胸包.getId(),3,params3); + boolean success2 = result3.optBoolean("success"); + assertEquals(false, success2); - String params4 = "{tousseName:'Test开口包',tousseDefinitionID:"+ td2 .getId()+",tousseAmount:3,isCleanedEntirely:'是',data:[{barcode:'019000001',scanedGoods:[],goodsInfo:[{name:'Test开口包'}]}]}"; - String result4 = recyclingRecordManager.getTousseIntoBasketAmount(params4); - assertNotNull(result4); - JSONObject obj4 = JSONObject.fromObject(result4); - assertEquals(3, obj4.optInt("loadedAmount")); + String params4 = "[{barcode:'019000001',scanedGoods:[]}]"; + JSONObject result4 = recyclingRecordManager.recycleTousseIntoBasket(""+td2 .getId(),3,params4); + + JSONObject obj4 = result4.optJSONObject("data"); + assertEquals(3, obj4.optInt("amount")); } @@ -141,19 +126,19 @@ prepareData(); //当前发的物品占篮筐体积 1号篮筐 0.35 2号篮筐 0.3 TousseDefinition td_Test开颅包 = tousseDefinitionManager.getTousseDefinitionByName("Test开颅包"); - String params = "{tousseName:'Test开颅包',tousseDefinitionID:"+td_Test开颅包.getId()+",tousseAmount:3,isCleanedEntirely:'否',data:[{barcode:'019000001',scanedGoods:[],goodsInfo:[{name:'Test钳子'},{name:'Test棉球'}]},{barcode:'019000002',scanedGoods:[],goodsInfo:[{name:'Test胆道探条'},{name:'Test静脉拉钩'}]}]}"; - String result = recyclingRecordManager.getTousseIntoBasketAmount(params); + String params = "[{barcode:'019000001',scanedGoods:[]},{barcode:'019000002',scanedGoods:[]}]"; + JSONObject result = recyclingRecordManager.recycleTousseIntoBasket(""+td_Test开颅包.getId(),3,params); assertNotNull(result); - JSONObject obj = JSONObject.fromObject(result); - assertEquals(3, obj.optInt("loadedAmount")); + JSONObject obj = result.optJSONObject("data"); + assertEquals(3, obj.optInt("amount")); setDBClassifyBasket(); //再次入筐后体积 1号篮筐 1.2834 2号篮筐 1.1 所以物品只能入筐5个;入五个后:1号篮筐体积:0.9333,2号筐:0.8 - String params2 = "{tousseName:'Test开颅包',tousseDefinitionID:"+td_Test开颅包.getId()+",tousseAmount:8,isCleanedEntirely:'否',data:[{barcode:'019000001',scanedGoods:[],goodsInfo:[{name:'Test钳子'},{name:'Test棉球'}]},{barcode:'019000002',scanedGoods:[],goodsInfo:[{name:'Test胆道探条'},{name:'Test静脉拉钩'}]}]}"; - String result2 = recyclingRecordManager.getTousseIntoBasketAmount(params2); + String params2 = "[{barcode:'019000001',scanedGoods:[]},{barcode:'019000002',scanedGoods:[]}]"; + JSONObject result2 = recyclingRecordManager.recycleTousseIntoBasket(""+td_Test开颅包.getId(),8,params2); assertNotNull(result2); - JSONObject obj2 = JSONObject.fromObject(result2); - assertEquals(5, obj2.optInt("loadedAmount")); + boolean success = result2.optBoolean("success"); + assertEquals(false, success); updateClassifyBasket(); //在往1号筐里丢一个 小于 1-0.9334 体积的包 @@ -163,11 +148,11 @@ td.setIntoBasketMaxAmount(60); objectDao.saveOrUpdate(td); //0.0667 - String params3 = "{tousseName:'腰椎穿刺包',tousseDefinitionID:"+td.getId()+",tousseAmount:4,isCleanedEntirely:'是',data:[{barcode:'019000001',scanedGoods:[],goodsInfo:[{name:'腰椎穿刺包'}]}]}"; - String result3 = recyclingRecordManager.getTousseIntoBasketAmount(params3); + String params3 = "[{barcode:'019000001',scanedGoods:[]}]"; + JSONObject result3 = recyclingRecordManager.recycleTousseIntoBasket(""+td.getId(),4,params3); assertNotNull(result3); - JSONObject obj3 = JSONObject.fromObject(result3); - assertEquals(3, obj3.optInt("loadedAmount")); + JSONObject obj3 = result3.optJSONObject("data"); + assertEquals(3, obj3.optInt("amount")); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java =================================================================== diff -u -r14149 -r14632 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 14149) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 14632) @@ -31,7 +31,7 @@ Map getRecyclingRecordDepartAndCodeById(String id); - public String getTousseIntoBasketAmount(String params); + public JSONObject recycleTousseIntoBasket(String tousseDefinitionId, Integer amount, String params); public void setMaterialRecycleAmount(String params); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r14605 -r14632 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 14605) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 14632) @@ -4,6 +4,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -19,6 +20,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; import org.apache.commons.collections4.map.MultiValueMap; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -1905,134 +1907,220 @@ return deleteRecord; } + /** - * @param - { - tousseName:'胸腔穿刺包', - tousseDefinitionID:100, - tousseAmount:5, - isCleanedEntirely:'否', - data:[ - { - barcode:'010000130', //篮筐条码 - scanedGoods:[{name:'剪刀',type:'材料',amount:3}], //已入当前篮筐的物品 - goodsInfo:[{name:'剪刀'},{name:'镊子'}] //待入到当前篮筐的物品 - } - ] - } - * @return - { - success:false, - loadedAmount:3 //可放入篮筐的器械包数量 - } + * 器械包入筐 + * @param td 器械包定义 + * @param amount 入筐数量 + * @param params 页面扫描的篮筐及篮筐内物品 + * [ + * { + barcode : '010000100', + washClassifyType : "平面类", + scanedGoods : [ + { + name:'镊子[14cm]', + tousseDefinitionID:22, + type:'材料', + amount:1 + },{ + name:'碗盘', + tousseDefinitionID:23, + type:'材料', + amount:2 + } + ] + } + * ] */ - public String getTousseIntoBasketAmount(String params){ + public JSONObject recycleTousseIntoBasket(String tousseDefinitionId, Integer amount, String params){ + String msg = ""; + JSONObject data = new JSONObject(); - Integer loadedAmount = 0; - if(StringUtils.isNotBlank(params)){ - JSONObject obj = JSONObject.fromObject(params); + if(!DatabaseUtil.isPoIdValid(tousseDefinitionId) || StringUtils.isBlank(params) || amount == null){ + return buildUnSuccessMsg("参数错误!"); + } + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionById(tousseDefinitionId); + if(td == null){ + return buildUnSuccessMsg("ID=" + tousseDefinitionId + "的器械包定义不存在!"); + } + + JSONArray basketArray = JSONArray.fromObject(params); + if(basketArray.size() == 0){ + return buildUnSuccessMsg("请扫描篮筐条码!"); + } + Map barcodeToPercentageMap = new HashMap(); + //拆包清洗 + if(TousseDefinition.STR_NO.equals(td.getIsCleanedEntirely())){ + List msList = td.getMaterialInstances(); + if(msList == null){ + return buildUnSuccessMsg("该器械包内无器械可回收!"); + } + //获取已扫描的篮筐已使用的容积 + getBasketUsedVolume(barcodeToPercentageMap, basketArray); - String tousseName = obj.optString("tousseName"); - String tousseDefinitionID = obj.optString("tousseDefinitionID"); - String isCleanedEntirely = obj.optString("isCleanedEntirely"); + //篮筐分类类型map + Map washClassifyTypeToBasketJsonMap = new HashMap(); + buildWashClassifyTypeMap(basketArray,washClassifyTypeToBasketJsonMap); - Map percentageMap = new HashMap(); - Map barcodeMap = new HashMap(); + JSONArray materials = new JSONArray(); - JSONArray array = obj.optJSONArray("data"); - - //验证待入筐的物品是否可以入筐 - Integer waitLoadAmount = obj.optInt("tousseAmount"); - TousseDefinition td = tousseDefinitionManager.getTousseDefinitionById(tousseDefinitionID); - if(td == null){ - td = tousseDefinitionManager.getTousseDefinitionByName(tousseName); - } - if(td != null){ - //整包清洗 - if("是".equals(isCleanedEntirely)){ - Integer maxAmount = td.getIntoBasketMaxAmount(); - if(maxAmount != null && maxAmount > 0){ + Map basketGroupBarcodeMap = new HashMap(); + for (MaterialInstance mi : msList) { + MaterialDefinition md = mi.getMaterialDefinition(); + if(md == null){ + return buildUnSuccessMsg(mi.getMaterialName() + ",材料定义不存在!"); + } + String md_washClassifyType = md.getWashClassifyType() == null ? "" : md.getWashClassifyType(); + + JSONArray basketJson = washClassifyTypeToBasketJsonMap.get(md_washClassifyType); + + if(basketJson == null){ + return buildUnSuccessMsg("缺少装载【" + md_washClassifyType + "】类型的篮筐,请扫描!"); + } + //材料入筐总数量 + Integer totalIntoBasketAmount = mi.getCount() * amount; + for(int i = 0 ;i < basketJson.size();i++){ + + if(totalIntoBasketAmount <= 0){ + break; + } + + JSONObject basketItem = basketJson.optJSONObject(i); + String basketBarcode = basketItem.optString("barcode"); + String washClassifyType = basketItem.optString("washClassifyType"); + + if(washClassifyType.equals(md_washClassifyType)){ - getBasketUsedVolume(percentageMap, barcodeMap, array); - - String barcode = barcodeMap.get(tousseName); - if(StringUtils.isNotBlank(barcode)){ - Double usedPercentage = percentageMap.get(barcode); - if(usedPercentage != null && usedPercentage < 1){ - Double toussePercentage = MathTools.divide(1,maxAmount,4); - Integer canLoadAmount = Double.valueOf(MathTools.divide(1 - usedPercentage,toussePercentage,4)).intValue(); - if(canLoadAmount > waitLoadAmount){ - loadedAmount = waitLoadAmount; - }else{ - loadedAmount = canLoadAmount; - } + //材料有设置入筐上线 + if(md.getIntoBasketMaxAmount() != null && md.getIntoBasketMaxAmount() > 0){ + + Double percentage = barcodeToPercentageMap.get(basketBarcode); + + if(percentage >= 1){ + continue; } - } - }else{ - loadedAmount = waitLoadAmount; - } - //拆包清洗 - }else{ - List ms = td.getMaterialInstances(); - Map materialMap = new HashMap(); - if(ms != null){ - for (MaterialInstance mi : ms) { - MaterialDefinition md = mi.getMaterialDefinition(); - if(md != null){ - if(md.getIntoBasketMaxAmount() != null && md.getIntoBasketMaxAmount() > 0){ - materialMap.put(md, mi.getCount()); - } + //获取入筐数量 + Double basketUnUsedVolume = MathTools.sub(1,percentage).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); + Integer thisBasketCanIntoAmount = (int)(basketUnUsedVolume / MathTools.divide(1, md.getIntoBasketMaxAmount(), 4)); + + if(thisBasketCanIntoAmount > totalIntoBasketAmount){ + thisBasketCanIntoAmount = totalIntoBasketAmount; } - } - } - if(materialMap.size() > 0){ + + if(thisBasketCanIntoAmount > 0){ + Double newPercentage = new BigDecimal(percentage + MathTools.divide(thisBasketCanIntoAmount, md.getIntoBasketMaxAmount(), 4)) + .setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); - getBasketUsedVolume(percentageMap, barcodeMap, array); - - //拆包清洗只能一个一个的添加,因为装载数量是以包为单位 - for (int j = 0; j < waitLoadAmount; j++) { - boolean pass = true; - for (MaterialDefinition md : materialMap.keySet()) { - Integer amount = materialMap.get(md); - String barcode = barcodeMap.get(CssdUtils.getMaterialName(md)); - Double percentage = percentageMap.get(barcode); - if(percentage != null){ - Double newPercentage = new BigDecimal(percentage + MathTools.divide(amount, md.getIntoBasketMaxAmount(), 4)) - .setScale(4,BigDecimal.ROUND_HALF_UP) - .doubleValue(); - if (newPercentage > 1) { - pass = false; - break; - }else{ - percentageMap.put(barcode, newPercentage); - } - } + barcodeToPercentageMap.put(basketBarcode, newPercentage); + + buildJsonObject(materials, mi, thisBasketCanIntoAmount, basketBarcode,washClassifyType); + + basketGroupBarcodeMap.put(basketBarcode, basketBarcode); + + totalIntoBasketAmount -= thisBasketCanIntoAmount; } - if(pass){ - loadedAmount++; - }else{ - break; - } + }else{ + buildJsonObject(materials, mi, mi.getCount() * amount, basketBarcode,washClassifyType); + totalIntoBasketAmount = 0; + basketGroupBarcodeMap.put(basketBarcode, basketBarcode); + break; } - }else{ - loadedAmount = waitLoadAmount; } } + //部分器械还未入筐 + if(totalIntoBasketAmount > 0){ + return buildUnSuccessMsg("部分器械未能入筐,缺少装载【" + md_washClassifyType + "】类型的篮筐,请扫描!"); + } } + Object[] keys = basketGroupBarcodeMap.keySet().toArray(); + Arrays.sort(keys); + String basketGroupBarcodes =StringUtils.join(keys, ";"); + + for(int i = 0;i < materials.size() ; i++){ + JSONObject materialJson = materials.optJSONObject(i); + materialJson.put("basketGroupBarcodes", basketGroupBarcodes); + } + data.put("amount", amount); + data.put("materials", materials); + //整包清洗 + }else{ + Integer maxAmount = td.getIntoBasketMaxAmount(); + + Integer loadedAmount = 0; + if(maxAmount != null && maxAmount > 0){ + getBasketUsedVolume(barcodeToPercentageMap, basketArray); + JSONObject basketItem0 = basketArray.optJSONObject(0); + String basketBarcode = basketItem0.optString("barcode"); + if(StringUtils.isNotBlank(basketBarcode)){ + Double usedPercentage = barcodeToPercentageMap.get(basketBarcode); + if(usedPercentage != null && usedPercentage < 1){ + Double toussePercentage = MathTools.divide(1,maxAmount,4); + Double basketUnUsedVolume = MathTools.sub(1,usedPercentage).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); + Integer canLoadAmount = Double.valueOf(MathTools.divide(basketUnUsedVolume,toussePercentage,4)).intValue(); + if(canLoadAmount > amount){ + loadedAmount = amount; + }else{ + loadedAmount = canLoadAmount; + } + } + } + }else{ + loadedAmount = amount; + } + if(loadedAmount == 0){ + return buildUnSuccessMsg("该篮筐器械包数量已达到系统设定的上限数量,不能入筐。"); + } + data.put("tousseName", td.getName()); + data.put("tousseDefinitionID", td.getId()); + data.put("amount", loadedAmount); } + JSONObject obj = new JSONObject(); - obj.put("loadedAmount", loadedAmount); - return obj.toString(); + obj.put("success", true); + obj.put("msg", msg); + obj.put("data", data); + return obj; } - + + private void buildWashClassifyTypeMap(JSONArray basketArray, + Map washClassifyTypeToBasketJsonMap) { + for (int i = 0; i < basketArray.size(); i++) { + JSONObject json = basketArray.optJSONObject(i); + String washClassifyType = json.optString("washClassifyType"); + JSONArray washClassifyTypeArray = washClassifyTypeToBasketJsonMap.get(washClassifyType); + if(washClassifyTypeArray == null){ + washClassifyTypeArray = new JSONArray(); + washClassifyTypeToBasketJsonMap.put(washClassifyType, washClassifyTypeArray); + } + washClassifyTypeArray.add(json); + } + } + + private JSONObject buildUnSuccessMsg(String msg){ + JSONObject obj = new JSONObject(); + obj.put("success", false); + obj.put("msg", msg); + return obj; + } + + private void buildJsonObject(JSONArray materials, MaterialInstance mi, Integer amount, String basketBarcode,String washClassifyType) { + JSONObject materialJson = new JSONObject(); + materialJson.put("materialName", CssdUtils.getMaterialName(mi.getMaterialDefinition())); + materialJson.put("materialAmount", amount); + materialJson.put("basketBarcode", basketBarcode); + materialJson.put("washClassifyType", StringUtils.isBlank(washClassifyType) ? "" : washClassifyType); + materials.add(materialJson); + } + /** * 篮筐已经使用的容积 * @param percentageMap * @param barcodeMap * @param array */ - private void getBasketUsedVolume(Map percentageMap, - Map barcodeMap, JSONArray array) { + private void getBasketUsedVolume(Map percentageMap, JSONArray array) { for (int i = 0; i < array.size(); i++) { JSONObject json = array.optJSONObject(i); String barcode = json.optString("barcode"); @@ -2071,15 +2159,6 @@ percentage = new BigDecimal(percentage + scanedPercentage).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue(); } } - - JSONArray goodsInfo = json.optJSONArray("goodsInfo"); - if(goodsInfo != null){ - for (int j = 0; j < goodsInfo.size(); j++) { - JSONObject item = goodsInfo.optJSONObject(j); - String goodsName = item.optString("name"); - barcodeMap.put(goodsName, barcode); - } - } percentageMap.put(barcode, percentage); } } @@ -2090,24 +2169,26 @@ for (int i = 0; i < array.size(); i++) { JSONObject jsonItem = array.getJSONObject(i); String name = jsonItem.optString("name"); + String tousseDefinitionID = jsonItem.optString("tousseDefinitionID"); String type = jsonItem.optString("type"); Integer amount = jsonItem.optInt("amount"); Integer intoBasketMaxAmount = 0; if("材料".equals(type)){ - String materialName = name; - String sp = null; - int _index = materialName.lastIndexOf("["); - if(_index != -1){ - sp = name.substring((_index+1),name.length()-1); - materialName = name.substring(0,_index); - } + JSONObject obj = CssdUtils.getGoodsNameAndSp(name); + String materialName = obj.optString("materialName"); + String sp = obj.optString("specification"); MaterialDefinition md = materialDefinitionManager.getMaterialDefinitionByName(materialName, sp); if(md != null){ intoBasketMaxAmount = md.getIntoBasketMaxAmount(); } }else{ - TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName(name); + TousseDefinition td = null; + if(StringUtils.isNotBlank(tousseDefinitionID)){ + td = tousseDefinitionManager.getTousseDefinitionById(tousseDefinitionID); + }else{ + td = tousseDefinitionManager.getTousseDefinitionByName(name); + } if(td != null){ intoBasketMaxAmount = td.getIntoBasketMaxAmount(); } Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/expressRecycleForTouchScreen.jsp =================================================================== diff -u -r14250 -r14632 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/expressRecycleForTouchScreen.jsp (.../expressRecycleForTouchScreen.jsp) (revision 14250) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/expressRecycleForTouchScreen.jsp (.../expressRecycleForTouchScreen.jsp) (revision 14632) @@ -512,70 +512,6 @@ } } -function materialIntoBasket(params){ - var success = true; - var msg = ""; - var jsonArray = new Array(); - var basketGroupBarcodeArray = new Array(); - DWREngine.setAsync(false); - TousseDefinitionTableManager.getTousseIncludeMaterialsWithOutDisposableGoods(params,function(result){ - var json = JSON.parse(result); - var basketGroupName = ""; - for (var i = 0; i < json.length; i++) { - var materialName = json[i].materialName; - var materialAmount = json[i].amount; - var washClassifyType = json[i].washClassifyType; - /* if(washClassifyType == ""){ - success = false; - msg = materialName+",未定义材料分类类型!" - return; - } */ - var exist = false; - var basketBarcode = ""; - $("#basketsUl li").each(function(){ - var hideStr = $(this).find('input').val(); - var hiddenjson = JSON.parse(hideStr); - if(hiddenjson.washClassifyType == washClassifyType){ - exist = true; - basketBarcode = hiddenjson.barcode; - return false; - } - }); - if(!exist){ - success = false; - msg = "缺少装载【" + washClassifyType + "】类型的篮筐,请扫描!"; - return; - } - var len = jsonArray.length; - jsonArray[len] = {}; - jsonArray[len].materialName = materialName; - jsonArray[len].materialAmount = materialAmount; - jsonArray[len].basketBarcode = basketBarcode; - jsonArray[len].washClassifyType = washClassifyType; - //使用的篮筐 - var sigle = true; - for(var c = 0;c 0){ - //已入筐数量 - var dataArray = new Array(); - dataArray[0] = {}; - dataArray[0].basketBarcode = tmpBasketBarcode; - dataArray[0].name = tousseName; - amount = getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - } - addBasketItemElement("",'器械包',orgUnitName,tousseName,"",tousseName,amount,amount,"",app_id,tousseDefinitionID,""); - $('#loadedAmount'+row).val(parseInt(amount,10)+parseInt($('#loadedAmount'+row).val(),10)); + var loadedAmount = tousseIntoBasketFunction(tousseDefinitionID,tousseName,amount,isCleanedEntirely,orgUnitName,app_id); + if(loadedAmount > 0){ + $('#loadedAmount'+row).val(parseInt(loadedAmount,10)+parseInt($('#loadedAmount'+row).val(),10)); if(parseInt($('#loadedAmount'+row).val(),10) == parseInt($('#recycleAmount'+row).val(),10)){ document.getElementById('showTousseName' + row).className = 'input-a-yellow'; }else{ document.getElementById('showTousseName' + row).className = 'input-a-yellow3'; } - }else{ - var param = "{tousseDefinitionID:" + tousseDefinitionID + ",tousseName:'" + tousseName + "'}"; - var obj = materialIntoBasket(param); - var success = obj.success; - var jsonArray = obj.materials; - if(success){ - //篮筐上限验证 - var dataArray = new Array(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - var d_len = dataArray.length; - dataArray[d_len] = {}; - dataArray[d_len].name = item.materialName; - dataArray[d_len].basketBarcode = item.basketBarcode; - } - amount = getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,dataArray); - if(amount <= 0){ - alertDiv('该篮筐器械包数量已达到系统设定的上限数量,不能入筐。'); - return false; - } - - var orgUnitName = $('#depart').val(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; - addBasketItemElement("",'材料',orgUnitName,tousseName,item.materialName,item.materialName,(item.materialAmount*amount),amount,item.basketBarcode,app_id,tousseDefinitionID,obj.basketGroupBarcodes); - } - $('#loadedAmount'+row).val(parseInt(amount,10)+parseInt($('#loadedAmount'+row).val(),10)); - if(parseInt($('#loadedAmount'+row).val(),10) == parseInt($('#recycleAmount'+row).val(),10)){ - document.getElementById('showTousseName' + row).className = 'input-a-yellow'; - }else{ - document.getElementById('showTousseName' + row).className = 'input-a-yellow3'; - } - }else{ - alertDiv(obj.msg); - } - } + } } }else{ alertDiv('请先扫描篮筐条码。'); @@ -921,76 +805,73 @@ return true; } -function getScanedGoods(barcode){ - var scanedGoodsArray = new Array(); +function getScanedGoods(isCleanedEntirely){ + var basketJsonArray = new Array(); $("#basketsUl li").each(function(){ var hideStr = $(this).find('input').val(); var hiddenjson = JSON.parse(hideStr); - if(hiddenjson.barcode == barcode){ - $(this).find('dl').children().each(function(i,element){ - if($(this).attr('type') == 'hidden'){ - var itemJson = $(this).val(); - var json = JSON.parse(itemJson); - if(json.classifiedItemId == ""){ - var len = scanedGoodsArray.length; - scanedGoodsArray[len] = {}; - var type = json.type; - var name = json.tousseName; - if(type == '材料'){ - name = json.materialName; - } - scanedGoodsArray[len].name = name; - scanedGoodsArray[len].type = json.type; - scanedGoodsArray[len].amount = json.amount; + + var scanedGoodsArray = new Array(); + + $(this).find('dl').children().each(function(i,element){ + if($(this).attr('type') == 'hidden'){ + var itemJson = $(this).val(); + var json = JSON.parse(itemJson); + if(json.classifiedItemId == ""){ + var type = json.type; + var name = json.tousseName; + if(type == '材料'){ + name = json.materialName; } - } - }); - } + scanedGoodsArray.push({ + name:name, + tousseDefinitionID:json.tousseDefinitionID, + type:json.type, + amount:json.amount + }); + } + } + }); + + basketJsonArray.push({ + barcode : hiddenjson.barcode, + washClassifyType : hiddenjson.washClassifyType, + scanedGoods : scanedGoodsArray + }); + + if(isCleanedEntirely == "是"){ + return false; + } }); - return scanedGoodsArray; + return basketJsonArray; } -function getTousseIntoBasketAmount(tousseDefinitionID,tousseName,amount,isCleanedEntirely,jsonArray){ - var params = {}; - params.tousseName = tousseName; - params.tousseDefinitionID = tousseDefinitionID; - params.tousseAmount = amount; - params.isCleanedEntirely = isCleanedEntirely; - var dataArray = new Array(); - for(var i = 0;i < jsonArray.length;i++){ - var item = jsonArray[i]; +function tousseIntoBasketFunction(tousseDefinitionID,tousseName,recycleAmount,isCleanedEntirely,orgUnitName,app_id){ + var params = getScanedGoods(isCleanedEntirely); + var loadedAmount = 0; + DWREngine.setAsync(false); + RecyclingRecordTableManager.getTousseIntoBasketAmount(tousseDefinitionID,recycleAmount,JSON.stringify(params),function(result){ + var jsonObj = JSON.parse(result); + loadedAmount = jsonObj.success; - var d_len = dataArray.length; - var isExist = false; - var tmp_index = null; - for(var j = 0;j < d_len;j++){ - if(dataArray[j].barcode == item.basketBarcode){ - isExist = true; - tmp_index = j; + if(!jsonObj.success){ + alertDiv(jsonObj.msg); + }else{ + var data = jsonObj.data; + loadedAmount = data.amount; + if(isCleanedEntirely == "是"){ + addBasketItemElement("",'器械包',orgUnitName,tousseName,"",tousseName,loadedAmount,loadedAmount,"",app_id,tousseDefinitionID,""); + }else{ + var materials = data.materials; + for(var i = 0;i < materials.length;i++){ + var item = materials[i]; + addBasketItemElement("",'材料',orgUnitName,tousseName,item.materialName,item.materialName,item.materialAmount,recycleAmount,item.basketBarcode,app_id,tousseDefinitionID,item.basketGroupBarcodes); + } } } - if(!isExist){ - dataArray[d_len] = {}; - dataArray[d_len].barcode = item.basketBarcode; - dataArray[d_len].scanedGoods = getScanedGoods(item.basketBarcode); - dataArray[d_len].goodsInfo = new Array(); - dataArray[d_len].goodsInfo[0] = {}; - dataArray[d_len].goodsInfo[0].name = item.name; - }else{ - var le = dataArray[tmp_index].goodsInfo.length; - dataArray[tmp_index].goodsInfo[le] = {}; - dataArray[tmp_index].goodsInfo[le].name = item.name; - } - } - params.data = dataArray; - DWREngine.setAsync(false); - var amount; - RecyclingRecordTableManager.getTousseIntoBasketAmount(JSON.stringify(params),function(result){ - var j = JSON.parse(result); - amount = j.loadedAmount; }); DWREngine.setAsync(true); - return amount; + return loadedAmount; } function submintApplication(i){