合并解决冲突

uat-temp-wj-chongqingdaqu-dev-temp-logic-20250313-45623
王杰 2 months ago
commit b8431e3ec4

@ -9,6 +9,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -30,8 +31,11 @@ public interface IMesQueueOrderPushService {
void insertQueueOrderPush(String organizeCode, String userInfo, List<MesQueueOrderPushCellCfg> queueOrderPushCellCfgList,
MesProductionPsOutContext productionPsOutContext, MesProductionPartContext productionPartContext);
// @ApiOperation(value = "写入工位工单推送信息")
// void insertQueueOrderPush(String organizeCode, String userInfo, MesWorkOrder workOrder, String... pushSourceCodeArr);
@ApiOperation(value = "写入工位工单推送信息")
void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, Map<String, String> paramMap);
@ApiOperation(value = "根据ID查询生产队列工位推送信息")
MesQueueOrderPush getQueueOrderPush(String organizeCode, Long id);
@ApiOperation(value = "根据配置查询创建状态的生产队列工位推送信息")
List<MesQueueOrderPush> getQueueOrderPushList(String organizeCode, List<MesQueueOrderPushCellCfg> queueOrderPushCellCfgList);
@ -45,4 +49,7 @@ public interface IMesQueueOrderPushService {
@ApiOperation(value = "根据条件修改生产队列工位推送信息状态")
void saveQueueOrderPushStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer queueStatus, String targerWorkCellCode);
@ApiOperation(value = "根据条件修改生产队列工位推送信息")
void saveQueueOrderPushByCondition(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue);
}

@ -15,6 +15,7 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderPushCellCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesQueueOrderPushRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -74,18 +75,18 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService {
if (null == queueOrderPushCellCfg) continue;
MesQueueOrderPush queueOrderPush = new MesQueueOrderPush();
queueOrderPush.setPushSourceCode(queueOrderPushCellCfg.getPushSourceCode());
queueOrderPush.setProcessSeq(processSeq);
queueOrderPush.setWorkOrderNo(productionPsOutContext.getWorkOrderNo());
queueOrderPush.setProductSn(productionPsOutContext.getProductSn());
queueOrderPush.setCustSn(productionPsOutContext.getCustSn());
queueOrderPush.setPartNo(productionPsOutContext.getPartNo());
queueOrderPush.setPartName(productionPsOutContext.getPartName());
queueOrderPush.setProcessSeq(processSeq);
queueOrderPush.setQueueStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
queueOrderPush.setProductSeq(productionPartContext.getProductSeq());
queueOrderPush.setWorkOrderSeq(productionPartContext.getWorkOrderSeq());
queueOrderPush.setCarModelCode(productionPartContext.getCarModelCode());
queueOrderPush.setCustOrderNo(productionPartContext.getCustOrderNo());
queueOrderPush.setPartProdGroupCode(productionPartContext.getPartProdGroupCode());
queueOrderPush.setQueueStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
queueOrderPush.setAreaCode(queueOrderPushCellCfg.getAreaCode());
queueOrderPush.setWorkCenterCode(queueOrderPushCellCfg.getWorkCenterCode());
queueOrderPush.setSourceWorkCellCode(queueOrderPushCellCfg.getWorkCellCode());
@ -95,35 +96,39 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService {
}
}
// //写入工位工单推送信息
// @Override
// public void insertQueueOrderPush(String organizeCode, String userInfo, MesWorkOrder workOrder, String... pushSourceCodeArr) {
// if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(userInfo) || null == productionPsOutContext || CollectionUtils.isEmpty(queueOrderPushCellCfgList)) return;
// Integer processSeq = getQueueOrderPushMaxSeq(organizeCode, productionPsOutContext.getWorkOrderNo());
// for (MesQueueOrderPushCellCfg queueOrderPushCellCfg : queueOrderPushCellCfgList) {
// if (null == queueOrderPushCellCfg) continue;
// MesQueueOrderPush queueOrderPush = new MesQueueOrderPush();
// queueOrderPush.setPushSourceCode(queueOrderPushCellCfg.getPushSourceCode());
// queueOrderPush.setWorkOrderNo(productionPsOutContext.getWorkOrderNo());
// queueOrderPush.setProductSn(productionPsOutContext.getProductSn());
// queueOrderPush.setCustSn(productionPsOutContext.getCustSn());
// queueOrderPush.setPartNo(productionPsOutContext.getPartNo());
// queueOrderPush.setPartName(productionPsOutContext.getPartName());
// queueOrderPush.setProcessSeq(processSeq);
// queueOrderPush.setQueueStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
// queueOrderPush.setProductSeq(productionPartContext.getProductSeq());
// queueOrderPush.setWorkOrderSeq(productionPartContext.getWorkOrderSeq());
// queueOrderPush.setCarModelCode(productionPartContext.getCarModelCode());
// queueOrderPush.setCustOrderNo(productionPartContext.getCustOrderNo());
// queueOrderPush.setPartProdGroupCode(productionPartContext.getPartProdGroupCode());
// queueOrderPush.setAreaCode(queueOrderPushCellCfg.getAreaCode());
// queueOrderPush.setWorkCenterCode(queueOrderPushCellCfg.getWorkCenterCode());
// queueOrderPush.setSourceWorkCellCode(queueOrderPushCellCfg.getWorkCellCode());
// queueOrderPush.setOrganizeCode(organizeCode);
// ConvertBean.serviceModelInitialize(queueOrderPush, userInfo);
// queueOrderPushRepository.insert(queueOrderPush);
// }
// }
//写入工位工单推送信息
@Override
public void insertQueueOrderPush(StationRequestBean reqBean, MesWorkOrder workOrder, Map<String, String> paramMap) {
MesQueueOrderPush queueOrderPush = new MesQueueOrderPush();
queueOrderPush.setPushSourceCode(paramMap.get(MesPcnExtConstWords.PUSH_SOURCE_CODE));
queueOrderPush.setProcessSeq(Integer.valueOf(paramMap.get(MesPcnExtConstWords.PROCESS_SEQ)));
queueOrderPush.setWorkOrderNo(workOrder.getWorkOrderNo());
queueOrderPush.setProductSn(workOrder.getWorkOrderNo());
queueOrderPush.setCustSn(workOrder.getCustSn());
queueOrderPush.setPartNo(workOrder.getPartNo());
queueOrderPush.setPartName(workOrder.getPartName());
queueOrderPush.setProductSeq(workOrder.getProductSeq());
queueOrderPush.setWorkOrderSeq(workOrder.getWorkOrderSeq());
queueOrderPush.setCarModelCode(workOrder.getCarModelCode());
queueOrderPush.setCustOrderNo(workOrder.getCustOrderNo());
queueOrderPush.setPartProdGroupCode(workOrder.getPartProdGroupCode());
queueOrderPush.setQueueStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue());
queueOrderPush.setAreaCode(reqBean.getAreaCode());
queueOrderPush.setWorkCenterCode(reqBean.getWorkCenterCode());
queueOrderPush.setSourceWorkCellCode(reqBean.getWorkCellCode());
queueOrderPush.setOrganizeCode(reqBean.getOrganizeCode());
ConvertBean.serviceModelInitialize(queueOrderPush, reqBean.getUserInfo());
queueOrderPushRepository.insert(queueOrderPush);
}
///根据ID查询生产队列工位推送信息
@Override
public MesQueueOrderPush getQueueOrderPush(String organizeCode, Long id) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(id)) return null;
return queueOrderPushRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), id});
}
//根据配置查询创建状态的生产队列工位推送信息
@Override
@ -207,4 +212,11 @@ public class MesQueueOrderPushService implements IMesQueueOrderPushService {
packBean);
}
//根据条件修改生产队列工位推送信息
@Override
public void saveQueueOrderPushByCondition(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue) {
queueOrderPushRepository.updateByPropertiesNoSync(conditionName, conditionValue, propertyName, propertyValue);
}
}

@ -7,10 +7,15 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPush;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrderPushCellCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel;
@ -73,8 +78,10 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements
//新增
if (BUSI_TYPE.TWO.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) insertQueueOrderPush(reqBean, resultBean, buttonDynamicModel, resultMap, paramMap);
else if (BUSI_TYPE.THREE.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) queryQueueOrderPush(reqBean, resultMap, paramMap);
else queryQueueOrderPush(reqBean, resultMap, paramMap);
//修改【仅支持修改顺序】
else if (BUSI_TYPE.THREE.value.equals(paramMap.get(MesPcnExtConstWords.BUSI_TYPE))) updateQueueOrderPush(reqBean, resultBean, buttonDynamicModel, resultMap, paramMap);
//关闭
else deleteQueueOrderPush(reqBean, resultBean, buttonDynamicModel, resultMap, paramMap);
if (!resultMap.containsKey(MesPcnExtConstWords.MESSAGE)) {
resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT.getValue());
@ -142,10 +149,62 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]新增:根据扫描信息[%s]未匹配到有效的加工单!", buttonDynamicModel.getButtonName(), paramMap.get(MesPcnExtConstWords.WORK_ORDER_NO)));
}
//写入工位工单推送信息
queueOrderPushService.insertQueueOrderPush(reqBean, workOrder, paramMap);
return resultMap;
}
//修改【仅支持修改顺序】
private Map<String, Object> updateQueueOrderPush(StationRequestBean reqBean, StationResultBean resultBean,
ButtonDynamicModel buttonDynamicModel, Map<String, Object> resultMap, Map<String, String> paramMap) {
if (!paramMap.containsKey(MesPcnExtConstWords.ID)) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:缺少修改数据的ID参数!", buttonDynamicModel.getButtonName()));
}
if (!paramMap.containsKey(MesPcnExtConstWords.PROCESS_SEQ)) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:请输入工艺顺序号!", buttonDynamicModel.getButtonName()));
}
//根据ID查询生产队列工位推送信息
MesQueueOrderPush queueOrderPush = queueOrderPushService.getQueueOrderPush(reqBean.getOrganizeCode(), Long.valueOf(paramMap.get(MesPcnExtConstWords.ID)));
if (null == queueOrderPush) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:当前修改的队列ID[%s]对应的数据已不存在!", buttonDynamicModel.getButtonName(), paramMap.get(MesPcnExtConstWords.ID)));
}
if (queueOrderPush.getQueueStatus().compareTo(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) != 0) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:当前修改的队列信息状态为[%s],不支持修改操作!", buttonDynamicModel.getButtonName(), MesExtEnumUtil.QUEUE_ORDER_STATUS.valueOfDescription(queueOrderPush.getQueueStatus())));
}
//根据条件修改生产队列工位推送信息
queueOrderPushService.saveQueueOrderPushByCondition(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.ID},
new Object[]{reqBean.getOrganizeCode(), Long.valueOf(paramMap.get(MesPcnExtConstWords.ID))},
new String[]{MesPcnExtConstWords.PROCESS_SEQ, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME},
new Object[]{Integer.valueOf(paramMap.get(MesPcnExtConstWords.PROCESS_SEQ)), reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY});
return resultMap;
}
//关闭
private Map<String, Object> deleteQueueOrderPush(StationRequestBean reqBean, StationResultBean resultBean,
ButtonDynamicModel buttonDynamicModel, Map<String, Object> resultMap, Map<String, String> paramMap) {
if (!paramMap.containsKey(MesPcnExtConstWords.ID)) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]关闭:缺少关闭数据的ID参数!", buttonDynamicModel.getButtonName()));
}
//根据ID查询生产队列工位推送信息
MesQueueOrderPush queueOrderPush = queueOrderPushService.getQueueOrderPush(reqBean.getOrganizeCode(), Long.valueOf(paramMap.get(MesPcnExtConstWords.ID)));
if (null == queueOrderPush) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:当前关闭的队列ID[%s]对应的数据已不存在!", buttonDynamicModel.getButtonName(), paramMap.get(MesPcnExtConstWords.ID)));
}
if (queueOrderPush.getQueueStatus().compareTo(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()) != 0) {
return packResultMap(reqBean, resultBean, resultMap, String.format("[%s]修改:当前关闭的队列信息状态为[%s],不支持关闭操作!", buttonDynamicModel.getButtonName(), MesExtEnumUtil.QUEUE_ORDER_STATUS.valueOfDescription(queueOrderPush.getQueueStatus())));
}
//根据条件修改生产队列工位推送信息状态
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(Long.valueOf(paramMap.get(MesPcnExtConstWords.ID)), MesPcnExtConstWords.ID, packBean);
queueOrderPushService.saveQueueOrderPushStatusByDdlPackBean(packBean, reqBean.getUserInfo(), MesExtEnumUtil.QUEUE_ORDER_STATUS.CLOSED.getValue(), reqBean.getWorkCellCode());
return resultMap;
}
//返回提示信息
private Map<String, Object> packResultMap(StationRequestBean reqBean, StationResultBean resultBean, Map<String, Object> resultMap, String message) {
this.sendMessage(reqBean, resultBean, message, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
@ -162,7 +221,7 @@ public class MesFunctionQueueOrderPushService extends BaseSwsService implements
THREE("3", "修改"),
FOUR("4", "取消");
FOUR("4", "关闭");
private String value;

@ -99,6 +99,8 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
List<MesProductionPsOutContext> productionPsOutContextList = new ArrayList<>();
if (!checkWorkOrderValid(reqBean, resultBean, stepResult, productionProcessContext,
equipVariableCollectContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList).isCompleted()) {
//推单场景下是读取的工单, 验证工单无效需要验证是否是连续的重复信息
if (equipVariableCollectContextList.get(0).getMessageSource().compareTo(MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue()) == 0) resultBean.checkRepeat();
return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, stepResult.getMsg());
}

@ -172,10 +172,7 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService {
//保存上下文扫/读信息:加工单
productionDispatchContextStepService.dispatchScanWorkOrderNoContext(reqBean, equipVariableCollectContextList);
this.sendMessage(reqBean, new StationResultBean().writeDbLog(), String.format("获取到工位工单推送队列%s!", workOrderNoList.toString()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- QUEUE_ORDER_PUSH:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), JSONObject.toJSONString(curPushList));
this.sendMessage(reqBean, new StationResultBean().writeDbLog().checkRepeat(), String.format("获取到工位工单推送队列%s!", workOrderNoList.toString()), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
//加工单验证工步 【排序】
stepResult = ((IStepService) SpringContextsUtil.getBean("mesWorkOrderCheckSortStepService")).executeInState(reqBean);
@ -188,6 +185,9 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService {
//保存上下文推单信息
productionDispatchContextStepService.dispatchSortQueuePushContext(reqBean, curPushList);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- QUEUE_ORDER_PUSH:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), JSONObject.toJSONString(curPushList));
return stepResult;
} finally {
@ -229,15 +229,8 @@ public class MesWorkOrderQueueAcceptStepService extends BaseStepService {
try {
String lockTime = lockTimeMap.get(key);
if ((StringUtils.isEmpty(lockTime) || TimeTool.getSecoundsBetweenTime(1, lockTime, TimeTool.getNowTime(true)) >= MesPcnExtConstWords.TEN) && lock.isLocked()) {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- CHECK_TIME_OUT [{}] UNLOCK SUCCESS",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), pushSourceCode);
} else {
lockMap.remove(key);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- CHECK_TIME_OUT [{}] UNLOCK REMOVE",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), pushSourceCode);
}
if (lock.isHeldByCurrentThread()) lock.unlock();
else lockMap.remove(key);
}
} catch (Exception e) {
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- CHECK_TIME_OUT [{}] EXCEPTION: {}",

Loading…
Cancel
Save