forked from I3-YF/i3plus-mes-pcn-yfai
Merge branch 'dev-temp-workorder-report' into test
commit
e12c33f573
@ -0,0 +1,36 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.api.base;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesMediaFileCfg;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 媒体文件维护信息
|
||||||
|
* @Reference :
|
||||||
|
* @Author : wangjie
|
||||||
|
* @CreateDate 2024/6/13 15:18
|
||||||
|
* @Modify:
|
||||||
|
**/
|
||||||
|
public interface IMesMediaFileCfgService {
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID查询资源文件信息")
|
||||||
|
MesMediaFileCfg getMediaFileCfg(String organizeCode, Long id);
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID查询资源文件信息")
|
||||||
|
MesMediaFileCfg getMediaFileCfg(String organizeCode, String idStr);
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID查询资源文件信息")
|
||||||
|
String getMediaFileUrl(String organizeCode, Long id);
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID查询资源文件信息")
|
||||||
|
String getMediaFileUrl(String organizeCode, String idStr);
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID集合查询资源文件信息")
|
||||||
|
List<MesMediaFileCfg> getMediaFileCfgList(String organizeCode, List<Long> idList);
|
||||||
|
|
||||||
|
@ApiOperation(value = "根据ID集合查询资源文件信息")
|
||||||
|
Map<Long, String> getMediaFileCfgMap(String organizeCode, List<Long> idList);
|
||||||
|
|
||||||
|
}
|
@ -1,33 +0,0 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.pcn.api.busi;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description : 发送加工参数的抽象类
|
|
||||||
* @Author : zxw
|
|
||||||
**/
|
|
||||||
public interface IWriteVariableService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 写值
|
|
||||||
* @param value
|
|
||||||
* @param equipmentVariable
|
|
||||||
* @param kepwareFlag
|
|
||||||
*/
|
|
||||||
MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index,Integer maxRetryTimes);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转成需要的值
|
|
||||||
* @param reqBean
|
|
||||||
* @param value
|
|
||||||
* @param foreignKey
|
|
||||||
* @param index
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index);
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,72 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesMediaFileCfgService;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||||
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesMediaFileCfg;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.repository.MesMediaFileCfgRepository;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class MesMediaFileCfgService implements IMesMediaFileCfgService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MesMediaFileCfgRepository mediaFileCfgRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MesMediaFileCfg getMediaFileCfg(String organizeCode, Long id) {
|
||||||
|
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(id)) return null;
|
||||||
|
MesMediaFileCfg mediaFileCfg = mediaFileCfgRepository.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});
|
||||||
|
return (null == mediaFileCfg || StringUtils.isEmpty(mediaFileCfg.getFileUrl())) ? null : mediaFileCfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MesMediaFileCfg getMediaFileCfg(String organizeCode, String idStr) {
|
||||||
|
Long id = null;
|
||||||
|
try { id = Long.valueOf(idStr);} catch (NumberFormatException e) {}
|
||||||
|
return getMediaFileCfg(organizeCode, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMediaFileUrl(String organizeCode, Long id) {
|
||||||
|
MesMediaFileCfg mediaFileCfg = getMediaFileCfg(organizeCode, id);
|
||||||
|
return (null == mediaFileCfg || StringUtils.isEmpty(mediaFileCfg.getFileUrl())) ? null : mediaFileCfg.getFileUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMediaFileUrl(String organizeCode, String idStr) {
|
||||||
|
MesMediaFileCfg mediaFileCfg = getMediaFileCfg(organizeCode, idStr);
|
||||||
|
return (null == mediaFileCfg || StringUtils.isEmpty(mediaFileCfg.getFileUrl())) ? null : mediaFileCfg.getFileUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MesMediaFileCfg> getMediaFileCfgList(String organizeCode, List<Long> idList) {
|
||||||
|
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(idList)) return null;
|
||||||
|
if (idList.size() != 1) idList = idList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
||||||
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
||||||
|
if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean);
|
||||||
|
else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean);
|
||||||
|
return mediaFileCfgRepository.findByHqlWhere(packBean);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Long, String> getMediaFileCfgMap(String organizeCode, List<Long> idList) {
|
||||||
|
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(idList)) return null;
|
||||||
|
List<MesMediaFileCfg> mediaFileCfgList = getMediaFileCfgList(organizeCode, idList);
|
||||||
|
if (CollectionUtils.isEmpty(mediaFileCfgList)) return null;
|
||||||
|
return mediaFileCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getFileUrl()))).collect(Collectors.toMap(MesMediaFileCfg::getId, MesMediaFileCfg::getFileUrl));
|
||||||
|
}
|
||||||
|
}
|
@ -1,162 +0,0 @@
|
|||||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob.BaseMesScheduleJob;
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdShiftContext;
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsInContext;
|
|
||||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
|
|
||||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.model.MesEquipVariableRwResult;
|
|
||||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
||||||
import cn.hutool.core.date.DatePattern;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description : 发送加工参数的抽象类
|
|
||||||
* @Author : zxw
|
|
||||||
**/
|
|
||||||
@Service
|
|
||||||
public class WriteVariableService implements IWriteVariableService {
|
|
||||||
|
|
||||||
public static final Logger LOGGER = LoggerFactory.getLogger(WriteVariableService.class);
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IMesEquipVariableRwExtService equipVariableRwExtService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private IMesProductionCustomContextStepService productionCustomContextStepService;
|
|
||||||
/**
|
|
||||||
* 写值
|
|
||||||
* @param value
|
|
||||||
* @param equipmentVariable
|
|
||||||
* @param kepwareFlag
|
|
||||||
*/
|
|
||||||
public MesEquipVariableRwResult writeVariable(StationRequestBean reqBean, String value, MesEquipmentVariable equipmentVariable, String kepwareFlag, Integer foreignKey, Integer index, Integer maxTimes) {
|
|
||||||
// 需要不同的策略不同的转换方式
|
|
||||||
String newValue = transferValue(reqBean, value, foreignKey, index);
|
|
||||||
if (StringUtils.isEmpty(newValue)) {
|
|
||||||
LOGGER.info("发送的值为空,不予发送");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
MesEquipVariableRwResult mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag);
|
|
||||||
if (!mesEquipVariableRwResult.getIsSuccessed() && mesEquipVariableRwResult.getIsNoCfg()) {
|
|
||||||
for (int i = 0;i < maxTimes; i++) {
|
|
||||||
|
|
||||||
mesEquipVariableRwResult = equipVariableRwExtService.writeVariable(newValue, equipmentVariable, kepwareFlag);
|
|
||||||
if (mesEquipVariableRwResult.getIsSuccessed()){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mesEquipVariableRwResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String transferValue(StationRequestBean reqBean, String value, Integer foreignKey, Integer index) {
|
|
||||||
List<MesProductionPartContext> productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean);
|
|
||||||
List<MesProductionPsOutContext> productionPsOutContexts = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
|
|
||||||
List<MesProductionPsInContext> productionPsInContexts = mesProductionDispatchContextStepService.getProductionPsInContext(reqBean);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String productResult = productionDispatchContextStepService.getProductResultContext(reqBean);
|
|
||||||
MesProdShiftContext mesProdShiftKvBean = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MesProductionPartContext mesProductionPartContext = null;
|
|
||||||
MesProductionPsOutContext productionPsOutSn = null;
|
|
||||||
|
|
||||||
if (!Objects.isNull(foreignKey)) {
|
|
||||||
if (!CollectionUtils.isEmpty(productionPartContextList)) {
|
|
||||||
mesProductionPartContext = productionPartContextList.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
|
|
||||||
}
|
|
||||||
if (!CollectionUtils.isEmpty(productionPsOutContexts)) {
|
|
||||||
productionPsOutSn = productionPsOutContexts.stream().filter(context -> Objects.equals(context.getForeignKey(), foreignKey)).findFirst().orElse(null);
|
|
||||||
}
|
|
||||||
String newValue = "";
|
|
||||||
if (StringUtils.isEmpty(value)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (mesProductionPartContext == null) {
|
|
||||||
mesProductionPartContext = new MesProductionPartContext();
|
|
||||||
}
|
|
||||||
if (productionPsOutSn == null) {
|
|
||||||
productionPsOutSn = new MesProductionPsOutContext();
|
|
||||||
}
|
|
||||||
switch (value.toUpperCase()) {
|
|
||||||
case "%RESULT%" : newValue = mesProductionPartContext.getPartNo(); break;
|
|
||||||
case "%PARAM%": newValue = mesProductionPartContext.getWorkOrderNo(); break;
|
|
||||||
case "%ORDERCODE%": newValue = mesProductionPartContext.getWorkOrderNo(); break;
|
|
||||||
case "%CUSTPARTNO%": newValue = mesProductionPartContext.getCustPartNo(); break;
|
|
||||||
case "%EMPLOYEENO%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名
|
|
||||||
case "%BARCODE%": newValue = productionPsOutSn.getProductSn(); break;// 条码
|
|
||||||
case "%BARCODE2%": newValue = productionPsOutContexts.get(1).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE3%": newValue = productionPsOutContexts.get(2).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE4%": newValue = productionPsOutContexts.get(3).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE5%": newValue = productionPsOutContexts.get(4).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE6%": newValue = productionPsOutContexts.get(5).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE7%": newValue = productionPsOutContexts.get(6).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE8%": newValue = productionPsOutContexts.get(7).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE9%": newValue = productionPsOutContexts.get(8).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE10%": newValue = productionPsOutContexts.get(9).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE11%": newValue = productionPsOutContexts.get(10).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE12%": newValue = productionPsOutContexts.get(11).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE13%": newValue = productionPsOutContexts.get(12).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE14%": newValue = productionPsOutContexts.get(13).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE15%": newValue = productionPsOutContexts.get(14).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE16%": newValue = productionPsOutContexts.get(15).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE17%": newValue = productionPsOutContexts.get(16).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE18%": newValue = productionPsOutContexts.get(17).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE19%": newValue = productionPsOutContexts.get(18).getProductSn(); break;///条码
|
|
||||||
case "%BARCODE20%": newValue = productionPsOutContexts.get(19).getProductSn(); break;///条码
|
|
||||||
case "%CREATEDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///加工记录的创建时间
|
|
||||||
case "%CREATEUSER%": newValue = reqBean.getUserInfo(); break;///当前操作员工号 用户名
|
|
||||||
case "%SHIFT%": newValue = mesProdShiftKvBean.getShiftGroup(); break;///当前操作员工号 用户名
|
|
||||||
//case "%STATUS%": newValue = productionPsInContexts.get(0).get() +"" ; break;//进料条码状态
|
|
||||||
// case "%CUSTORDERCOD%": newValue = mesProductionPartContext.getCustOrderNo(); break;///客户订单号
|
|
||||||
case "%PARTNO%": newValue = mesProductionPartContext.getPartNo(); break;///工单对应的零件号
|
|
||||||
//case "%VINCODE%": newValue = mesProductionPartContext.getv(); break;///工单对应的vincode
|
|
||||||
case "%SEQUENCE%": newValue = reqBean.getUserInfo(); break;///工单顺序号 不是生产顺序号
|
|
||||||
case "%CUSTBARCODE%": newValue = productionPsOutSn.getCustSn(); break;///客户条码
|
|
||||||
case "%GETDATE%": newValue = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); break;///客户条码
|
|
||||||
|
|
||||||
default:
|
|
||||||
newValue = value;
|
|
||||||
}
|
|
||||||
return newValue;
|
|
||||||
} else {
|
|
||||||
if (index != null && foreignKey == null) {
|
|
||||||
mesProductionPartContext = productionPartContextList.get(index);
|
|
||||||
if (mesProductionPartContext == null || Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesProductionPartContext.getIsFinishCode())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,71 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionAssemblyNosortContext;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
|
||||||
|
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.util.MesExtEnumUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 保存激光装配件工步
|
||||||
|
* @Author : wangjie
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Service("mesBarcodeCountShareAssemblySnSaveStepService")
|
||||||
|
public class MesBarcodeCountShareAssemblySnSaveStepService extends MesBarcodeCountShareInfoSaveStepService {
|
||||||
|
|
||||||
|
@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<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
|
||||||
|
|
||||||
|
//获取上下文产品加工规则数据信息集合
|
||||||
|
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!");
|
||||||
|
|
||||||
|
prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getAssemblyDataJson()))).forEach(o -> {
|
||||||
|
List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = o.getNosortAssemblyDataContext();
|
||||||
|
if (!CollectionUtils.isEmpty(productionAssemblyNosortContextList)) {
|
||||||
|
MesProductionPsOutContext productionPsOutContext = productionPsOutContextList.stream().filter(i -> (null != i && i.getForeignKey().compareTo(o.getForeignKey()) == 0)).findFirst().get();
|
||||||
|
for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) {
|
||||||
|
if (StringUtils.isEmpty(productionAssemblyNosortContext.getAssemblySn())) continue;
|
||||||
|
saveBarcodeCountShareInfo(reqBean, productionProcessContext, new MesBarcodeCountShareInfo(
|
||||||
|
MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_20.getValue(),
|
||||||
|
productionAssemblyNosortContext.getAssemblySn(), productionPsOutContext.getPartNo(), productionPsOutContext.getPartName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存激光装配件信息成功!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||||
|
|
||||||
|
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.pojo.context.MesProductionProcessContext;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||||
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||||
|
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService;
|
||||||
|
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
|
||||||
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesProdRouteOptParam;
|
||||||
|
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.MesBarcodeCountShareInfoRepository;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||||
|
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 保存零件条码统计OEE共享信息工步
|
||||||
|
* @Author : wangjie
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Service("mesBarcodeCountShareInfoSaveStepService")
|
||||||
|
public class MesBarcodeCountShareInfoSaveStepService extends BaseStepService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MesBarcodeCountShareInfoRepository barcodeCountShareInfoRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StepResult execute(StationRequestBean reqBean) {
|
||||||
|
|
||||||
|
StationResultBean resultBean = new StationResultBean();
|
||||||
|
|
||||||
|
StepResult stepResult = StepResult.getSuccessComplete();
|
||||||
|
|
||||||
|
//获取工步参数
|
||||||
|
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
|
||||||
|
|
||||||
|
String stepParam = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO)) ? stepParamMap.get().get(MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO).getParamValue() : null;
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(stepParam) && StringUtils.isEmpty(MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.valueOfDescription(stepParam))) {
|
||||||
|
return stepDynamicsCompleteAndSendMsgReturn(reqBean,
|
||||||
|
resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, true,
|
||||||
|
MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("未配置有效的工步参数[{}]跳过执行保存零件条码统计共享信息工步!", MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO));
|
||||||
|
}
|
||||||
|
|
||||||
|
Boolean isAllExec = false;
|
||||||
|
if (MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_30.getValue().equals(stepParam)) isAllExec = true;
|
||||||
|
|
||||||
|
//零件条码统计工步
|
||||||
|
if (isAllExec || MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_10.getValue().equals(stepParam)) {
|
||||||
|
((IStepService) SpringContextsUtil.getBean("mesBarcodeCountShareProductSnSaveStepService")).executeInState(reqBean);
|
||||||
|
}
|
||||||
|
//保存激光装配件工步
|
||||||
|
if (isAllExec || MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_20.getValue().equals(stepParam)) {
|
||||||
|
((IStepService) SpringContextsUtil.getBean("mesBarcodeCountShareAssemblySnSaveStepService")).executeInState(reqBean);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- {}={}[{}]",
|
||||||
|
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
|
||||||
|
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), MesPcnExtConstWords.BARCODE_COUNT_SHARE_INFO, stepParam, MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.valueOfDescription(stepParam));
|
||||||
|
|
||||||
|
return stepResult;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveBarcodeCountShareInfo(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesBarcodeCountShareInfo barcodeCountShareInfo) {
|
||||||
|
barcodeCountShareInfo.setAreaCode(reqBean.getAreaCode());
|
||||||
|
barcodeCountShareInfo.setWorkCenterCode(reqBean.getWorkCenterCode());
|
||||||
|
barcodeCountShareInfo.setWorkCellCode(reqBean.getWorkCellCode());
|
||||||
|
barcodeCountShareInfo.setProcessCode(reqBean.getProcessCode());
|
||||||
|
barcodeCountShareInfo.setCraftCode(productionProcessContext.getCraftCode());
|
||||||
|
barcodeCountShareInfo.setEquipmentCode(productionProcessContext.getCurCellEquip().getEquipmentCode());
|
||||||
|
barcodeCountShareInfo.setOrganizeCode(reqBean.getOrganizeCode());
|
||||||
|
barcodeCountShareInfo.setFid(UUID.randomUUID().toString());
|
||||||
|
ConvertBean.serviceModelInitialize(barcodeCountShareInfo, reqBean.getUserInfo());
|
||||||
|
barcodeCountShareInfo.setProductEndTime(barcodeCountShareInfo.getModifyDatetime());
|
||||||
|
barcodeCountShareInfoRepository.insert(barcodeCountShareInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||||
|
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
|
||||||
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
|
||||||
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||||
|
import cn.estsh.i3plus.pojo.mes.bean.MesBarcodeCountShareInfo;
|
||||||
|
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.util.MesExtEnumUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description : 保存零件条码统计工步
|
||||||
|
* @Author : wangjie
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Service("mesBarcodeCountShareProductSnSaveStepService")
|
||||||
|
public class MesBarcodeCountShareProductSnSaveStepService extends MesBarcodeCountShareInfoSaveStepService {
|
||||||
|
|
||||||
|
@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<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
|
||||||
|
|
||||||
|
productionPsOutContextList.stream().filter(o -> null != o).forEach(o ->
|
||||||
|
saveBarcodeCountShareInfo(reqBean, productionProcessContext, new MesBarcodeCountShareInfo(
|
||||||
|
MesExtEnumUtil.BARCODE_COUNT_SHARE_INFO.BARCODE_COUNT_SHARE_INFO_10.getValue(), o.getProductSn(), o.getPartNo(), o.getPartName()))
|
||||||
|
);
|
||||||
|
|
||||||
|
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, "保存零件条码统计信息成功!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue