src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -2,14 +2,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; 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.procurementrecord.dto.*; import com.ruoyi.procurementrecord.mapper.CustomStorageMapper; import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.service.ProcurementRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.ibatis.annotations.Delete; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -30,10 +34,11 @@ @Autowired private ProcurementRecordService procurementRecordService; @GetMapping("/productlist") @Log(title = "éè´å ¥åº-å ¥åºç®¡ç-æ°å¢å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult list(ProcurementDto procurementDto) { List<ProcurementDto> result =procurementRecordService.listProcurementBySalesLedgerId(procurementDto); List<ProcurementDto> result = procurementRecordService.listProcurementBySalesLedgerId(procurementDto); return AjaxResult.success(result); } @@ -41,7 +46,30 @@ @Log(title = "éè´å ¥åº-å ¥åºç®¡ç-æ°å¢å ¥åº", businessType = BusinessType.INSERT) @Transactional public AjaxResult add(@RequestBody ProcurementAddDto procurementDto) { procurementDto.setType(1); procurementDto.setTypeName("éè´å ¥åº"); return AjaxResult.success(procurementRecordService.add(procurementDto)); } @PostMapping("/addCustom") @Log(title = "èªå®ä¹å ¥åº-å ¥åºç®¡ç-æ°å¢å ¥åº", businessType = BusinessType.INSERT) @Transactional public AjaxResult addCustom(@RequestBody List<CustomStorage> customStorage) { return procurementRecordService.addCustom(customStorage); } @PostMapping("/updateCustom") @Log(title = "èªå®ä¹å ¥åº-å ¥åºç®¡ç-ä¿®æ¹å ¥åº", businessType = BusinessType.UPDATE) @Transactional public AjaxResult updateCustom(@RequestBody CustomStorage customStorage) { return procurementRecordService.updateCustom(customStorage); } @Delete("/delteCustom") @Log(title = "èªå®ä¹å ¥åº-å ¥åºç®¡ç-å é¤å ¥åº", businessType = BusinessType.DELETE) @Transactional public AjaxResult deleteCustom(@RequestBody List<Long> ids) { return procurementRecordService.deleteCustom(ids); } @PostMapping("/update") @@ -52,10 +80,17 @@ } @PostMapping("/updateManagement") @Log(title = "éè´å ¥åº-åºåå°è´¦-ä¿®æ¹", businessType = BusinessType.UPDATE) @Log(title = "æåå ¥åº-åºåå°è´¦-ä¿®æ¹", businessType = BusinessType.UPDATE) @Transactional public AjaxResult updateManagement(@RequestBody ProcurementManagementUpdateDto procurementDto) { return AjaxResult.success(procurementRecordService.updateManagement(procurementDto)); } @PostMapping("/updateManagementByCustom") @Log(title = "èªå®ä¹å ¥åº-åºåå°è´¦-ä¿®æ¹", businessType = BusinessType.UPDATE) @Transactional public AjaxResult updateManagementByCustom(@RequestBody ProcurementManagementUpdateDto procurementDto) { return AjaxResult.success(procurementRecordService.updateManagementByCustom(procurementDto)); } @PostMapping("/del") @@ -69,16 +104,47 @@ @Log(title = "éè´å ¥åº-å ¥åºç®¡ç-å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) @ApiOperation(value = "å ¥åºæ¥è¯¢") public AjaxResult listPage(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDto> result =procurementRecordService.listPage(page, procurementDto); IPage<ProcurementPageDto> result = procurementRecordService.listPage(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageByProduction") @Log(title = "çäº§å ¥åº-å ¥åºç®¡ç-å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) @ApiOperation(value = "å ¥åºæ¥è¯¢") public AjaxResult listPageByProduction(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDto> result = procurementRecordService.listPageByProduction(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageByCustom") @Log(title = "èªå®ä¹å ¥åº-å ¥åºç®¡ç-å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) @ApiOperation(value = "å ¥åºæ¥è¯¢") public AjaxResult listPageByCustom(Page page, CustomStorage customStorage) { IPage<CustomStorage> result = procurementRecordService.listPageByCustom(page, customStorage); return AjaxResult.success(result); } @GetMapping("/listPageCopy") @Log(title = "éè´å ¥åº-å ¥åºç®¡ç-å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) @Log(title = "éè´å ¥åº-åºå管ç-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageCopy(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDtoCopy> result =procurementRecordService.listPageCopy(page, procurementDto); IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopy(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageCopyByProduction") @Log(title = "çäº§å ¥åº-åºå管ç-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageCopyByCustom") @Log(title = "èªå®ä¹å ¥åº-åºå管ç-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageCopyByCustom(Page page, CustomStorage customStorage) { IPage<CustomStorage> result = procurementRecordService.listPageCopyByCustom(page, customStorage); return AjaxResult.success(result); } @GetMapping("/getReportList") @Log(title = "åºåæ¥è¡¨æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult getReportList(Page page, ProcurementPageDto procurementDto) { @@ -86,21 +152,62 @@ } /** * å¯¼åº * åºå管çéè´å¯¼åº * @param response */ @PostMapping("/exportCopy") public void exportCopy(HttpServletResponse response) { procurementRecordService.exportCopy(response); procurementRecordService.exportCopy(response,1); } /** * å¯¼åº * åºå管ççäº§å¯¼åº * @param response */ @PostMapping("/exportCopyOne") public void exportCopyOne(HttpServletResponse response) { procurementRecordService.exportCopy(response,2); } /** * åºå管çèªå®ä¹å¯¼åº * @param response */ @PostMapping("/exportCopyTwo") public void exportCopyTwo(HttpServletResponse response) { procurementRecordService.exportCopyTwo(response,3); } /** * å ¥åºï¼åºåºç®¡çéè´å¯¼åº * @param response */ @PostMapping("/export") public void export(HttpServletResponse response) { procurementRecordService.export(response); procurementRecordService.export(response,1); } /** * å ¥åºï¼åºåºç®¡ççäº§å¯¼åº * @param response */ @PostMapping("/exportOne") public void exportOne(HttpServletResponse response) { procurementRecordService.export(response,2); } @Autowired private CustomStorageMapper customStorageMapper; /** * å ¥åºï¼åºåºç®¡çèªå®ä¹å¯¼åº * @param response */ @PostMapping("/exportTwo") public void exportTwo(HttpServletResponse response) { List<CustomStorage> customStorages = customStorageMapper.selectList(null); ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); util.exportExcel(response, customStorages, "å ¥åºå°è´¦"); } src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; @@ -10,12 +11,14 @@ import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd; import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto; import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.procurementrecord.service.ProcurementRecordOutService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * @author :yys @@ -30,26 +33,40 @@ private ProcurementRecordOutService procurementRecordOutService; @PostMapping("/stockout") @Log(title = "éè´å ¥åº-åºåºç®¡ç-åºåº", businessType = BusinessType.INSERT) @Log(title = "éè´åºåº-åºåºç®¡ç-åºåº", businessType = BusinessType.INSERT) public AjaxResult stockout(@RequestBody ProcurementRecordOutAdd procurementRecordOutAdd) { return AjaxResult.success(procurementRecordOutService.stockout(procurementRecordOutAdd)); } @GetMapping("/listPage") @Log(title = "éè´å ¥åº-åºåºç®¡ç-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) @Log(title = "éè´åºåº-åºåºå°è´¦-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPage(Page page, ProcurementRecordOutPageDto procurementDto) { IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPage(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageByProduct") @Log(title = "ç产åºåº-åºåºå°è´¦-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto) { IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageByProduct(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listPageByCustom") @Log(title = "èªå®ä¹åºåº-åºåºå°è´¦-åºåºæ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) { IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageByCustom(page, procurementDto); return AjaxResult.success(result); } @PostMapping("/del") @Log(title = "éè´å ¥åº-åºåºç®¡ç-å é¤åºåº", businessType = BusinessType.DELETE) @Log(title = "éè´åºåº-åºåºå°è´¦-å é¤åºåº", businessType = BusinessType.DELETE) public AjaxResult deletePro(@RequestBody ProcurementUpdateDto procurementDto) { return AjaxResult.success(procurementRecordOutService.deletePro(procurementDto)); } /** * å¯¼åº * éè´åºåºå¯¼åº * @param response */ @PostMapping("/export") @@ -57,4 +74,29 @@ procurementRecordOutService.export(response); } @Autowired public ProcurementRecordOutMapper procurementRecordOutMapper; /** * ç产åºåºå¯¼åº * @param response */ @PostMapping("/exportOne") public void exportOne(HttpServletResponse response) { List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listOne(); ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class); util.exportExcel(response, list, "ç产åºåºå°è´¦"); } /** * èªå®ä¹åºåºå¯¼åº * @param response */ @PostMapping("/exportTwo") public void exportTwo(HttpServletResponse response) { List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listTwo(); ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class); util.exportExcel(response, list, "ç产åºåºå°è´¦"); } } src/main/java/com/ruoyi/procurementrecord/dto/Details.java
@@ -10,7 +10,10 @@ */ @Data public class Details { private Integer id; private BigDecimal inboundQuantity; private BigDecimal warnNum; private Integer id; // 产åid private BigDecimal inboundQuantity; // å ¥åºæ°é private BigDecimal warnNum; // é¢è¦æ°éï¼éè´å ¥åºææï¼ //åä»· private BigDecimal unitPrice; private BigDecimal totalPrice; } src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
@@ -15,4 +15,11 @@ private String nickName; /** * å ¥åºç±»å 1-éè´ 2-ç产 3-èªå®ä¹ */ private Integer type; private String typeName; } src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
@@ -17,6 +17,22 @@ private String createBy; private BigDecimal minStock; /** * åä»· */ private BigDecimal unitPrice; /** * æ»ä»· */ private BigDecimal totalPrice; // åä»· private BigDecimal taxInclusiveUnitPrice; // æ»ä»· private BigDecimal taxInclusiveTotalPrice; private Long createUser; private String createTime; src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -22,15 +23,36 @@ private Long createUser; /** * å ¥åºç±»å 1-éè´ 2-ç产 */ private Integer type; /** * å ¥åºæ¹æ¬¡ */ @Excel(name = "å ¥åºæ¹æ¬¡") private String inboundBatches; /** * ååå· * éè´ååå· */ private String purchaseContractNumber; /** * éå®ååå· */ private String salesContractNo; /** * 客æ·ååå· */ private String customerContractNo; /** * 客æ·åç§° */ @Excel(name = "客æ·åç§°") private String customerName; private String salesLedgerProductId; @@ -40,6 +62,20 @@ @Excel(name = "å ¥åºæ°é") private BigDecimal inboundNum; /** * å ¥åºåä»· */ @ApiModelProperty(value = "å ¥åºåä»·") @Excel(name = "å ¥åºåä»·") private BigDecimal unitPrice; /** * å ¥åºæ»ä»· */ @ApiModelProperty(value = "å ¥åºæ»ä»·") @Excel(name = "å ¥åºæ»ä»·") private BigDecimal totalPrice; @Excel(name = "é¢è¦æ°é") private BigDecimal warnNum; src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -32,6 +33,22 @@ */ private String purchaseContractNumber; /** * éå®ååå· */ private String salesContractNo; /** * 客æ·ååå· */ private String customerContractNo; /** * 客æ·åç§° */ private String customerName; private String salesLedgerProductId; /** @@ -39,6 +56,20 @@ */ @Excel(name = "å ¥åºæ°é") private BigDecimal inboundNum; /** * å ¥åºåä»· */ @ApiModelProperty(value = "å ¥åºåä»·") @Excel(name = "å ¥åºåä»·") private BigDecimal unitPrice; /** * å ¥åºæ»ä»· */ @ApiModelProperty(value = "å ¥åºæ»ä»·") @Excel(name = "å ¥åºæ»ä»·") private BigDecimal totalPrice; /** * å¾ åºåºæ°é @@ -49,7 +80,7 @@ * åºåºæ°é */ @Excel(name = "åºåºæ°é") private BigDecimal totalInboundNum; private BigDecimal totalInboundNum = BigDecimal.ZERO; /** * æä½åºåæ°é src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
@@ -19,4 +19,9 @@ private Integer salesLedgerProductId; /** * åºåºç±»å 1-éè´åºåº 2-éå®åºåº 3-èªå®ä¹ */ private Integer type; } src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
@@ -20,6 +20,22 @@ private Integer id; private BigDecimal warnNum; /** * éå®ååå· */ private String salesContractNo; /** * 客æ·ååå· */ private String customerContractNo; /** * 客æ·åç§° */ @Excel(name = "客æ·åç§°") private String customerName; /** * åºå ¥åºæ°é @@ -28,10 +44,22 @@ private BigDecimal inboundNum; /** * åä»· */ @Excel(name = "åä»·") private BigDecimal unitPrice; /** * æ»ä»· */ @Excel(name = "æ»ä»·") private BigDecimal totalPrice; /** * åºå ¥åºæ¶é´ */ // @Excel(name = "åºåºæ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDateTime createTime; private String timeStr; @@ -50,6 +78,8 @@ */ @Excel(name = "ä¾åºååç§°") private String supplierName; /** @@ -94,4 +124,8 @@ @Excel(name = "ä¸å«ç¨æ»ä»·") private BigDecimal taxExclusiveTotalPrice; /** * ç©åç±»å */ private String itemType; } src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
@@ -18,6 +18,15 @@ private BigDecimal quantityStock; private BigDecimal unitPrice; private BigDecimal totalPrice; private List<Integer> ids; /** * åºåºç±»å 1-éè´ 2-éå® 3-èªå®ä¹ */ private Integer type; } src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.procurementrecord.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.pojo.CustomStorage; import org.apache.ibatis.annotations.Param; /** * @author :yys * @date : 2025/11/10 13:11 */ public interface CustomStorageMapper extends BaseMapper<CustomStorage> { IPage<CustomStorage> listPageCopyByCustom(Page page,@Param("req") CustomStorage customStorageLambdaQueryWrapper); } src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -30,5 +30,13 @@ List<ProcurementPageDtoCopy> listCopy(); List<ProcurementPageDtoCopy> listCopyOne(); List<ProcurementPageDto> list(); List<ProcurementPageDto> listOne(); IPage<ProcurementPageDto> listPageByProduction(Page page, @Param("req") ProcurementPageDto procurementDto); IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, @Param("req") ProcurementPageDto procurementDto); } src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -18,4 +18,12 @@ IPage<ProcurementRecordOutPageDto> listPage(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); List<ProcurementRecordOutPageDto> list(); List<ProcurementRecordOutPageDto> listOne(); List<ProcurementRecordOutPageDto> listTwo(); IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto); } src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,119 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; /** * @author :yys * @date : 2025/11/10 11:51 */ @TableName("custom_storage") @Data public class CustomStorage { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; // å ¥åºæ¶é´ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "å ¥åºæ¶é´", width = 30, dateFormat = "yyyy-MM-dd") private Date inboundDate; @TableField(exist = false) private String timeStr; /** * å¾ åºåºæ°é */ @Excel(name = "å¾ åºåºæ°é") @TableField(exist = false) private BigDecimal inboundNum0; /** * åºåºæ°é */ @Excel(name = "åºåºæ°é") @TableField(exist = false) private BigDecimal totalInboundNum = BigDecimal.ZERO; // ç©åç±»å @Excel(name = "ç©åç±»å") private String itemType; // å ¥åºæ¹æ¬¡ @Excel(name = "å ¥åºæ¹æ¬¡") private String inboundBatches; // å ¥åºæ°é @Excel(name = "å ¥åºæ°é") private BigDecimal inboundNum; // ä¾åºååç§° @Excel(name = "ä¾åºååç§°") private String supplierName; // 产å大类 @Excel(name = "产å大类") private String productCategory; // è§æ ¼åå· @Excel(name = "è§æ ¼åå·") private String specificationModel; // åä½ @Excel(name = "åä½") private String unit; // å«ç¨åä»· @Excel(name = "å«ç¨åä»·") private BigDecimal taxInclusiveUnitPrice; // å«ç¨æ»ä»· @Excel(name = "å«ç¨æ»ä»·") private BigDecimal taxInclusiveTotalPrice; // ç¨ç(%) @Excel(name = "ç¨ç(%)") private BigDecimal taxRate; // ä¸å«ç¨æ»ä»· @Excel(name = "ä¸å«ç¨æ»ä»·") private BigDecimal taxExclusiveTotalPrice; /** * å ¥åºç¨æ· */ @Excel(name = "å ¥åºç¨æ·") private String createBy; /** * å ¥åºç¨æ·id */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å ¥åºæ¶é´ */ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -1,6 +1,8 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.*; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Builder; import lombok.Data; @@ -22,7 +24,7 @@ private Integer id; /** * 产åä¿¡æ¯è¡¨id * 产åä¿¡æ¯è¡¨idï¼èªå®ä¹å ¥åºæ¶ä¸º0ï¼ */ private Integer salesLedgerProductId; @@ -43,32 +45,42 @@ private String inboundBatches; /** * åºåºåºæ°é * åºåºæ°é */ private BigDecimal inboundNum; /** * åºåºåºç¨æ· * åºåºç±»å 1-éè´ 2-éå® 3-èªå®ä¹ */ private Integer type; /** * åºåºç¨æ· */ private String createBy; /** * å ¥åºç¨æ·id */ @TableField(fill = FieldFill.INSERT) private Long createUser; /** * å ¥åºæ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
@@ -37,9 +37,24 @@ private BigDecimal inboundNum; /** * åä»· */ private BigDecimal unitPrice; /** * æ»ä»· */ private BigDecimal totalPrice; /** * é¢è¦æ°é */ private BigDecimal warnNum; /** * å ¥åºç±»å 1-éè´å ¥åº 2-çäº§å ¥åº */ private Integer type; // /** // * æä½åºåæ°é // */ @@ -54,21 +69,25 @@ /** * å ¥åºç¨æ·id */ @TableField(fill = FieldFill.INSERT) private Long createUser; /** * å ¥åºæ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -23,4 +23,8 @@ int deletePro(ProcurementUpdateDto procurementDto); void export(HttpServletResponse response); IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto); IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto); } src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.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.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.dto.*; import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import javax.servlet.http.HttpServletResponse; @@ -27,11 +29,29 @@ int deletePro(ProcurementUpdateDto procurementDto); void export(HttpServletResponse response); void export(HttpServletResponse response,Integer type); int updateManagement(ProcurementManagementUpdateDto procurementDto); void exportCopy(HttpServletResponse response); void exportCopy(HttpServletResponse response,Integer type); void exportCopyTwo(HttpServletResponse response,Integer type); Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto); IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto); AjaxResult addCustom(List<CustomStorage> customStorage); IPage<CustomStorage> listPageByCustom(Page page, CustomStorage customStorage); IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto); IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage); AjaxResult updateCustom(CustomStorage customStorage); AjaxResult deleteCustom(List<Long> ids); int updateManagementByCustom(ProcurementManagementUpdateDto procurementDto); } src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.project.system.mapper.SysUserMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -24,6 +25,7 @@ import java.text.DateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.stream.Collectors; @@ -54,7 +56,15 @@ procurementRecordOutLambdaQueryWrapper.ge(ProcurementRecordOut::getCreateTime, now) // 大äºçäºå½å¤© .lt(ProcurementRecordOut::getCreateTime, now.plusDays(1)); // å°äºæå¤© Long aLong1 = procurementRecordOutMapper.selectCount(procurementRecordOutLambdaQueryWrapper); // 2. å®ä¹æ¥ææ ¼å¼ï¼å¿ é¡»ä¸åç¬¦ä¸²æ ¼å¼å®å ¨å¹é ï¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime localDateTime = null; // 3. 转æ¢ï¼String â LocalDate â LocalDateTimeï¼è¡¥å 0ç¹æ¶é´ï¼ if(StringUtils.isNotEmpty(procurementRecordOutAdd.getTime())){ LocalDate localDate = LocalDate.parse(procurementRecordOutAdd.getTime(), formatter); // è·åå½åæ¶åç§ LocalTime localTime = LocalTime.now(); localDateTime = localDate.atTime(localTime);} // æ¥è¯¢éè´åºåºæ°é LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getProcurementRecordStorageId, procurementRecordOutAdd.getId()); @@ -65,7 +75,8 @@ .salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId()) .inboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡" : "第"+ (aLong + 1) + "æ¹æ¬¡") .inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity())) .createTime(LocalDateTime.now()) .type(procurementRecordOutAdd.getType()) .createTime(localDateTime == null ? LocalDateTime.now() : localDateTime) .createUser(Long.valueOf(procurementRecordOutAdd.getUserId())) .createBy(sysUser.getNickName()) .updateUser(Long.valueOf(procurementRecordOutAdd.getUserId())) @@ -95,8 +106,18 @@ @Override public void export(HttpServletResponse response) { List<ProcurementRecordOutPageDto> list =procurementRecordOutMapper.list(); List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.list(); ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class); util.exportExcel(response, list, "åºåºå°è´¦"); } @Override public IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto) { return procurementRecordOutMapper.listPageByProduct(page, procurementDto); } @Override public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) { return procurementRecordOutMapper.listPageByCustom(page, procurementDto); } } src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -7,9 +7,12 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.dto.*; import com.ruoyi.procurementrecord.mapper.CustomStorageMapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; import com.ruoyi.procurementrecord.service.ProcurementRecordService; @@ -21,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; @@ -106,6 +110,8 @@ procurementRecordStorageById.setWarnNum(procurementDto.getWarnNum()); procurementRecordStorageById.setUpdateUser(SecurityUtils.getLoginUser().getUserId()); procurementRecordStorageById.setUpdateTime(LocalDateTime.now()); procurementRecordStorageById.setUnitPrice(procurementDto.getUnitPrice()); procurementRecordStorageById.setTotalPrice(procurementDto.getTotalPrice()); return procurementRecordMapper.updateById(procurementRecordStorageById); } @@ -115,7 +121,8 @@ procurementRecordMapper.deleteBatchIds(procurementRecordStorageById.stream().map(ProcurementRecordStorage::getId).collect(Collectors.toList())); // å 餿æå¯¹åºçåºåºè®°å½ LambdaQueryWrapper<ProcurementRecordOut> procurementRecordOutLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordOutLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, procurementDto.getIds()); procurementRecordOutLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, procurementDto.getIds()) .eq(ProcurementRecordOut::getType,procurementDto.getType()); List<ProcurementRecordOut> procurementRecordOuts = procurementRecordOutMapper.selectList(procurementRecordOutLambdaQueryWrapper); if(!CollectionUtils.isEmpty(procurementRecordOuts)){ procurementRecordOutMapper.deleteBatchIds(procurementRecordOuts.stream().map(ProcurementRecordOut::getId).collect(Collectors.toList())); @@ -124,8 +131,13 @@ } @Override public void export(HttpServletResponse response) { List<ProcurementPageDto> list =procurementRecordMapper.list(); public void export(HttpServletResponse response,Integer type) { List<ProcurementPageDto> list = new ArrayList<>(); if(type == 1){ list = procurementRecordMapper.list(); }else{ list = procurementRecordMapper.listOne(); } // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = list.stream().map(ProcurementPageDto::getId).collect(Collectors.toList()); @@ -136,6 +148,7 @@ } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ ExcelUtil<ProcurementPageDto> util = new ExcelUtil<ProcurementPageDto>(ProcurementPageDto.class); @@ -182,21 +195,39 @@ if(salesLedgerProduct == null){ throw new RuntimeException("éå®å°è´¦äº§åä¸åå¨"); } // æ ¹æ®å¤§ç±»ï¼è§æ ¼æ¥è¯¢ææäº§åid LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductLambdaQueryWrapper = new LambdaQueryWrapper<>(); salesLedgerProductLambdaQueryWrapper.eq(SalesLedgerProduct::getProductCategory, salesLedgerProduct.getProductCategory()) .eq(SalesLedgerProduct::getSpecificationModel, salesLedgerProduct.getSpecificationModel()) .eq(SalesLedgerProduct::getType, 1); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(salesLedgerProductLambdaQueryWrapper); if(CollectionUtils.isEmpty(salesLedgerProducts)){ throw new RuntimeException("æ²¡ææ¾å°å¯¹åºç产å"); } salesLedgerProduct.setMinStock(procurementDto.getMinStock()); salesLedgerProductMapper.updateById(salesLedgerProduct); ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId()); procurementRecordStorageById.setCreateBy(sysUser.getNickName()); procurementRecordStorageById.setCreateUser(sysUser.getUserId()); procurementRecordStorageById.setUpdateTime(LocalDateTime.parse(entryDateStr,df)); procurementRecordStorageById.setUpdateUser(loginUser.getUserId()); procurementRecordStorageById.setCreateTime(LocalDateTime.parse(createTimeStr,df)); procurementRecordMapper.updateById(procurementRecordStorageById); LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordStorageLambdaQueryWrapper.in(ProcurementRecordStorage::getSalesLedgerProductId, salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList())); ProcurementRecordStorage procurementRecordStorage = ProcurementRecordStorage.builder().build(); procurementRecordStorage.setUnitPrice(procurementDto.getUnitPrice()); procurementRecordStorage.setTotalPrice(procurementDto.getTotalPrice()); procurementRecordStorage.setCreateBy(sysUser.getNickName()); procurementRecordStorage.setCreateUser(sysUser.getUserId()); procurementRecordStorage.setUpdateTime(LocalDateTime.parse(entryDateStr,df)); procurementRecordStorage.setUpdateUser(loginUser.getUserId()); procurementRecordStorage.setCreateTime(LocalDateTime.parse(createTimeStr,df)); procurementRecordMapper.update(procurementRecordStorage,procurementRecordStorageLambdaQueryWrapper); return 0; } @Override public void exportCopy(HttpServletResponse response) { List<ProcurementPageDtoCopy> list =procurementRecordMapper.listCopy(); public void exportCopy(HttpServletResponse response,Integer type) { List<ProcurementPageDtoCopy> list = new ArrayList<>(); if(type == 1){ list = procurementRecordMapper.listCopy(); }else{ list = procurementRecordMapper.listCopyOne(); } // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = list.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); @@ -207,6 +238,7 @@ } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class); @@ -234,6 +266,53 @@ dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); } ExcelUtil<ProcurementPageDtoCopy> util = new ExcelUtil<ProcurementPageDtoCopy>(ProcurementPageDtoCopy.class); util.exportExcel(response, list, "åºå管ç"); } @Override public void exportCopyTwo(HttpServletResponse response,Integer type) { LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); customStorageLambdaQueryWrapper.groupBy(CustomStorage::getSupplierName, CustomStorage::getProductCategory, CustomStorage::getSpecificationModel); List<CustomStorage> list = customStorageMapper.selectList(customStorageLambdaQueryWrapper); // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = list.stream().map(CustomStorage::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); util.exportExcel(response, list, "åºå管ç"); return; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, type); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); util.exportExcel(response, list, "åºå管ç"); return; } for (CustomStorage dto : list) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); continue; } // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾ åºåºæ°é BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); } ExcelUtil<CustomStorage> util = new ExcelUtil<CustomStorage>(CustomStorage.class); util.exportExcel(response, list, "åºå管ç"); } @@ -336,20 +415,271 @@ } @Override public IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProduction(page, procurementDto); List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords(); // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return procurementPageDtoIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect) .eq(ProcurementRecordOut::getType,2); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoIPage; } for (ProcurementPageDto dto : procurementPageDtos) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); continue; } // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾ åºåºæ°é BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); } return procurementPageDtoIPage; } private final CustomStorageMapper customStorageMapper; @Override public AjaxResult addCustom(List<CustomStorage> customStorage) { LoginUser loginUser = SecurityUtils.getLoginUser(); if(CollectionUtils.isEmpty(customStorage)){ return AjaxResult.error("æ°æ®ä¸è½ä¸ºç©º"); } customStorage.forEach(item -> { // æ¥è¯¢éè´å ¥åºæ°é Long aLong = customStorageMapper.selectCount(null); item.setInboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡(èªå®ä¹å ¥åº)" : "第"+ (aLong + 1) + "æ¹æ¬¡(èªå®ä¹å ¥åº)" ); item.setCreateBy(loginUser.getNickName()); customStorageMapper.insert(item); }); return AjaxResult.success("èªå®ä¹å ¥åºæå"); } @Override public IPage<CustomStorage> listPageByCustom(Page page, CustomStorage customStorage) { LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); if(customStorage != null){ if(!StringUtils.isEmpty(customStorage.getSupplierName())){ customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName()); } // çéå ¥åºæ¶é´ if(customStorage.getTimeStr() != null){ customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getTimeStr()); } if(!StringUtils.isEmpty(customStorage.getProductCategory())){ customStorageLambdaQueryWrapper.like(CustomStorage::getProductCategory, customStorage.getProductCategory()); } } customStorageLambdaQueryWrapper.orderByDesc(CustomStorage::getInboundDate); IPage<CustomStorage> procurementPageDtoIPage = customStorageMapper.selectPage(page, customStorageLambdaQueryWrapper); procurementPageDtoIPage.getRecords().forEach(item -> item.setInboundNum0(item.getInboundNum())); List<CustomStorage> procurementPageDtos = procurementPageDtoIPage.getRecords(); // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = procurementPageDtos.stream().map(CustomStorage::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return procurementPageDtoIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect) .eq(ProcurementRecordOut::getType, 3); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoIPage; } for (CustomStorage dto : procurementPageDtos) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); continue; } // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾ åºåºæ°é BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); } return procurementPageDtoIPage; } @Override public IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) { IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopyByProduction(page, procurementDto); List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords(); // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return procurementPageDtoCopyIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 2); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoCopyIPage; } for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; } // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾ åºåºæ°é BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // åºåºæ°é = æ»æ°é - å¾ åºåºæ°é dto.setTotalInboundNum(totalInboundNum); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); // åºåä»·å¼ if(dto.getUnitPrice() != null){ dto.setTotalPrice(dto.getTotalInboundNum().multiply(dto.getUnitPrice())); } } return procurementPageDtoCopyIPage; } @Override public IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage) { // LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); // customStorageLambdaQueryWrapper.groupBy(CustomStorage::getProductCategory, CustomStorage::getSpecificationModel,CustomStorage::getTaxInclusiveUnitPrice); // if(customStorage != null){ // if(!StringUtils.isEmpty(customStorage.getSupplierName())){ // customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName()); // } // // çéå ¥åºæ¶é´ // if(customStorage.getInboundDate() != null){ // customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getInboundDate()); // } // if(!StringUtils.isEmpty(customStorage.getProductCategory())){ // customStorageLambdaQueryWrapper.like(CustomStorage::getProductCategory, customStorage.getProductCategory()); // } // } // customStorageLambdaQueryWrapper.orderByDesc(CustomStorage::getInboundDate); IPage<CustomStorage> pageList = customStorageMapper.listPageCopyByCustom(page, customStorage); List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords(); // 计ç®å¾ å ¥åºæ°é // æ¥è¯¢éè´è®°å½å·²å ¥åºæ°é List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return pageList; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return pageList; } for (CustomStorage dto : procurementPageDtoCopyList) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; } // 计ç®å·²åºåºæ°éæ»åï¼å¹¶è®¾ç½®å¾ åºåºæ°é BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // åºåºæ°é = æ»æ°é - å¾ åºåºæ°é dto.setTotalInboundNum(totalInboundNum); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); // åºåä»·å¼ if(dto.getTaxInclusiveUnitPrice() != null){ dto.setTaxInclusiveTotalPrice(dto.getInboundNum0().multiply(dto.getTaxInclusiveUnitPrice())); } } pageList.setRecords(procurementPageDtoCopyList); return pageList; } @Override public AjaxResult updateCustom(CustomStorage customStorage) { return AjaxResult.success(customStorageMapper.updateById(customStorage)); } @Override public AjaxResult deleteCustom(List<Long> ids) { return AjaxResult.success(customStorageMapper.deleteBatchIds(ids)); } @Override public int updateManagementByCustom(ProcurementManagementUpdateDto procurementDto) { CustomStorage customStorage = customStorageMapper.selectById(procurementDto.getId()); if(customStorage == null){ throw new RuntimeException("ææåºåä¸åå¨"); } LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>(); customStorageLambdaQueryWrapper.eq(CustomStorage::getProductCategory, customStorage.getProductCategory()) .eq(CustomStorage::getSpecificationModel, customStorage.getSpecificationModel()); CustomStorage one = new CustomStorage(); one.setTaxInclusiveUnitPrice(procurementDto.getTaxInclusiveUnitPrice()); one.setTaxInclusiveTotalPrice(procurementDto.getTaxInclusiveTotalPrice()); return customStorageMapper.update(one,customStorageLambdaQueryWrapper); } @Override public int add(ProcurementAddDto procurementDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); // æ¹éæ°å¢ for (Details detail : procurementDto.getDetails()) { // æ¥è¯¢éè´å ¥åºæ°é LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, detail.getId()); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, detail.getId()) .eq(ProcurementRecordStorage::getType, procurementDto.getType()); Long aLong = procurementRecordMapper.selectCount(procurementRecordLambdaQueryWrapper); ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder() .salesLedgerProductId(detail.getId()) .inboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡" : "第"+ (aLong + 1) + "æ¹æ¬¡") .inboundBatches(aLong.equals(0L) ? "第1æ¹æ¬¡("+ procurementDto.getTypeName() +")" : "第"+ (aLong + 1) + "æ¹æ¬¡(" + procurementDto.getTypeName() + ")" ) .inboundNum(detail.getInboundQuantity()) .type(procurementDto.getType()) .warnNum(detail.getWarnNum()) .unitPrice(detail.getUnitPrice()) .totalPrice(detail.getInboundQuantity().multiply(detail.getUnitPrice())) .createTime(LocalDateTime.now()) .createUser(loginUser.getUserId()) .updateTime(LocalDateTime.now()) @@ -380,7 +710,8 @@ return procurementPageDtoIPage; } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect) .eq(ProcurementRecordOut::getType, 1); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoIPage; @@ -420,6 +751,7 @@ } LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1); List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return procurementPageDtoCopyIPage; @@ -427,12 +759,13 @@ for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) { // æ ¹æ®éè´å°è´¦IDçé对åºçåºåºè®°å½ List<ProcurementRecordOut> collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()) && ProcurementRecordOut.getType().equals(1)) .collect(Collectors.toList()); // å¦ææ²¡æç¸å ³çåºåºè®°å½ï¼è·³è¿è¯¥æ¡æ°æ® if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; } @@ -444,6 +777,10 @@ dto.setTotalInboundNum(totalInboundNum); // å¾ åºåºæ°é = æ»æ°é - å·²åºåºæ°é dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); // åºåä»·å¼ if(dto.getUnitPrice() != null){ dto.setTotalPrice(dto.getInboundNum0().multiply(dto.getUnitPrice())); } } return procurementPageDtoCopyIPage; } src/main/resources/application-dev.yml
@@ -62,7 +62,7 @@ druid: # ä¸»åºæ°æ®æº master: url: jdbc:mysql://localhost:3306/product-inventory-management?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/product-inventory-management-sqd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # ä»åºæ°æ®æº src/main/resources/application.yml
@@ -1,4 +1,4 @@ # Springé ç½® spring: profiles: active: sqd active: dev src/main/resources/mapper/procurementrecord/CustomStorageMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ <?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.CustomStorageMapper"> <select id="listPageCopyByCustom" resultType="com.ruoyi.procurementrecord.pojo.CustomStorage"> select t1.*, sum(t1.inbound_num) as inboundNum, sum(t1.inbound_num) as inboundNum0, sum(t1.tax_inclusive_total_price) as taxInclusiveTotalPrice, SUM(t1.inbound_num) - COALESCE(SUM(t2.inbound_num), 0) AS availableStock from custom_storage t1 left join procurement_record_out t2 on t1.id = t2.procurement_record_storage_id and t2.type = 3 <where> <if test="req.productCategory != null and req.productCategory != ''"> and t1.product_category like concat('%',#{req.productCategory},'%') </if> <if test="req.supplierName !=null and req.supplierName != ''"> and t1.supplier_name like concat('%',#{req.supplierName},'%') </if> <if test="req.timeStr != null and req.timeStr != ''"> and t1.inbound_date like concat('%',#{req.timeStr},'%') </if> </where> group by t1.product_category, t1.specification_model, t1.tax_inclusive_unit_price HAVING availableStock > 0 order by t1.inbound_date desc </select> </mapper>