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
0abf5625
Commit
0abf5625
authored
Jan 17, 2025
by
温志超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新生产排产BUG
parent
66e8e85e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1551 additions
and
156 deletions
+1551
-156
Excel.java
common/src/main/java/com/ximai/common/annotation/Excel.java
+89
-132
ExcelHandlerAdapter.java
.../java/com/ximai/common/utils/poi/ExcelHandlerAdapter.java
+13
-0
ExcelUtil.java
...n/src/main/java/com/ximai/common/utils/poi/ExcelUtil.java
+1183
-0
WorkorderStatusEnum.java
...main/java/com/ximai/mes/constant/WorkorderStatusEnum.java
+26
-13
FeedbackController.java
...a/com/ximai/mes/report/controller/FeedbackController.java
+177
-0
WorkOrderProgressController.java
...ai/mes/report/controller/WorkOrderProgressController.java
+13
-0
FeedbackResponse.java
.../java/com/ximai/mes/report/response/FeedbackResponse.java
+30
-5
WorkOrderProgressListResponse.java
...ai/mes/report/response/WorkOrderProgressListResponse.java
+20
-6
No files found.
common/src/main/java/com/ximai/common/annotation/Excel.java
View file @
0abf5625
package
com
.
ximai
.
common
.
annotation
;
import
com.ximai.common.utils.poi.ExcelHandlerAdapter
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
java.math.BigDecimal
;
/**
* 自定义导出Excel数据注解
*
*/
/** 自定义导出Excel数据注解 */
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
FIELD
)
public
@interface
Excel
{
/**
* 导出时在excel中排序
*/
public
int
sort
()
default
Integer
.
MAX_VALUE
;
/**
* 导出到Excel中的名字.
*/
public
String
name
()
default
""
;
/**
* 日期格式, 如: yyyy-MM-dd
*/
public
String
dateFormat
()
default
""
;
/**
* 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
*/
public
String
dictType
()
default
""
;
/**
* 读取内容转表达式 (如: 0=男,1=女,2=未知)
*/
public
String
readConverterExp
()
default
""
;
/**
* 分隔符,读取字符串组内容
*/
public
String
separator
()
default
","
;
/**
* BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)
*/
public
int
scale
()
default
-
1
;
/**
* BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
*/
public
int
roundingMode
()
default
BigDecimal
.
ROUND_HALF_EVEN
;
/**
* 导出类型(0数字 1字符串)
*/
public
ColumnType
cellType
()
default
ColumnType
.
STRING
;
/**
* 导出时在excel中每个列的高度 单位为字符
*/
public
double
height
()
default
14
;
/**
* 导出时在excel中每个列的宽 单位为字符
*/
public
double
width
()
default
16
;
/**
* 文字后缀,如% 90 变成90%
*/
public
String
suffix
()
default
""
;
/**
* 当值为空时,字段的默认值
*/
public
String
defaultValue
()
default
""
;
/**
* 提示信息
*/
public
String
prompt
()
default
""
;
/**
* 设置只能选择不能输入的列内容.
*/
public
String
[]
combo
()
default
{};
/**
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.
*/
public
boolean
isExport
()
default
true
;
/**
* 另一个类中的属性名称,支持多级获取,以小数点隔开
*/
public
String
targetAttr
()
default
""
;
/**
* 是否自动统计数据,在最后追加一行统计数据总和
*/
public
boolean
isStatistics
()
default
false
;
/**
* 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右)
*/
public
Align
align
()
default
Align
.
AUTO
;
/**
* 自定义数据处理器参数
*/
public
String
[]
args
()
default
{};
public
enum
Align
{
AUTO
(
0
),
LEFT
(
1
),
CENTER
(
2
),
RIGHT
(
3
);
public
@interface
Excel
{
/** 导出时在excel中排序 */
int
sort
()
default
Integer
.
MAX_VALUE
;
/** 导出到Excel中的名字. */
String
name
()
default
""
;
/** 日期格式, 如: yyyy-MM-dd */
String
dateFormat
()
default
""
;
/** 如果是字典类型,请设置字典的type值 (如: sys_user_sex) */
String
dictType
()
default
""
;
/** 读取内容转表达式 (如: 0=男,1=女,2=未知) */
String
readConverterExp
()
default
""
;
/** 分隔符,读取字符串组内容 */
String
separator
()
default
","
;
/** BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) */
int
scale
()
default
-
1
;
/** BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN */
int
roundingMode
()
default
BigDecimal
.
ROUND_HALF_EVEN
;
/** 导出类型(0数字 1字符串) */
ColumnType
cellType
()
default
ColumnType
.
STRING
;
/** 导出时在excel中每个列的高度 单位为字符 */
double
height
()
default
14
;
/** 导出时在excel中每个列的宽 单位为字符 */
double
width
()
default
16
;
/** 文字后缀,如% 90 变成90% */
String
suffix
()
default
""
;
/** 当值为空时,字段的默认值 */
String
defaultValue
()
default
""
;
/** 提示信息 */
String
prompt
()
default
""
;
/** 设置只能选择不能输入的列内容. */
String
[]
combo
()
default
{};
/** 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. */
boolean
isExport
()
default
true
;
/** 另一个类中的属性名称,支持多级获取,以小数点隔开 */
String
targetAttr
()
default
""
;
/** 是否自动统计数据,在最后追加一行统计数据总和 */
boolean
isStatistics
()
default
false
;
/** 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右) */
Align
align
()
default
Align
.
AUTO
;
/** 自定义数据处理器 */
Class
<?>
handler
()
default
ExcelHandlerAdapter
.
class
;
/** 自定义数据处理器参数 */
String
[]
args
()
default
{};
/** 字段类型(0:导出导入;1:仅导出;2:仅导入) */
Type
type
()
default
Type
.
ALL
;
enum
Align
{
AUTO
(
0
),
LEFT
(
1
),
CENTER
(
2
),
RIGHT
(
3
);
private
final
int
value
;
Align
(
int
value
)
{
Align
(
int
value
)
{
this
.
value
=
value
;
}
public
int
value
()
{
public
int
value
()
{
return
this
.
value
;
}
}
/**
* 字段类型(0:导出导入;1:仅导出;2:仅导入)
*/
Type
type
()
default
Type
.
ALL
;
public
enum
Type
{
ALL
(
0
),
EXPORT
(
1
),
IMPORT
(
2
);
enum
Type
{
ALL
(
0
),
EXPORT
(
1
),
IMPORT
(
2
);
private
final
int
value
;
Type
(
int
value
)
{
Type
(
int
value
)
{
this
.
value
=
value
;
}
public
int
value
()
{
public
int
value
()
{
return
this
.
value
;
}
}
public
enum
ColumnType
{
NUMERIC
(
0
),
STRING
(
1
),
IMAGE
(
2
);
enum
ColumnType
{
NUMERIC
(
0
),
STRING
(
1
),
IMAGE
(
2
);
private
final
int
value
;
ColumnType
(
int
value
)
{
ColumnType
(
int
value
)
{
this
.
value
=
value
;
}
public
int
value
()
{
public
int
value
()
{
return
this
.
value
;
}
}
...
...
common/src/main/java/com/ximai/common/utils/poi/ExcelHandlerAdapter.java
0 → 100644
View file @
0abf5625
package
com
.
ximai
.
common
.
utils
.
poi
;
/** Excel数据格式处理适配器 */
public
interface
ExcelHandlerAdapter
{
/**
* 格式化
*
* @param value 单元格数据值
* @param args excel注解args参数组
* @return 处理后的值
*/
Object
format
(
Object
value
,
String
[]
args
);
}
common/src/main/java/com/ximai/common/utils/poi/ExcelUtil.java
0 → 100644
View file @
0abf5625
This diff is collapsed.
Click to expand it.
mes/src/main/java/com/ximai/mes/constant/WorkorderStatusEnum.java
View file @
0abf5625
...
...
@@ -9,58 +9,71 @@ public enum WorkorderStatusEnum {
/**
* 待发布
*/
PREPARE
(
"PREPARE"
),
PREPARE
(
"PREPARE"
,
"待发布"
),
/**
* 已发布
*/
PUBLISHED
(
"PUBLISHED"
),
PUBLISHED
(
"PUBLISHED"
,
"已发布"
),
/**
* 已组合
*/
COMBINED
(
"COMBINED"
),
COMBINED
(
"COMBINED"
,
"已组合"
),
/**
* 已编排
*/
ORCHESTRATED
(
"ORCHESTRATED"
),
ORCHESTRATED
(
"ORCHESTRATED"
,
"已编排"
),
/**
* 已排产
*/
SCHEDULED
(
"SCHEDULED"
),
SCHEDULED
(
"SCHEDULED"
,
"已排产"
),
/**
* 已完成
*/
FINISHED
(
"FINISHED"
),
FINISHED
(
"FINISHED"
,
"已完成"
),
/**
* 已取消
*/
CANCELED
(
"CANCELED"
),
CANCELED
(
"CANCELED"
,
"已取消"
),
/**
* 暂停
*/
STOPPAGE
(
"STOPPAGE"
),
STOPPAGE
(
"STOPPAGE"
,
"待发布"
),
/**
* 锁定
*/
LOCK
(
"LOCK"
),
LOCK
(
"LOCK"
,
"锁定"
),
/**
* 已下达
*/
ISSUED
(
"ISSUED"
),
ISSUED
(
"ISSUED"
,
"已下达"
),
/**
* 关闭/取消
*/
CLOSE
(
"CLOSE"
),
CANCEL
(
"CANCEL"
),
CLOSE
(
"CLOSE"
,
"关闭"
),
CANCEL
(
"CANCEL"
,
"取消"
),
/**
* 生产中
*/
PRODUCING
(
"PRODUCING"
);
PRODUCING
(
"PRODUCING"
,
"生产中"
);
/**
* Lock type
*/
private
final
String
status
;
/**
* 枚举名称
*/
public
String
enumName
;
WorkorderStatusEnum
(
String
status
,
String
enumName
)
{
this
.
status
=
status
;
this
.
enumName
=
enumName
;
}
public
String
getEnumName
()
{
return
enumName
;
}
/**
* Constructor with field of type
*/
...
...
mes/src/main/java/com/ximai/mes/report/controller/FeedbackController.java
View file @
0abf5625
This diff is collapsed.
Click to expand it.
mes/src/main/java/com/ximai/mes/report/controller/WorkOrderProgressController.java
View file @
0abf5625
...
...
@@ -4,6 +4,8 @@ import com.ximai.common.annotation.Log;
import
com.ximai.common.core.controller.BaseController
;
import
com.ximai.common.core.page.TableDataInfo
;
import
com.ximai.common.enums.BusinessType
;
import
com.ximai.common.utils.poi.ExcelUtil
;
import
com.ximai.mes.constant.WorkorderStatusEnum
;
import
com.ximai.mes.report.request.FeedbackRequest
;
import
com.ximai.mes.report.request.WorkOrderProgressRequest
;
import
com.ximai.mes.report.response.FeedbackResponse
;
...
...
@@ -17,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
@Api
(
"生产进度"
)
...
...
@@ -37,6 +40,16 @@ public class WorkOrderProgressController extends BaseController {
return
getDataTable
(
workOrderProgressListResponses
);
}
@PreAuthorize
(
"@ss.hasPermi('pro:materialReturn:export')"
)
@Log
(
title
=
"生产进度:明细界面导出"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/getList/export"
)
public
void
export
(
HttpServletResponse
response
,
WorkOrderProgressRequest
workOrderProgressRequest
)
{
List
<
WorkOrderProgressListResponse
>
workOrderProgressListResponses
=
workOrderProgressService
.
getList
(
workOrderProgressRequest
);
workOrderProgressListResponses
.
stream
().
forEach
(
workOrderProgressListResponse
->
workOrderProgressListResponse
.
setStatus
(
WorkorderStatusEnum
.
get
(
workOrderProgressListResponse
.
getStatus
()).
getEnumName
()));
ExcelUtil
<
WorkOrderProgressListResponse
>
util
=
new
ExcelUtil
<>(
WorkOrderProgressListResponse
.
class
);
util
.
exportExcel
(
response
,
workOrderProgressListResponses
,
"生产进度-明细界面导出"
);
}
@ApiOperation
(
"生产进度:工序明细"
)
@PreAuthorize
(
"@ss.hasPermi('mes:pro:feedback:get')"
)
@Log
(
title
=
"生产进度:工序明细"
,
businessType
=
BusinessType
.
QUERY
)
...
...
mes/src/main/java/com/ximai/mes/report/response/FeedbackResponse.java
View file @
0abf5625
...
...
@@ -28,35 +28,43 @@ public class FeedbackResponse extends ProFeedback {
* 工单类型
*/
@ApiModelProperty
(
"工单类型"
)
@Excel
(
name
=
"工单类型"
)
private
String
workorderType
;
@ApiModelProperty
(
"客户项目号"
)
@Excel
(
name
=
"客户项目号"
)
private
String
customerProjectNo
;
@ApiModelProperty
(
"订单单号"
)
@Excel
(
name
=
"订单单号"
)
private
String
orderCode
;
@ApiModelProperty
(
"工单编码"
)
@Excel
(
name
=
"生产工单"
)
private
String
workorderCode
;
@ApiModelProperty
(
"工单名称"
)
//@Excel(name = "工单名称")
private
String
workorderName
;
/**
* 产品编号
*/
@ApiModelProperty
(
"产品编号"
)
@Excel
(
name
=
"产品编号"
)
private
String
productCode
;
/**
* 产品名称
*/
@ApiModelProperty
(
"产品名称"
)
@Excel
(
name
=
"产品名称"
)
private
String
productName
;
/**
* 任务编号
*/
@ApiModelProperty
(
"工序任务号"
)
@Excel
(
name
=
"工序任务号"
)
private
String
taskCode
;
...
...
@@ -65,11 +73,13 @@ public class FeedbackResponse extends ProFeedback {
* 工序名称
*/
@ApiModelProperty
(
"工序编码"
)
@Excel
(
name
=
"工序编码"
)
private
String
processCode
;
/**
* 工序名称
*/
@ApiModelProperty
(
"工序名称"
)
@Excel
(
name
=
"工序名称"
)
private
String
processName
;
...
...
@@ -77,12 +87,14 @@ public class FeedbackResponse extends ProFeedback {
* 工作中心编号
*/
@ApiModelProperty
(
"工作中心编号"
)
@Excel
(
name
=
"工作中心编号"
)
private
String
workstationCode
;
/**
* 工作中心名称
*/
@ApiModelProperty
(
"工作中心名称"
)
@Excel
(
name
=
"工作中心名称"
)
private
String
workstationName
;
...
...
@@ -90,27 +102,33 @@ public class FeedbackResponse extends ProFeedback {
*
*/
@ApiModelProperty
(
"工作单元ID"
)
@Excel
(
name
=
"工作单元ID"
)
private
Long
workunitId
;
/**
*
*/
@ApiModelProperty
(
"工作单元编码"
)
@Excel
(
name
=
"工作单元编码"
)
private
String
workunitCode
;
@ApiModelProperty
(
"工作单元名称"
)
@Excel
(
name
=
"工作单元名称"
)
private
String
workunitName
;
@ApiModelProperty
(
"报工人员"
)
@Excel
(
name
=
"报工人员"
)
private
String
userName
;
@ApiModelProperty
(
"报工人员名称"
)
@Excel
(
name
=
"报工人员名称"
)
private
String
nickName
;
/**
* 排产数量
*/
@ApiModelProperty
(
"派工数量"
)
@Excel
(
name
=
"派工数量"
)
private
BigDecimal
quantity
;
...
...
@@ -118,37 +136,45 @@ public class FeedbackResponse extends ProFeedback {
* 本次报工数量
*/
@ApiModelProperty
(
"本次报工数量"
)
@Excel
(
name
=
"本次报工数量"
)
private
BigDecimal
quantityFeedback
;
/**
* 合格品数量
*/
@ApiModelProperty
(
"合格品数量"
)
@Excel
(
name
=
"合格品数量"
)
private
BigDecimal
quantityQualify
;
/**
* 不良品数量
*/
@ApiModelProperty
(
"不良品数量"
)
@Excel
(
name
=
"不良品数量"
)
private
BigDecimal
quantityUnqualify
;
/** 异常原因 */
@ApiModelProperty
(
"异常原因"
)
@Excel
(
name
=
"异常原因"
)
private
String
abnormalReason
;
@ApiModelProperty
(
"异常备注"
)
@Excel
(
name
=
"异常备注"
)
private
String
abnormalRemark
;
@ApiModelProperty
(
"标准工时"
)
@Excel
(
name
=
"标准工时"
)
private
BigDecimal
stdWorkingTime
;
@ApiModelProperty
(
"实际工时"
)
@Excel
(
name
=
"实际工时"
)
private
String
machineTime
;
/**
* 预计结束时间
*/
@ApiModelProperty
(
"计划结束时间"
)
@Excel
(
name
=
"计划结束时间"
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
scheduleEndDate
;
/**
...
...
@@ -156,18 +182,17 @@ public class FeedbackResponse extends ProFeedback {
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ApiModelProperty
(
"报工时间"
)
@Excel
(
name
=
"报工时间"
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
feedbackTime
;
@ApiModelProperty
(
"良率"
)
@Excel
(
name
=
"良率"
)
private
String
qualificationRate
;
@ApiModelProperty
(
"车间编号"
)
@Excel
(
name
=
"车间编号"
)
private
String
workshopCode
;
@ApiModelProperty
(
"车间名称"
)
@Excel
(
name
=
"车间名称"
)
private
String
workshopName
;
}
mes/src/main/java/com/ximai/mes/report/response/WorkOrderProgressListResponse.java
View file @
0abf5625
package
com
.
ximai
.
mes
.
report
.
response
;
import
com.alibaba.excel.annotation.format.NumberFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.ximai.common.annotation.Excel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -15,52 +16,65 @@ public class WorkOrderProgressListResponse {
* 项目号,订单号,生产工单,工单类型,产品编码,产品名称,计划数量,完工数量,在制进度(百分比),需求实际
*/
@ApiModelProperty
(
"客户项目号"
)
@Excel
(
name
=
"客户项目号"
)
private
String
customerProjectNo
;
@ApiModelProperty
(
"订单单号"
)
@Excel
(
name
=
"订单单号"
)
private
String
orderCode
;
@ApiModelProperty
(
"工单编码"
)
@Excel
(
name
=
"生产工单"
)
private
String
workorderCode
;
@ApiModelProperty
(
"产线"
)
@Excel
(
name
=
"产品名称"
)
private
String
lineName
;
@ApiModelProperty
(
"工单状态"
)
private
String
status
;
/**
* 工单类型
*/
@ApiModelProperty
(
"工单类型"
)
@Excel
(
name
=
"工单类型"
)
private
String
workorderType
;
/**
* 产品编号
*/
@ApiModelProperty
(
"产品编号"
)
@Excel
(
name
=
"产品编号"
)
private
String
productCode
;
/**
* 产品名称
*/
@ApiModelProperty
(
"产品名称"
)
@Excel
(
name
=
"产品名称"
)
private
String
productName
;
@ApiModelProperty
(
"计划数量"
)
@Excel
(
name
=
"计划数量"
)
@NumberFormat
(
value
=
"0.00"
)
private
BigDecimal
quantity
;
/**
* 已生产数量
*/
@ApiModelProperty
(
"已生产数量"
)
@Excel
(
name
=
"完工数量"
)
@NumberFormat
(
value
=
"0.00"
)
private
BigDecimal
quantityProduced
;
/**
* 已生产数量
*/
@ApiModelProperty
(
"在制进度"
)
@Excel
(
name
=
"在制进度%"
)
@NumberFormat
(
value
=
"0.00"
)
private
BigDecimal
quantityMu
;
@ApiModelProperty
(
"需求时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@Excel
(
name
=
"需求时间"
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
requestDate
;
@ApiModelProperty
(
"工单状态"
)
private
String
status
;
@ApiModelProperty
(
"产线"
)
private
String
lineName
;
}
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