拍照工位 增加参数

uat-temp-wj-chongqingdaqu-prod-temp-pingxinggongwei
王杰 4 months ago
parent 946d82a776
commit cf2f4fa9af

@ -1,7 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesAssemblySaveSortStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;

@ -1,4 +1,4 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method;
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
@ -17,6 +17,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
@ -200,7 +201,7 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
if (parallelInfoMap.containsKey(MesPcnExtConstWords.WORK_CELL_CODE)) {
List<String> workCellCodeList = JSONObject.parseObject((String) parallelInfoMap.get(MesPcnExtConstWords.WORK_CELL_CODE), List.class);
List<String> workCellCodeList = (List<String>) parallelInfoMap.get(MesPcnExtConstWords.WORK_CELL_CODE);
if (workCellCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(workCellCodeList.get(0), MesPcnExtConstWords.WORK_CELL_CODE, packBean);
else DdlPreparedPack.getInPackList(workCellCodeList, MesPcnExtConstWords.WORK_CELL_CODE, packBean);
@ -226,4 +227,44 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
}
//删除平行工位的装配件
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//获取上下文信息
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
//配置错误 抛出异常
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
//存储生产过程上下文对象
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
//获取上下文产品加工规则数据信息集合
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!");
for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue;
List<MesProductionAssemblySortContext> productionAssemblySortContextList = prodRuleContext.getSortAssemblyDataContext();
int count = workOrderAssemblyRepository.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.CRAFT_CODE, MesPcnExtConstWords.PROCESS_SEQ, MesPcnExtConstWords.ASSEMBLY_STATUS},
new Object[]{reqBean.getOrganizeCode(), prodRuleContext.getWorkOrderNo(), productionProcessContext.getCraftCode(), productionAssemblySortContextList.get(0).getProcessSeq(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS,
MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.REMARK},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
MesPcnExtConstWords.EMPTY, CommonEnumUtil.IS_VAILD.INVAILD.getValue(), String.format("平行工位[%s]标记无效!", reqBean.getWorkCellCode())});
this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("加工单[%s]在工位[%s]标记平行工位的装配件条数[%s]",
prodRuleContext.getWorkOrderNo(), reqBean.getWorkCellCode(), count), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
}
return stepResult;
}
}

@ -3,7 +3,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.MesAssemblySaveSortStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
import cn.estsh.i3plus.mes.pcn.util.StationKvBeanUtil;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -13,6 +14,7 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -29,6 +31,9 @@ import java.util.stream.Collectors;
@Service("mesWorkOrderCheckSortStepService")
public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepService {
@Autowired
private IFsmCommonService fsmCommonService;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -175,6 +180,8 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
private StepResult checkWorkOrderValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesProductionProcessContext productionProcessContext,
List<MesEquipVariableCollectContext> equipVariableCollectContextList, List<MesProductionPartContext> productionPartContextList,
List<MesProductionPsInContext> productionPsInContextList, List<MesProductionPsOutContext> productionPsOutContextList) {
//是否支持扫描完成状态的工单[工位参数]
String cfg = getAllowScanCompleteOrderCfg(reqBean);
//从上下文中取出生产线与工位对象
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
@ -200,7 +207,9 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
return stepResult.isCompleted(false).msg((String) itemMap.get(MesPcnExtConstWords.MESSAGE));
MesWorkOrder workOrder = (MesWorkOrder) itemMap.get(MesWorkOrder.class.getSimpleName());
if (!MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrder.getWorkOrderStatus()))
if (StringUtils.isEmpty(cfg) && !MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrder.getWorkOrderStatus()))
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", workOrderNo, MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
if (!StringUtils.isEmpty(cfg) && !MesExtEnumUtil.ORDER_STATUS.checkNosortAllowStatus(workOrder.getWorkOrderStatus()))
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", workOrderNo, MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
if (!workOrder.getWorkCenterCode().equals(reqBean.getWorkCenterCode()))
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", workOrderNo, workOrder.getWorkCenterCode(), reqBean.getWorkCenterCode()));
@ -291,4 +300,10 @@ public class MesWorkOrderCheckSortStepService extends MesWorkOrderCheckStepServi
return true;
}
//是否支持扫描完成状态的工单[工位参数]
private String getAllowScanCompleteOrderCfg(StationRequestBean reqBean) {
String cfg = fsmCommonService.handleFsmWcpcMapDataForDoScan(reqBean).get(MesPcnExtConstWords.ALLOW_SCAN_COMPLETE_ORDER_CFG);
return (!StringUtils.isEmpty(cfg) && cfg.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? cfg : null;
}
}

@ -111,22 +111,23 @@ public class MesWorkOrderSaveSortStepService extends BaseStepService {
propertyMap.put(MesPcnExtConstWords.QC_STATUS, Integer.valueOf(productResult));
}
//末工位 或者 非加工中
if (isEndWorkCell || productionPartContext.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) != 0) {
if (!isEndWorkCell) {
propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
propertyMap.put(MesPcnExtConstWords.START_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.ONLINE_TIME, productionPartContext.getOnlineTime());
} else {
productionPartContext.setOfflineTime(TimeTool.getNowTime(true));
propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
propertyMap.put(MesPcnExtConstWords.START_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.ONLINE_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.END_TIME, productionPartContext.getOfflineTime());
propertyMap.put(MesPcnExtConstWords.OFFLINE_TIME, productionPartContext.getOfflineTime());
propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, new Double(1));
propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, new Double(0));
}
//加工中
if (!isEndWorkCell && productionPartContext.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) < 0) {
propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
propertyMap.put(MesPcnExtConstWords.START_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.ONLINE_TIME, productionPartContext.getOnlineTime());
}
//末工位
if (isEndWorkCell && productionPartContext.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) <= 0) {
productionPartContext.setOfflineTime(TimeTool.getNowTime(true));
propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
propertyMap.put(MesPcnExtConstWords.START_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.ONLINE_TIME, productionPartContext.getOnlineTime());
propertyMap.put(MesPcnExtConstWords.END_TIME, productionPartContext.getOfflineTime());
propertyMap.put(MesPcnExtConstWords.OFFLINE_TIME, productionPartContext.getOfflineTime());
propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, new Double(1));
propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, new Double(0));
}
//当存在修改字段的情况下进行修改工单信息

@ -500,6 +500,8 @@ public class MesPcnExtConstWords {
public static final String MANY_CELL_TRIGGER_JUMP_PROCESS_PWD = "MANY_CELL_TRIGGER_JUMP_PROCESS_PWD";
// 非排序顺序防错级别配置[工位参数] 1=物料 否则=生产线
public static final String CHECK_PRODUCT_SEQ_CFG = "CHECK_PRODUCT_SEQ_CFG";
// 排序线当前工位是否允许扫描完成状态的工单(用于末道拍照工位)
public static final String ALLOW_SCAN_COMPLETE_ORDER_CFG = "ALLOW_SCAN_COMPLETE_ORDER_CFG";
// 工位/工步 参数按钮事件
public static final String FUNCTION_CMD = "FUNCTION_CMD";

Loading…
Cancel
Save