liding
8 天以前 15032d66c35c8154316a4f0170f3b6f470bf4c50
fix:1.报工合格数量更改
已修改4个文件
63 ■■■■■ 文件已修改
src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProductionAccountMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java
@@ -8,49 +8,52 @@
import java.time.LocalDate;
@Data
@Schema(name = "ProductionAccountVo", description = "生产核算分页返回对象")
@Schema(name = "ProductionAccountVo", description = "production account page result")
public class ProductionAccountVo {
    @Schema(description = "客户合同号")
    @Schema(description = "customer contract no")
    private String customerContractNo;
    @Schema(description = "项目名称")
    @Schema(description = "project name")
    private String projectName;
    @Schema(description = "客户名称")
    @Schema(description = "customer name")
    private String customerName;
    @Schema(description = "产品大类")
    @Schema(description = "product category")
    private String productCategory;
    @Schema(description = "规格型号")
    @Schema(description = "specification model")
    private String specificationModel;
    @Schema(description = "单位")
    @Schema(description = "unit")
    private String unit;
    @Schema(description = "生产人ID")
    @Schema(description = "scheduling user id")
    private Long schedulingUserId;
    @Schema(description = "生产人名称")
    @Schema(description = "scheduling user name")
    private String schedulingUserName;
    @Schema(description = "工资")
    @Schema(description = "wages")
    private BigDecimal wages;
    @Schema(description = "生产数量")
    @Schema(description = "finished quantity")
    private BigDecimal finishedNum;
    @Schema(description = "工时定额")
    @Schema(description = "salary quota")
    private BigDecimal workHours;
    @Schema(description = "工序")
    @Schema(description = "output rate")
    private String outputRate;
    @Schema(description = "process")
    private String process;
    @Schema(description = "生产日期")
    @Schema(description = "scheduling date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate schedulingDate;
    @Schema(description = "生产月份(yyyy-MM)")
    @Schema(description = "scheduling month(yyyy-MM)")
    private String schedulingMonth;
}
src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
@@ -23,7 +23,7 @@
    @Schema(description = "产品id")
    private Long productModelId;
    @Schema(description = "报工数量(总数量)")
    @Schema(description = "合格数量")
    private BigDecimal quantity;
    @Schema(description = "创建时间")
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -293,7 +293,8 @@
        productionProductOutput.setQuantity(defaultDecimal(dto.getQuantity()));
        productionProductOutput.setScrapQty(defaultDecimal(dto.getScrapQty()));
        productionProductOutputMapper.insert(productionProductOutput);
        BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
        BigDecimal reportQty = defaultDecimal(productionProductOutput.getQuantity());
        BigDecimal productQty = reportQty;
        List<ProductionOrderRoutingOperation> routingOperationList = productionOrderRoutingOperationMapper.selectList(
                Wrappers.<ProductionOrderRoutingOperation>lambdaQuery()
@@ -534,8 +535,8 @@
        ProductionOperationTask productionOperationTask = productionOperationTaskMapper.selectById(productionProductMain.getProductionOperationTaskId());
        if (productionOperationTask != null && productionProductOutput != null) {
            BigDecimal validQuantity = defaultDecimal(productionProductOutput.getQuantity()).subtract(defaultDecimal(productionProductOutput.getScrapQty()));
            productionOperationTask.setCompleteQuantity(defaultDecimal(productionOperationTask.getCompleteQuantity()).subtract(validQuantity));
            BigDecimal reportQuantity = defaultDecimal(productionProductOutput.getQuantity());
            productionOperationTask.setCompleteQuantity(defaultDecimal(productionOperationTask.getCompleteQuantity()).subtract(reportQuantity));
            productionOperationTask.setActualEndTime(null);
            if (defaultDecimal(productionOperationTask.getCompleteQuantity()).compareTo(BigDecimal.ZERO) <= 0) {
                productionOperationTask.setCompleteQuantity(BigDecimal.ZERO);
@@ -556,7 +557,7 @@
                                .eq(ProductionOrderRoutingOperation::getProductionOrderId, routingOperation.getProductionOrderId()));
                boolean isLastOperation = routingOperation.getDragSort() != null && routingOperation.getDragSort().equals(routingOperationList.size());
                if (isLastOperation) {
                    BigDecimal newCompleteQty = defaultDecimal(productionOrder.getCompleteQuantity()).subtract(validQuantity);
                    BigDecimal newCompleteQty = defaultDecimal(productionOrder.getCompleteQuantity()).subtract(reportQuantity);
                    productionOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
                    productionOrder.setEndTime(null);
                }
src/main/resources/mapper/production/ProductionAccountMapper.xml
@@ -38,6 +38,18 @@
        ) as decimal(18,4)) as wages,
        cast(sum(ifnull(pa.finished_num, 0)) as decimal(18,4)) as finishedNum,
        cast(sum(ifnull(pa.work_hours, 0)) as decimal(18,4)) as workHours,
        case
            when sum(ifnull(ppo.quantity, 0) + ifnull(ppo.scrapQty, 0)) = 0 then '0%'
            else concat(
                cast(
                    round(
                        sum(ifnull(ppo.quantity, 0)) /
                        sum(ifnull(ppo.quantity, 0) + ifnull(ppo.scrapQty, 0)) * 100, 2
                    ) as char
                ),
                '%'
            )
        end as outputRate,
        group_concat(distinct pa.technology_operation_name order by pa.technology_operation_name separator ',') as process,
        case
            when count(distinct date(pa.scheduling_date)) = 1 then min(date(pa.scheduling_date))
@@ -55,6 +67,13 @@
        left join product_model pm on pm.id = ifnull(poro.product_model_id, po.product_model_id)
        left join product p on pm.product_id = p.id
        left join product p_parent on p_parent.id = p.parent_id
        left join (
            select production_product_main_id,
                   cast(sum(ifnull(quantity, 0)) as decimal(18,4)) as quantity,
                   cast(sum(ifnull(scrap_qty, 0)) as decimal(18,4)) as scrapQty
            from production_product_output
            group by production_product_main_id
        ) ppo on ppo.production_product_main_id = ppm.id
        <where>
            <if test="c != null">
                <if test="c.productCategory != null and c.productCategory != ''">