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 != ''">