src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -11,6 +11,7 @@ import com.ruoyi.device.pojo.DeviceMaintenance; import com.ruoyi.device.service.IDeviceLedgerService; import com.ruoyi.device.service.IDeviceMaintenanceService; import com.ruoyi.dto.DateQueryDto; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; @@ -84,7 +85,14 @@ public void export(HttpServletResponse response, Long[] ids) { deviceLedgerService.export(response, ids); } /** * */ @GetMapping("/report/forms") @ApiOperation("æ¥è¯¢è®¾å¤å°è´¦å¾è¡¨æ°æ®") public AjaxResult report() { return AjaxResult.success(deviceLedgerService.report()); } @PostMapping("import") @ApiModelProperty("å¯¼å ¥è®¾å¤å°è´¦") public AjaxResult importData(MultipartFile file) throws IOException { src/main/java/com/ruoyi/device/dto/DeviceAssetInfoDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.ruoyi.device.dto; import lombok.Data; import java.math.BigDecimal; /** * 设å¤èµäº§ä¿¡æ¯Dto-èµäº§æ¥è¡¨ */ @Data public class DeviceAssetInfoDto { /** * è®¾å¤æ»æ° */ private Integer totalEquipment; /** * èµäº§åå¼ */ private BigDecimal totalOriginalValue; /** * ç´¯è®¡ææ§ */ private BigDecimal totalDepreciation; /** * åå¼ */ private BigDecimal totalNetValue; } src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -3,14 +3,17 @@ 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.device.dto.DeviceAssetInfoDto; import com.ruoyi.device.dto.DeviceLedgerDto; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.dto.DateQueryDto; import com.ruoyi.framework.web.domain.AjaxResult; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.Objects; public interface IDeviceLedgerService extends IService<DeviceLedger> { IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger); @@ -22,4 +25,6 @@ void export(HttpServletResponse response, Long[] ids); Boolean importData(MultipartFile file) throws IOException; DeviceAssetInfoDto report(); } src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -8,11 +8,13 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.dto.DeviceAssetInfoDto; import com.ruoyi.device.dto.DeviceLedgerDto; import com.ruoyi.device.execl.DeviceLedgerExeclDto; import com.ruoyi.device.mapper.DeviceLedgerMapper; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.device.service.IDeviceLedgerService; import com.ruoyi.dto.DateQueryDto; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; @@ -24,10 +26,12 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; @Service @AllArgsConstructor @@ -119,4 +123,15 @@ return true; } @Override public DeviceAssetInfoDto report() { List<DeviceLedger> list = deviceLedgerMapper.selectList(null); DeviceAssetInfoDto deviceAssetInfoDto = new DeviceAssetInfoDto(); deviceAssetInfoDto.setTotalEquipment(list.stream().map(DeviceLedger::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add).intValue()); deviceAssetInfoDto.setTotalOriginalValue(list.stream().map(DeviceLedger::getTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); deviceAssetInfoDto.setTotalNetValue(list.stream().map(DeviceLedger::getUnTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); deviceAssetInfoDto.setTotalDepreciation(deviceAssetInfoDto.getTotalOriginalValue().subtract(deviceAssetInfoDto.getTotalNetValue())); return deviceAssetInfoDto; } } src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -72,7 +72,11 @@ IPage<ProcurementPageDto> result =procurementRecordService.listPage(page, procurementDto); return AjaxResult.success(result); } @GetMapping("/listReport") @ApiOperation(value = "æ¥è¯¢åºåå¾è¡¨æ°æ®") public AjaxResult listReport() { return AjaxResult.success(procurementRecordService.getReportList()); } @GetMapping("/listPageCopy") @Log(title = "éè´å ¥åº-å ¥åºç®¡ç-å ¥åºæ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPageCopy(Page page, ProcurementPageDto procurementDto) { src/main/java/com/ruoyi/procurementrecord/dto/InventoryInformationDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.ruoyi.procurementrecord.dto; import lombok.Data; import java.math.BigDecimal; /** * åè´§æ ¸ç®ä¿¡æ¯Dto-èµäº§æ¥è¡¨ */ @Data public class InventoryInformationDto { /** * æ»åºåæ°é */ private Integer totalInventoryCount; /** * æ»åºåéé¢ */ private BigDecimal totalInventoryValue; /** * åºåå卿°é */ private Integer inventoryChangeCount; /** * åºååå¨éé¢ */ private BigDecimal inventoryChangeValue; } src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -34,4 +34,6 @@ void exportCopy(HttpServletResponse response); Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto); InventoryInformationDto getReportList(); } src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -336,6 +336,69 @@ } @Override public InventoryInformationDto getReportList() { InventoryInformationDto inventoryInformationDto = new InventoryInformationDto(); IPage<ProcurementPageDto> procurementPageDtoIPage = this.listPage(new Page<>(1, -1), new ProcurementPageDto()); if(CollectionUtils.isEmpty(procurementPageDtoIPage.getRecords())){ return inventoryInformationDto; } // è®¡ç®æ»åºåæ°é inventoryInformationDto.setTotalInventoryCount(procurementPageDtoIPage.getRecords().stream() .map(ProcurementPageDto::getInboundNum0) .reduce(BigDecimal.ZERO, BigDecimal::add) .intValue()); // è®¡ç®æ»åºåéé¢-ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çinboundNum0å¼åtaxInclusiveUnitPriceçä¹ç§¯ï¼ä¹åç¸å å¾å°æ»åºåéé¢ BigDecimal totalInventoryValue = procurementPageDtoIPage.getRecords().stream() // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å NPE .filter(Objects::nonNull) // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 .map(dto -> { // å ¥åºæ°éï¼null â 0 BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO); // å«ç¨åä»·ï¼null â 0 BigDecimal taxInclusiveUnitPrice = Optional.ofNullable(dto.getTaxInclusiveUnitPrice()).orElse(BigDecimal.ZERO); // 计ç®å个对象çåºåéé¢ï¼æ°é à å«ç¨åä»· return inboundNum0.multiply(taxInclusiveUnitPrice); }) // ææå个é颿±åï¼åå§å¼ä¸º0 .reduce(BigDecimal.ZERO, BigDecimal::add); // 设置æ»åºåéé¢ inventoryInformationDto.setTotalInventoryValue(totalInventoryValue); // 计ç®åºåå卿°é-ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çinboundNumå¼åinboundNum0å¼çå·®å¼ï¼ä¹åç¸å å¾å°åºåå卿°é inventoryInformationDto.setInventoryChangeCount(procurementPageDtoIPage.getRecords().stream() // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å NPE .filter(Objects::nonNull) // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 .map(dto -> { // å ¥åºæ°éï¼null â 0 BigDecimal inboundNum = Optional.ofNullable(dto.getInboundNum()).orElse(BigDecimal.ZERO); // å¾ åºåºæ°éï¼null â 0 BigDecimal inboundNum0 = Optional.ofNullable(dto.getInboundNum0()).orElse(BigDecimal.ZERO); // 计ç®å个对象çåºåå卿°éï¼æ°é - å¾ åºåºæ°é return inboundNum.subtract(inboundNum0); }) // ææå个å卿°éæ±åï¼åå§å¼ä¸º0 .reduce(BigDecimal.ZERO, BigDecimal::add) .intValue()); // 计ç®åºååå¨éé¢ProcurementPageDtoéæ¯ä¸ªå¯¹è±¡çtaxInclusiveTotalPriceå¼çå BigDecimal inventoryChangeValue = procurementPageDtoIPage.getRecords().stream() // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å NPE .filter(Objects::nonNull) // å¤çæ¯ä¸ªå¯¹è±¡ç空å¼ï¼null转为0 .map(dto -> { // å«ç¨æ»ä»·ï¼null â 0 BigDecimal taxInclusiveTotalPrice = Optional.ofNullable(dto.getTaxInclusiveTotalPrice()).orElse(BigDecimal.ZERO); // 计ç®å个对象çå ¥åºåºåéé¢ï¼å«ç¨æ»ä»· return taxInclusiveTotalPrice; }) // ææå个åå¨é颿±åï¼åå§å¼ä¸º0 .reduce(BigDecimal.ZERO, BigDecimal::add); // 设置åºååå¨éé¢ inventoryInformationDto.setInventoryChangeValue(inventoryChangeValue.subtract(totalInventoryValue)); return inventoryInformationDto; } @Override public int add(ProcurementAddDto procurementDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); // æ¹éæ°å¢ src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -55,10 +55,10 @@ <where> 1 = 1 <if test="req.supplierName != null and req.supplierName != ''"> and t3.supplier_name like concat('%',#{req.supplierName},'%') and t3.supplier_name like concat('%',#{req.supplierName},'%') </if> <if test="req.timeStr != null and req.timeStr != ''"> and t1.create_time like concat('%',#{req.timeStr},'%') and t1.create_time like concat('%',#{req.timeStr},'%') </if> </where> </select>