|
|
@ -1,6 +1,7 @@
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesProductOffLineService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
|
|
|
@ -8,20 +9,20 @@ import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.MathOperation;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderToSapRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesBomRepository;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@ -41,6 +42,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
private IMesWorkOrderToSapService iMesWorkOrderToSapService;
|
|
|
|
private IMesWorkOrderToSapService iMesWorkOrderToSapService;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IMesPartService iMesPartService;
|
|
|
|
private IMesPartService iMesPartService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesProductVersionRepository mesProductVersionRDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesBomRepository mesBomRDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesProductOffLineService mesProductOffLineService;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
@ -140,7 +147,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
sendToSap = true;
|
|
|
|
sendToSap = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()){
|
|
|
|
if (MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus() ||
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() == bean.getWorkOrderStatus()) {
|
|
|
|
sendToSap = true;
|
|
|
|
sendToSap = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//在加工的工单不能修改物料信息
|
|
|
|
//在加工的工单不能修改物料信息
|
|
|
@ -242,4 +250,64 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
//获取生产版本
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (null == mesProductVersion) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductVersion.getProductVersion(), "bomVersion", ddlPackBean);
|
|
|
|
|
|
|
|
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在",
|
|
|
|
|
|
|
|
mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//更新工单状态
|
|
|
|
|
|
|
|
mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty()));
|
|
|
|
|
|
|
|
if (mesWorkOrder.getCompleteQty() >= mesWorkOrder.getQty()) {
|
|
|
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
update(mesWorkOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//生成条码
|
|
|
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("REPORT_SN");
|
|
|
|
|
|
|
|
genSerialNoModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList();
|
|
|
|
|
|
|
|
//保存数据
|
|
|
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
|
|
|
for (String sn : resultList) {
|
|
|
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartNameRdd());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemPartNameRdd(mesBom.getItemPartName());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemQty(mesBom.getItemQty());
|
|
|
|
|
|
|
|
newMesProductOffLine.setQty(1d);
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportSn(sn);
|
|
|
|
|
|
|
|
newMesProductOffLine.setBomVersion(mesBom.getBomVersion());
|
|
|
|
|
|
|
|
newMesProductOffLine.setSerialNumber(sn);
|
|
|
|
|
|
|
|
newMesProductOffLine.setUnit(mesBom.getUnit());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getOrderNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
|
|
|
|
|
|
|
|
mesProductOffLineList.add(newMesProductOffLine);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mesProductOffLineService.insertBatch(mesProductOffLineList);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|