| | |
| | | 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; |
| | |
| | | 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&¬eItemList.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()+"设备数量出租台账已超出设备实际库存,无法建立台账"); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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(); |
| | |
| | | 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 |
| | | ) { |
| | | //查询实际台账情况 |
| | | 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(); |
| | | } |
| | | } |