dev
王杰 1 year ago
parent a41b491cca
commit 80df589c72

@ -19,7 +19,7 @@ public class SxCellTaktMonitorHandler {
private volatile String plcCode2Data;
private String org;
protected String org;
private ExecutorService executorService;
@ -49,6 +49,8 @@ public class SxCellTaktMonitorHandler {
private void execMonitor() {
while (isOpen) {
if (StringUtils.isEmpty(plcCode2Flag) || StringUtils.isEmpty(plcCode2Data)) continue;

@ -10,7 +10,11 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SxThirdPartyPlcCollectReadPlcStepService implements ISxThirdPartyPlcCollectDataStepService {
public SxThirdPartyPlcCollectReadPlcStepService() {}
protected String organizeCode;
public SxThirdPartyPlcCollectReadPlcStepService(String organizeCode) {
this.organizeCode = organizeCode;
}
@Override
public StepResult exec(Object ... objs) {

@ -0,0 +1,39 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.collect;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.ISxThirdPartyPlcCollectDataStepService;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import lombok.extern.slf4j.Slf4j;
import java.util.LinkedList;
import java.util.List;
/**
* PLC------PLC
*/
@Slf4j
public class SxThirdPartyPlcCollectStepFilterChain implements ISxThirdPartyPlcCollectDataStepService {
protected String organizeCode;
private List<ISxThirdPartyPlcCollectDataStepService> stepServiceList = new LinkedList<>();
public SxThirdPartyPlcCollectStepFilterChain(String organizeCode) {
this.organizeCode = organizeCode;
}
public SxThirdPartyPlcCollectStepFilterChain add(ISxThirdPartyPlcCollectDataStepService stepService) {
stepServiceList.add(stepService);
return this;
}
@Override
public StepResult exec(Object ... objs) {
return null;
}
}

@ -144,14 +144,13 @@ public class JxSnFinalInspectionModuleService extends BaseModuleService {
}
String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null);
selectWorkOrderNo = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1];
if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result;
reqBean.setForceJumpProcess(true);
if (StringUtils.isEmpty(selectWorkOrderNo)) {
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
break;
case MesPcnExtConstWords.CMD_BUSI_FLAG :

@ -144,14 +144,13 @@ public class JxSnLineOffModuleService extends BaseModuleService {
}
String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null);
selectWorkOrderNo = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1];
if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result;
reqBean.setForceJumpProcess(true);
if (StringUtils.isEmpty(selectWorkOrderNo)) {
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
break;
case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS :

@ -144,14 +144,13 @@ public class JxSnLineOnModuleService extends BaseModuleService {
}
String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null);
selectWorkOrderNo = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1];
if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result;
reqBean.setForceJumpProcess(true);
if (StringUtils.isEmpty(selectWorkOrderNo)) {
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
break;
case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS :

@ -144,14 +144,13 @@ public class JxSnProcessingModuleService extends BaseModuleService {
}
String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null);
selectWorkOrderNo = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1];
if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result;
reqBean.setForceJumpProcess(true);
if (StringUtils.isEmpty(selectWorkOrderNo)) {
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试!", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
break;
case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS :

@ -54,9 +54,12 @@ public class JxInitOrderStepService extends BaseStepService {
String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 1, null);
String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 1, null);
String curExecWorkOrderNoReal = curExecWorkOrderNo;
String selectWorkOrderNoReal = (StringUtils.isEmpty(selectWorkOrderNo) || !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON)) ? selectWorkOrderNo : selectWorkOrderNo.split(MesPcnExtConstWords.COLON)[1];
if (StringUtils.isEmpty(selectWorkOrderNoReal) && StringUtils.isEmpty(curExecWorkOrderNoReal)) execSendGuideAndThrowEx(reqBean, resultBean, "请选择启动状态的生产工单!");
if (!StringUtils.isEmpty(selectWorkOrderNoReal)) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 3, null);
if (!StringUtils.isEmpty(selectWorkOrderNoReal) && !StringUtils.isEmpty(curExecWorkOrderNoReal)) {
if (selectWorkOrderNoReal.equals(curExecWorkOrderNoReal)) selectWorkOrderNoReal = null;
@ -65,21 +68,37 @@ public class JxInitOrderStepService extends BaseStepService {
MesWorkOrderExt workOrderExt = null;
if (!StringUtils.isEmpty(selectWorkOrderNoReal)) {
outerLoop:
if (stepResult.isCompleted() && !StringUtils.isEmpty(selectWorkOrderNoReal)) {
workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), selectWorkOrderNoReal);
String suffix = String.format("%s[%s]", !selectWorkOrderNo.contains(MesPcnExtConstWords.COLON) ?
"选择的工单号" : (selectWorkOrderNo.contains(MesPcnExtConstWords.TMP_ORDER) ? "临时工单号" : "回退工单号"), selectWorkOrderNoReal);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, suffix);
doCacheCurExecWorkOrderNo(reqBean, resultBean, stepResult, selectWorkOrderNoReal, suffix);
curExecWorkOrderNoReal = checkSelectOrderIsValidCenter(reqBean, stepResult, workOrderExt, curExecWorkOrderNo, suffix);
if (!stepResult.isCompleted()) break outerLoop;
curExecWorkOrderNoReal = checkWorkOrderExtIsValid(reqBean, stepResult, workOrderExt, curExecWorkOrderNo, suffix);
if (!stepResult.isCompleted()) break outerLoop;
curExecWorkOrderNoReal = doCacheCurExecWorkOrderNo(reqBean, resultBean, stepResult, selectWorkOrderNoReal, curExecWorkOrderNo, suffix);
if (!stepResult.isCompleted()) break outerLoop;
if (selectWorkOrderNo.contains(MesPcnExtConstWords.TMP_ORDER) && !StringUtils.isEmpty(curExecWorkOrderNo))
doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 2, new StringJoiner(MesPcnExtConstWords.COLON).add(MesPcnExtConstWords.BACK_ORDER).add(curExecWorkOrderNo).toString());
}
if (!stepResult.isCompleted()) reqBean.setScanInfo(null);
if (!StringUtils.isEmpty(curExecWorkOrderNoReal)) {
workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrderNoReal);
checkWorkOrderExtIsValid(reqBean, resultBean, stepResult, workOrderExt, String.format("此前操作的工单号[%s]", curExecWorkOrderNoReal));
checkWorkOrderExtIsValid(reqBean, stepResult, workOrderExt, curExecWorkOrderNo,
String.format("%s此前操作的工单号[%s]", stepResult.isCompleted() ? MesPcnExtConstWords.EMPTY : stepResult.isCompleted(true).getMsg(), curExecWorkOrderNoReal));
}
if (!StringUtils.isEmpty(stepResult.getMsg()))
this.sendMessage(reqBean, resultBean, !stepResult.isCompleted() ? stepResult.getMsg() : String.format("%s,可在此前操作的工单号[%s]下继续操作!", stepResult.getMsg(), curExecWorkOrderNoReal),
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, !stepResult.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
if (null == workOrderExt || !stepResult.isCompleted()) execSendGuideAndThrowEx(reqBean, resultBean, "请选择启动状态的生产工单!");
cacheOrderModel(reqBean, workOrderExt);
@ -91,27 +110,37 @@ public class JxInitOrderStepService extends BaseStepService {
return stepResult;
}
private void doCacheCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String selectWorkOrderNo, String suffix) {
Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 2, selectWorkOrderNo);
if (!flag) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s初始化失败!", suffix));
else {
execStateModule(reqBean, resultBean);
if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean, String.format("%s初始化成功!", suffix), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
}
}
private String checkSelectOrderIsValidCenter(StationRequestBean reqBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String curExecWorkOrderNo, String suffix) {
if (null == workOrderExt) stepResult.isCompleted(false).msg(String.format("%s对应的工单信息不存在!", suffix));
if (stepResult.isCompleted() && !reqBean.getWorkCenterCode().equals(workOrderExt.getWorkCenterCode()))
stepResult.isCompleted(false).msg(String.format("%s关联生产线[%s]与当前生产线[%s]不一致,不支持在此工位操作!", suffix, workOrderExt.getWorkCenterCode(), reqBean.getWorkCenterCode()));
private void checkWorkOrderExtIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String suffix) {
return !stepResult.isCompleted() ? curExecWorkOrderNo : null;
}
if (null == workOrderExt) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s对应的工单信息不存在!", suffix));
private String checkWorkOrderExtIsValid(StationRequestBean reqBean, StepResult stepResult, MesWorkOrderExt workOrderExt, String curExecWorkOrderNo, String suffix) {
if (stepResult.isCompleted() && MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() != workOrderExt.getWorkOrderStatus())
execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s状态[%s],不支持在此工位操作!", suffix, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus())));
if (MesPcnExtEnumUtil.WORK_ORDER_STATUS.OPEN.getValue() != workOrderExt.getWorkOrderStatus())
stepResult.isCompleted(false).msg(String.format("%s状态[%s],不支持在此工位操作!", suffix, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus())));
if (stepResult.isCompleted() && MathOperation.compareTo(workOrderExt.getQty(), new Double(0)) <= 0)
execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("%s计划数量为[0],不支持在此工位操作!", suffix));
stepResult.isCompleted(false).msg(String.format("%s计划数量为[0],不支持在此工位操作!", suffix));
return !stepResult.isCompleted() ? curExecWorkOrderNo : null;
}
private String doCacheCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String selectWorkOrderNo, String curExecWorkOrderNo, String suffix) {
Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 2, selectWorkOrderNo);
if (!flag) stepResult.isCompleted(false).msg(String.format("%s初始化失败!", suffix));
else execStateModule(reqBean, resultBean);
if (!stepResult.isCompleted()) return;
if (stepResult.isCompleted()) this.sendMessage(reqBean, resultBean, String.format("%s初始化成功!", suffix), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
return !stepResult.isCompleted() ? curExecWorkOrderNo : null;
}
private void cacheOrderModel(StationRequestBean reqBean, MesWorkOrderExt workOrderExt) {

@ -70,7 +70,8 @@ public class JxSnFinalInspectionAspectCheckStepService extends BaseStepService {
if (!item.getIsComplete()) reqBean.getDataMap().put(MesPcnExtConstWords.PLC_PASS_VALUE, new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(MesPcnExtConstWords.PLC_PASS_VALUE).add(busiFlag).toString());
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, item.getIsComplete(), String.format("%s[%s]!", suffix, item.getDescription()));
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult,
item.getIsComplete(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("%s[%s]!", suffix, item.getDescription()));
}

@ -66,8 +66,6 @@ public class JxSnFinalInspectionCheckMcOrPsStepService extends BaseStepService {
checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel);
reqBean.setScanInfo(null);
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnFinalInspectionCheckMcOrPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return stepResult;

@ -58,13 +58,7 @@ public class JxSnFinalInspectionDataReviewStepService extends BaseStepService {
StepResult stepResult = StepResult.getSuccessComplete();
if (checkBusiFlagIsValid(reqBean, stepResult, busiFlag, suffix)) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, stepResult.isCompleted(), stepResult.getMsg());
if (!StringUtils.isEmpty(busiFlag) && busiFlag.equals(BUSI_FLAG.ASPECT_CHECK.getValue()))
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, String.format("%s已跳过数据复核进入外观检查!", suffix));
if (!StringUtils.isEmpty(busiFlag) && busiFlag.equals(BUSI_FLAG.REPAIR.getValue()))
return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult.nextTriggerEvent(MesPcnExtConstWords.STATE_REPAIR), String.format("%s已跳过数据复核!即将进行返修状态标记!", suffix));
if (checkBusiFlagIsValid(reqBean, stepResult, busiFlag, suffix)) return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, stepResult.getMsg());
MesProductData productData = getProductData(reqBean, suffixSn);
@ -81,9 +75,9 @@ public class JxSnFinalInspectionDataReviewStepService extends BaseStepService {
private Boolean checkBusiFlagIsValid(StationRequestBean reqBean, StepResult stepResult, String busiFlag, String suffix) {
if (StringUtils.isEmpty(busiFlag)) return false;
if (busiFlag.equals(BUSI_FLAG.ASPECT_CHECK.getValue())) stepResult.msg(String.format("%s已跳过数据复核进入外观检查!", suffix));
else if (busiFlag.equals(BUSI_FLAG.REPAIR.getValue())) stepResult.isCompleted(false).nextTriggerEvent(MesPcnExtConstWords.STATE_REPAIR).msg(String.format("%s已跳过数据复核!即将进行返修状态标记!", suffix));
else if (busiFlag.equals(BUSI_FLAG.REPAIR.getValue())) stepResult.nextTriggerEvent(MesPcnExtConstWords.STATE_REPAIR).msg(String.format("%s已跳过数据复核!即将进行返修状态标记!", suffix));
else return false;
if (!stepResult.isCompleted()) reqBean.getDataMap().put(MesPcnExtConstWords.PLC_PASS_VALUE, new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(MesPcnExtConstWords.PLC_PASS_VALUE).add(busiFlag).toString());
if (!StringUtils.isEmpty(stepResult.getNextTriggerEvent())) reqBean.getDataMap().put(MesPcnExtConstWords.PLC_PASS_VALUE, new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(MesPcnExtConstWords.PLC_PASS_VALUE).add(busiFlag).toString());
return true;
}

@ -66,8 +66,6 @@ public class JxSnLineOffCheckPsStepService extends BaseStepService {
checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel);
reqBean.setScanInfo(null);
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnLineOffCheckPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return stepResult;

@ -67,8 +67,6 @@ public class JxSnProcessingCheckMcOrPsStepService extends BaseStepService {
checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel);
reqBean.setScanInfo(null);
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCheckMcOrPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return stepResult;

Loading…
Cancel
Save