shiyunteng
2025-03-28 4ad9053cc576b74f74985f22fa5af25cca282a28
合同审批 验收和台账中下拉
招标 中标编号后台生成
流水列表接口
23个文件已修改
2个文件已添加
421 ■■■■■ 已修改文件
platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/InventoryFlowWaterQueryDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceLeasingLedger.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceLeasingLedgerItem.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryFlowWaterPageVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceLeasingLedgerController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceLeasingLedgerItemController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/PurchaseTendrOrderController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/PurchaseWinningLetterController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceLeasingLedgerService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/PurchaseTendrOrderService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/PurchaseTendrOrderServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-device-api/src/main/java/com/by4cloud/platformx/device/dto/InventoryFlowWaterQueryDTO.java
New file
@@ -0,0 +1,13 @@
package com.by4cloud.platformx.device.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "库存流水分页入参")
public class InventoryFlowWaterQueryDTO {
    @Schema(description = "设备名称")
    private String deviceName;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceLeasingLedger.java
@@ -1,5 +1,6 @@
package com.by4cloud.platformx.device.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -9,8 +10,9 @@
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
@Data
@Entity
@@ -78,4 +80,11 @@
    @Schema(description = "承租公司")
    @Column(columnDefinition="bigint comment '承租公司'")
    private Long lesseeContractId;
    /**
     * 台账明细
     */
    @Transient
    @TableField(exist = false)
    private List<DeviceLeasingLedgerItem> ledgerItemList;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/DeviceLeasingLedgerItem.java
@@ -1,5 +1,6 @@
package com.by4cloud.platformx.device.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +9,8 @@
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Transient;
import java.util.List;
@Data
@Entity
@@ -34,7 +37,7 @@
     * 设备编码
     */
    @Schema(description="设备编码")
    @Column(columnDefinition="VARCHAR(16) comment '设备编码'")
    @Column(columnDefinition="VARCHAR(32) comment '设备编码'")
    private String deviceCode;
    /**
@@ -71,4 +74,11 @@
    @Schema(description = "数量")
    @Column(columnDefinition="INTEGER comment '数量'")
    private Integer num;
    /**
     * 台账明细
     */
    @Transient
    @TableField(exist = false)
    private List<String> serialNos;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNote.java
@@ -126,9 +126,9 @@
    /**
     * 使用公司
     */
//    @Schema(description = "使用公司")
//    @Column(columnDefinition="long comment '使用公司'")
//    private Long deptId;
    @Schema(description = "使用公司")
    @Column(columnDefinition="long comment '使用公司'")
    private Long deptId;
    @Transient
    @TableField(exist = false)
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/ReceivingNoteItem.java
@@ -41,8 +41,8 @@
    private Long contractItemId;
    @Schema(description = "数量")
    @Column(columnDefinition="bigint comment '数量'")
    private Long num;
    @Column(columnDefinition="integer comment '数量'")
    private Integer num;
    /**
     * 验收金额
@@ -94,11 +94,12 @@
    @Column(columnDefinition="VARCHAR(32) comment '计量单位'")
    private String meteringUnit;
    /**
     * 入库时所需序列号
     * 设备序列号
     */
    @Schema(description = "设备序列号")
    @Transient
    @TableField(exist = false)
    private List<String> serialNos;
    @Schema(description="设备序列号 逗号分隔")
    @Column(columnDefinition="VARCHAR(256) comment '设备序列号'")
    private String serialNos;
}
platformx-device-api/src/main/java/com/by4cloud/platformx/device/entity/vo/InventoryFlowWaterPageVo.java
New file
@@ -0,0 +1,23 @@
package com.by4cloud.platformx.device.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class InventoryFlowWaterPageVo {
    private Long id;
    private String devicName;
    private String className;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    private String operateType;
    private String serialNo;
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ContractController.java
@@ -126,4 +126,26 @@
    public List<Contract> export(Contract contract,Long[] ids) {
        return contractService.list(Wrappers.lambdaQuery(contract).in(ArrayUtil.isNotEmpty(ids), Contract::getId, ids));
    }
    /**
     * 审批通过合同
     * @param id id
     * @return R
     */
    @Operation(summary = "审批通过合同" , description = "审批通过合同" )
    @GetMapping("/approved/{id}" )
    public R approved(@PathVariable("id" ) Long id) {
        return R.ok(contractService.approved(id));
    }
    /**
     * 获取审批通过合同的下拉列表
     * @return R
     */
    @Operation(summary = "获取审批通过合同的下拉列表" , description = "获取审批通过合同的下拉列表" )
    @GetMapping("/getApprovedContractList" )
    public R getApprovedContractList() {
        return R.ok(contractService.getApprovedContractList());
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceLeasingLedgerController.java
@@ -67,7 +67,7 @@
    @GetMapping("/{id}" )
    @PreAuthorize("@pms.hasPermission('device_deviceLeasingLedger_view')" )
    public R getById(@PathVariable("id" ) Long id) {
        return R.ok(deviceLeasingLedgerService.getById(id));
        return R.ok(deviceLeasingLedgerService.getByIdDeep(id));
    }
    /**
@@ -81,7 +81,7 @@
    @PreAuthorize("@pms.hasPermission('device_deviceLeasingLedger_add')" )
    public R save(@RequestBody DeviceLeasingLedger deviceLeasingLedger) {
        deviceLeasingLedger.setLedgerCode(maxSizeService.nextNo(MaxSizeContant.LEDGER_CODE));
        return R.ok(deviceLeasingLedgerService.save(deviceLeasingLedger));
        return deviceLeasingLedgerService.saveDeep(deviceLeasingLedger);
    }
    /**
@@ -139,4 +139,13 @@
    public R getDeviceSelectList(@PathVariable("ledgerId")Long ledgerId) {
        return R.ok(deviceLeasingLedgerService.getDeviceSelectList(ledgerId));
    }
    /**
     * 台账中设备序列号下拉下拉
     */
    @Operation(summary = "台账明细中设备序列号下拉",description = "台账明细中设备序列号下拉下拉")
    @GetMapping("/getLedgerDeviceList/{deviceId}")
    public R getLedgerDeviceList(@PathVariable("deviceId")Long deviceId) {
        return R.ok(deviceLeasingLedgerService.getLedgerDeviceList(deviceId));
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceLeasingLedgerItemController.java
@@ -49,6 +49,7 @@
    @PreAuthorize("@pms.hasPermission('device_deviceLeasingLedgerItem_view')" )
    public R getDeviceLeasingLedgerItemPage(@ParameterObject Page page, @ParameterObject DeviceLeasingLedgerItem deviceLeasingLedgerItem) {
        LambdaQueryWrapper<DeviceLeasingLedgerItem> wrapper = Wrappers.lambdaQuery();
        wrapper.eq(deviceLeasingLedgerItem.getLedgerId()!=null,DeviceLeasingLedgerItem::getLedgerId,deviceLeasingLedgerItem.getLedgerId());
        wrapper.eq(StrUtil.isNotBlank(deviceLeasingLedgerItem.getDeviceCode()),DeviceLeasingLedgerItem::getDeviceCode,deviceLeasingLedgerItem.getDeviceCode());
        return R.ok(deviceLeasingLedgerItemService.page(page, wrapper));
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InventoryFlowWaterController.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.device.dto.InventoryFlowWaterQueryDTO;
import com.by4cloud.platformx.device.entity.InventoryFlowWater;
import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -40,15 +41,14 @@
    /**
     * 分页查询
     * @param page 分页对象
     * @param inventoryFlowWater 库存流水表
     * @param queryDTO 库存流水表
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/page" )
    @PreAuthorize("@pms.hasPermission('platformx_inventoryFlowWater_view')" )
    public R getInventoryFlowWaterPage(@ParameterObject Page page, @ParameterObject InventoryFlowWater inventoryFlowWater) {
        LambdaQueryWrapper<InventoryFlowWater> wrapper = Wrappers.lambdaQuery();
        return R.ok(inventoryFlowWaterService.page(page, wrapper));
    public R getInventoryFlowWaterPage(@ParameterObject Page page, @ParameterObject InventoryFlowWaterQueryDTO queryDTO) {
        return R.ok(inventoryFlowWaterService.pageNew(page, queryDTO));
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/PurchaseTendrOrderController.java
@@ -8,7 +8,9 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.entity.Contract;
import com.by4cloud.platformx.device.service.JcMaxSizeService;
import com.by4cloud.platformx.device.service.PurchaseTendrOrderService;
import com.by4cloud.platformx.device.entity.PurchaseTendrOrderEntity;
import com.by4cloud.platformx.device.service.PurchaseTendrOrderService;
@@ -39,6 +41,7 @@
public class PurchaseTendrOrderController {
    private final PurchaseTendrOrderService purchaseTendrOrderService;
    private final JcMaxSizeService jcMaxSizeService;
    /**
     * 分页查询
@@ -79,6 +82,7 @@
    @PostMapping
    @PreAuthorize("@pms.hasPermission('platformx_purchaseTendrOrder_add')" )
    public R save(@RequestBody PurchaseTendrOrderEntity purchaseTendrOrder) {
        purchaseTendrOrder.setPurchasePlanCode(jcMaxSizeService.nextNo(MaxSizeContant.PURCHASE_PLAN_CODE));
        return R.ok(purchaseTendrOrderService.save(purchaseTendrOrder));
    }
@@ -134,4 +138,14 @@
    public R complete(@PathVariable("id")Long id) {
        return R.ok(purchaseTendrOrderService.complete(id));
    }
    /**
     * 获取招标下拉列表
     * @return
     */
    @GetMapping("/getPurchaseRenderList" )
    public R getPurchaseRenderList() {
        return R.ok(purchaseTendrOrderService.getPurchaseRenderList());
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/PurchaseWinningLetterController.java
@@ -8,9 +8,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.entity.Contract;
import com.by4cloud.platformx.device.entity.PurchaseTendrOrderEntity;
import com.by4cloud.platformx.device.entity.PurchaseWinningLetterEntity;
import com.by4cloud.platformx.device.service.JcMaxSizeService;
import com.by4cloud.platformx.device.service.PurchaseWinningLetterService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
@@ -38,6 +40,7 @@
public class PurchaseWinningLetterController {
    private final  PurchaseWinningLetterService purchaseWinningLetterService;
    private final JcMaxSizeService maxSizeService;
    /**
     * 分页查询
@@ -79,6 +82,7 @@
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_purchaseWinningLetter_add')" )
    public R save(@RequestBody PurchaseWinningLetterEntity purchaseWinningLetter) {
        purchaseWinningLetter.setWinningCode(maxSizeService.nextNo(MaxSizeContant.WINNING_CODE));
        return R.ok(purchaseWinningLetterService.save(purchaseWinningLetter));
    }
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/ReceivingNoteController.java
@@ -73,7 +73,7 @@
    @PostMapping
    @PreAuthorize("@pms.hasPermission('device_receivingNote_add')" )
    public R save(@RequestBody ReceivingNote receivingNote) {
        return R.ok(receivingNoteService.saveDeep(receivingNote));
        return receivingNoteService.saveDeep(receivingNote);
    }
    /**
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/mapper/InventoryFlowWaterMapper.java
@@ -1,11 +1,16 @@
package com.by4cloud.platformx.device.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.device.dto.InventoryFlowWaterQueryDTO;
import com.by4cloud.platformx.device.entity.InventoryFlowWater;
import com.by4cloud.platformx.device.entity.vo.InventoryFlowWaterPageVo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface InventoryFlowWaterMapper extends PlatformxBaseMapper<InventoryFlowWater> {
    IPage<InventoryFlowWaterPageVo> pageNew(Page page, InventoryFlowWaterQueryDTO queryDTO);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ContractService.java
@@ -3,6 +3,8 @@
import com.by4cloud.platformx.device.entity.Contract;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import java.util.List;
public interface ContractService extends MPJDeepService<Contract> {
    Boolean saveDeep(Contract contract);
@@ -13,4 +15,8 @@
    Boolean removeChild(Long[] ids);
    Contract getDetailById(Long id);
    Boolean approved(Long id);
    List<Contract> getApprovedContractList();
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/DeviceLeasingLedgerService.java
@@ -1,7 +1,9 @@
package com.by4cloud.platformx.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.entity.Device;
import com.by4cloud.platformx.device.entity.DeviceInventory;
import com.by4cloud.platformx.device.entity.DeviceLeasingLedger;
import java.util.List;
@@ -11,4 +13,10 @@
    List<DeviceLeasingLedger> getSelectList();
    List<Device> getDeviceSelectList(Long ledgerId);
    R saveDeep(DeviceLeasingLedger deviceLeasingLedger);
    List<DeviceInventory> getLedgerDeviceList(Long deviceId);
    DeviceLeasingLedger getByIdDeep(Long id);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/InventoryFlowWaterService.java
@@ -1,8 +1,12 @@
package com.by4cloud.platformx.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.device.dto.InventoryFlowWaterQueryDTO;
import com.by4cloud.platformx.device.entity.InventoryFlowWater;
public interface InventoryFlowWaterService extends IService<InventoryFlowWater> {
    IPage pageNew(Page page, InventoryFlowWaterQueryDTO queryDTO);
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/PurchaseTendrOrderService.java
@@ -3,7 +3,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.device.entity.PurchaseTendrOrderEntity;
import java.util.List;
public interface PurchaseTendrOrderService extends IService<PurchaseTendrOrderEntity> {
    boolean complete(Long id);
    List<PurchaseTendrOrderEntity> getPurchaseRenderList();
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/ReceivingNoteService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.dto.ReceivingNoteQueryDTO;
import com.by4cloud.platformx.device.entity.ReceivingNote;
@@ -10,7 +11,7 @@
    IPage pageNew(Page page, ReceivingNoteQueryDTO queryDTO);
    boolean saveDeep(ReceivingNote receivingNote);
    R saveDeep(ReceivingNote receivingNote);
    boolean updateByIdDeep(ReceivingNote receivingNote);
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ContractServiceImpl.java
@@ -31,6 +31,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean saveDeep(Contract contract) {
        contract.setStatus(0);
        baseMapper.insert(contract);
        for (ContractItem contractItem : contract.getContractItemList()) {
            contractItem.setContractId(contract.getId());
@@ -82,4 +83,20 @@
        contract.setContractItemList(itemList);
        return contract;
    }
    @Override
    public Boolean approved(Long id) {
        Contract contract = baseMapper.selectById(id);
        contract.setStatus(1);
        baseMapper.updateById(contract);
        return Boolean.TRUE;
    }
    @Override
    public List<Contract> getApprovedContractList() {
        QueryWrapper<Contract> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("status",1);
        List<Contract> list = baseMapper.selectList(queryWrapper);
        return list;
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/DeviceLeasingLedgerServiceImpl.java
@@ -2,12 +2,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.device.entity.Device;
import com.by4cloud.platformx.device.entity.DeviceLeasingLedger;
import com.by4cloud.platformx.device.mapper.DeviceLeasingLedgerMapper;
import com.by4cloud.platformx.device.mapper.DeviceMapper;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.entity.*;
import com.by4cloud.platformx.device.mapper.*;
import com.by4cloud.platformx.device.service.DeviceLeasingLedgerService;
import lombok.AllArgsConstructor;
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -23,6 +23,11 @@
public class DeviceLeasingLedgerServiceImpl extends ServiceImpl<DeviceLeasingLedgerMapper, DeviceLeasingLedger> implements DeviceLeasingLedgerService {
    private final DeviceMapper deviceMapper;
    private final DeviceLeasingLedgerItemMapper itemMapper;
    private final ContractItemMapper contractItemMapper;
    private final ContractMapper contractMapper;
    private final DeviceInventoryMapper inventoryMapper;
    private final InventoryFlowWaterMapper inventoryFlowWaterMapper;
    @Override
    public List<DeviceLeasingLedger> getSelectList() {
@@ -36,4 +41,113 @@
        List<Device> list = deviceMapper.getDeviceSelectListByLedgerId(ledgerId);
        return list;
    }
    @Override
    public R saveDeep(DeviceLeasingLedger deviceLeasingLedger) {
        //明细设备数量与合同中签订数据比对
        QueryWrapper<Contract> contractQueryWrapper = new QueryWrapper<>();
        contractQueryWrapper.eq("number",deviceLeasingLedger.getContractCode());
        Contract contract = contractMapper.selectOne(contractQueryWrapper);
        if (contract == null) {
            return R.failed("合同不存在");
        }
        //查询合同明细中设备情况
        QueryWrapper<ContractItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("contract_id",contract.getId());
        List<ContractItem> list = contractItemMapper.selectList(queryWrapper);
        //比较设备种类是否一致
        if (list.size()!=deviceLeasingLedger.getLedgerItemList().size()){
            return R.failed("合同中设备种类与台账明细中不一致");
        }
        //比较单个设备台账数量是否与合同中一致
        for (ContractItem contractItem:list
             ) {
            for (DeviceLeasingLedgerItem item:deviceLeasingLedger.getLedgerItemList()
            ) {
                if (contractItem.getDeviceId()==item.getDeviceId()){
                    if (contractItem.getNum()!=item.getNum()) {
                        return R.failed("合同中"+contract.getName()+"设备数量与台账明细中不一致");
                    }
                }
            }
        }
        //入库
        baseMapper.insert(deviceLeasingLedger);
        for (DeviceLeasingLedgerItem item:deviceLeasingLedger.getLedgerItemList()
             ) {
            item.setLedgerId(deviceLeasingLedger.getId());
            itemMapper.insert(item);
            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);
                    }
                    //库存调整
                    inventoryMapper.insert(inventory);
                    //设备库存流水同步新增
                    InventoryFlowWater flowWater = new InventoryFlowWater();
                    flowWater.setDeviceId(item.getDeviceId());
                    flowWater.setSerialNo(serialNo);
                    flowWater.setInventoryId(inventory.getId());
                    flowWater.setClassId(device.getClassId());
                    //根据合同类型 购买 承租 流水操作类型为入库操作
                    if (contract!=null&&(contract.getType()==1||contract.getType()==2)){
                        flowWater.setOperateType(2);
                    }
                    //根据合同类型 租赁 流水操作类型为出库操作
                    if (contract!=null&&contract.getType()==0){
                        flowWater.setOperateType(1);
                    }
                    //记录库存流水
                    inventoryFlowWaterMapper.insert(flowWater);
                }
            }
        }
        //更新合同状态为完成
        contract.setStatus(2);
        contractMapper.updateById(contract);
        return R.ok();
    }
    @Override
    public List<DeviceInventory> getLedgerDeviceList(Long deviceId) {
        QueryWrapper<DeviceInventory> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("device_id",deviceId);
        queryWrapper.eq("inventory_status",1);
        List<DeviceInventory> list = inventoryMapper.selectList(queryWrapper);
        return list;
    }
    @Override
    public DeviceLeasingLedger getByIdDeep(Long id) {
        DeviceLeasingLedger deviceLeasingLedger = baseMapper.selectById(id);
        QueryWrapper<DeviceLeasingLedgerItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("ledger_id",id);
        List<DeviceLeasingLedgerItem> itemList = itemMapper.selectList(queryWrapper);
        deviceLeasingLedger.setLedgerItemList(itemList);
        return deviceLeasingLedger;
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/InventoryFlowWaterServiceImpl.java
@@ -1,6 +1,9 @@
package com.by4cloud.platformx.device.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.device.dto.InventoryFlowWaterQueryDTO;
import com.by4cloud.platformx.device.entity.InventoryFlowWater;
import com.by4cloud.platformx.device.mapper.InventoryFlowWaterMapper;
import com.by4cloud.platformx.device.service.InventoryFlowWaterService;
@@ -13,4 +16,8 @@
 */
@Service
public class InventoryFlowWaterServiceImpl extends ServiceImpl<InventoryFlowWaterMapper, InventoryFlowWater> implements InventoryFlowWaterService {
    @Override
    public IPage pageNew(Page page, InventoryFlowWaterQueryDTO queryDTO) {
        return baseMapper.pageNew(page,queryDTO);
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/PurchaseTendrOrderServiceImpl.java
@@ -9,6 +9,9 @@
import com.by4cloud.platformx.device.service.PurchaseTendrOrderService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 招标采购单
 *
@@ -19,21 +22,25 @@
@RequiredArgsConstructor
public class PurchaseTendrOrderServiceImpl extends ServiceImpl<PurchaseTendrOrderMapper, PurchaseTendrOrderEntity> implements PurchaseTendrOrderService {
    private final PurchaseTendrOrderMapper purchaseTendrOrderMapper;
    private final PurchaseWinningLetterMapper purchaseWinningLetterMapper;
    @Override
    public boolean complete(Long id) {
        PurchaseTendrOrderEntity orderEntity = purchaseTendrOrderMapper.selectById(id);
        PurchaseTendrOrderEntity orderEntity = baseMapper.selectById(id);
        PurchaseWinningLetterEntity entity = BeanUtil.copyProperties(orderEntity, PurchaseWinningLetterEntity.class);
        entity.setWinningPrice(orderEntity.getEstimatePrice());
        entity.setTotalWinningAmount(orderEntity.getTotalPlanndAmount());
        purchaseWinningLetterMapper.insert(entity);
        orderEntity.setStatus("2");
        purchaseTendrOrderMapper.updateById(orderEntity);
        baseMapper.updateById(orderEntity);
        return true;
    }
    @Override
    public List<PurchaseTendrOrderEntity> getPurchaseRenderList() {
        List<PurchaseTendrOrderEntity> list = baseMapper.selectList(null);
        return list;
    }
}
platformx-device-biz/src/main/java/com/by4cloud/platformx/device/service/impl/ReceivingNoteServiceImpl.java
@@ -4,15 +4,22 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.device.constant.MaxSizeContant;
import com.by4cloud.platformx.device.dto.ReceivingNoteQueryDTO;
import com.by4cloud.platformx.device.entity.*;
import com.by4cloud.platformx.device.mapper.*;
import com.by4cloud.platformx.device.service.JcMaxSizeService;
import com.by4cloud.platformx.device.service.ReceivingNoteService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 验收表
@@ -22,13 +29,16 @@
 */
@Service
@AllArgsConstructor
@Slf4j
public class ReceivingNoteServiceImpl extends ServiceImpl<ReceivingNoteMapper, ReceivingNote> implements ReceivingNoteService {
    private final JcMaxSizeService maxSizeService;
    private final ReceivingNoteItemMapper itemMapper;
    private final DeviceInventoryMapper inventoryMapper;
    private final InventoryFlowWaterMapper inventoryFlowWaterMapper;
    private final DeviceMapper deviceMapper;
    private final ContractMapper contractMapper;
    private final ContractItemMapper contractItemMapper;
    @Override
    public IPage pageNew(Page page, ReceivingNoteQueryDTO queryDTO) {
@@ -36,19 +46,55 @@
    }
    @Override
    public boolean saveDeep(ReceivingNote entity) {
    public R saveDeep(ReceivingNote entity) {
        //明细设备数量与合同中签订数据比对
        Contract contract = contractMapper.selectById(entity.getContractId());
        if (contract == null) {
            return R.failed("合同不存在");
        }
        //查询合同明细中设备情况
        QueryWrapper<ContractItem> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("contract_id",contract.getId());
        List<ContractItem> list = contractItemMapper.selectList(queryWrapper);
        //比较设备种类是否一致
        if (list.size()!=entity.getNoteItemList().size()){
            return R.failed("合同中设备种类与验收明细中不一致");
        }
        //比较单个设备台账数量是否与合同中一致
        for (ContractItem contractItem:list
        ) {
            for (ReceivingNoteItem item:entity.getNoteItemList()
            ) {
                if (contractItem.getDeviceId().equals(item.getDeviceId())){
                    if (contractItem.getNum()!=item.getNum()) {
                        return R.failed("合同中"+item.getDeviceName()+"设备数量与验收明细中不一致");
                    }
                }
            }
        }
        //生成验收单编号
        entity.setReleaseCode(maxSizeService.nextNo(MaxSizeContant.RELEASE_CODE));
        //入库
        baseMapper.insert(entity);
        if (entity.getNoteItemList()!=null&&entity.getNoteItemList().size()>0){
            for (ReceivingNoteItem item:entity.getNoteItemList()
                 ) {
                    List<String> serialArr = new ArrayList<>();
                    if (item.getSerialNos()!=null&&!"".equals(item.getSerialNos())) {
                        item.setSerialNos(item.getSerialNos());
                        serialArr = Arrays.stream(item.getSerialNos().split(",")).collect(Collectors.toList());
                    }
                item.setNoteId(entity.getId());
                itemMapper.insert(item);
                //设备库存同步新增
                if (item.getSerialNos()!=null&&item.getSerialNos().size()>0){
                    for (String serialNo:item.getSerialNos()
                if (serialArr.size()>0){
                    for (String serialNo:serialArr
                         ) {
                        Device device = deviceMapper.selectById(item.getDeviceId());
                        Contract contract = contractMapper.selectById(entity.getContractId());
                        if (device!=null) {
                            DeviceInventory inventory = new DeviceInventory();
                            inventory.setDeviceId(item.getDeviceId());
@@ -83,7 +129,12 @@
                }
            }
        }
        return Boolean.TRUE;
        //更新合同状态为完成
        contract.setStatus(2);
        contractMapper.updateById(contract);
        return R.ok();
    }
    @Override
@@ -111,4 +162,10 @@
        note.setNoteItemList(itemList);
        return note;
    }
    public static void main(String[] args) {
        Long l1= 1905442028714270722l;
        long l2 = 1905442028714270722l;
        System.out.println(l1==l2);
    }
}
platformx-device-biz/src/main/resources/mapper/InventoryFlowWaterMapper.xml
@@ -18,4 +18,23 @@
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
    <select id="pageNew" resultType="com.by4cloud.platformx.device.entity.vo.InventoryFlowWaterPageVo">
        select
            ifw.id,
            d.name devicName,
            dc.name className,
            d.create_time ,
            ifw.operate_type,
            di.serial_no
        from
            inventory_flow_water ifw
        join device d on d.id = ifw.device_id
        join device_class dc on dc.id = ifw.class_id
        join device_inventory di on di.id = ifw.inventory_id
        where
              ifw.del_flag = '0'
        <if test="queryDTO.deviceName != null and queryDTO.deviceName !=''">
            and d.name like CONCAT('%', #{queryDTO.deviceName}, '%')
        </if>
    </select>
</mapper>