| 
					
				 | 
			
			
				@ -738,27 +738,32 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 合并和分离货道, state《---1单列货道,21合并货道的主货道,20次货道 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param cargoIds          需合并的货道id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param isMerge           true,合并,false,分解 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param isMerge           true,合并货道,false,分解货道 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String mergeAndSplitCargo(String cargoIds, Boolean isMerge, String userId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //校验货道id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(cargoIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("msg","cargoIds is null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("response", ConstantUtils.FAIL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //对cargoIds重排 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String[] cargoIdsArray = cargoIds.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //100percent,cargoCapacityChanged 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean cargoCapacityChanged = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int changedCapacity = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int changedCargoNumber = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //通过货道信息获取设备id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String deviceID = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //true,标识合并货道 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //true,标识当前操作为合并货道操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (isMerge) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //合并的所有货道集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String[] cargoIdArray = cargoIds.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            changedCargoNumber = cargoIdArray.length - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //合并的所有货道列编号--->集合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String wayerNos = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String cargoId : cargoIds.split(",")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String cargoId : cargoIdArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!StringUtils.isEmpty(cargoId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    MediicinecabinetInventory inventory = inventoryDao.findOne(cargoId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (StringUtils.isEmpty(wayerNos)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -768,9 +773,8 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean isFirst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String cargoId : cargoIds.split(",")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String cargoId : cargoIdArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!StringUtils.isEmpty(cargoId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    MediicinecabinetInventory inventory = inventoryDao.findOne(cargoId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //有药品记录下架操作 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -791,39 +795,40 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        inventoryRecordDao.save(inventoryRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    deviceID = inventory.getIdDevice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //记录合并列编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setMerge(wayerNos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //清空药品 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //清空药品-START 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setQty("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setDrugId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setDrugName(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setDrugCode(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setOrgCode(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setPrice(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //bug:13630,新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //副货道内容操作-start-------》bug:13570 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setShelfStatus("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //内容操作end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //额定库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventory.setRatedInventory(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //清空药品 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //清空药品-END 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (isFirst) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                        changedCapacity -= Integer.parseInt(inventory.getCargoCapacity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        inventory.setState("21"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        isFirst = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //累计副货道的货道容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //累计副货道的货道容量-------->变动容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        changedCapacity += Integer.parseInt(inventory.getCargoCapacity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        inventory.setState("20"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //副货道内容操作-start-------》bug:13570 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        inventory.setShelfStatus("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //内容操作end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //保存配置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    inventoryDao.save(inventory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //因为拆分,前台就传了主货道的, so就查,主货道id吧, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            MediicinecabinetInventory inventory = inventoryDao.findOne(cargoIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //所有有关分解的货道列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<MediicinecabinetInventory> list = inventoryDao.findMediicinecabinetInventoriesByLayerNoAndMerge(inventory.getLayerNo(), inventory.getMerge()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            changedCargoNumber = list.size() - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //主货道拆解 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventory.setMerge(inventory.getWayerNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //有药品记录下架操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (inventory.getOrgCode() != null && inventory.getDrugCode() != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -851,92 +856,36 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventory.setPrice(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //bug:13630,新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventory.setShelfStatus("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //额定库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventory.setRatedInventory(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //清空药品 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventory.setState("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            inventoryDao.save(inventory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean jumpFirst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            boolean jumpFirst = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (MediicinecabinetInventory mediicinecabinetInventory : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(jumpFirst) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    changedCapacity += Integer.parseInt(mediicinecabinetInventory.getCargoCapacity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jumpFirst = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jumpFirst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinecabinetInventory.setMerge(mediicinecabinetInventory.getWayerNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinecabinetInventory.setState("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                inventoryDao.save(mediicinecabinetInventory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            for (String deviceId : cargoIds.split(",")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                if(!StringUtils.isEmpty(deviceId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    MediicinecabinetInventory inventory = inventoryDao.findOne(deviceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    deviceID = inventory.getIdDevice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    inventory.setMerge(inventory.getWayerNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    inventory.setState("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    inventoryDao.save(inventory); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //计算货道数和货道容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Mediicinedevice mediicinedevice = deviceDao.findOne(deviceID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (mediicinedevice != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //重算货道数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String tempSql = "SELECT\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\tCOUNT(DISTINCT(t.id))\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "FROM\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\tt_mediicinecabinet_inventory t\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "WHERE\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\tt.id_device = '"+deviceID+"'\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "AND (t.state = '1' OR t.state = '21')"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            mediicinedevice.setAisles(String.valueOf(jdbcTemplate.queryForObject(tempSql, Integer.class))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //重算货道容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer noOnlineTotal1 = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //防止出现问题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            noOnlineTotal1 = Integer.parseInt(mediicinedevice.getCapacity()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (cargoCapacityChanged) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tempSql = "SELECT\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "\tifnull(sum(t.cargo_capacity), 0) as cargoCapacity\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "FROM\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "\tt_mediicinecabinet_inventory t\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "WHERE\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "\tt.id_device = '"+mediicinedevice.getId()+"'\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "AND t.id not in ('"+cargoIds+"')\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        "AND (t.state = '1' OR t.state = '21')"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String,Object> totalMap = jdbcTemplate.queryForMap(tempSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (totalMap != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (totalMap.get("cargoCapacity") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (isMerge) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            //合并货道,搜的是单列 货道,包含了现在要合并的内容,changedCapacity的是没了的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            noOnlineTotal1 = (int) Double.parseDouble(totalMap.get("cargoCapacity").toString() ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            //分离货道,主货道,也包含了现在恢复的主货道的容量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            noOnlineTotal1 = (int) Double.parseDouble(String.valueOf(totalMap.get("cargoCapacity"))) + changedCapacity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                mediicinedevice.setCapacity(String.valueOf(noOnlineTotal1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                deviceDao.save(mediicinedevice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (isMerge) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinedevice.setAisles(String.valueOf(Integer.parseInt(mediicinedevice.getAisles()) -  changedCargoNumber)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinedevice.setCapacity(String.valueOf(Integer.parseInt(mediicinedevice.getCapacity()) - changedCapacity)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!isMerge) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinedevice.setAisles(String.valueOf(Integer.parseInt(mediicinedevice.getAisles()) +  changedCargoNumber)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                mediicinedevice.setCapacity(String.valueOf(Integer.parseInt(mediicinedevice.getCapacity()) + changedCapacity)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            tempSql = "SELECT\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "\tifnull(sum(t.cargo_capacity), 0) as cargoCapacity\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "FROM\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "\tt_mediicinecabinet_inventory t\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "WHERE\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "\tt.id_device = '"+deviceID+"'\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    "AND (t.state = '1' OR t.state = '21')"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            Map<String,Object> totalMap = jdbcTemplate.queryForMap(tempSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            Integer noOnlineTotal1 = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            if (totalMap!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                if (totalMap.get("cargoCapacity") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    noOnlineTotal1 = (int) Double.parseDouble(totalMap.get("cargoCapacity").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            mediicinedevice.setCapacity(String.valueOf(noOnlineTotal1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            deviceDao.save(mediicinedevice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("response",ConstantUtils.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 |