|
|
|
@ -7,7 +7,6 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
|
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
@ -154,8 +153,10 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(workOrder.getWorkCellCode(), "workCellCode", packBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(workOrder.getWorkOrderNo(), "workOrderNo", packBean);
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(workOrder.getWorkOrderStatus())) DdlPreparedPack.getNumEqualPack(workOrder.getWorkOrderStatus(), "workOrderStatus", packBean);
|
|
|
|
|
else DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()).collect(Collectors.toList()), "workOrderStatus", packBean);
|
|
|
|
|
if (!StringUtils.isEmpty(workOrder.getWorkOrderStatus()))
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(workOrder.getWorkOrderStatus(), "workOrderStatus", packBean);
|
|
|
|
|
else
|
|
|
|
|
DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()).collect(Collectors.toList()), "workOrderStatus", packBean);
|
|
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(workOrder.getStartTimeStart(), "planStartTime", packBean);
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(workOrder.getStartTimeEnd(), "planStartTime", packBean);
|
|
|
|
@ -245,6 +246,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
for (MesProduceSn produceSn : mesWorkOrderList) {
|
|
|
|
|
String nowTime = TimeTool.getNowTime(true);
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo());
|
|
|
|
@ -266,7 +268,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType());
|
|
|
|
|
newMesProductOffLine.setSapWorkCenter(oldMesWorkOrder.getErpWorkCenter());
|
|
|
|
|
newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
|
|
newMesProductOffLine.setDescription(nowTime);
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
|
|
|
|
|
mesProductOffLineList.add(newMesProductOffLine);
|
|
|
|
|
}
|
|
|
|
@ -274,6 +276,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
mesProductOffLineRDao.saveAll(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void doPcnJobProductReport(List<MesProductionRecord> mesProductionRecordList, List<MesShift> mesShiftList, String organizeCode, String userName, MesWorkOrder mesWorkOrderDb) {
|
|
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
@ -340,6 +343,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
mesProductOffLineRDao.saveAll(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateMesWorkOrder(MesWorkOrder mesWorkOrder, String userName) {
|
|
|
|
|
//修改工单,需要重新同步
|
|
|
|
|
mesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
@ -349,11 +353,13 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
//保存记录
|
|
|
|
|
saveMesWorkOrderLog(mesWorkOrder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
|
BeanUtils.copyProperties(mesWorkOrder, workOrderLog, "id");
|
|
|
|
|
mesWorkOrderLogRepository.insert(workOrderLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<MesBom> findBomList(String organizeCode, MesPart mesPart, String bomVersion) {
|
|
|
|
|
List<MesBom> bomData = new ArrayList<>();
|
|
|
|
|
// 递归展开 BOM
|
|
|
|
@ -391,6 +397,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
// 返回汇总数据
|
|
|
|
|
return new ArrayList<>(summaryBomMap.values());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 递归展开 BOM
|
|
|
|
|
*
|
|
|
|
@ -418,6 +425,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
|
|
|
|
@ -432,6 +440,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
//如果存在多个bomCode取最新的一个
|
|
|
|
|
return mesBoms.stream().collect(Collectors.groupingBy(MesBom::getBomCode)).get(next.getBomCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesProductVersion getMesProductVersion(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
@ -476,8 +485,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
report(productionRecord, organizeCode, userName, oldMesWorkOrderList);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e) {
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
String msg = e.getMessage();
|
|
|
|
|
if (e instanceof ImppBusiException) {
|
|
|
|
|
msg = ((ImppBusiException) e).getErrorMsg();
|
|
|
|
@ -487,6 +495,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
productionRecordService.updateProductionRecord(organizeCode, userName, productionRecord.getId(), msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED, readOnly = false, rollbackFor = Exception.class)
|
|
|
|
|
public void doProductHasOrderReportByRecord(MesProductionRecord productionRecord, String organizeCode, String userName) {
|
|
|
|
@ -515,6 +524,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取最优的工单
|
|
|
|
|
*
|
|
|
|
|
* @param oldMesWorkOrderList
|
|
|
|
|
* @param mesWorkCenter
|
|
|
|
|
* @return
|
|
|
|
@ -671,6 +681,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取对应的工单
|
|
|
|
|
*
|
|
|
|
|
* @param productionRecord
|
|
|
|
|
* @param organizeCode
|
|
|
|
|
* @return
|
|
|
|
@ -799,6 +810,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* flag = 1 减少 1天, = 2 加一天
|
|
|
|
|
*
|
|
|
|
|
* @param lotNo
|
|
|
|
|
* @param flag
|
|
|
|
|
* @return
|
|
|
|
@ -834,6 +846,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
return mesProductVersion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesProductionRecord> getUnReportMesProduceSn(String organizeCode) {
|
|
|
|
|
|
|
|
|
@ -935,6 +948,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
|
|
|
|
|
return productionRecordRao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode, List<MesProductionRecord> mesProductionRecordList) {
|
|
|
|
|
DdlPackBean snPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
@ -1000,8 +1014,9 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
if (Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())) {
|
|
|
|
|
//保存数据
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
String nowTime = TimeTool.getNowTime(true);
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom));
|
|
|
|
|
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime));
|
|
|
|
|
}
|
|
|
|
|
mesProductOffLineRDao.saveAll(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
@ -1171,6 +1186,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
workOrderRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "workOrderStatus"},
|
|
|
|
|
new Object[]{"CLOSE_JOB", TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()}, ddlPackBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<MesWorkOrderToWms> saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List<MesBom> mesBomList) {
|
|
|
|
|
List<MesWorkOrderToWms> mesWorkOrderToWmsList = new ArrayList<>();
|
|
|
|
|
MesWorkOrderToWms mesWorkOrderToWms = null;
|
|
|
|
@ -1187,6 +1203,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
return mesWorkOrderToWmsList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesProductVersion checkMesProductVersion(MesWorkOrder item) {
|
|
|
|
|
DdlPackBean ddlPackBean;
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
@ -1204,12 +1221,13 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String getOrderNo(MesWorkOrder mesWorkOrder, MesPart mesPart, String userName) {
|
|
|
|
|
if (StringUtils.isEmpty(mesPart.getProductMatchRule())) MesPcnException.throwMesBusiException("请检查零件信息,零件[%s]信息未维护零件条码编码规则!", mesPart.getPartNo());
|
|
|
|
|
if (StringUtils.isEmpty(mesPart.getProductMatchRule()))
|
|
|
|
|
MesPcnException.throwMesBusiException("请检查零件信息,零件[%s]信息未维护零件条码编码规则!", mesPart.getPartNo());
|
|
|
|
|
return syncFuncService.syncSerialNo(new GenSerialNoModel(mesPart.getProductMatchRule()).prodLocation(mesWorkOrder.getWorkCenterCode()).partNo(mesPart.getPartNo()).putDataMap(MesPart.class.getSimpleName(), mesPart).organizeCode(mesPart.getOrganizeCode()), userName, mesWorkOrder.getOrganizeCode(), 1).getResultList().get(0).toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
|
|
|
|
|
String sn, MesBom mesBom) {
|
|
|
|
|
String sn, MesBom mesBom, String nowTime) {
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
|
|
|
|
@ -1231,7 +1249,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
|
|
|
|
|
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter());
|
|
|
|
|
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
|
|
newMesProductOffLine.setDescription(nowTime);
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
|
|
|
|
|
return newMesProductOffLine;
|
|
|
|
|
}
|
|
|
|
|