wangzhinan 3 years ago
parent
commit
16066d9743

+ 13 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/a1entity/InventoryDO.java

@ -19,6 +19,11 @@ public class InventoryDO implements Serializable {
    private Integer ratedInventory;
    /**
     * 所属设备的设备id
     */
    private String idDevice;
    public InventoryDO() {
    }
@ -70,4 +75,12 @@ public class InventoryDO implements Serializable {
    public void setRatedInventory(Integer ratedInventory) {
        this.ratedInventory = ratedInventory;
    }
    public String getIdDevice() {
        return idDevice;
    }
    public void setIdDevice(String idDevice) {
        this.idDevice = idDevice;
    }
}

+ 37 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/a3service/MedicinedeviceService.java

@ -4774,6 +4774,7 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
                MediicinecabinetInventory inventory =  inventoryDao.findOne(str[i]);
                //更新设备缺货状态的该药品的已变动数量
                InventoryDO inventoryDO = new InventoryDO();
                inventoryDO.setCargoId(inventory.getId());
                inventoryDO.setDrugCode(inventory.getDrugCode());
                inventoryDO.setOrgCode(inventory.getOrgCode());
                inventoryDO.setRatedInventory(inventory.getRatedInventory());
@ -4890,8 +4891,9 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
//                        updateDeviceState(inventory.getId(), inventoryDO);
//                    }
                }
                mediicinecabinetInventory = inventoryDao.save(inventory);
                //如果正常开启的总计库存为0强制更新设备为缺货状态
                setDeviceInventoryStatusByOneInventory(inventoryDO);
                //重算设备容量
                if (cargoCapacityChanged && i == str.length - 1) {
                    Mediicinedevice mediicinedevice = deviceDao.findOne(inventory.getIdDevice());
@ -4921,6 +4923,7 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
            MediicinecabinetInventory inventory =  inventoryDao.findOne(id);
            //更新设备缺货状态的该药品的已变动数量
            InventoryDO inventoryDO = new InventoryDO();
            inventoryDO.setCargoId(inventory.getId());
            inventoryDO.setDrugCode(inventory.getDrugCode());
            inventoryDO.setOrgCode(inventory.getOrgCode());
            inventoryDO.setRatedInventory(inventory.getRatedInventory());
@ -5040,6 +5043,8 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
            }
            inventoryDao.save(inventory);
            //如果正常开启的总计库存为0强制更新设备为缺货状态
            setDeviceInventoryStatusByOneInventory(inventoryDO);
            //重算设备容量
            if (cargoCapacityChanged) {
                Mediicinedevice mediicinedevice = deviceDao.findOne(inventory.getIdDevice());
@ -5068,6 +5073,37 @@ public class MedicinedeviceService  extends BaseJpaService<Mediicinedevice, Medi
    }
    /**
     * (正常,开启的)库存为零更新设备为缺货状态
     * @param inventory
     */
    public void setDeviceInventoryStatusByOneInventory(InventoryDO inventory) {
        Mediicinedevice device = deviceDao.findOne(inventory.getIdDevice());
        if(device == null) return;
        //当前设备的库存信息-货道容量、药品数量、货道开关状态1开启,0关闭、货道正常故障状态1故障,0正常
        String tempConditionSql = "SELECT\n" +
                "\tifnull(t.cargo_capacity, 0) AS cargoCapacity,\n" +
                "\tifnull(t.qty, 0) AS qty,\n" +
                "\tt.cargo_state AS cargoState,\n" +
                "\tt.fault_state AS faultState\n" +
                "FROM\n" +
                "\tt_mediicinecabinet_inventory t\n" +
                "WHERE\n" +
                "\tt.id_device = '" + device.getId() + "'\n" +
                "\tt.id != '" + inventory.getCargoId() + "'\n" +
                "AND (t.state = '1' OR t.state = '21')";
        //设备列表
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(tempConditionSql);
        int totalDrugNumber = list.stream()
                .filter(item -> "1".equals(String.valueOf(item.get("cargoState")))  && "0".equals(String.valueOf(item.get("faultState"))))
                .mapToInt(item -> Integer.parseInt(String.valueOf(item.get("qty")))).sum() + inventory.getQty();
        if (totalDrugNumber == 0) {
            device.setStatus("0");
            deviceDao.save(device);
        }
    }
    /**
     * 物联网大屏统计数据
     * @return