src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -2,10 +2,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.dto.SupplierArchiveSaveDto; import com.ruoyi.basic.pojo.SupplierCooperationRecord; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.basic.service.ISupplierService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; @@ -13,12 +16,16 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.List; @RestController @RequestMapping("/system/supplier") @Api(tags = "ä¾åºåæ¡£æ¡") public class SupplierManageController { @Autowired @@ -30,6 +37,7 @@ * @return */ @PostMapping("/add") @ApiOperation("æ°å¢ä¾åºå") public AjaxResult add(@RequestBody SupplierManage supplierManage) { supplierService.saveSupplier(supplierManage); return AjaxResult.success(); @@ -41,6 +49,7 @@ * @return */ @DeleteMapping("/del") @ApiOperation("å é¤ä¾åºå") public AjaxResult delSupplier(@RequestBody List<Integer> ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); @@ -55,6 +64,7 @@ * @return */ @GetMapping("/{id}") @ApiOperation("ä¾åºå详æ ") public AjaxResult supplierDetail(@PathVariable("id") Integer id) { return AjaxResult.success(supplierService.supplierDetail(id)); } @@ -65,6 +75,7 @@ * @return */ @PostMapping("/update") @ApiOperation("ä¿®æ¹ä¾åºå") public AjaxResult update(@RequestBody SupplierManage supplierManage) { supplierService.supplierUpdate(supplierManage); return AjaxResult.success(); @@ -77,6 +88,7 @@ * @return */ @GetMapping("/listPage") @ApiOperation("ä¾åºåå页æ¥è¯¢") public AjaxResult supplierListPage(Page page, SupplierManageDto supplierManageDto) { return AjaxResult.success(supplierService.supplierListPage(page, supplierManageDto)); } @@ -117,7 +129,30 @@ * @return */ @GetMapping("/getOptions") @ApiOperation("ä¾åºåé项") public AjaxResult getOptions() { return AjaxResult.success(supplierService.list()); return AjaxResult.success(supplierService.lambdaQuery().eq(SupplierManage::getCooperationStatus,1) .eq(SupplierManage::getDeleteFlag,0) .eq(SupplierManage::getTenantId, SecurityUtils.getLoginUser().getTenantId()).list()); } @GetMapping("/{id}/archive") @ApiOperation("ä¾åºå宿´æ¡£æ¡") public AjaxResult archive(@PathVariable Integer id) { return AjaxResult.success(supplierService.supplierArchiveDetail(id)); } @PostMapping("/archive/save") @ApiOperation("ä¿åä¾åºå宿´æ¡£æ¡") @Transactional(rollbackFor = Exception.class) public AjaxResult saveArchive(@RequestBody SupplierArchiveSaveDto archive) { return AjaxResult.success(supplierService.saveArchive(archive)); } @PostMapping("/{id}/cooperation") @ApiOperation("æ°å¢ä¾åºååä½è®°å½") public AjaxResult addCooperation(@PathVariable Integer id, @RequestBody SupplierCooperationRecord record) { supplierService.addCooperationRecord(id, record); return AjaxResult.success(); } } src/main/java/com/ruoyi/basic/dto/SupplierArchiveDetailVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.SupplierCooperationRecord; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.basic.pojo.SupplierProduct; import com.ruoyi.basic.pojo.SupplierQualification; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data public class SupplierArchiveDetailVo { @ApiModelProperty("ä¾åºå主档") private SupplierManage supplier; @ApiModelProperty("èµè´¨è¯æå表") private List<SupplierQualification> qualifications; @ApiModelProperty("ä¾åºäº§åå表") private List<SupplierProduct> products; @ApiModelProperty("åä½è¯ä»·å表") private List<SupplierCooperationRecord> cooperationRecords; @ApiModelProperty("éè´ååæ°é") private Long purchaseCount; @ApiModelProperty("éè´æ»é¢") private BigDecimal purchaseAmount; @ApiModelProperty("å·²æ¥ç¥¨éé¢") private BigDecimal invoicedAmount; } src/main/java/com/ruoyi/basic/dto/SupplierArchiveSaveDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.basic.pojo.SupplierProduct; import com.ruoyi.basic.pojo.SupplierQualification; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class SupplierArchiveSaveDto { @ApiModelProperty("ä¾åºå主档") private SupplierManage supplier; @ApiModelProperty("èµè´¨è¯æå表") private List<SupplierQualification> qualifications; @ApiModelProperty("ä¾åºäº§åå表") private List<SupplierProduct> products; } src/main/java/com/ruoyi/basic/dto/SupplierManageDto.java
@@ -9,4 +9,7 @@ @ApiModelProperty(value = "ç»´æ¤äººååç§°") private String maintainUserName; @ApiModelProperty(value = "ä¾åºäº§åæç´¢å ³é®å") private String productKeyword; } src/main/java/com/ruoyi/basic/mapper/SupplierCooperationRecordMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.basic.pojo.SupplierCooperationRecord; public interface SupplierCooperationRecordMapper extends BaseMapper<SupplierCooperationRecord> { } src/main/java/com/ruoyi/basic/mapper/SupplierProductMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.basic.pojo.SupplierProduct; public interface SupplierProductMapper extends BaseMapper<SupplierProduct> { } src/main/java/com/ruoyi/basic/mapper/SupplierQualificationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ package com.ruoyi.basic.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.basic.pojo.SupplierQualification; public interface SupplierQualificationMapper extends BaseMapper<SupplierQualification> { } src/main/java/com/ruoyi/basic/pojo/SupplierCooperationRecord.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @Data @TableName("supplier_cooperation_record") public class SupplierCooperationRecord { @TableId(type = IdType.AUTO) @ApiModelProperty("主é®ID") private Long id; @ApiModelProperty("ä¾åºåID") private Long supplierId; @JsonFormat(pattern="yyyy-MM-dd") @ApiModelProperty("å使¥æ") private LocalDate cooperationDate; @ApiModelProperty("åä½ç±»å") private String cooperationType; @ApiModelProperty("å ³èä¸å¡ID") private Long businessId; @ApiModelProperty("å ³èä¸å¡ç¼å·") private String businessNo; @ApiModelProperty("æ¶åéé¢") private BigDecimal amount; @ApiModelProperty("è¯ä»·ç»æ") private String result; @ApiModelProperty("è¯å") private BigDecimal rating; @ApiModelProperty("åä½è®°å½å 容") private String description; @ApiModelProperty("ç§æ·ID") private Long tenantId; @ApiModelProperty("åå»ºç¨æ·ID") private Long createUser; @ApiModelProperty("æ´æ°ç¨æ·ID") private Long updateUser; @ApiModelProperty("å建æ¶é´") private LocalDateTime createTime; @ApiModelProperty("æ´æ°æ¶é´") private LocalDateTime updateTime; @ApiModelProperty("å 餿 å¿") private Integer deleteFlag; } src/main/java/com/ruoyi/basic/pojo/SupplierManage.java
@@ -14,8 +14,47 @@ public class SupplierManage { @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "ä¾åºåID") private Integer id; @ApiModelProperty(value = "ä¾åºåç¼ç ") private String supplierCode; @ApiModelProperty(value = "ä¾åºåç®ç§°") private String supplierShortName; @ApiModelProperty(value = "ä¾åºååç±»") private String supplierCategory; @ApiModelProperty(value = "ä¾åºåç级") private String supplierLevel; @ApiModelProperty(value = "åä½ç¶æï¼0åç¨ï¼1åä½ä¸ï¼2æå") private Integer cooperationStatus; @ApiModelProperty(value = "馿¬¡å使¥æ") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate cooperationStartDate; @ApiModelProperty(value = "èµè´¨ç¶æï¼0å¾ å®åï¼1ææï¼2å³å°å°æï¼3å·²è¿æ") private Integer qualificationStatus; @ApiModelProperty(value = "æè¿èµè´¨å°ææ¥æ") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate qualificationExpiryDate; @ApiModelProperty(value = "ä¾åºäº§åæè¦") private String suppliedProductsSummary; @ApiModelProperty(value = "åä½å岿è¦") private String cooperationHistorySummary; @ApiModelProperty(value = "夿³¨") private String remark; @ApiModelProperty(value = "å 餿 å¿ï¼0æ£å¸¸ï¼1å é¤") private Integer deleteFlag; @ApiModelProperty(value = "ä¾åºååç§°") @Excel(name = "ä¾åºååç§°") private String supplierName; src/main/java/com/ruoyi/basic/pojo/SupplierProduct.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @TableName("supplier_product") public class SupplierProduct { @TableId(type = IdType.AUTO) @ApiModelProperty("主é®ID") private Long id; @ApiModelProperty("ä¾åºåID") private Long supplierId; @ApiModelProperty("产ååç§°") private String productName; @ApiModelProperty("产ååç±»") private String productCategory; @ApiModelProperty("è§æ ¼åå·") private String specificationModel; @ApiModelProperty("åç") private String brand; @ApiModelProperty("åä½") private String unit; @ApiModelProperty("æå°èµ·è®¢é") private BigDecimal minOrderQuantity; @ApiModelProperty("ä¾è´§å¨æï¼å¤©ï¼") private Integer leadTimeDays; @ApiModelProperty("åèåä»·") private BigDecimal referencePrice; @ApiModelProperty("å¸ç§") private String currency; @ApiModelProperty("ç¶æï¼0åä¾ï¼1ä¾åºä¸") private Integer status; @ApiModelProperty("夿³¨") private String remark; @ApiModelProperty("ç§æ·ID") private Long tenantId; @ApiModelProperty("åå»ºç¨æ·ID") private Long createUser; @ApiModelProperty("æ´æ°ç¨æ·ID") private Long updateUser; @ApiModelProperty("å建æ¶é´") private LocalDateTime createTime; @ApiModelProperty("æ´æ°æ¶é´") private LocalDateTime updateTime; @ApiModelProperty("å 餿 å¿") private Integer deleteFlag; } src/main/java/com/ruoyi/basic/pojo/SupplierQualification.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDate; import java.time.LocalDateTime; @Data @TableName("supplier_qualification") public class SupplierQualification { @TableId(type = IdType.AUTO) @ApiModelProperty("主é®ID") private Long id; @ApiModelProperty("ä¾åºåID") private Long supplierId; @ApiModelProperty("èµè´¨åç§°") private String qualificationName; @ApiModelProperty("èµè´¨ç±»å") private String qualificationType; @ApiModelProperty("è¯ä¹¦ç¼å·") private String certificateNo; @ApiModelProperty("åè¯æºæ") private String issuingAuthority; @JsonFormat(pattern="yyyy-MM-dd") @ApiModelProperty("åè¯æ¥æ") private LocalDate issueDate; @JsonFormat(pattern="yyyy-MM-dd") @ApiModelProperty("å°ææ¥æ") private LocalDate expiryDate; @ApiModelProperty("æ¯å¦é¿æææï¼0å¦ï¼1æ¯") private Integer longTermValid; @ApiModelProperty("ç¶æï¼0å¾ å®¡æ ¸ï¼1ææï¼2è¿æï¼3ä½åº") private Integer status; @ApiModelProperty("夿³¨") private String remark; @ApiModelProperty("ç§æ·ID") private Long tenantId; @ApiModelProperty("åå»ºç¨æ·ID") private Long createUser; @ApiModelProperty("æ´æ°ç¨æ·ID") private Long updateUser; @ApiModelProperty("å建æ¶é´") private LocalDateTime createTime; @ApiModelProperty("æ´æ°æ¶é´") private LocalDateTime updateTime; @ApiModelProperty("å 餿 å¿") private Integer deleteFlag; } src/main/java/com/ruoyi/basic/service/ISupplierService.java
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.dto.SupplierArchiveDetailVo; import com.ruoyi.basic.dto.SupplierArchiveSaveDto; import com.ruoyi.basic.pojo.SupplierCooperationRecord; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.web.multipart.MultipartFile; @@ -57,4 +60,10 @@ void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto); Boolean importData(MultipartFile file); SupplierArchiveDetailVo supplierArchiveDetail(Integer id); Integer saveArchive(SupplierArchiveSaveDto archive); void addCooperationRecord(Integer supplierId, SupplierCooperationRecord record); } src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -6,8 +6,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.basic.dto.SupplierArchiveDetailVo; import com.ruoyi.basic.dto.SupplierArchiveSaveDto; import com.ruoyi.basic.excel.SupplierManageExcelDto; import com.ruoyi.basic.mapper.SupplierManageMapper; import com.ruoyi.basic.mapper.SupplierQualificationMapper; import com.ruoyi.basic.mapper.SupplierProductMapper; import com.ruoyi.basic.mapper.SupplierCooperationRecordMapper; import com.ruoyi.basic.pojo.SupplierQualification; import com.ruoyi.basic.pojo.SupplierProduct; import com.ruoyi.basic.pojo.SupplierCooperationRecord; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.basic.service.ISupplierService; @@ -16,13 +24,19 @@ import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.mapper.TicketRegistrationMapper; import com.ruoyi.purchase.pojo.TicketRegistration; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.time.LocalDateTime; import java.math.BigDecimal; import java.util.stream.Collectors; import java.util.ArrayList; import java.util.List; @@ -33,6 +47,10 @@ private SupplierManageMapper supplierMapper; @Autowired private PurchaseLedgerMapper purchaseLedgerMapper; @Autowired private TicketRegistrationMapper ticketRegistrationMapper; @Autowired private SupplierQualificationMapper qualificationMapper; @Autowired private SupplierProductMapper productMapper; @Autowired private SupplierCooperationRecordMapper cooperationMapper; /** * ä¾åºåæ°å¢ @@ -41,12 +59,24 @@ */ @Override public void saveSupplier(SupplierManage supplierManage) { Long tenantId = SecurityUtils.getLoginUser().getTenantId(); LambdaQueryWrapper<SupplierManage> supplierManageLambdaQueryWrapper = new LambdaQueryWrapper<>(); supplierManageLambdaQueryWrapper.eq(SupplierManage::getSupplierName,supplierManage.getSupplierName()); supplierManageLambdaQueryWrapper.eq(SupplierManage::getSupplierName,supplierManage.getSupplierName()) .eq(SupplierManage::getTenantId, tenantId).eq(SupplierManage::getDeleteFlag, 0); if (supplierMapper.selectCount(supplierManageLambdaQueryWrapper) > 0) { throw new RuntimeException("ä¾åºåå·²åå¨"); } supplierManage.setTenantId(tenantId); supplierManage.setDeleteFlag(0); supplierManage.setCooperationStatus(supplierManage.getCooperationStatus() == null ? 1 : supplierManage.getCooperationStatus()); supplierManage.setQualificationStatus(supplierManage.getQualificationStatus() == null ? 0 : supplierManage.getQualificationStatus()); supplierManage.setMaintainUserId(SecurityUtils.getUserId().intValue()); supplierManage.setMaintainTime(LocalDate.now()); supplierMapper.insert(supplierManage); if (supplierManage.getSupplierCode() == null || supplierManage.getSupplierCode().trim().isEmpty()) { supplierManage.setSupplierCode(String.format("SUP%06d", supplierManage.getId())); supplierMapper.updateById(supplierManage); } } /** @@ -56,14 +86,18 @@ */ @Override public int delSupplier(List<Integer> ids) { List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(new QueryWrapper<PurchaseLedger>().lambda().in(PurchaseLedger::getSupplierId, ids)); Long tenantId=SecurityUtils.getLoginUser().getTenantId(); List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(new QueryWrapper<PurchaseLedger>().lambda() .in(PurchaseLedger::getSupplierId, ids).eq(PurchaseLedger::getTenantId,tenantId)); if (purchaseLedgers.size() > 0) { throw new RuntimeException("ä¾åºåå·²åå¨éè´åå"); } LambdaQueryWrapper<SupplierManage> delWrapper = new LambdaQueryWrapper<>(); delWrapper.in(SupplierManage::getId, ids); return supplierMapper.delete(delWrapper); int count=0; for(Integer id:ids){ SupplierManage supplier=supplierDetail(id); if(supplier!=null){ supplier.setDeleteFlag(1); supplier.setCooperationStatus(0); count+=supplierMapper.updateById(supplier); } } return count; } /** @@ -73,7 +107,9 @@ */ @Override public SupplierManage supplierDetail(Integer id) { return supplierMapper.selectById(id); return supplierMapper.selectOne(new LambdaQueryWrapper<SupplierManage>().eq(SupplierManage::getId,id) .eq(SupplierManage::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .eq(SupplierManage::getDeleteFlag,0)); } /** @@ -83,7 +119,11 @@ */ @Override public int supplierUpdate(SupplierManage supplierManage) { return supplierMapper.updateById(supplierManage); SupplierManage current = supplierDetail(supplierManage.getId()); if (current == null) throw new RuntimeException("ä¾åºåä¸åå¨"); supplierManage.setTenantId(current.getTenantId()); return supplierMapper.update(supplierManage, new LambdaQueryWrapper<SupplierManage>() .eq(SupplierManage::getId, supplierManage.getId()).eq(SupplierManage::getTenantId,current.getTenantId())); } /** @@ -94,6 +134,7 @@ */ @Override public IPage<SupplierManage> supplierListPage(Page page, SupplierManageDto supplierManageDto) { supplierManageDto.setTenantId(SecurityUtils.getLoginUser().getTenantId()); return supplierMapper.supplierListPage(page,supplierManageDto); } @@ -104,6 +145,7 @@ */ @Override public void supplierExport(HttpServletResponse response, SupplierManageDto supplierManageDto) { supplierManageDto.setTenantId(SecurityUtils.getLoginUser().getTenantId()); List<SupplierManageExcelDto> supplierManageList = supplierMapper.supplierExportList(supplierManageDto); ExcelUtil<SupplierManageExcelDto> util = new ExcelUtil<SupplierManageExcelDto>(SupplierManageExcelDto.class); util.exportExcel(response, supplierManageList, "ä¾åºå导åº"); @@ -133,4 +175,75 @@ } return false; } @Override public SupplierArchiveDetailVo supplierArchiveDetail(Integer id) { SupplierManage supplier = supplierDetail(id); if (supplier == null) throw new RuntimeException("ä¾åºåä¸åå¨"); long supplierId = id.longValue(); long tenantId = supplier.getTenantId(); SupplierArchiveDetailVo result = new SupplierArchiveDetailVo(); result.setSupplier(supplier); result.setQualifications(qualificationMapper.selectList(new LambdaQueryWrapper<SupplierQualification>() .eq(SupplierQualification::getSupplierId,supplierId).eq(SupplierQualification::getTenantId,tenantId) .eq(SupplierQualification::getDeleteFlag,0).orderByAsc(SupplierQualification::getExpiryDate))); result.setProducts(productMapper.selectList(new LambdaQueryWrapper<SupplierProduct>() .eq(SupplierProduct::getSupplierId,supplierId).eq(SupplierProduct::getTenantId,tenantId) .eq(SupplierProduct::getDeleteFlag,0))); result.setCooperationRecords(cooperationMapper.selectList(new LambdaQueryWrapper<SupplierCooperationRecord>() .eq(SupplierCooperationRecord::getSupplierId,supplierId).eq(SupplierCooperationRecord::getTenantId,tenantId) .eq(SupplierCooperationRecord::getDeleteFlag,0).orderByDesc(SupplierCooperationRecord::getCooperationDate))); List<PurchaseLedger> purchases = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getSupplierId,supplierId).eq(PurchaseLedger::getTenantId,tenantId)); result.setPurchaseCount((long)purchases.size()); result.setPurchaseAmount(purchases.stream().map(PurchaseLedger::getContractAmount).filter(java.util.Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add)); result.setInvoicedAmount(ticketRegistrationMapper.selectList(new LambdaQueryWrapper<TicketRegistration>() .eq(TicketRegistration::getSupplierId,supplierId).eq(TicketRegistration::getTenantId,tenantId) .eq(TicketRegistration::getDeleteFlag,0)).stream().map(TicketRegistration::getInvoiceAmount) .filter(java.util.Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)); return result; } @Override @Transactional(rollbackFor = Exception.class) public Integer saveArchive(SupplierArchiveSaveDto archive) { if (archive == null || archive.getSupplier() == null) throw new RuntimeException("ä¾åºåä¿¡æ¯ä¸è½ä¸ºç©º"); SupplierManage supplier = archive.getSupplier(); if (supplier.getId() == null) saveSupplier(supplier); else supplierUpdate(supplier); long tenantId = SecurityUtils.getLoginUser().getTenantId(); long userId = SecurityUtils.getUserId(); long supplierId = supplier.getId().longValue(); qualificationMapper.delete(new LambdaQueryWrapper<SupplierQualification>().eq(SupplierQualification::getSupplierId,supplierId).eq(SupplierQualification::getTenantId,tenantId)); productMapper.delete(new LambdaQueryWrapper<SupplierProduct>().eq(SupplierProduct::getSupplierId,supplierId).eq(SupplierProduct::getTenantId,tenantId)); LocalDate nearest = null; if (archive.getQualifications() != null) for (SupplierQualification item : archive.getQualifications()) { item.setId(null); item.setSupplierId(supplierId); item.setTenantId(tenantId); item.setCreateUser(userId); item.setCreateTime(LocalDateTime.now()); item.setUpdateTime(LocalDateTime.now()); item.setDeleteFlag(0); item.setStatus(item.getStatus() == null ? 1 : item.getStatus()); qualificationMapper.insert(item); if (item.getExpiryDate()!=null && (nearest==null || item.getExpiryDate().isBefore(nearest))) nearest=item.getExpiryDate(); } if (archive.getProducts() != null) for (SupplierProduct item : archive.getProducts()) { if (item.getProductName()==null || item.getProductName().trim().isEmpty()) continue; item.setId(null); item.setSupplierId(supplierId); item.setTenantId(tenantId); item.setCreateUser(userId); item.setCreateTime(LocalDateTime.now()); item.setUpdateTime(LocalDateTime.now()); item.setDeleteFlag(0); item.setStatus(item.getStatus()==null?1:item.getStatus()); item.setCurrency(item.getCurrency()==null?"CNY":item.getCurrency()); productMapper.insert(item); } supplier.setQualificationExpiryDate(nearest); supplier.setQualificationStatus(nearest==null?0:(nearest.isBefore(LocalDate.now())?3:(nearest.isBefore(LocalDate.now().plusDays(31))?2:1))); if (archive.getProducts()!=null) supplier.setSuppliedProductsSummary(archive.getProducts().stream().map(SupplierProduct::getProductName) .filter(java.util.Objects::nonNull).limit(5).collect(Collectors.joining("ã"))); supplierUpdate(supplier); return supplier.getId(); } @Override public void addCooperationRecord(Integer supplierId, SupplierCooperationRecord record) { SupplierManage supplier = supplierDetail(supplierId); if (supplier == null) throw new RuntimeException("ä¾åºåä¸åå¨"); record.setId(null); record.setSupplierId(supplierId.longValue()); record.setTenantId(supplier.getTenantId()); record.setCreateUser(SecurityUtils.getUserId()); record.setUpdateUser(SecurityUtils.getUserId()); record.setCreateTime(LocalDateTime.now()); record.setUpdateTime(LocalDateTime.now()); record.setDeleteFlag(0); cooperationMapper.insert(record); } } src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -11,7 +11,8 @@ MEASURING(5), //计éå¨å ·å°è´¦ MEASURINGRecord(6),//计éå¨å ·å°è´¦è®°å½ ApproveNode(7), //åå审æ¹èç¹å®¡æ ¸ ApproveProcess(8); //åå审æ¹ä¸»æ°æ® ApproveProcess(8), //åå审æ¹ä¸»æ°æ® SUPPLIER_QUALIFICATION(9); //ä¾åºåèµè´¨éä»¶ private final int value; src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -16,6 +16,8 @@ @Data public class PurchaseLedgerDto { @ApiModelProperty(value = "ç§æ·ID") private Long tenantId; private String entryDateStart; private String entryDateEnd; src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -25,8 +25,48 @@ * 主é®ID */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "æ¥ç¥¨ç»è®°ID") private Long id; @ApiModelProperty(value = "ä¾åºåID") private Long supplierId; @ApiModelProperty(value = "å票代ç ") private String invoiceCode; @ApiModelProperty(value = "å票类å") private String invoiceType; @ApiModelProperty(value = "ç¨ç") private BigDecimal taxRate; @ApiModelProperty(value = "ç¨é¢") private BigDecimal taxAmount; @ApiModelProperty(value = "å¸ç§") private String currency; @ApiModelProperty(value = "åç¥¨ç¶æï¼0è稿ï¼1å·²ç»è®°ï¼2红å²ï¼3ä½åº") private Integer invoiceStatus; @ApiModelProperty(value = "æ ¸éªç¶æï¼0æªæ ¸éªï¼1éè¿ï¼2å¼å¸¸") private Integer verificationStatus; @ApiModelProperty(value = "夿³¨") private String remark; @ApiModelProperty(value = "åå»ºç¨æ·ID") private Long createUser; @ApiModelProperty(value = "æ´æ°ç¨æ·ID") private Long updateUser; @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; @ApiModelProperty(value = "å 餿 å¿ï¼0æ£å¸¸ï¼1å é¤") private Integer deleteFlag; /** * ç¶æ */ src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -472,8 +472,7 @@ @Override public IPage<PurchaseLedgerDto> selectPurchaseLedgerListPage(IPage ipage, PurchaseLedgerDto purchaseLedger) { Long userId = SecurityUtils.getUserId(); purchaseLedger.setRecorderId(userId); purchaseLedger.setTenantId(SecurityUtils.getLoginUser().getTenantId()); IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerMapper.selectPurchaseLedgerListPage(ipage, purchaseLedger); purchaseLedgerDtoIPage.getRecords().forEach(purchaseLedgerDto -> { List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().eq(CommonFile::getCommonId, purchaseLedgerDto.getId()).eq(CommonFile::getType, FileNameType.PURCHASELEDGER.getValue())); src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -42,6 +42,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -91,6 +92,8 @@ @Override public List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration) { LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TicketRegistration::getTenantId,SecurityUtils.getLoginUser().getTenantId()) .eq(TicketRegistration::getDeleteFlag,0); if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) { queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber()) .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName()) @@ -122,11 +125,39 @@ @Override @Transactional(rollbackFor = Exception.class) public int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto) throws IOException { Long tenantId = SecurityUtils.getLoginUser().getTenantId(); Long userId = SecurityUtils.getUserId(); if (ticketRegistrationDto.getPurchaseLedgerId() == null) throw new BaseException("è¯·éæ©éè´å"); if (StringUtils.isBlank(ticketRegistrationDto.getInvoiceNumber())) throw new BaseException("å票å·ç ä¸è½ä¸ºç©º"); if (ticketRegistrationDto.getIssueDate() == null) throw new BaseException("å¼ç¥¨æ¥æä¸è½ä¸ºç©º"); if (ticketRegistrationDto.getInvoiceAmount() == null || ticketRegistrationDto.getInvoiceAmount().compareTo(BigDecimal.ZERO) <= 0) { throw new BaseException("å票éé¢å¿ 须大äº0"); } // 1. æ¥è¯¢éè´å°è´¦è®°å½ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(ticketRegistrationDto.getPurchaseLedgerId()); PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getId,ticketRegistrationDto.getPurchaseLedgerId()) .eq(PurchaseLedger::getTenantId,tenantId)); if (purchaseLedger == null) { // å¤çéè´å°è´¦ä¸åå¨çæ åµï¼ä¾å¦æåºå¼å¸¸æè¿åé误 throw new IllegalArgumentException("éè´å°è´¦è®°å½ä¸åå¨ï¼ID: " + ticketRegistrationDto.getPurchaseLedgerId()); } LambdaQueryWrapper<TicketRegistration> duplicate = new LambdaQueryWrapper<TicketRegistration>() .eq(TicketRegistration::getTenantId, tenantId) .eq(TicketRegistration::getInvoiceNumber, ticketRegistrationDto.getInvoiceNumber()) .eq(TicketRegistration::getDeleteFlag, 0); if (ticketRegistrationDto.getId() != null) duplicate.ne(TicketRegistration::getId, ticketRegistrationDto.getId()); if (ticketRegistrationMapper.selectCount(duplicate) > 0) throw new BaseException("该å票å·ç å·²ç»è®°"); BigDecimal registered = ticketRegistrationMapper.selectList(new LambdaQueryWrapper<TicketRegistration>() .eq(TicketRegistration::getTenantId,tenantId) .eq(TicketRegistration::getPurchaseLedgerId,purchaseLedger.getId()) .eq(TicketRegistration::getDeleteFlag,0) .ne(ticketRegistrationDto.getId()!=null,TicketRegistration::getId,ticketRegistrationDto.getId())) .stream().map(TicketRegistration::getInvoiceAmount).filter(java.util.Objects::nonNull) .reduce(BigDecimal.ZERO,BigDecimal::add); if (purchaseLedger.getContractAmount()!=null && registered.add(ticketRegistrationDto.getInvoiceAmount()).compareTo(purchaseLedger.getContractAmount())>0) { throw new BaseException("æ¥ç¥¨éé¢è¶ è¿éè´åå©ä½å¯ç»è®°éé¢ï¼" + purchaseLedger.getContractAmount().subtract(registered)); } @@ -135,11 +166,23 @@ TicketRegistration ticketRegistration = new TicketRegistration(); BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration); ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber()); ticketRegistration.setTenantId(purchaseLedger.getTenantId()); ticketRegistration.setTenantId(tenantId); ticketRegistration.setSupplierId(purchaseLedger.getSupplierId()); ticketRegistration.setSupplierName(purchaseLedger.getSupplierName()); ticketRegistration.setIssueDate(ticketRegistrationDto.getIssueDate()); ticketRegistration.setContractAmount(purchaseLedger.getContractAmount()); ticketRegistration.setSalesLedgerId(purchaseLedger.getSalesLedgerId()); ticketRegistration.setEnterDate(ticketRegistrationDto.getEnterDate()); ticketRegistration.setCurrency(StringUtils.isBlank(ticketRegistration.getCurrency()) ? "CNY" : ticketRegistration.getCurrency()); ticketRegistration.setInvoiceStatus(ticketRegistration.getInvoiceStatus()==null?1:ticketRegistration.getInvoiceStatus()); ticketRegistration.setVerificationStatus(ticketRegistration.getVerificationStatus()==null?0:ticketRegistration.getVerificationStatus()); ticketRegistration.setDeleteFlag(0); ticketRegistration.setUpdateUser(userId); ticketRegistration.setUpdateTime(DateUtils.getNowDate()); if (ticketRegistration.getTaxAmount()==null && ticketRegistration.getTaxRate()!=null) { BigDecimal rate=ticketRegistration.getTaxRate().compareTo(BigDecimal.ONE)>0?ticketRegistration.getTaxRate().divide(new BigDecimal("100"),6,RoundingMode.HALF_UP):ticketRegistration.getTaxRate(); ticketRegistration.setTaxAmount(ticketRegistration.getInvoiceAmount().multiply(rate).divide(BigDecimal.ONE.add(rate),2,RoundingMode.HALF_UP)); } // 4. å¤çåè¡¨æ°æ® List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData(); @@ -148,7 +191,15 @@ } // 5. æ§è¡æå ¥ææ´æ°æä½ int rowsAffected = ticketRegistrationMapper.insert(ticketRegistration); int rowsAffected; if (ticketRegistration.getId()==null) { ticketRegistration.setCreateUser(userId); rowsAffected=ticketRegistrationMapper.insert(ticketRegistration); } else { rowsAffected=ticketRegistrationMapper.update(ticketRegistration,new LambdaQueryWrapper<TicketRegistration>() .eq(TicketRegistration::getId,ticketRegistration.getId()).eq(TicketRegistration::getTenantId,tenantId)); productRecordMapper.delete(new LambdaQueryWrapper<ProductRecord>().eq(ProductRecord::getTicketRegistrationId,ticketRegistration.getId()).eq(ProductRecord::getTenantId,tenantId)); } // 6. å¢å éè´å°è´¦äº§åå¼ç¥¨è®°å½ List<SalesLedgerProduct> salesLedgerProducts = ticketRegistrationDto.getProductData(); @@ -166,6 +217,7 @@ productRecord.setSaleLedgerProjectId(salesLedgerProduct.getId()); productRecord.setId(null); productRecord.setType("2"); productRecord.setTenantId(tenantId); insert = productRecordMapper.insert(productRecord); } if (insert <= 0) { @@ -241,7 +293,7 @@ fileRecord.setName(originalFilename); fileRecord.setUrl(formalFilePath.toString()); fileRecord.setCreateTime(LocalDateTime.now()); fileRecord.setType(4); fileRecord.setType(FileNameType.INVOICE.getValue()); commonFileMapper.insert(fileRecord); log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); @@ -255,59 +307,36 @@ @Override @Transactional(rollbackFor = Exception.class) public int delRegistration(Long[] ids) { // å é¤éè´å°è´¦äº§åå¼ç¥¨è®°å½å¯¹è±¡ Long tenantId=SecurityUtils.getLoginUser().getTenantId(); LambdaQueryWrapper<ProductRecord> productRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); productRecordLambdaQueryWrapper.in(ProductRecord::getId, Arrays.asList(ids)); productRecordLambdaQueryWrapper.in(ProductRecord::getTicketRegistrationId, Arrays.asList(ids)).eq(ProductRecord::getTenantId,tenantId); List<ProductRecord> productRecords = productRecordMapper.selectList(productRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty(productRecords)){ return 0; } LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getId, productRecords.stream().map(ProductRecord::getTicketRegistrationId).collect(Collectors.toList())); List<TicketRegistration> ticketRegistrations = ticketRegistrationMapper.selectList(ticketRegistrationLambdaQueryWrapper); // ä¿®æ¹äº§åä¿¡æ¯ for (ProductRecord productRecord : productRecords) { BigDecimal subtract = ticketRegistrations.get(0).getInvoiceAmount().subtract(productRecords.get(0).getTicketsAmount()); // å°äºçäº0å é¤ ï¼å¤§äº0ä¿®æ¹ if(subtract.compareTo(BigDecimal.ZERO) <= 0){ ticketRegistrationMapper.deleteById(ticketRegistrations.get(0)); // å é¤ä»æ¬¾æµæ°´ paymentRegistrationMapper.delete(new LambdaQueryWrapper<PaymentRegistration>().eq(PaymentRegistration::getTicketRegistrationId, ticketRegistrations.get(0).getId())); }else if(subtract.compareTo(BigDecimal.ZERO) > 0){ ticketRegistrations.get(0).setInvoiceAmount(subtract); ticketRegistrationMapper.updateById(ticketRegistrations.get(0)); } LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>(); salesLedgerProductLambdaQueryWrapper.eq(SalesLedgerProduct::getId, productRecord.getSaleLedgerProjectId()) .eq(SalesLedgerProduct::getType, 2); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(salesLedgerProductLambdaQueryWrapper); if(!CollectionUtils.isEmpty(salesLedgerProducts)){ for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { salesLedgerProduct.setFutureTickets(salesLedgerProduct.getFutureTickets().add(productRecord.getTicketsNum())); salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getFutureTicketsAmount().add(productRecord.getTicketsAmount())); salesLedgerProduct.setTicketsAmount(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(productRecord.getFutureTicketsAmount())); salesLedgerProduct.setTicketsNum(salesLedgerProduct.getQuantity().subtract(productRecord.getFutureTickets())); salesLedgerProductMapper.updateById(salesLedgerProduct); } SalesLedgerProduct product=salesLedgerProductMapper.selectById(productRecord.getSaleLedgerProjectId()); if(product!=null){ product.setTicketsNum(nvl(product.getTicketsNum()).subtract(nvl(productRecord.getTicketsNum())).max(BigDecimal.ZERO)); product.setTicketsAmount(nvl(product.getTicketsAmount()).subtract(nvl(productRecord.getTicketsAmount())).max(BigDecimal.ZERO)); product.setFutureTickets(nvl(product.getFutureTickets()).add(nvl(productRecord.getTicketsNum()))); product.setFutureTicketsAmount(nvl(product.getFutureTicketsAmount()).add(nvl(productRecord.getTicketsAmount()))); salesLedgerProductMapper.updateById(product); } } // å é¤éè´å°è´¦äº§åå¼ç¥¨è®°å½ productRecordMapper.delete(productRecordLambdaQueryWrapper); return 1; paymentRegistrationMapper.delete(new LambdaQueryWrapper<PaymentRegistration>().in(PaymentRegistration::getTicketRegistrationId,Arrays.asList(ids))); return ticketRegistrationMapper.delete(new LambdaQueryWrapper<TicketRegistration>().in(TicketRegistration::getId,Arrays.asList(ids)).eq(TicketRegistration::getTenantId,tenantId)); } @Override public TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto) { TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(ticketRegistrationDto.getId()); TicketRegistration ticketRegistration = ticketRegistrationMapper.selectOne(new LambdaQueryWrapper<TicketRegistration>() .eq(TicketRegistration::getId,ticketRegistrationDto.getId()).eq(TicketRegistration::getTenantId,SecurityUtils.getLoginUser().getTenantId())); if (ticketRegistration == null) throw new BaseException("æ¥ç¥¨ç»è®°ä¸åå¨"); LambdaQueryWrapper<PurchaseLedger> purchaseQueryWrapper = new LambdaQueryWrapper<>(); purchaseQueryWrapper.eq(PurchaseLedger::getId, ticketRegistration.getPurchaseLedgerId()); PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(purchaseQueryWrapper); if (ticketRegistration == null) { throw new BaseException("éè´å°è´¦ä¸åå¨"); } if (purchaseLedger == null) throw new BaseException("éè´å°è´¦ä¸åå¨"); // å建并填å DTO TicketRegistrationDto resultDto = new TicketRegistrationDto(); BeanUtils.copyProperties(ticketRegistration, resultDto); @@ -325,7 +354,9 @@ public List getTicketNo(TicketRegistrationDto ticketRegistrationDto) { LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(TicketRegistration::getId, TicketRegistration::getInvoiceNumber, TicketRegistration::getInvoiceAmount) .eq(TicketRegistration::getPurchaseLedgerId, ticketRegistrationDto.getId()); .eq(TicketRegistration::getPurchaseLedgerId, ticketRegistrationDto.getId()) .eq(TicketRegistration::getTenantId,SecurityUtils.getLoginUser().getTenantId()) .eq(TicketRegistration::getDeleteFlag,0); List<Map<String, Object>> result = ticketRegistrationMapper.selectMaps(queryWrapper); // å°ä¸å线å½å转æ¢ä¸ºé©¼å³°å½å return result.stream().map(map -> map.entrySet().stream() @@ -349,7 +380,8 @@ if (!ObjectUtils.isEmpty(ticketRegistration.getIssueDateStart()) && !ObjectUtils.isEmpty(ticketRegistration.getIssueDateEnd())) { queryWrapper.between(TicketRegistration::getIssueDate, LocalDate.parse(ticketRegistration.getIssueDateStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalDate.parse(ticketRegistration.getIssueDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } queryWrapper.eq(TicketRegistration::getIssUerId, SecurityUtils.getUserId()); queryWrapper.eq(TicketRegistration::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .eq(TicketRegistration::getDeleteFlag,0); IPage<TicketRegistration> ticketRegistrationIPage = ticketRegistrationMapper.selectPage(page, queryWrapper); // 计ç®å·²ä»æ¬¾éé¢ if (CollectionUtils.isNotEmpty(ticketRegistrationIPage.getRecords())) { @@ -385,7 +417,9 @@ @Override public PurchaseLedgerDto getPuargeById(Long id) { PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id); PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>() .eq(PurchaseLedger::getId,id).eq(PurchaseLedger::getTenantId,SecurityUtils.getLoginUser().getTenantId())); if(purchaseLedger==null) throw new BaseException("éè´å°è´¦ä¸åå¨"); PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto(); BeanUtils.copyProperties(purchaseLedger, purchaseLedgerDto); SalesLedgerProduct salesLedgerProduct = new SalesLedgerProduct(); @@ -455,6 +489,8 @@ } } private BigDecimal nvl(BigDecimal value) { return value == null ? BigDecimal.ZERO : value; } /** * ä¸å线å½å转驼峰å½å */ src/main/resources/mapper/basic/SupplierManageMapper.xml
@@ -6,58 +6,48 @@ <select id="supplierListPage" resultType="com.ruoyi.basic.dto.SupplierManageDto"> SELECT T1.id, T1.supplier_name, T1.taxpayer_identification_num, T1.company_address, T1.company_phone, T1.bank_account_name, T1.bank_account_num, T1.contact_user_name, T1.contact_user_phone, T1.maintain_user_id, T1.maintain_time, T1.create_time, T1.create_user, T1.update_time, T1.update_user, T1.tenant_id, T1.*, T2.nick_name AS maintainUserName FROM supplier_manage T1 LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id <where> T1.tenant_id = #{supplierManageDto.tenantId} AND T1.delete_flag = 0 <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' "> AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%') </if> <if test="supplierManageDto.supplierCode != null and supplierManageDto.supplierCode != ''"> AND T1.supplier_code LIKE CONCAT('%',#{supplierManageDto.supplierCode},'%') </if> <if test="supplierManageDto.productKeyword != null and supplierManageDto.productKeyword != ''"> AND EXISTS (SELECT 1 FROM supplier_product SP WHERE SP.supplier_id=T1.id AND SP.tenant_id=T1.tenant_id AND SP.delete_flag=0 AND SP.product_name LIKE CONCAT('%',#{supplierManageDto.productKeyword},'%')) </if> <if test="supplierManageDto.supplierLevel != null and supplierManageDto.supplierLevel != ''"> AND T1.supplier_level = #{supplierManageDto.supplierLevel} </if> <if test="supplierManageDto.cooperationStatus != null"> AND T1.cooperation_status = #{supplierManageDto.cooperationStatus} </if> <if test="supplierManageDto.qualificationStatus != null"> AND T1.qualification_status = #{supplierManageDto.qualificationStatus} </if> </where> ORDER BY T1.id DESC </select> <select id="supplierExportList" resultType="com.ruoyi.basic.excel.SupplierManageExcelDto"> SELECT T1.id, T1.supplier_name, T1.taxpayer_identification_num, T1.company_address, T1.company_phone, T1.bank_account_name, T1.bank_account_num, T1.contact_user_name, T1.contact_user_phone, T1.maintain_user_id, T1.maintain_time, T1.create_time, T1.create_user, T1.update_time, T1.update_user, T1.tenant_id, T1.*, T2.nick_name AS maintainUserName FROM supplier_manage T1 LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id <where> T1.tenant_id = #{supplierManageDto.tenantId} AND T1.delete_flag = 0 <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' "> AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%') </if> </where> </select> </mapper> </mapper> src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -26,6 +26,9 @@ left join product_record pr on pl.id = pr.purchase_ledger_id <where> 1 = 1 <if test="c.tenantId != null"> AND pl.tenant_id = #{c.tenantId} </if> <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''"> and pl.purchase_contract_number like concat('%',#{c.purchaseContractNumber},'%') </if> @@ -73,4 +76,4 @@ WHERE T4.id = #{id} </select> </mapper> </mapper>