src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
@@ -1,14 +1,20 @@ package com.ruoyi.procurementrecord.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.dto.ReturnManagementDto; import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper; import com.ruoyi.procurementrecord.pojo.ReturnManagement; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.ruoyi.procurementrecord.service.ReturnManagementService; import com.ruoyi.procurementrecord.service.ReturnSaleProductService; import com.ruoyi.procurementrecord.service.impl.ReturnSaleProductServiceImpl; import com.ruoyi.sales.dto.SalesLedgerDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -22,48 +28,69 @@ * @date : 2025/9/17 10:34 */ @RestController @Api(tags = "å°è´§ç®¡ç") @Api(tags = "éå®éè´§") @RequestMapping("/returnManagement") public class ReturnManagementController extends BaseController { @Autowired private ReturnManagementService returnManagementService; @Autowired private ReturnManagementMapper returnManagementMapper; private ReturnSaleProductService returnSaleProductService; @GetMapping("/listPage") @ApiOperation("å°è´§ç®¡ç-æ¥è¯¢") public AjaxResult listPage(Page page, ReturnManagement returnManagement) { IPage<ReturnManagement> result = returnManagementService.listPage(page, returnManagement); @ApiOperation("éå®éè´§-æ¥è¯¢") public AjaxResult listPage(Page page, ReturnManagementDto returnManagement) { IPage<ReturnManagementDto> result = returnManagementService.listPage(page, returnManagement); return AjaxResult.success(result); } @PostMapping("/add") @ApiOperation("å°è´§ç®¡ç-æ·»å ") @ApiOperation("éå®éè´§-æ·»å ") @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody ReturnManagement returnManagement) { String rt = OrderUtils.countTodayByCreateTime(returnManagementMapper, "RT"); returnManagement.setReturnNo(rt); boolean result = returnManagementService.save(returnManagement); return result ? success() : error(); public AjaxResult add(@RequestBody ReturnManagementDto returnManagementDto) { return returnManagementService.addReturnManagementDto(returnManagementDto) ? success() : error(); } @PostMapping("/update") @ApiOperation("å°è´§ç®¡ç-ä¿®æ¹") @ApiOperation("éå®éè´§-ä¿®æ¹") @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody ReturnManagement returnManagement) { boolean result = returnManagementService.updateById(returnManagement); return result ? success() : error(); public AjaxResult update(@RequestBody ReturnManagementDto returnManagementDto) { return returnManagementService.updateReturnManagementDto(returnManagementDto) ? success() : error(); } @ApiOperation("éå®éè´§-å¤çéè´§å") @GetMapping("/handle") @Transactional(rollbackFor = Exception.class) public AjaxResult handle(Long returnManagementId) { return returnManagementService.handle(returnManagementId) ? success() : error(); } @DeleteMapping("/del") @ApiOperation("å°è´§ç®¡ç-å é¤") @ApiOperation("éå®éè´§-å é¤") @Transactional(rollbackFor = Exception.class) public AjaxResult del(@RequestBody List<Long> ids) { if (CollectionUtils.isEmpty(ids)) return error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); returnSaleProductService.remove(new QueryWrapper<ReturnSaleProduct>() .lambda() .in(ReturnSaleProduct::getReturnManagementId, ids)); boolean result = returnManagementService.removeByIds(ids); return result ? success() : error(); } @GetMapping("/getById") @ApiOperation("éå®éè´§-æ ¹æ®idæ¥è¯¢") public AjaxResult getById(Long returnManagementId) { ReturnManagementDto returnManagementDto = returnManagementService.getReturnManagementDtoById(returnManagementId); return success(returnManagementDto); } @GetMapping("/getByShippingId") @ApiOperation("éå®éè´§-æ ¹æ®åºåºåæ¥è¯¢éå®è®¢å以å产åä¿¡æ¯") public AjaxResult getByShippingId(Long shippingId) { SalesLedgerDto salesLedgerDto = returnManagementService.getReturnManagementDtoByShippingIdId(shippingId); return success(salesLedgerDto); } } src/main/java/com/ruoyi/procurementrecord/controller/ReturnSaleProductController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.procurementrecord.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * é货产å表 å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-03-05 03:57:42 */ @RestController @RequestMapping("/returnSaleProduct") public class ReturnSaleProductController { } src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.ruoyi.procurementrecord.dto; 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 com.ruoyi.procurementrecord.pojo.ReturnManagement; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.ruoyi.sales.pojo.SalesLedgerProduct; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.List; /** * @author :yys * @date : 2025/9/17 10:28 */ @Data public class ReturnManagementDto extends ReturnManagement { @ApiModelProperty(value = "客æ·åç§°") private String customerName; @ApiModelProperty(value = "éå®åå·") private String salesContractNo; @ApiModelProperty(value = "ä¸å¡å") private String salesman; @ApiModelProperty("å ³èåºåºåå·") private String shippingNo; @ApiModelProperty(value = "项ç®åç§°") private String projectName; @ApiModelProperty(value = "éå®å°è´¦id") private Long salesLedgerId; @ApiModelProperty(value = "éå®äº§å对象æ°ç»") private List<ReturnSaleProductDto> returnSaleProducts; } src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.procurementrecord.dto; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import lombok.Data; import java.math.BigDecimal; @Data public class ReturnSaleProductDto extends ReturnSaleProduct { private String productName; private String model; private String unit; //æªéè´§æ°é private BigDecimal unReturn; } src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.procurementrecord.dto.ReturnManagementDto; import com.ruoyi.procurementrecord.pojo.ReturnManagement; import org.apache.ibatis.annotations.Param; @@ -18,5 +19,7 @@ * @param page * @return */ IPage<ReturnManagement> listPage(Page page,@Param("req") ReturnManagement returnManagement); IPage<ReturnManagementDto> listPage(Page page, @Param("req") ReturnManagementDto returnManagement); ReturnManagementDto getReturnManagementDtoById(Long id); } src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.procurementrecord.mapper; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * é货产å表 Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-03-05 03:57:42 */ @Mapper public interface ReturnSaleProductMapper extends BaseMapper<ReturnSaleProduct> { List<ReturnSaleProductDto> listReturnSaleProductDto(@Param("returnManagementId") Long returnManagementId); } src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -29,44 +29,39 @@ @ApiModelProperty(value = "éè´§åå·") private String returnNo; @ApiModelProperty(value = "å ³èåå·") private String relatedNo; @ApiModelProperty("客æ·id") private Long customerId; @ApiModelProperty(value = "éè´§ç±»å") private String returnType; @ApiModelProperty("å ³èåºåºåå·Id") private Long shippingId; @ApiModelProperty(value = "ä¾åºååç§°") private String supplierName; @ApiModelProperty("项ç®id") private Long projectId; @ApiModelProperty(value = "éè´§åå ") private String returnReason; @ApiModelProperty("项ç®é¶æ®µ") private String projectStage; @ApiModelProperty(value = "éè´§ç¶æ") private String status; @ApiModelProperty("å¶å人") private String maker; @ApiModelProperty(value = "夿³¨") private String remark; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("å¶åæ¶é´") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime makeTime; @ApiModelProperty("ç»ç®äºº") private String settler; @ApiModelProperty("ç¶æ") private Integer status; @ApiModelProperty("å建æ¶é´") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) @ApiModelProperty("æ´æ°æ¶é´") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; /** * <p> * é货产å表 * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-03-05 03:57:42 */ @Getter @Setter @TableName("return_sale_product") @ApiModel(value = "ReturnSaleProduct对象", description = "é货产å表") public class ReturnSaleProduct implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("主é®id") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty("éè´§åid") private Long returnManagementId; @ApiModelProperty("é货产åid") private Long returnSaleLedgerProductId; @ApiModelProperty("éè´§äº§åæ°é") private BigDecimal num; @ApiModelProperty("éè´§ç¶æ 0 æªéå 1å·²éè´§") private Integer status; } src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
@@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.procurementrecord.dto.ReturnManagementDto; import com.ruoyi.procurementrecord.pojo.ReturnManagement; import com.ruoyi.sales.dto.SalesLedgerDto; /** * @author :yys @@ -18,5 +20,15 @@ * @param returnManagement * @return */ IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement); IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement); boolean addReturnManagementDto(ReturnManagementDto returnManagementDto); boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto); SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId); boolean handle(Long returnManagementId); ReturnManagementDto getReturnManagementDtoById(Long returnManagementId); } src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.procurementrecord.service; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> * é货产å表 æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-03-05 03:57:42 */ public interface ReturnSaleProductService extends IService<ReturnSaleProduct> { List<ReturnSaleProductDto> listReturnSaleProductDto(Long returnManagementId); } src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -1,14 +1,38 @@ package com.ruoyi.procurementrecord.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.ruoyi.common.utils.OrderUtils; import com.ruoyi.procurementrecord.dto.ReturnManagementDto; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper; import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper; import com.ruoyi.procurementrecord.pojo.ReturnManagement; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.ruoyi.procurementrecord.service.ReturnManagementService; import com.ruoyi.procurementrecord.service.ReturnSaleProductService; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ShippingInfoService; import com.ruoyi.sales.service.impl.ShippingInfoServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @author :yys @@ -21,9 +45,74 @@ @Autowired private ReturnManagementMapper returnManagementMapper; @Autowired private ReturnSaleProductService returnSaleProductService; @Autowired private ShippingInfoService shippingInfoService; @Autowired private SalesLedgerMapper salesLedgerMapper; @Override public IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement) { IPage<ReturnManagement> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement); public IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement) { IPage<ReturnManagementDto> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement); for (ReturnManagementDto returnManagementDto : returnManagementIPage.getRecords()) { List<ReturnSaleProductDto> returnSaleProducts = returnSaleProductService.listReturnSaleProductDto(returnManagementDto.getId()); returnManagementDto.setReturnSaleProducts(returnSaleProducts); } return returnManagementIPage; } @Override public boolean addReturnManagementDto(ReturnManagementDto returnManagementDto) { String rt = OrderUtils.countTodayByCreateTime(returnManagementMapper, "RT"); returnManagementDto.setReturnNo(rt); save(returnManagementDto); for (ReturnSaleProduct returnSaleProduct : returnManagementDto.getReturnSaleProducts()) { returnSaleProduct.setReturnManagementId(returnManagementDto.getId()); returnSaleProduct.setStatus(0); returnSaleProductService.save(returnSaleProduct); } return true; } @Override public boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto) { List<ReturnSaleProduct> returnSaleProducts = new ArrayList<>(); if (!CollectionUtils.isEmpty(returnManagementDto.getReturnSaleProducts())) { returnManagementDto.getReturnSaleProducts().stream().forEach(returnSaleProductDto -> { ReturnSaleProduct returnSaleProduct = new ReturnSaleProduct(); BeanUtils.copyProperties(returnSaleProductDto, returnSaleProduct); returnSaleProducts.add(returnSaleProduct); }); } returnSaleProductService.updateBatchById(returnSaleProducts); return updateById(returnManagementDto); } @Override public SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId) { ShippingInfo byId = shippingInfoService.getById(shippingId); SalesLedger salesLedger = salesLedgerMapper.selectById(byId.getSalesLedgerId()); SalesLedgerDto salesLedgerDto = new SalesLedgerDto(); BeanUtils.copyProperties(salesLedger, salesLedgerDto); List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(shippingId); salesLedgerDto.setProductDtoData(salesLedgerProductDtos); return salesLedgerDto; } @Override public boolean handle(Long returnManagementId) { ReturnManagement byId = this.getById(returnManagementId); byId.setStatus(1); return false; } @Override public ReturnManagementDto getReturnManagementDtoById(Long returnManagementId) { ReturnManagementDto returnManagementDtoById = returnManagementMapper.getReturnManagementDtoById(returnManagementId); returnManagementDtoById.setReturnSaleProducts(returnSaleProductService.listReturnSaleProductDto(returnManagementId)); return returnManagementDtoById; } } src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.procurementrecord.service.impl; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct; import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper; import com.ruoyi.procurementrecord.service.ReturnSaleProductService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; /** * <p> * é货产å表 æå¡å®ç°ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-03-05 03:57:42 */ @Service public class ReturnSaleProductServiceImpl extends ServiceImpl<ReturnSaleProductMapper, ReturnSaleProduct> implements ReturnSaleProductService { @Autowired private ReturnSaleProductMapper returnSaleProductMapper; @Override public List<ReturnSaleProductDto> listReturnSaleProductDto(Long returnManagementId) { return returnSaleProductMapper.listReturnSaleProductDto(returnManagementId); } } src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -135,4 +135,10 @@ util.exportExcel(response, list, "åè´§ä¿¡æ¯"); } @GetMapping("/getByCustomerName") @ApiOperation("éè¿å®¢æ·åç§°æ¥è¯¢") public AjaxResult getByCustomerName(String customerName) { return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName)); } } src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -43,6 +43,7 @@ private Boolean hasChildren = false; private List<SalesLedgerProduct> productData; private List<SalesLedgerProductDto> productDtoData; private List<String> tempFileIds; private List<CommonFile> SalesLedgerFiles; src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
@@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.SalesLedgerProduct; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -57,4 +58,11 @@ private Integer approvalStatus; @ApiModelProperty(value = "æªéè´§æ°") private BigDecimal unQuantity; @ApiModelProperty(value = "éè´§æ»æ°") private BigDecimal totalReturnNum; } src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -3,7 +3,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.dto.ShippingInfoDto; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShippingInfo; import org.apache.ibatis.annotations.Param; @@ -17,4 +20,9 @@ IPage<ShippingInfoDto> listPage(Page page, @Param("req") ShippingInfo req); List<ShippingInfo> listAll(); List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId); List<ShippingInfo> getShippingInfoByCustomerName(String customerName); } src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.dto.ShippingInfoDto; import com.ruoyi.sales.pojo.ShippingInfo; @@ -19,4 +21,8 @@ boolean deductStock(ShippingInfoDto req) throws IOException; boolean delete(List<Long> ids); List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId); List<ShippingInfo> getShippingInfoByCustomerName(String customerName); } src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -9,7 +9,9 @@ import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.dto.ShippingInfoDto; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; @@ -107,4 +109,15 @@ return this.removeBatchByIds(ids); } @Override public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) { return shippingInfoMapper.getReturnManagementDtoById(shippingId); } @Override public List<ShippingInfo> getShippingInfoByCustomerName(String customerName) { return shippingInfoMapper.getShippingInfoByCustomerName(customerName); } } src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
@@ -2,15 +2,55 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.procurementrecord.mapper.ReturnManagementMapper"> <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.ReturnManagement"> select * from return_management <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto"> select rm.*, c.customer_name, si.shipping_no, sl.project_name, sl.sales_contract_no, sl.salesman from return_management rm left join shipping_info si on rm.shipping_id = si.id left join customer c on rm.customer_id = c.id left join sales_ledger sl on si.sales_ledger_id = sl.id <where> <if test="req.returnNo != null and req.returnNo != ''"> and return_no like concat('%',#{req.returnNo},'%') and rm.return_no like concat('%',#{req.returnNo},'%') </if> <if test="req.returnType != null and req.returnType != ''"> and return_type = #{req.returnType} <if test="req.customerName != null and req.customerName != ''"> and c.customer_name like concat('%',#{req.customerName},'%') </if> <if test="req.projectName != null and req.projectName != ''"> and sl.project_name like concat('%',#{req.projectName},'%') </if> <if test="req.salesman != null and req.salesman != ''"> and sl.salesman like concat('%',#{req.salesman},'%') </if> <if test="req.shippingNo != null and req.shippingNo != ''"> and rm.shipping_no like concat('%',#{req.shippingNo},'%') </if> <if test="req.projectStage != null and req.projectStage != ''"> and rm.project_stage like concat('%',#{req.projectStage},'%') </if> <if test="req.maker != null and req.maker != ''"> and rm.maker like concat('%',#{req.maker},'%') </if> <if test="req.salesContractNo != null and req.salesContractNo != ''"> and sl.sales_contract_no like concat('%',#{req.salesContractNo},'%') </if> </where> </select> <select id="getReturnManagementDtoById" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto"> select rm.*, c.customer_name, si.shipping_no, sl.project_name, sl.sales_contract_no, sl.salesman from return_management rm left join shipping_info si on rm.shipping_id = si.id left join customer c on rm.customer_id = c.id left join sales_ledger sl on si.sales_ledger_id = sl.id where rm.id = #{id} </select> </mapper> src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.procurementrecord.pojo.ReturnSaleProduct"> <id column="id" property="id" /> <result column="return_management_id" property="returnManagementId" /> <result column="return_sale_ledger_product_id" property="returnSaleLedgerProductId" /> <result column="num" property="num" /> <result column="status" property="status" /> </resultMap> <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto"> select rsp.*, slp.product_category as product_name, slp.specification_model as model from return_sale_product rsp left join sales_ledger_product slp on rsp.return_sale_ledger_product_id = slp.id where rsp.return_management_id = #{returnManagementId} </select> </mapper> src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -58,4 +58,29 @@ FROM shipping_info s LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id </select> <select id="getReturnManagementDtoById" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto"> SELECT slp.*, slp.quantity - COALESCE(rs.total_return_num, 0) AS un_quantity, COALESCE(rs.total_return_num, 0) AS total_return_num FROM shipping_info si LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id LEFT JOIN ( SELECT return_sale_ledger_product_id, SUM(num) AS total_return_num FROM return_sale_product <where> <if test="productId != null"> AND return_sale_ledger_product_id = #{productId} </if> </where> GROUP BY return_sale_ledger_product_id ) rs ON rs.return_sale_ledger_product_id = slp.id </select> <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo"> select * from shipping_info si left join sales_ledger sl on si.sales_ledger_id = sl.id where sl.customer_name = #{customerName} </select> </mapper>