项目场景:
通过MOM系统下发生产订单,即MOM向中控提交下发请求和参数,中控去接收参数并保存更新到数据库,然后通过数据库的信息去统计报工要用到的参数,统计完成后将参数发送给MOM
问题描述
当服务启动时出现的订单在中控接收却显示服务器繁忙的错误
{
"version": 1,
"taskId": "bc502eb8-859d-4980-8790-4c16e499a4f3",
"code": "500",
"msg": "服务器繁忙稍后再试",
"returnData": null
}
请求报文如下
{"taskType":"17","task":{"WipOrderNo":"316000015463","SequenceNo":"000000","WorkCenterName":"阀块-粗加工(灯塔)","Quantity":1.0,"NextOprSequenceNo":"0050","OprSequenceType":"1","ComponentList":[],"paramRsrv2":"","WorkStationName":"粗加工工位2","WorkStation":"5802XZ01A0245","ProductNo":"13359230","OprSequenceNo":"0040","ScheduledStartDate":"2022-07-04 11:20:01","ProgressStatus":"110","ProductionLine":"5802XZ01","paramRsrv1":"","ProductAlias":"D","ScheduledCompleteDate":"2022-07-04 13:50:01","Facility":"5802","NextSequenceNo":"000000","WorkCenter":"107634","NextWorkCenter":"107623","OprSequenceName":"车","NextOprSequenceName":"数控卧加"},"version":1,"taskId":"bc502eb8-859d-4980-8790-4c16e499a4f3","SysCode":"XZCJG02"}
原因分析:
根据报错日志的提醒可以判断出时请求参数和程序接收的实体类参数出现了冲突,并且这个冲突在数据库去查询时也出现了错误
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'ok_num' in 'field list'
### The error may exist in com/xxx/data/appoint/mom/db/dao/MomOrderDao.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
解决方案:
通过对数据库和实体类映射的字段进行排查发现果然数据库少了两个字段,这也就是查不到的原因了
添加数据库字段
实体类对象属性
@Data
public class MomOrderDo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "MOM 下发订单表 ID")
private String proTaskOrderId;
@ApiModelProperty("产线名称")
private String lineName;
@ApiModelProperty("产线编号")
private String lineCode;
@ApiModelProperty(value = "生产任务订单号")
private String wiporderno;
/**
* 订单类型 1:正常订单;2:返工返修订单
*/
@ApiModelProperty(value = "订单类型 1:正常订单;2:返工返修订单")
private String wipOrderType;
/**
* 订单物料
*/
@ApiModelProperty(value = "订单物料=订单物料号")
private String orderProductNo;
/**
* 数量
*/
@ApiModelProperty(value = "数量 = 订单数量 = 计划生产数量")
private Integer quantity;
/**
*产品物料号
*/
@ApiModelProperty("产品物料号")
private String pathProductNo;
/**
*工序号
*/
@ApiModelProperty("工序号")
private String oprSequenceNo;
/**
*工序名称
*/
@ApiModelProperty("工序名称")
private String oprSequenceName;
/**
*顺序号
*/
@ApiModelProperty("顺序号")
private String sequenceNo;
/**
* 计划开始时间 yyyy-mm-dd hh24:mi:ss
*/
@ApiModelProperty("计划开始时间")
@JsonFormat(pattern = "yyy-MM-dd hh:mm:ss")
private Date scheduledStartDate;
/**
* 计划结束时间 yyyy-mm-dd hh24:mi:ss
*/
@JsonFormat(pattern = "yyy-MM-dd hh:mm:ss")
@ApiModelProperty("计划结束时间")
private Date scheduledCompleteDate;
@ApiModelProperty("实际开始时间")
@JsonFormat(pattern = "yyy-MM-dd hh:mm:ss")
private Date realityStartDate;
@ApiModelProperty("实际结束时间")
@JsonFormat(pattern = "yyy-MM-dd hh:mm:ss")
private Date realityCompleteDate;
@ApiModelProperty("已生产数量")
private String actualProduction;
@ApiModelProperty("合格数量")
private String qualified;
@ApiModelProperty("不合格数量")
private String unqualified;
/**
* 订单状态 110已下达 120进行中 130已完工 140已删除 150强制关闭
*/
@ApiModelProperty("订单状态 110已下达 120进行中 130已完工 140已删除 150强制关闭")
private String progressStatus;
}