Commit cbb78064 authored by chicheng's avatar chicheng

进度报表添加BUG修复

parent 41f11e9b
...@@ -159,12 +159,12 @@ public interface ProWorkorderMapper extends BaseMapper<ProWorkorder> { ...@@ -159,12 +159,12 @@ public interface ProWorkorderMapper extends BaseMapper<ProWorkorder> {
List<WorkOrderProgressListResponse> getWorkOrderProgressServiceList(WorkOrderProgressRequest workOrderProgressRequest); List<WorkOrderProgressListResponse> getWorkOrderProgressServiceList(WorkOrderProgressRequest workOrderProgressRequest);
/** /**
* 进度报表:主表列表(按工单,排产时间降序) * 进度报表:主表列表(按工单+排产批次,排产时间降序)
*/ */
List<ProgressReportRowDto> getProgressReportList(ProgressReportRequest request); List<ProgressReportRowDto> getProgressReportList(ProgressReportRequest request);
/** /**
* 进度报表:各工单各工序完工数量(按 workorder_id 关联) * 进度报表:各工单各排产批次各工序完工数量
*/ */
List<ProgressReportProcessQtyDto> getProgressReportProcessQuantities(@Param("workorderIds") List<Long> workorderIds); List<ProgressReportProcessQtyDto> getProgressReportProcessQuantities(@Param("workorderIds") List<Long> workorderIds);
} }
...@@ -202,5 +202,6 @@ public interface ProTaskMapper extends BaseMapper<ProTask> { ...@@ -202,5 +202,6 @@ public interface ProTaskMapper extends BaseMapper<ProTask> {
void deleteByTaskBatch(@Param("taskBatch")String taskBatch); void deleteByTaskBatch(@Param("taskBatch")String taskBatch);
List<WorkOrderProgressProcessListResponse> getProcessList(@Param("workorderCode")String workorderCode); List<WorkOrderProgressProcessListResponse> getProcessList(@Param("workorderCode") String workorderCode,
@Param("taskBatch") String taskBatch);
} }
...@@ -62,8 +62,11 @@ public class WorkOrderProgressController extends BaseController { ...@@ -62,8 +62,11 @@ public class WorkOrderProgressController extends BaseController {
@PreAuthorize("@ss.hasPermi('mes:pro:feedback:get')") @PreAuthorize("@ss.hasPermi('mes:pro:feedback:get')")
@Log(title = "生产进度:工序明细", businessType = BusinessType.QUERY) @Log(title = "生产进度:工序明细", businessType = BusinessType.QUERY)
@GetMapping("/getProcessList") @GetMapping("/getProcessList")
public TableDataInfo<WorkOrderProgressProcessListResponse> getProcessList(@RequestParam("workorderCode") String workorderCode) { public TableDataInfo<WorkOrderProgressProcessListResponse> getProcessList(
List<WorkOrderProgressProcessListResponse> workOrderProgressListResponses = workOrderProgressService.getProcessList(workorderCode); @RequestParam("workorderCode") String workorderCode,
@RequestParam(value = "taskBatch", required = false) String taskBatch) {
List<WorkOrderProgressProcessListResponse> workOrderProgressListResponses =
workOrderProgressService.getProcessList(workorderCode, taskBatch);
return getDataTable(workOrderProgressListResponses); return getDataTable(workOrderProgressListResponses);
} }
......
...@@ -52,4 +52,10 @@ public class WorkOrderProgressRequest { ...@@ -52,4 +52,10 @@ public class WorkOrderProgressRequest {
private String orderSerial; private String orderSerial;
@ApiModelProperty("排产次数") @ApiModelProperty("排产次数")
private String taskBatch; private String taskBatch;
@ApiModelProperty("排产日期-开始")
private String scheduleDateFrom;
@ApiModelProperty("排产日期-结束")
private String scheduleDateTo;
} }
...@@ -10,6 +10,8 @@ import java.math.BigDecimal; ...@@ -10,6 +10,8 @@ import java.math.BigDecimal;
@Data @Data
public class ProgressReportProcessQtyDto { public class ProgressReportProcessQtyDto {
private Long workorderId; private Long workorderId;
/** 排产次数(task_batch 后缀) */
private String taskBatch;
private String processName; private String processName;
private BigDecimal quantityProduced; private BigDecimal quantityProduced;
} }
...@@ -29,6 +29,9 @@ public class ProgressReportResponse { ...@@ -29,6 +29,9 @@ public class ProgressReportResponse {
@ApiModelProperty("生产工单") @ApiModelProperty("生产工单")
private String workorderCode; private String workorderCode;
@ApiModelProperty("排产次数")
private String taskBatch;
@ApiModelProperty("订单序号") @ApiModelProperty("订单序号")
private String orderSerial; private String orderSerial;
......
...@@ -11,6 +11,8 @@ import java.util.Date; ...@@ -11,6 +11,8 @@ import java.util.Date;
@Data @Data
public class ProgressReportRowDto { public class ProgressReportRowDto {
private Long workorderId; private Long workorderId;
/** 排产次数(task_batch 后缀) */
private String taskBatch;
private String arrangeCode; private String arrangeCode;
private Date scheduleTime; private Date scheduleTime;
private String orderCode; private String orderCode;
......
...@@ -83,5 +83,10 @@ public class WorkOrderProgressListResponse { ...@@ -83,5 +83,10 @@ public class WorkOrderProgressListResponse {
@ApiModelProperty("排产次数") @ApiModelProperty("排产次数")
@Excel(name = "排产次数") @Excel(name = "排产次数")
private String taskBatch; private String taskBatch;
@ApiModelProperty("排产日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "排产日期", dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date scheduleDate;
} }
...@@ -10,7 +10,7 @@ import java.util.List; ...@@ -10,7 +10,7 @@ import java.util.List;
public interface WorkOrderProgressService { public interface WorkOrderProgressService {
List<WorkOrderProgressListResponse> getList(WorkOrderProgressRequest workOrderProgressRequest); List<WorkOrderProgressListResponse> getList(WorkOrderProgressRequest workOrderProgressRequest);
List<WorkOrderProgressProcessListResponse> getProcessList(String workorderCode); List<WorkOrderProgressProcessListResponse> getProcessList(String workorderCode, String taskBatch);
List<WorkOrderProgressFeedbackListResponse> getFeedbackList(String workorderCode,Long taskId,Long taskWorkunitId); List<WorkOrderProgressFeedbackListResponse> getFeedbackList(String workorderCode,Long taskId,Long taskWorkunitId);
} }
...@@ -51,22 +51,22 @@ public class FeedbackServiceImp implements FeedbackService { ...@@ -51,22 +51,22 @@ public class FeedbackServiceImp implements FeedbackService {
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
Map<Long, Map<String, BigDecimal>> workorderProcessMap = new HashMap<>(); Map<String, Map<String, BigDecimal>> batchProcessMap = new HashMap<>();
if (!workorderIds.isEmpty()) { if (!workorderIds.isEmpty()) {
List<ProgressReportProcessQtyDto> processQtys = proWorkorderMapper.getProgressReportProcessQuantities(workorderIds); List<ProgressReportProcessQtyDto> processQtys = proWorkorderMapper.getProgressReportProcessQuantities(workorderIds);
for (ProgressReportProcessQtyDto dto : processQtys) { for (ProgressReportProcessQtyDto dto : processQtys) {
if (dto.getWorkorderId() == null) { if (dto.getWorkorderId() == null) {
continue; continue;
} }
workorderProcessMap batchProcessMap
.computeIfAbsent(dto.getWorkorderId(), k -> new LinkedHashMap<>()) .computeIfAbsent(progressReportRowKey(dto.getWorkorderId(), dto.getTaskBatch()), k -> new LinkedHashMap<>())
.put(dto.getProcessName(), dto.getQuantityProduced() != null ? dto.getQuantityProduced() : BigDecimal.ZERO); .put(dto.getProcessName(), dto.getQuantityProduced() != null ? dto.getQuantityProduced() : BigDecimal.ZERO);
} }
} }
// 仅保留本次查询实际用到的工序列(按工序ID顺序过滤) // 仅保留本次查询实际用到的工序列(按工序ID顺序过滤)
List<String> allProcessNames = getProgressReportProcessNames(); List<String> allProcessNames = getProgressReportProcessNames();
Set<String> usedProcessNames = workorderProcessMap.values().stream() Set<String> usedProcessNames = batchProcessMap.values().stream()
.flatMap(m -> m.entrySet().stream()) .flatMap(m -> m.entrySet().stream())
.filter(e -> e.getValue() != null) // 有数据的工序 .filter(e -> e.getValue() != null) // 有数据的工序
.map(Map.Entry::getKey) .map(Map.Entry::getKey)
...@@ -83,6 +83,7 @@ public class FeedbackServiceImp implements FeedbackService { ...@@ -83,6 +83,7 @@ public class FeedbackServiceImp implements FeedbackService {
resp.setOrderCode(row.getOrderCode()); resp.setOrderCode(row.getOrderCode());
resp.setLineName(row.getLineName()); resp.setLineName(row.getLineName());
resp.setWorkorderCode(row.getWorkorderCode()); resp.setWorkorderCode(row.getWorkorderCode());
resp.setTaskBatch(row.getTaskBatch());
resp.setOrderSerial(row.getOrderSerial()); resp.setOrderSerial(row.getOrderSerial());
resp.setWorkorderType(row.getWorkorderType()); resp.setWorkorderType(row.getWorkorderType());
resp.setProductCode(row.getProductCode()); resp.setProductCode(row.getProductCode());
...@@ -91,7 +92,8 @@ public class FeedbackServiceImp implements FeedbackService { ...@@ -91,7 +92,8 @@ public class FeedbackServiceImp implements FeedbackService {
resp.setProgressPercent(progressPercent); resp.setProgressPercent(progressPercent);
resp.setRequestDate(row.getRequestDate()); resp.setRequestDate(row.getRequestDate());
Map<String, BigDecimal> rowProcess = workorderProcessMap.getOrDefault(row.getWorkorderId(), new LinkedHashMap<>()); Map<String, BigDecimal> rowProcess = batchProcessMap.getOrDefault(
progressReportRowKey(row.getWorkorderId(), row.getTaskBatch()), new LinkedHashMap<>());
for (String pname : processNames) { for (String pname : processNames) {
// 只响应该工单实际有数据的工序;没有记录则不放入 processQuantities // 只响应该工单实际有数据的工序;没有记录则不放入 processQuantities
BigDecimal val = rowProcess.get(pname); BigDecimal val = rowProcess.get(pname);
...@@ -104,6 +106,10 @@ public class FeedbackServiceImp implements FeedbackService { ...@@ -104,6 +106,10 @@ public class FeedbackServiceImp implements FeedbackService {
return new ProgressReportListResult(result, total); return new ProgressReportListResult(result, total);
} }
private static String progressReportRowKey(Long workorderId, String taskBatch) {
return workorderId + "|" + (taskBatch != null ? taskBatch : "");
}
@Override @Override
public List<FeedbackResponse> getList(FeedbackRequest feedbackRequest) { public List<FeedbackResponse> getList(FeedbackRequest feedbackRequest) {
return proFeedbackMapper.getList(feedbackRequest); return proFeedbackMapper.getList(feedbackRequest);
......
...@@ -57,8 +57,9 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService { ...@@ -57,8 +57,9 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService {
} }
@Override @Override
public List<WorkOrderProgressProcessListResponse> getProcessList(String workorderCode) { public List<WorkOrderProgressProcessListResponse> getProcessList(String workorderCode, String taskBatch) {
List<WorkOrderProgressProcessListResponse> workOrderProgressProcessListResponses = proTaskMapper.getProcessList(workorderCode); List<WorkOrderProgressProcessListResponse> workOrderProgressProcessListResponses =
proTaskMapper.getProcessList(workorderCode, taskBatch);
for (WorkOrderProgressProcessListResponse workOrderProgressProcessListResponse : workOrderProgressProcessListResponses){ for (WorkOrderProgressProcessListResponse workOrderProgressProcessListResponse : workOrderProgressProcessListResponses){
// if(workOrderProgressProcessListResponse.getStatus().equals(TaskStatusEnum.BEGINNING.getStatus())){ // if(workOrderProgressProcessListResponse.getStatus().equals(TaskStatusEnum.BEGINNING.getStatus())){
// workOrderProgressProcessListResponse.setStatus("加工中"); // workOrderProgressProcessListResponse.setStatus("加工中");
......
...@@ -521,31 +521,23 @@ ...@@ -521,31 +521,23 @@
<select id="getFeedbackList" <select id="getFeedbackList"
resultType="com.ximai.mes.report.response.WorkOrderProgressFeedbackListResponse"> resultType="com.ximai.mes.report.response.WorkOrderProgressFeedbackListResponse">
SELECT SELECT
feedback.user_name, feedback.nick_name,
sum(feedback.quantity) quantity, (IFNULL(feedback.quantity_qualify, 0) + IFNULL(feedback.quantity_unqualify, 0)) AS quantity_feedback,
sum(feedback.quantity_feedback) quantity_feedback, feedback.quantity_qualify,
sum(feedback.quantity_qualify) quantity_qualify, feedback.quantity_unqualify,
sum(feedback.quantity_unqualify) quantity_unqualify, workunit.std_working_time,
sum(feedback.quantity_uncheck) quantity_uncheck, CAST(feedback.machine_time AS DECIMAL(10, 2)) AS machine_time,
feedback.nick_name, feedback.feedback_time,
workunit.std_working_time , pro_task.task_batch
pro_task.task_batch FROM pro_feedback feedback
FROM INNER JOIN pro_task_workunit workunit ON feedback.task_workunit_id = workunit.task_workunit_id
pro_task_workunit workunit INNER JOIN pro_task ON pro_task.task_id = workunit.task_id
JOIN pro_feedback feedback ON feedback.task_workunit_id = workunit.task_workunit_id
join pro_task on pro_task.task_id = workunit.task_id
<where> <where>
workorder_code = #{workorderCode} feedback.workorder_code = #{workorderCode}
<if test="taskId != null">and feedback.task_id = #{taskId}</if> <if test="taskId != null">and feedback.task_id = #{taskId}</if>
<if test="taskWorkunitId != null">and feedback.task_workunit_id = #{taskWorkunitId}</if> <if test="taskWorkunitId != null">and feedback.task_workunit_id = #{taskWorkunitId}</if>
</where> </where>
group by ORDER BY feedback.feedback_time DESC, feedback.record_id DESC
feedback.user_name,
feedback.nick_name,
workunit.std_working_time ,
pro_task.task_batch
order by
pro_task.task_batch
</select> </select>
<select id="getListByDefect" resultType="com.ximai.mes.report.response.FeedbackResponse"> <select id="getListByDefect" resultType="com.ximai.mes.report.response.FeedbackResponse">
select select
......
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
pw.product_spc, pw.product_spc,
pw.unit_of_measure, pw.unit_of_measure,
pw.arrange_code, pw.arrange_code,
pw.quantity, MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) AS quantity,
pw.client_id, pw.client_id,
pw.client_code, pw.client_code,
...@@ -267,12 +267,13 @@ ...@@ -267,12 +267,13 @@
pw.erp_update_time , pw.erp_update_time ,
item.line_name, item.line_name,
SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch, SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch,
sum(case task.is_last_process when 0 THEN 0 ELSE fe.quantity_qualify + fe.quantity_unqualify END) as quantity_produced MIN(task.create_time) schedule_date,
FROM IFNULL(SUM(CASE WHEN task.is_last_process = 1 THEN IFNULL(fe.quantity_qualify, 0) + IFNULL(fe.quantity_unqualify, 0) ELSE 0 END), 0) AS quantity_produced
pro_workorder pw FROM pro_workorder pw
LEFT JOIN pro_feedback fe ON fe.workorder_id = pw.workorder_id INNER JOIN pro_task_workorder tw ON tw.workorder_id = pw.workorder_id
left join pro_task task on task.task_id = fe.task_id INNER JOIN pro_task task ON task.task_id = tw.task_id
left join md_item item on item.item_id = pw.product_id LEFT JOIN pro_feedback fe ON fe.task_id = task.task_id AND fe.workorder_id = pw.workorder_id
LEFT JOIN md_item item ON item.item_id = pw.product_id
<where> <where>
<if test="workorderCode != null and workorderCode != ''">and pw.workorder_code = #{workorderCode}</if> <if test="workorderCode != null and workorderCode != ''">and pw.workorder_code = #{workorderCode}</if>
<if test="productId != null ">and pw.product_id = #{productId}</if> <if test="productId != null ">and pw.product_id = #{productId}</if>
...@@ -302,7 +303,7 @@ ...@@ -302,7 +303,7 @@
pw.product_spc, pw.product_spc,
pw.unit_of_measure, pw.unit_of_measure,
pw.arrange_code, pw.arrange_code,
pw.quantity, task.task_batch,
pw.client_id, pw.client_id,
pw.client_code, pw.client_code,
pw.client_name, pw.client_name,
...@@ -366,16 +367,20 @@ ...@@ -366,16 +367,20 @@
pw.in_drawing_no, pw.in_drawing_no,
pw.erp_create_time, pw.erp_create_time,
pw.erp_update_time, pw.erp_update_time,
SUBSTRING_INDEX(task.task_batch, '-', -1) , SUBSTRING_INDEX(task.task_batch, '-', -1),
item.line_name item.line_name
<if test="scheduleDateFrom != null">
HAVING MIN(task.create_time) &gt;= #{scheduleDateFrom} AND MIN(task.create_time) &lt;= #{scheduleDateTo}
</if>
</select> </select>
<!-- 进度报表:主表列表,按工单排产时间降序。工序数/报工和用 JOIN 聚合表一次算出,避免每行相关子查询 --> <!-- 进度报表:按工单+排产批次一行;计划数量/在制进度按批次末道工序计算 -->
<select id="getProgressReportList" resultType="com.ximai.mes.report.response.ProgressReportRowDto"> <select id="getProgressReportList" resultType="com.ximai.mes.report.response.ProgressReportRowDto">
SELECT SELECT
pw.workorder_id, pw.workorder_id,
SUBSTRING_INDEX(task.task_batch, '-', -1) AS task_batch,
pw.arrange_code, pw.arrange_code,
st.schedule_time, MIN(task.create_time) AS schedule_time,
pw.order_code, pw.order_code,
item.line_name, item.line_name,
pw.workorder_code, pw.workorder_code,
...@@ -383,42 +388,27 @@ ...@@ -383,42 +388,27 @@
pw.workorder_type, pw.workorder_type,
pw.product_code, pw.product_code,
pw.product_name, pw.product_name,
pw.quantity AS plan_quantity, MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) AS plan_quantity,
SUM(CASE WHEN task.is_last_process = 1 THEN fe.quantity_qualify + fe.quantity_unqualify ELSE 0 END) AS quantity_produced, IFNULL(SUM(CASE WHEN task.is_last_process = 1
THEN IFNULL(fe.quantity_qualify, 0) + IFNULL(fe.quantity_unqualify, 0) ELSE 0 END), 0) AS quantity_produced,
pw.request_date, pw.request_date,
IFNULL(pc.cnt, 0) AS process_count, COUNT(DISTINCT task.process_id) AS process_count,
IFNULL(sq.sum_qty, 0) AS sum_process_qty, IFNULL(SUM(ptw.quantity_produced), 0) AS sum_process_qty,
CASE WHEN IFNULL(pc.cnt, 0) = 0 OR pw.quantity * IFNULL(pc.cnt, 0) = 0 THEN 0 CASE
ELSE ROUND(IFNULL(sq.sum_qty, 0) * 100.0 / (pw.quantity * pc.cnt), 2) WHEN MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) IS NULL
OR MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) = 0 THEN 0
ELSE ROUND(
IFNULL(SUM(CASE WHEN task.is_last_process = 1
THEN IFNULL(fe.quantity_qualify, 0) + IFNULL(fe.quantity_unqualify, 0) ELSE 0 END), 0)
* 100.0 / MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END), 2)
END AS progress_percent END AS progress_percent
FROM pro_workorder pw FROM pro_workorder pw
LEFT JOIN ( INNER JOIN pro_task_workorder tw ON tw.workorder_id = pw.workorder_id
SELECT tw.workorder_id, MIN(ptw.schedule_start_date) AS schedule_time INNER JOIN pro_task task ON task.task_id = tw.task_id
FROM pro_task_workorder tw LEFT JOIN pro_task_workunit ptw ON ptw.task_id = task.task_id
INNER JOIN pro_task t ON tw.task_id = t.task_id LEFT JOIN pro_feedback fe ON fe.task_id = task.task_id AND fe.workorder_id = pw.workorder_id
INNER JOIN pro_task_workunit ptw ON t.task_id = ptw.task_id LEFT JOIN md_item item ON item.item_id = pw.product_id
GROUP BY tw.workorder_id
) st ON st.workorder_id = pw.workorder_id
LEFT JOIN (
SELECT tw.workorder_id, COUNT(DISTINCT t.process_id) AS cnt
FROM pro_task_workorder tw INNER JOIN pro_task t ON tw.task_id = t.task_id
GROUP BY tw.workorder_id
) pc ON pc.workorder_id = pw.workorder_id
LEFT JOIN (
SELECT tw.workorder_id, IFNULL(SUM(ptw.quantity_produced), 0) AS sum_qty
FROM pro_task_workunit ptw INNER JOIN pro_task t ON ptw.task_id = t.task_id INNER JOIN pro_task_workorder tw ON t.task_id = tw.task_id
GROUP BY tw.workorder_id
) sq ON sq.workorder_id = pw.workorder_id
LEFT JOIN pro_feedback fe ON fe.workorder_id = pw.workorder_id
LEFT JOIN pro_task task ON task.task_id = fe.task_id
LEFT JOIN md_item item ON item.item_id = pw.product_id
<where> <where>
<if test="scheduleStartDate != null">
AND st.schedule_time &gt;= #{scheduleStartDate}
</if>
<if test="scheduleEndDate != null">
AND st.schedule_time &lt;= #{scheduleEndDate}
</if>
<if test="orderCode != null and orderCode != ''"> <if test="orderCode != null and orderCode != ''">
AND pw.order_code LIKE concat('%', #{orderCode}, '%') AND pw.order_code LIKE concat('%', #{orderCode}, '%')
</if> </if>
...@@ -435,18 +425,34 @@ ...@@ -435,18 +425,34 @@
AND pw.request_date &lt; #{requestDateBefore} AND pw.request_date &lt; #{requestDateBefore}
</if> </if>
</where> </where>
GROUP BY pw.workorder_id, pw.arrange_code, st.schedule_time, pw.order_code, item.line_name, pw.workorder_code, pw.order_serial, GROUP BY pw.workorder_id, task.task_batch, pw.arrange_code, pw.order_code, item.line_name,
pw.workorder_type, pw.product_code, pw.product_name, pw.quantity, pw.request_date, pc.cnt, sq.sum_qty pw.workorder_code, pw.order_serial, pw.workorder_type, pw.product_code, pw.product_name, pw.request_date
<if test="progressLessThan != null"> <trim prefix="HAVING" prefixOverrides="AND">
HAVING progress_percent &lt; #{progressLessThan} <if test="scheduleStartDate != null">
</if> AND MIN(task.create_time) &gt;= #{scheduleStartDate}
ORDER BY st.schedule_time DESC AND MIN(task.create_time) &lt;= #{scheduleEndDate}
</if>
<if test="progressLessThan != null">
AND (
CASE
WHEN MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) IS NULL
OR MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END) = 0 THEN 0
ELSE ROUND(
IFNULL(SUM(CASE WHEN task.is_last_process = 1
THEN IFNULL(fe.quantity_qualify, 0) + IFNULL(fe.quantity_unqualify, 0) ELSE 0 END), 0)
* 100.0 / MAX(CASE WHEN task.is_last_process = 1 THEN task.quantity END), 2)
END
) &lt; #{progressLessThan}
</if>
</trim>
ORDER BY MIN(task.create_time) DESC
</select> </select>
<!-- 进度报表:各工单各工序完工数量(来自 pro_task_workunit 按工序汇总) --> <!-- 进度报表:各工单各排产批次各工序完工数量 -->
<select id="getProgressReportProcessQuantities" resultType="com.ximai.mes.report.response.ProgressReportProcessQtyDto"> <select id="getProgressReportProcessQuantities" resultType="com.ximai.mes.report.response.ProgressReportProcessQtyDto">
SELECT SELECT
tw.workorder_id, tw.workorder_id,
SUBSTRING_INDEX(t.task_batch, '-', -1) AS task_batch,
p.process_name, p.process_name,
IFNULL(SUM(ptw.quantity_produced), 0) AS quantity_produced IFNULL(SUM(ptw.quantity_produced), 0) AS quantity_produced
FROM pro_task_workunit ptw FROM pro_task_workunit ptw
...@@ -461,7 +467,7 @@ ...@@ -461,7 +467,7 @@
</foreach> </foreach>
</if> </if>
</where> </where>
GROUP BY tw.workorder_id, p.process_id, p.process_name GROUP BY tw.workorder_id, t.task_batch, p.process_id, p.process_name
</select> </select>
<insert id="insertProWorkorder" parameterType="ProWorkorder" useGeneratedKeys="true" keyProperty="workorderId"> <insert id="insertProWorkorder" parameterType="ProWorkorder" useGeneratedKeys="true" keyProperty="workorderId">
......
...@@ -470,7 +470,12 @@ ...@@ -470,7 +470,12 @@
<select id="getProcessList" <select id="getProcessList"
resultType="com.ximai.mes.report.response.WorkOrderProgressProcessListResponse"> resultType="com.ximai.mes.report.response.WorkOrderProgressProcessListResponse">
select * from pro_task where arrange_code = #{workorderCode} order by task_id select * from pro_task
where arrange_code = #{workorderCode}
<if test="taskBatch != null and taskBatch != ''">
and SUBSTRING_INDEX(task_batch, '-', -1) = #{taskBatch}
</if>
order by idx, task_id
</select> </select>
<insert id="insertProTask" parameterType="ProTask" useGeneratedKeys="true" keyProperty="taskId"> <insert id="insertProTask" parameterType="ProTask" useGeneratedKeys="true" keyProperty="taskId">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment