|
|
|
@ -39,7 +39,7 @@ import java.util.stream.Collectors;
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements IMesWorkOrderService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkOrderLogService workOrderLogService;
|
|
|
|
|
private IMesWorkOrderLogService workOrderLogService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ISyncFuncService syncFuncService;
|
|
|
|
|
@Autowired
|
|
|
|
@ -110,11 +110,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
|
BeanUtils.copyProperties(copyMesWorkOrder, workOrderLog, "id");
|
|
|
|
|
|
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder);
|
|
|
|
|
return bean;
|
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
|
//生成工单号
|
|
|
|
@ -138,9 +135,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
|
BeanUtils.copyProperties(bean, workOrderLog, "id");
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(bean);
|
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
return bean;
|
|
|
|
|
}
|
|
|
|
@ -155,10 +150,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE.SORT.getDescription()));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//工单数量只能比原来的大
|
|
|
|
|
if (bean.getQty() < result.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单数量不能小于工单源数量【%s】",
|
|
|
|
|
result.getQty()));
|
|
|
|
|
//更新工单数量
|
|
|
|
|
if (!bean.getQty().equals(result.getQty()) && result.getWorkOrderStatus() > MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单状态为【%s】不允许更新工单数量", MesExtEnumUtil.ORDER_STATUS.valueOfDescription(result.getWorkOrderStatus())));
|
|
|
|
|
}else{
|
|
|
|
|
result.setQty(bean.getQty());
|
|
|
|
|
result.setUnCompleteQty(MathOperation.sub(bean.getQty(),result.getReportedQty()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//在加工的工单不能修改物料信息
|
|
|
|
@ -169,29 +166,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.setQty(bean.getQty());
|
|
|
|
|
//更新已汇报
|
|
|
|
|
if (bean.getReportedQty() >= 0) {
|
|
|
|
|
result.setReportedQty(bean.getReportedQty());
|
|
|
|
|
}
|
|
|
|
|
if (bean.getUnCompleteQty() >= 0) {
|
|
|
|
|
result.setUnCompleteQty(bean.getUnCompleteQty());
|
|
|
|
|
}
|
|
|
|
|
if (bean.getAdjustQty() > 0) {
|
|
|
|
|
result.setAdjustQty(bean.getAdjustQty());
|
|
|
|
|
}
|
|
|
|
|
//更新状态
|
|
|
|
|
if (bean.getWorkOrderStatus() > 0) {
|
|
|
|
|
if(result.getWorkOrderStatus().intValue() != bean.getWorkOrderStatus().intValue()){
|
|
|
|
|
result.setWorkOrderStatus(bean.getWorkOrderStatus());
|
|
|
|
|
}
|
|
|
|
|
//修改工单,工单标识需要改为未同步
|
|
|
|
|
result.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(result, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
|
BeanUtils.copyProperties(result, workOrderLog, "id");
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
|
|
|
|
|
baseRDao.update(result);
|
|
|
|
|
updateMesWorkOrder(result);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -338,6 +320,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
if (StringUtil.isEmpty(item.getProduceTime())) {
|
|
|
|
|
item.setProduceTime(TimeTool.getToday());
|
|
|
|
|
}
|
|
|
|
|
item.setUnCompleteQty(item.getQty());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -428,49 +411,49 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
MesWorkOrder mesWorkOrderDb = baseRDao.getById(mesWorkOrder.getId());
|
|
|
|
|
if (Objects.isNull(mesWorkOrderDb)) {
|
|
|
|
|
MesException.throwMesBusiException("工单id为【%s】工单信息不存在", mesWorkOrder.getId());
|
|
|
|
|
}
|
|
|
|
|
//查询物料信息
|
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
|
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode());
|
|
|
|
|
//查询产线信息
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrder.getWorkCenterCode());
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode());
|
|
|
|
|
}
|
|
|
|
|
//获取生产版本
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder);
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb);
|
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
|
List<MesBom> mesBoms = getBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
|
|
|
|
|
//报工类型
|
|
|
|
|
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
|
|
|
|
|
mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty()));
|
|
|
|
|
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderDb.getReportType()) {
|
|
|
|
|
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty()));
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
|
|
|
|
|
mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
|
|
|
|
|
mesWorkOrder.getReportedQty(), mesWorkOrder.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) {
|
|
|
|
|
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//冲销数量大于工单完成数量报错
|
|
|
|
|
if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrder.getAdjustQty()) > mesWorkOrder.getReportedQty()) {
|
|
|
|
|
if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrderDb.getAdjustQty()) > mesWorkOrderDb.getReportedQty()) {
|
|
|
|
|
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
|
|
|
|
|
mesWorkOrder.getNum(), mesWorkOrder.getReportedQty());
|
|
|
|
|
mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty());
|
|
|
|
|
}
|
|
|
|
|
//报工调整数量加-
|
|
|
|
|
mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty())));
|
|
|
|
|
mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getAdjustQty())));
|
|
|
|
|
}
|
|
|
|
|
update(mesWorkOrder);
|
|
|
|
|
//更新工单
|
|
|
|
|
updateMesWorkOrder(mesWorkOrderDb);
|
|
|
|
|
|
|
|
|
|
//生成条码
|
|
|
|
|
List<String> resultList = getStringList(mesWorkOrder);
|
|
|
|
@ -652,7 +635,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//更新工单
|
|
|
|
|
update(mesWorkOrder);
|
|
|
|
|
updateMesWorkOrder(mesWorkOrder);
|
|
|
|
|
|
|
|
|
|
//保存报工记录
|
|
|
|
|
if (CollectionUtils.isNotEmpty(mesProductOffLineList)) {
|
|
|
|
|
mesProductOffLineService.insertBatch(mesProductOffLineList);
|
|
|
|
@ -691,6 +675,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
mesProductOffLineService.insertBatch(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateMesWorkOrder(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesWorkOrder, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
baseRDao.update(mesWorkOrder);
|
|
|
|
|
//保存记录
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(mesWorkOrder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom) {
|
|
|
|
|
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
newMesProductOffLine.setReportPartNo(mesPart.getPartNo());
|
|
|
|
|