| src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/dto/LossProductModelDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -9,6 +9,7 @@ import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.sales.dto.InvoiceLedgerDto; import com.ruoyi.sales.dto.SalesLedgerDto; @@ -284,4 +285,10 @@ return iPage; } @ApiOperation("æ¥è¯¢éå®å°è´¦æ¶èç©æä¿¡æ¯") @GetMapping("/getSalesLedgerWithProducts") public R getSalesLedgerWithProductsLoss(Long salesLedgerId) { return R.ok(salesLedgerService.getSalesLedgerWithProductsLoss(salesLedgerId)); } } src/main/java/com/ruoyi/sales/dto/LossProductModelDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.sales.dto; import lombok.Data; import java.math.BigDecimal; @Data public class LossProductModelDto { private String productName; private String model; private String unit; //æ¶èæ»é private BigDecimal lossNum; //åä½ç¨é private BigDecimal unitQuantity; //å个ç¨é private BigDecimal singleQuantity; } src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
@@ -3,11 +3,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.config.MyBaseMapper; import com.ruoyi.production.dto.ProductStructureDto; import com.ruoyi.purchase.dto.ProcurementBusinessSummaryDto; import com.ruoyi.sales.dto.LossProductModelDto; import com.ruoyi.sales.dto.SalesLedgerProductDto; import com.ruoyi.sales.pojo.SalesLedgerProduct; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.util.List; /** @@ -26,4 +29,6 @@ IPage<SalesLedgerProductDto> listPagePurchaseLedger(Page page,@Param("req") SalesLedgerProductDto salesLedgerProduct); IPage<ProcurementBusinessSummaryDto> procurementBusinessSummaryListPage(Page page,@Param("req") ProcurementBusinessSummaryDto procurementBusinessSummaryDto); List<LossProductModelDto> selectProductBomStructure(@Param("salesLedegerId") Long salesLedegerId); } src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.sales.dto.LossProductModelDto; import com.ruoyi.sales.dto.MonthlyAmountDto; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.pojo.SalesLedger; @@ -39,4 +40,7 @@ IPage<SalesLedger> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto); AjaxResult importData(MultipartFile file); List<LossProductModelDto> getSalesLedgerWithProductsLoss(Long salesLedgerId); } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -35,10 +35,7 @@ import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.sales.dto.MonthlyAmountDto; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.dto.SalesLedgerImportDto; import com.ruoyi.sales.dto.SalesLedgerProductImportDto; import com.ruoyi.sales.dto.*; import com.ruoyi.sales.mapper.*; import com.ruoyi.sales.pojo.*; import com.ruoyi.sales.service.ISalesLedgerProductService; @@ -388,14 +385,16 @@ .findFirst() .map(SysUser::getUserId) .orElse(null); if(aLong == null) throw new RuntimeException("å½å ¥äºº:"+salesLedger.getEntryPerson()+",æ 对åºç¨æ·ï¼"); if (aLong == null) throw new RuntimeException("å½å ¥äºº:" + salesLedger.getEntryPerson() + ",æ 对åºç¨æ·ï¼"); salesLedger.setEntryPerson(aLong.toString()); salesLedgerMapper.insert(salesLedger); // éå®äº§åæ°æ®ç»å®ï¼éè¿éå®åå·è·å对åºéå®äº§åæ°æ® List<SalesLedgerProductImportDto> salesLedgerProductImportDtos = salesLedgerProductImportDtoList.stream() .filter(salesLedgerProductImportDto -> salesLedgerProductImportDto.getSalesContractNo().equals(salesLedger.getSalesContractNo())) .collect(Collectors.toList()); if(CollectionUtils.isEmpty(salesLedgerProductImportDtos)) throw new RuntimeException("éå®åå·:"+salesLedgerImportDto.getSalesContractNo()+",æ 对åºäº§åæ°æ®ï¼"); if (CollectionUtils.isEmpty(salesLedgerProductImportDtos)) throw new RuntimeException("éå®åå·:" + salesLedgerImportDto.getSalesContractNo() + ",æ 对åºäº§åæ°æ®ï¼"); for (SalesLedgerProductImportDto salesLedgerProductImportDto : salesLedgerProductImportDtos) { SalesLedgerProduct salesLedgerProduct = new SalesLedgerProduct(); BeanUtils.copyProperties(salesLedgerProductImportDto, salesLedgerProduct); @@ -433,6 +432,17 @@ return AjaxResult.success("å¯¼å ¥å¤±è´¥"); } @Override public List<LossProductModelDto> getSalesLedgerWithProductsLoss(Long salesLedgerId) { List<LossProductModelDto> lossProductModelDtos = salesLedgerProductMapper.selectProductBomStructure(salesLedgerId); return lossProductModelDtos; } // å é¨ç±»ç¨äºåå¨èåç»æ private static class GroupedCustomer { private final Long customerId; src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -125,5 +125,26 @@ GROUP BY slp.product_category <!-- æäº§å大类æåº --> ORDER BY slp.product_category </select> <select id="selectProductBomStructure" resultType="com.ruoyi.sales.dto.LossProductModelDto"> select a.model, a.product_name, a.unit, sum(a.single_quantity) AS loss_num from (SELECT ps.unit, ps.unit_quantity, pm1.model, p.product_name, ps.unit_quantity * slp.quantity AS single_quantity FROM sales_ledger sl LEFT JOIN sales_ledger_product slp ON slp.sales_ledger_id = sl.id LEFT JOIN product_model pm ON pm.id = slp.product_model_id LEFT JOIN product_bom pb ON pb.product_model_id = pm.id LEFT JOIN product_structure ps ON pb.id = ps.bom_id LEFT JOIN product_model pm1 ON pm1.id = ps.product_model_id LEFT JOIN product p ON p.id = pm1.product_id WHERE sl.id = #{salesLedegerId}) A group by a.model, a.product_name, a.unit </select> </mapper>