| src/main/java/com/ruoyi/home/controller/HomeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/home/dto/ProductionAccountingDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/home/service/HomeService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -192,7 +192,7 @@ @GetMapping("/productionAccountingAnalysis") @ApiOperation("çäº§æ ¸ç®åæ") public AjaxResult productionAccountingAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){ List<MapDto> list = homeService.productionAccountingAnalysis(type); List<ProductionAccountingDto> list = homeService.productionAccountingAnalysis(type); return AjaxResult.success(list); } src/main/java/com/ruoyi/home/dto/ProductionAccountingDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.home.dto; import java.math.BigDecimal; import lombok.Data; @Data public class ProductionAccountingDto { /** * æ¥æ */ private String dateStr; /** * 宿æ°é */ private Integer numberOfCompleted; /** * éé¢ */ private BigDecimal amount; /** * åæ ¼ç */ private BigDecimal passRate; } src/main/java/com/ruoyi/home/service/HomeService.java
@@ -71,7 +71,7 @@ List<WorkOrderEfficiencyDto> workOrderEfficiencyAnalysis(Integer type); List<MapDto> productionAccountingAnalysis(Integer type); List<ProductionAccountingDto> productionAccountingAnalysis(Integer type); List<MapDto> orderCount(); } src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -35,6 +35,7 @@ import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.mapper.ProductionProductInputMapper; import com.ruoyi.production.mapper.ProductionProductOutputMapper; import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; @@ -128,11 +129,6 @@ private CustomerMapper customerMapper; @Autowired private SupplierManageMapper supplierManageMapper; @Autowired private SysUserMapper sysUserMapper; @Autowired private SysUserDeptMapper sysUserDeptMapper; @Autowired private HomeMapper homeMapper; @@ -1787,10 +1783,10 @@ } @Autowired private com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; @Override public List<MapDto> productionAccountingAnalysis(Integer type) { public List<ProductionAccountingDto> productionAccountingAnalysis(Integer type) { LocalDate today = LocalDate.now(); LocalDate startDate; LocalDate endDate = today; @@ -1812,26 +1808,27 @@ break; } String startStr = startDate.atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String endStr = endDate.atTime(LocalTime.MAX).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String startStr = startDate.atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); List<Map<String, Object>> wagesList = salesLedgerProductionAccountingMapper.selectDailyWagesStats(startStr, endStr); String endStr = endDate.plusDays(1).atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); List<Map<String, Object>> wagesList = salesLedgerProductionAccountingMapper.selectDailyWagesStats(startStr, endStr); if (CollectionUtils.isEmpty(wagesList)) { return new ArrayList<>(); } List<MapDto> result = new ArrayList<>(); List<ProductionAccountingDto> result = new ArrayList<>(); for (Map<String, Object> map : wagesList) { MapDto dto = new MapDto(); dto.setName((String) map.get("date")); BigDecimal wages = (BigDecimal) map.get("wages"); dto.setValue(wages != null ? wages.toString() : "0"); ProductionAccountingDto dto = new ProductionAccountingDto(); dto.setDateStr(map.get("dateStr").toString()); dto.setNumberOfCompleted(((BigDecimal) map.get("numberOfCompleted")).intValue()); dto.setAmount(map.get("amount") != null ? (BigDecimal) map.get("amount") : BigDecimal.ZERO); dto.setPassRate(map.get("passRate") != null ? (BigDecimal) map.get("passRate") : BigDecimal.ZERO); result.add(dto); } result.sort(Comparator.comparing(MapDto::getName)); result.sort(Comparator.comparing(ProductionAccountingDto::getDateStr)); return result; } src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -88,18 +88,23 @@ </select> <select id="selectDailyWagesStats" resultType="java.util.Map"> SELECT DATE_FORMAT(scheduling_date, '%Y-%m-%d') as date, SUM(finished_num * work_hours) as wages FROM sales_ledger_production_accounting WHERE scheduling_date >= #{startDate} AND scheduling_date <= #{endDate} GROUP BY scheduling_date SELECT DATE(ppout.create_time) AS dateStr, SUM(ppout.quantity - IFNULL(ppout.scrap_qty, 0)) AS numberOfCompleted, SUM((ppout.quantity - IFNULL(ppout.scrap_qty, 0)) * IFNULL(pp.salary_quota, 0)) AS amount, ROUND( SUM(ppout.quantity - IFNULL(ppout.scrap_qty, 0)) * 100 / NULLIF(SUM(ppout.quantity), 0), 2 ) AS passRate FROM production_product_output ppout LEFT JOIN production_product_main ppm ON ppm.id = ppout.product_main_id LEFT JOIN product_process_route_item ppri ON ppri.id = ppm.product_process_route_item_id LEFT JOIN product_process pp ON pp.id = ppri.process_id WHERE ppout.create_time >= #{startDate} AND ppout.create_time < #{endDate} GROUP BY DATE(ppout.create_time) ORDER BY DATE(ppout.create_time); </select> </mapper>