gongchunyi
17 小时以前 b25258e282d5a53d851a7e19132ecbc842eee7b9
fix: 生产核算分析缺少数量及合格率
已添加1个文件
已修改4个文件
94 ■■■■■ 文件已修改
src/main/java/com/ruoyi/home/controller/HomeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/dto/ProductionAccountingDto.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/service/HomeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | 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 &gt;= #{startDate}
            AND scheduling_date &lt;= #{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 &gt;= #{startDate}
          AND ppout.create_time &lt; #{endDate}
        GROUP BY DATE(ppout.create_time)
        ORDER BY DATE(ppout.create_time);
    </select>
</mapper>