Commit 0abf5625 authored by 温志超's avatar 温志超

更新生产排产BUG

parent 66e8e85e
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;
}
}
......
package com.ximai.common.utils.poi;
/** Excel数据格式处理适配器 */
public interface ExcelHandlerAdapter {
/**
* 格式化
*
* @param value 单元格数据值
* @param args excel注解args参数组
* @return 处理后的值
*/
Object format(Object value, String[] args);
}
This diff is collapsed.
......@@ -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
*/
......
......@@ -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)
......
......@@ -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;
}
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;
}
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