shiyunteng
6 天以前 fc8c86e7a365d5c6bdc37c2b05b9f83115ac2bc3
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.constant.CommonStatusContant;
import com.by4cloud.platformx.device.entity.*;
import com.by4cloud.platformx.device.mapper.*;
import com.by4cloud.platformx.device.service.DeviceLeasingLedgerService;
@@ -67,9 +68,14 @@
          ) {
         for (DeviceLeasingLedgerItem item:deviceLeasingLedger.getLedgerItemList()
         ) {
            if (contractItem.getDeviceId()==item.getDeviceId()){
               if (contractItem.getNum()!=item.getNum()) {
                  return R.failed("合同中"+contract.getName()+"设备数量与台账明细中不一致");
            if (contractItem.getDeviceId().equals(item.getDeviceId())){
               if (contractItem.getNum()<item.getNum()) {
                  return R.failed("合同中"+item.getDeviceName()+"设备数量与台账明细中不一致,无法建立台账");
               }
               Integer deviceNum = itemMapper.selectDeviceNumByContractId(contract.getId(),contractItem.getDeviceId());
               //查询是否有历史出账
               if (contractItem.getNum()<(item.getNum()+deviceNum)) {
                  return R.failed("合同中"+item.getDeviceName()+"设备数量出租台账已超出设备实际库存,无法建立台账");
               }
            }
         }
@@ -84,26 +90,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(CommonStatusContant.DEVICE_INVENTORY_RENTING);
               inventory.setLedgerItemId(item.getId());
               //库存调整
               inventoryMapper.insert(inventory);
               inventoryMapper.updateById(inventory);
               //设备库存流水同步新增
               InventoryFlowWater flowWater = new InventoryFlowWater();
@@ -113,18 +108,26 @@
               flowWater.setClassId(device.getClassId());
               //根据合同类型 购买 承租 流水操作类型为入库操作
               if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
                  flowWater.setOperateType(2);
                  flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_IN);
               }
               //根据合同类型 租赁 流水操作类型为出库操作
               if (contract!=null&&contract.getType()==0){
                  flowWater.setOperateType(1);
                  flowWater.setOperateType(CommonStatusContant.DEVICE_INVENTORY_FLOW_WATER_OUT);
               }
               //记录库存流水
               inventoryFlowWaterMapper.insert(flowWater);
            }
         }
      }
      //合同明细中与台账对比
      for (ContractItem contractItem:list
      ) {
         Integer deviceNum = itemMapper.selectDeviceNumByContractId(contract.getId(),contractItem.getDeviceId());
         //查询是否有历史出账
         if (contractItem.getNum()!=deviceNum) {
            return R.ok();
         }
      }
      //更新合同状态为完成
      contract.setStatus(2);
      contractMapper.updateById(contract);