|
|
|
@ -115,8 +115,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
//写入SAP下发计划表
|
|
|
|
|
saveMesProductPlan(bean, true, false);
|
|
|
|
|
return bean;
|
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
|
//生成工单号
|
|
|
|
@ -144,75 +142,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
BeanUtils.copyProperties(bean, workOrderLog, "id");
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
//写入SAP下发计划表
|
|
|
|
|
saveMesProductPlan(bean, true, false);
|
|
|
|
|
return bean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void saveMesProductPlan(MesWorkOrder bean, boolean isInsert, boolean isReport) {
|
|
|
|
|
// if (StringUtil.isEmpty(bean.getPlanOrderNo())) {
|
|
|
|
|
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean);
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean);
|
|
|
|
|
// MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
|
|
|
|
|
// if (null == mesProductPlan) {
|
|
|
|
|
// MesProductPlan mesPlanOrder = new MesProductPlan();
|
|
|
|
|
// mesPlanOrder.setPlanOrderNo("");
|
|
|
|
|
// mesPlanOrder.setPlanQty(bean.getQty());
|
|
|
|
|
// mesPlanOrder.setPlanPartNo(bean.getPartNo());
|
|
|
|
|
// mesPlanOrder.setCompleteQty(0d);
|
|
|
|
|
// mesPlanOrder.setUncompleteQty(bean.getQty());
|
|
|
|
|
// mesPlanOrder.setUnit(bean.getUnit());
|
|
|
|
|
// mesPlanOrder.setPlanStartDate(bean.getPlanStartTime());
|
|
|
|
|
// mesPlanOrder.setPlanEndDate(bean.getPlanEndTime());
|
|
|
|
|
// mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter());
|
|
|
|
|
// mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode());
|
|
|
|
|
// mesPlanOrder.setOrganizeCode(bean.getOrganizeCode());
|
|
|
|
|
// ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser());
|
|
|
|
|
// mesProductPlanRDao.insert(mesPlanOrder);
|
|
|
|
|
// } else {
|
|
|
|
|
// if (isInsert) {
|
|
|
|
|
// mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty()));
|
|
|
|
|
// } else {
|
|
|
|
|
// //报工
|
|
|
|
|
// if (isReport) {
|
|
|
|
|
// mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
|
|
|
|
|
// //报工调整
|
|
|
|
|
// } else {
|
|
|
|
|
// mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
|
|
|
|
|
// ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
|
|
|
|
|
// mesProductPlanRDao.update(mesProductPlan);
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean);
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean);
|
|
|
|
|
// MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean);
|
|
|
|
|
// if (null == mesProductPlan) {
|
|
|
|
|
// MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo());
|
|
|
|
|
// }
|
|
|
|
|
// if (!isInsert) {
|
|
|
|
|
// if (Objects.isNull(mesProductPlan.getCompleteQty())) {
|
|
|
|
|
// mesProductPlan.setCompleteQty(0d);
|
|
|
|
|
// }
|
|
|
|
|
// //报工
|
|
|
|
|
// if (isReport) {
|
|
|
|
|
// mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum()));
|
|
|
|
|
// //报工调整
|
|
|
|
|
// } else {
|
|
|
|
|
// mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum()));
|
|
|
|
|
// }
|
|
|
|
|
// mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty()));
|
|
|
|
|
// ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser());
|
|
|
|
|
// mesProductPlanRDao.update(mesProductPlan);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesWorkOrder update(MesWorkOrder bean) {
|
|
|
|
|
MesWorkOrder result = baseRDao.getById(bean.getId());
|
|
|
|
@ -518,31 +450,25 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
//报工类型
|
|
|
|
|
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
|
|
|
|
|
mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty()));
|
|
|
|
|
//更新SAP计划完成数量
|
|
|
|
|
saveMesProductPlan(mesWorkOrder, false, true);
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
|
|
|
|
|
mesWorkOrder.getReportedQty(), mesWorkOrder.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//冲销数量大于工单完成数量报错
|
|
|
|
|
if (mesWorkOrder.getNum() > mesWorkOrder.getReportedQty()) {
|
|
|
|
|
if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrder.getAdjustQty()) > mesWorkOrder.getReportedQty()) {
|
|
|
|
|
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
|
|
|
|
|
mesWorkOrder.getNum(), mesWorkOrder.getReportedQty());
|
|
|
|
|
}
|
|
|
|
|
//报工调整数量加-
|
|
|
|
|
mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty())));
|
|
|
|
|
//已汇报数量减一
|
|
|
|
|
mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrder.getNum()));
|
|
|
|
|
//更新SAP计划完成数量
|
|
|
|
|
saveMesProductPlan(mesWorkOrder, false, false);
|
|
|
|
|
}
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
|
|
|
|
|
mesWorkOrder.getReportedQty(), mesWorkOrder.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
update(mesWorkOrder);
|
|
|
|
|
|
|
|
|
@ -641,26 +567,24 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
//报工
|
|
|
|
|
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
|
|
|
|
|
mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getReportedQty()));
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量大于工单数量【%s】,不允许报工", mesWorkOrder.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//冲销数量大于工单完成数量报错
|
|
|
|
|
if (mesWorkOrderNew.getNum() > mesWorkOrder.getReportedQty()) {
|
|
|
|
|
if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrder.getAdjustQty()) > mesWorkOrder.getReportedQty()) {
|
|
|
|
|
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
|
|
|
|
|
mesWorkOrderNew.getNum(), mesWorkOrder.getReportedQty());
|
|
|
|
|
}
|
|
|
|
|
//报工调整数量加-
|
|
|
|
|
mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getAdjustQty())));
|
|
|
|
|
//已汇报数量减一
|
|
|
|
|
mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrderNew.getNum()));
|
|
|
|
|
}
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量大于工单数量【%s】,不允许报工", mesWorkOrder.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
//获取生产版本
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder);
|
|
|
|
|