Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ximai
mes
Commits
cbb78064
Commit
cbb78064
authored
May 21, 2026
by
chicheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
进度报表添加BUG修复
parent
41f11e9b
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
118 additions
and
86 deletions
+118
-86
ProWorkorderMapper.java
...ximai/mes/pro/mapper/proWorkOrder/ProWorkorderMapper.java
+2
-2
ProTaskMapper.java
...ain/java/com/ximai/mes/pro/mapper/task/ProTaskMapper.java
+2
-1
WorkOrderProgressController.java
...ai/mes/report/controller/WorkOrderProgressController.java
+5
-2
WorkOrderProgressRequest.java
...om/ximai/mes/report/request/WorkOrderProgressRequest.java
+6
-0
ProgressReportProcessQtyDto.java
...imai/mes/report/response/ProgressReportProcessQtyDto.java
+2
-0
ProgressReportResponse.java
...com/ximai/mes/report/response/ProgressReportResponse.java
+3
-0
ProgressReportRowDto.java
...a/com/ximai/mes/report/response/ProgressReportRowDto.java
+2
-0
WorkOrderProgressListResponse.java
...ai/mes/report/response/WorkOrderProgressListResponse.java
+5
-0
WorkOrderProgressService.java
...om/ximai/mes/report/service/WorkOrderProgressService.java
+1
-1
FeedbackServiceImp.java
...com/ximai/mes/report/service/impl/FeedbackServiceImp.java
+11
-5
WorkOrderProgressServiceImp.java
.../mes/report/service/impl/WorkOrderProgressServiceImp.java
+3
-2
ProFeedbackMapper.xml
mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml
+13
-21
ProWorkorderMapper.xml
.../resources/mapper/pro/proWorkOrder/ProWorkorderMapper.xml
+57
-51
ProTaskMapper.xml
mes/src/main/resources/mapper/pro/task/ProTaskMapper.xml
+6
-1
No files found.
mes/src/main/java/com/ximai/mes/pro/mapper/proWorkOrder/ProWorkorderMapper.java
View file @
cbb78064
...
@@ -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
);
}
}
mes/src/main/java/com/ximai/mes/pro/mapper/task/ProTaskMapper.java
View file @
cbb78064
...
@@ -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
);
}
}
mes/src/main/java/com/ximai/mes/report/controller/WorkOrderProgressController.java
View file @
cbb78064
...
@@ -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
);
}
}
...
...
mes/src/main/java/com/ximai/mes/report/request/WorkOrderProgressRequest.java
View file @
cbb78064
...
@@ -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
;
}
}
mes/src/main/java/com/ximai/mes/report/response/ProgressReportProcessQtyDto.java
View file @
cbb78064
...
@@ -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
;
}
}
mes/src/main/java/com/ximai/mes/report/response/ProgressReportResponse.java
View file @
cbb78064
...
@@ -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
;
...
...
mes/src/main/java/com/ximai/mes/report/response/ProgressReportRowDto.java
View file @
cbb78064
...
@@ -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
;
...
...
mes/src/main/java/com/ximai/mes/report/response/WorkOrderProgressListResponse.java
View file @
cbb78064
...
@@ -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
;
}
}
mes/src/main/java/com/ximai/mes/report/service/WorkOrderProgressService.java
View file @
cbb78064
...
@@ -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
);
}
}
mes/src/main/java/com/ximai/mes/report/service/impl/FeedbackServiceImp.java
View file @
cbb78064
...
@@ -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
>>
workorder
ProcessMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
BigDecimal
>>
batch
ProcessMap
=
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
;
}
}
workorder
ProcessMap
batch
ProcessMap
.
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
=
workorder
ProcessMap
.
values
().
stream
()
Set
<
String
>
usedProcessNames
=
batch
ProcessMap
.
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
);
...
...
mes/src/main/java/com/ximai/mes/report/service/impl/WorkOrderProgressServiceImp.java
View file @
cbb78064
...
@@ -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("加工中");
...
...
mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml
View file @
cbb78064
...
@@ -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,
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
...
...
mes/src/main/resources/mapper/pro/proWorkOrder/ProWorkorderMapper.xml
View file @
cbb78064
...
@@ -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)
>
= #{scheduleDateFrom} AND MIN(task.create_time)
<
= #{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
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
LEFT JOIN md_item item ON item.item_id = pw.product_id
<where>
<where>
<if
test=
"scheduleStartDate != null"
>
AND st.schedule_time
>
= #{scheduleStartDate}
</if>
<if
test=
"scheduleEndDate != null"
>
AND st.schedule_time
<
= #{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
<
#{requestDateBefore}
AND pw.request_date
<
#{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
<trim
prefix=
"HAVING"
prefixOverrides=
"AND"
>
<if
test=
"scheduleStartDate != null"
>
AND MIN(task.create_time)
>
= #{scheduleStartDate}
AND MIN(task.create_time)
<
= #{scheduleEndDate}
</if>
<if
test=
"progressLessThan != null"
>
<if
test=
"progressLessThan != null"
>
HAVING progress_percent
<
#{progressLessThan}
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
)
<
#{progressLessThan}
</if>
</if>
ORDER BY st.schedule_time DESC
</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"
>
...
...
mes/src/main/resources/mapper/pro/task/ProTaskMapper.xml
View file @
cbb78064
...
@@ -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"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment