Commit 6f2d2c54 authored by chicheng's avatar chicheng

报表相关调整

parent 96a24bf9
...@@ -8,5 +8,7 @@ import lombok.Data; ...@@ -8,5 +8,7 @@ import lombok.Data;
@Data @Data
public class WorkorderFirstUnfinishedProcessVo { public class WorkorderFirstUnfinishedProcessVo {
private String workorderCode; private String workorderCode;
/** 排产次数(task_batch 后缀) */
private String taskBatch;
private String firstUnfinishedProcessName; private String firstUnfinishedProcessName;
} }
...@@ -203,7 +203,8 @@ public interface ProTaskMapper extends BaseMapper<ProTask> { ...@@ -203,7 +203,8 @@ 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);
/** /**
* 批量查询工单首道未完成工序名称(按 idx 升序,与生产进度工序状态判定一致) * 批量查询工单首道未完成工序名称(按 idx 升序,与生产进度工序状态判定一致)
......
...@@ -64,8 +64,11 @@ public class WorkOrderProgressController extends BaseController { ...@@ -64,8 +64,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);
} }
......
...@@ -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);
} }
...@@ -80,19 +80,24 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService { ...@@ -80,19 +80,24 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService {
} }
List<WorkorderFirstUnfinishedProcessVo> rows = proTaskMapper.selectFirstUnfinishedProcessNameByWorkorderCodes(producingCodes); List<WorkorderFirstUnfinishedProcessVo> rows = proTaskMapper.selectFirstUnfinishedProcessNameByWorkorderCodes(producingCodes);
Map<String, String> nameMap = rows.stream().collect(Collectors.toMap( Map<String, String> nameMap = rows.stream().collect(Collectors.toMap(
WorkorderFirstUnfinishedProcessVo::getWorkorderCode, vo -> progressRowKey(vo.getWorkorderCode(), vo.getTaskBatch()),
WorkorderFirstUnfinishedProcessVo::getFirstUnfinishedProcessName, WorkorderFirstUnfinishedProcessVo::getFirstUnfinishedProcessName,
(a, b) -> a)); (a, b) -> a));
for (WorkOrderProgressListResponse item : list) { for (WorkOrderProgressListResponse item : list) {
if (WorkorderStatusEnum.PRODUCING.getValue().equals(item.getStatus())) { if (WorkorderStatusEnum.PRODUCING.getValue().equals(item.getStatus())) {
item.setFirstUnfinishedProcessName(nameMap.get(item.getWorkorderCode())); item.setFirstUnfinishedProcessName(nameMap.get(progressRowKey(item.getWorkorderCode(), item.getTaskBatch())));
} }
} }
} }
private static String progressRowKey(String workorderCode, String taskBatch) {
return workorderCode + "|" + (taskBatch != null ? taskBatch : "");
}
@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("加工中");
......
...@@ -543,31 +543,23 @@ ...@@ -543,31 +543,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,
sum(feedback.quantity) quantity,
sum(feedback.quantity_feedback) quantity_feedback,
sum(feedback.quantity_qualify) quantity_qualify,
sum(feedback.quantity_unqualify) quantity_unqualify,
sum(feedback.quantity_uncheck) quantity_uncheck,
feedback.nick_name, feedback.nick_name,
workunit.std_working_time , (IFNULL(feedback.quantity_qualify, 0) + IFNULL(feedback.quantity_unqualify, 0)) AS quantity_feedback,
feedback.quantity_qualify,
feedback.quantity_unqualify,
workunit.std_working_time,
CAST(feedback.machine_time AS DECIMAL(10, 2)) AS machine_time,
feedback.feedback_time,
pro_task.task_batch pro_task.task_batch
FROM FROM pro_feedback feedback
pro_task_workunit workunit INNER JOIN pro_task_workunit workunit ON feedback.task_workunit_id = workunit.task_workunit_id
JOIN pro_feedback feedback ON feedback.task_workunit_id = workunit.task_workunit_id INNER JOIN pro_task ON pro_task.task_id = workunit.task_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,
...@@ -268,12 +268,12 @@ ...@@ -268,12 +268,12 @@
item.line_name, item.line_name,
SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch, SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch,
MIN(task.create_time) schedule_date, MIN(task.create_time) schedule_date,
sum(case task.is_last_process when 0 THEN 0 ELSE fe.quantity_qualify + fe.quantity_unqualify 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
FROM FROM pro_workorder pw
pro_workorder pw INNER JOIN pro_task_workorder tw ON tw.workorder_id = pw.workorder_id
LEFT JOIN pro_feedback fe ON fe.workorder_id = pw.workorder_id INNER JOIN pro_task task ON task.task_id = tw.task_id
left join pro_task task on task.task_id = fe.task_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 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>
...@@ -303,7 +303,7 @@ ...@@ -303,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,
......
...@@ -470,16 +470,24 @@ ...@@ -470,16 +470,24 @@
<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>
<select id="selectFirstUnfinishedProcessNameByWorkorderCodes" <select id="selectFirstUnfinishedProcessNameByWorkorderCodes"
resultType="com.ximai.mes.pro.domain.vo.WorkorderFirstUnfinishedProcessVo"> resultType="com.ximai.mes.pro.domain.vo.WorkorderFirstUnfinishedProcessVo">
SELECT arrange_code AS workorder_code, process_name AS first_unfinished_process_name SELECT arrange_code AS workorder_code,
SUBSTRING_INDEX(task_batch, '-', -1) AS task_batch,
process_name AS first_unfinished_process_name
FROM ( FROM (
SELECT t.arrange_code, SELECT t.arrange_code,
t.task_batch,
t.process_name, t.process_name,
ROW_NUMBER() OVER (PARTITION BY t.arrange_code ORDER BY t.idx ASC, t.task_id ASC) AS rn ROW_NUMBER() OVER (PARTITION BY t.arrange_code, t.task_batch ORDER BY t.idx ASC, t.task_id ASC) AS rn
FROM pro_task t FROM pro_task t
WHERE t.arrange_code IN WHERE t.arrange_code IN
<foreach collection="workorderCodes" item="code" open="(" separator="," close=")"> <foreach collection="workorderCodes" item="code" open="(" separator="," close=")">
......
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