|
|
@ -241,15 +241,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
if (!mesWorkCenterRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode());
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//校验标识
|
|
|
|
//校验标识
|
|
|
|
//若工单类型为排序
|
|
|
|
//若工单类型为排序
|
|
|
|
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
|
|
|
|
//若工单类型为排序 标识为 N E P S
|
|
|
|
//若工单类型为排序 标识为 N E P S
|
|
|
|
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() &&
|
|
|
|
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() &&
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
|
|
|
@ -265,6 +264,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
|
|
|
|
|
|
|
|
packPlanTime(item);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生产版本为空
|
|
|
|
|
|
|
|
if(Objects.isNull(item.getProductVersion())){
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter);
|
|
|
|
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//校验vin号是否重复
|
|
|
|
//校验vin号是否重复
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean);
|
|
|
@ -286,41 +294,19 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
|
|
|
|
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanDate(), "计划日期不能为空");
|
|
|
|
packPlanTime(item);
|
|
|
|
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
|
|
|
|
//查询班次信息
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getShiftCode(), "shiftCode", ddlPackBean);
|
|
|
|
|
|
|
|
MesShift mesShift = mesShiftRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesShift)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】班次【%s】信息不存在", item.getWorkCenterCode(), item.getShiftCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setShiftName(mesShift.getShiftName());
|
|
|
|
|
|
|
|
//拼接
|
|
|
|
|
|
|
|
item.setPlanStartTime(item.getPlanDate() + " " + mesShift.getStartTime());
|
|
|
|
|
|
|
|
item.setPlanEndTime(item.getPlanDate() + " " + mesShift.getEndTime());
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
int windowStartEndTimeCompare = this.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime());
|
|
|
|
|
|
|
|
if (windowStartEndTimeCompare > 0) {
|
|
|
|
|
|
|
|
item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(),1)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("时间格式异常");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//校验物料生产版本是否存在
|
|
|
|
//校验物料生产版本是否存在
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
checkMesProductVersion(item, mesWorkCenter);
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getProductVersion(), "productVersion", ddlPackBean);
|
|
|
|
|
|
|
|
if (!mesProductVersionRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(),item.getWorkCenterCode(), item.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
|
|
|
|
//生产版本为空
|
|
|
|
|
|
|
|
if(Objects.isNull(item.getProductVersion())){
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter);
|
|
|
|
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
//拼接
|
|
|
|
//拼接
|
|
|
|
// item.setPlanStartTime(item.getPlanStartTime() + " " + "00:00:00");
|
|
|
|
// item.setPlanStartTime(item.getPlanStartTime() + " " + "00:00:00");
|
|
|
|
// item.setPlanEndTime(item.getPlanEndTime() + " " + "23:59:59");
|
|
|
|
// item.setPlanEndTime(item.getPlanEndTime() + " " + "23:59:59");
|
|
|
@ -333,6 +319,56 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void checkMesProductVersion(MesWorkOrder item, MesWorkCenter mesWorkCenter) {
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean;
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkCenter.getSapWorkCenter(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getProductVersion(), "productVersion", ddlPackBean);
|
|
|
|
|
|
|
|
if (!mesProductVersionRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(), mesWorkCenter.getWorkCenterCode(), item.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesProductVersion getMesProductVersion(MesWorkOrder item, MesWorkCenter mesWorkCenter) {
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean;
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkCenter.getSapWorkCenter(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
ddlPackBean.setOrderByStr(" order by createDatetime desc ");
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if(Objects.isNull(mesProductVersion)){
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return mesProductVersion;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void packPlanTime(MesWorkOrder item) {
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean;
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanDate(), "计划日期不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
|
|
|
|
//查询班次信息
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getShiftCode(), "shiftCode", ddlPackBean);
|
|
|
|
|
|
|
|
MesShift mesShift = mesShiftRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesShift)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】班次【%s】信息不存在", item.getWorkCenterCode(), item.getShiftCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setShiftName(mesShift.getShiftName());
|
|
|
|
|
|
|
|
//拼接
|
|
|
|
|
|
|
|
item.setPlanStartTime(item.getPlanDate() + " " + mesShift.getStartTime());
|
|
|
|
|
|
|
|
item.setPlanEndTime(item.getPlanDate() + " " + mesShift.getEndTime());
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
int windowStartEndTimeCompare = this.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime());
|
|
|
|
|
|
|
|
if (windowStartEndTimeCompare > 0) {
|
|
|
|
|
|
|
|
item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(),1)));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("时间格式异常");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -348,9 +384,18 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
//查询物料信息
|
|
|
|
//查询物料信息
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
|
|
|
|
//获取生产版本
|
|
|
|
//查询产线信息
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrder.getWorkCenterCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取生产版本
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkCenter.getSapWorkCenter(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getProductVersion(), "productVersion", ddlPackBean);
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
if (null == mesProductVersion) {
|
|
|
|
if (null == mesProductVersion) {
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo());
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo());
|
|
|
@ -358,7 +403,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductVersion.getProductVersion(), "bomVersion", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductVersion.getAlternativePartList(), "bomVersion", ddlPackBean);
|
|
|
|
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在",
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在",
|
|
|
@ -395,13 +440,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("REPORT_SN");
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("REPORT_SN");
|
|
|
|
genSerialNoModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
genSerialNoModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList();
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList();
|
|
|
|
//查询产线信息
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrder.getWorkCenterCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存数据
|
|
|
|
//保存数据
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|