shiyunteng
2025-04-01 ffbddedac17c4a7d18d382c4917b3f375356e061
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -71,16 +71,10 @@
               if (contractItem.getNum()<item.getNum()) {
                  return R.failed("合同中"+item.getDeviceName()+"设备数量与台账明细中不一致,无法建立台账");
               }
               Integer deviceNum = itemMapper.selectDeviceNumByContractId(contract.getId(),contractItem.getDeviceId());
               //查询是否有历史出账
               QueryWrapper<DeviceLeasingLedgerItem> queryWrapperLedgerItem = new QueryWrapper<>();
               queryWrapperLedgerItem.eq("contract_id",contract.getId());
               queryWrapperLedgerItem.eq("device_id",contractItem.getDeviceId());
               List<DeviceLeasingLedgerItem> noteItemList = itemMapper.selectList(queryWrapperLedgerItem);
               if (noteItemList != null&&noteItemList.size()>0) {
                  Integer deviceNum = noteItemList.stream().mapToInt(DeviceLeasingLedgerItem::getNum).sum();
                  if (contractItem.getNum()<(item.getNum()+deviceNum)) {
                     return R.failed("合同中"+item.getDeviceName()+"设备数量出租台账已超出设备库存,无法建立台账");
                  }
               if (contractItem.getNum()<(item.getNum()+deviceNum)) {
                  return R.failed("合同中"+item.getDeviceName()+"设备数量出租台账已超出设备实际库存,无法建立台账");
               }
            }
         }
@@ -95,27 +89,15 @@
         for (String serialNo:item.getSerialNos()
         ) {
            Device device = deviceMapper.selectById(item.getDeviceId());
            if (device!=null) {
               DeviceInventory inventory = new DeviceInventory();
               inventory.setDeviceId(item.getDeviceId());
               inventory.setDeviceNumber(item.getDeviceCode());
               inventory.setName(device.getName());
               inventory.setSerialNo(serialNo);
               //根据合同类型 购买 承租 合同类型为入库操作
               if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
                  inventory.setSource(1);
                  //入库操作 库存状态为 可用
                  inventory.setInventoryStatus(1);
               }
               //根据合同类型 租赁 合同类型为出库操作
               if (contract!=null&&contract.getType()==0){
                  inventory.setSource(0);
                  //出库操作 库存状态为  租赁中
                  inventory.setInventoryStatus(2);
               }
            QueryWrapper<DeviceInventory> inventoryQueryWrapper = new QueryWrapper<>();
            inventoryQueryWrapper.eq("device_id",item.getDeviceId());
            inventoryQueryWrapper.eq("serial_no",serialNo);
            DeviceInventory inventory = inventoryMapper.selectOne(inventoryQueryWrapper);
            if (device!=null&&inventory!=null) {
               inventory.setInventoryStatus(2);
               inventory.setLedgerItemId(item.getId());
               //库存调整
               inventoryMapper.insert(inventory);
               inventoryMapper.updateById(inventory);
               //设备库存流水同步新增
               InventoryFlowWater flowWater = new InventoryFlowWater();
@@ -139,17 +121,9 @@
      //合同明细中与台账对比
      for (ContractItem contractItem:list
      ) {
         //查询实际台账情况
         QueryWrapper<DeviceLeasingLedgerItem> queryWrapperLedgerItem = new QueryWrapper<>();
         queryWrapperLedgerItem.eq("contract_id",contract.getId());
         queryWrapperLedgerItem.eq("device_id",contractItem.getDeviceId());
         List<DeviceLeasingLedgerItem> ledgerItemList = itemMapper.selectList(queryWrapperLedgerItem);
         if (ledgerItemList != null&&ledgerItemList.size()>0) {
            Integer deviceNum = ledgerItemList.stream().mapToInt(DeviceLeasingLedgerItem::getNum).sum();
            if (contractItem.getNum()!=deviceNum) {
               return R.ok();
            }
         }else {
         Integer deviceNum = itemMapper.selectDeviceNumByContractId(contract.getId(),contractItem.getDeviceId());
         //查询是否有历史出账
         if (contractItem.getNum()!=deviceNum) {
            return R.ok();
         }
      }