wangzhinan 2 years ago
parent
commit
44f1c5d663

+ 92 - 23
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/MedicinedeviceService.java

@ -737,8 +737,8 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
    /**
     * 合并和分离货道, state《---1单列货道,21合并货道的主货道,20次货道
     * @param cargoIds
     * @param isMerge
     * @param cargoIds          需合并的货道id
     * @param isMerge           true,合并,false,分解
     * @return
     */
    public String mergeAndSplitCargo(String cargoIds, Boolean isMerge, String userId){
@ -750,7 +750,9 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
        }
        //对cargoIds重排
        String[] cargoIdsArray = cargoIds.split(",");
        //100percent,cargoCapacityChanged
        boolean cargoCapacityChanged = true;
        int changedCapacity = 0;
        String deviceID = "";
        //true,标识合并货道
        if (isMerge) {
@ -804,9 +806,12 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
                    inventory.setRatedInventory(0);
                    //清空药品
                    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");
@ -837,6 +842,7 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
                inventoryRecord.setType("4");
                inventoryRecordDao.save(inventoryRecord);
            }
            deviceID = inventory.getIdDevice();
            //清空药品
            inventory.setQty("0");
            inventory.setDrugName(null);
@ -851,7 +857,12 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
            //清空药品
            inventory.setState("1");
            inventoryDao.save(inventory);
            boolean jumpFirst = true;
            for (MediicinecabinetInventory mediicinecabinetInventory : list) {
                if(jumpFirst) {
                    changedCapacity += Integer.parseInt(mediicinecabinetInventory.getCargoCapacity());
                }
                jumpFirst = false;
                mediicinecabinetInventory.setMerge(mediicinecabinetInventory.getWayerNo());
                mediicinecabinetInventory.setState("1");
                inventoryDao.save(mediicinecabinetInventory);
@ -879,21 +890,50 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
                    "AND (t.state = '1' OR t.state = '21')";
            mediicinedevice.setAisles(String.valueOf(jdbcTemplate.queryForObject(tempSql, Integer.class)));
            //重算货道容量
            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());
            //防止出现问题
            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);
            }
//            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);
        }
@ -914,13 +954,42 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
            result.put("response", ConstantUtils.FAIL);
            return result.toJSONString();
        }
        String deviceId = null;
        int changedCargoCapacity = 0;
        for (String cargoId : cargoIds.split(",")) {
            if(!StringUtils.isEmpty(cargoId)){
                MediicinecabinetInventory inventory = inventoryDao.findOne(cargoId);
                inventory.setCargoState(cargoState);
                if (cargoState.equals("1")) {
                    changedCargoCapacity += Integer.parseInt(inventory.getCargoCapacity());
                }
                deviceId = inventory.getIdDevice();
                inventoryDao.save(inventory);
            }
        }
        if (!StringUtils.isEmpty(deviceId)) {
            Mediicinedevice mediicinedevice = deviceDao.findOne(deviceId);
            if (mediicinedevice != null) {
                int oldCapacity = Integer.parseInt(mediicinedevice.getCapacity());
                String 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) {
                        oldCapacity = (int) Double.parseDouble(String.valueOf(totalMap.get("cargoCapacity"))) + changedCargoCapacity;
                    }
                }
                mediicinedevice.setCapacity(String.valueOf(oldCapacity));
                deviceDao.save(mediicinedevice);
            }
        }
        result.put("response",ConstantUtils.SUCCESS);
        return result.toJSONString();
    }
@ -1675,16 +1744,16 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql);
        int closedCapacity = list.stream()
                .filter(item -> "0".equals(String.valueOf(item.get("cargoState")))  && "0".equals(String.valueOf(item.get("faultState"))))
                .filter(item -> "0".equals(String.valueOf(item.get("cargoState"))))
                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("cargoCapacity")))).sum();
        int faultCapacity = list.stream()
                .filter(item -> "1".equals(String.valueOf(item.get("cargoState")))  && "1".equals(String.valueOf(item.get("faultState"))))
                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("cargoCapacity")))).sum();
//        int faultCapacity = list.stream()
//                .filter(item -> "1".equals(String.valueOf(item.get("cargoState")))  && "1".equals(String.valueOf(item.get("faultState"))))
//                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("cargoCapacity")))).sum();
        //closedAndFaultCapacity
        int closedAndFaultCapacity = list.stream()
                .filter(item -> "0".equals(String.valueOf(item.get("cargoState")))  && "1".equals(String.valueOf(item.get("faultState"))))
                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("cargoCapacity")))).sum();
//        int closedAndFaultCapacity = list.stream()
//                .filter(item -> "0".equals(String.valueOf(item.get("cargoState")))  && "1".equals(String.valueOf(item.get("faultState"))))
//                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("cargoCapacity")))).sum();
        int drugNumber = list.stream()
                .filter(item -> "1".equals(String.valueOf(item.get("cargoState")))  && "0".equals(String.valueOf(item.get("faultState"))))
@ -1738,7 +1807,7 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
//                "AND (t.state = '1' OR t.state = '21')";
//        int drugNumber = jdbcTemplate.queryForObject(tempSql, Integer.class);
        int outOfStock = Integer.parseInt(device.getCapacity()) - closedAndFaultCapacity - faultCapacity - closedCapacity - drugNumber;
        int outOfStock = Integer.parseInt(device.getCapacity()) - closedCapacity - drugNumber;
        jsonObject.put("outOfStock", outOfStock);
        //缺货库存----end
        tempSql = "SELECT\n" +