SPS物料拉动 生成拉动单JOB

tags/yfai-mes-ext-v2.3
gsz 8 months ago
parent 8f751f8330
commit 3938ed8b15

@ -0,0 +1,16 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@Api("拉动单")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPullingOrderInfo")
public class MesPullingOrderInfoController extends BaseMesController<MesPullingOrderInfo> {
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo;
import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderPartInfo;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@Api("拉动单")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPullingOrderPartInfo")
public class MesPullingOrderPartInfoController extends BaseMesController<MesPullingOrderPartInfo> {
}

@ -57,7 +57,7 @@ public class MesCreatePullOrderByPullGroupAndWorkOrderJob extends BaseMesSchedul
} }
String[] organizeCodeList = jobParam.split(","); String[] organizeCodeList = jobParam.split(",");
LOGGER.info("根据拉动组和生产工单产生拉动单JOB开始 -----start"); LOGGER.info("根据拉动组和生产工单产生拉动单JOB开始 -----start");
String userName = "job"; String userName = "CreatePullOrderJob";
for (String organizeCode : organizeCodeList) { for (String organizeCode : organizeCodeList) {
pullingOrderInfoService.doCreatePullOrderByPullGroupAndWorkOrder(organizeCode,userName); pullingOrderInfoService.doCreatePullOrderByPullGroupAndWorkOrder(organizeCode,userName);
} }

@ -3,8 +3,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartPullService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartPullService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderInfoService; import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderInfoService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.icloud.core.sdk.ICoreUtilCloud;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.WmsConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
@ -15,21 +20,23 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.util.CollectionUtils; import org.apache.shiro.util.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderInfo> implements IMesPullingOrderInfoService { public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderInfo> implements IMesPullingOrderInfoService {
public static final Logger LOGGER = LoggerFactory.getLogger(MesPullingOrderInfoService.class);
@Autowired
private MesPullingOrderInfoRepository mesPullingOrderInfoRepository;
@Autowired @Autowired
private MesPullingOrderPartInfoRepository mesPullingOrderPartInfoRepository; private MesPullingOrderPartInfoRepository mesPullingOrderPartInfoRepository;
@Autowired @Autowired
@ -37,13 +44,21 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
@Autowired @Autowired
private MesPartPullDetailRepository mesPartPullDetailRDao; private MesPartPullDetailRepository mesPartPullDetailRDao;
@Autowired @Autowired
private MesWorkOrderPartRepository workOrderPartRepository;
@Autowired
private MesWorkOrderRepository mesWorkOrderRepository; private MesWorkOrderRepository mesWorkOrderRepository;
@Autowired @Autowired
private ICoreUtilCloud sysOrderNoRuleCloud;
@Autowired
private MesWorkCenterRepository mesWorkCenterRepository; private MesWorkCenterRepository mesWorkCenterRepository;
protected void setPackQueryBean(MesPullingOrderInfo bean, DdlPackBean packBean) { protected void setPackQueryBean(MesPullingOrderInfo bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPullOrderType(), "pullOrderType", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPrintStatus(), "printStatus", packBean);
DdlPreparedPack.getNumEqualPack(bean.getPullOrderStatus(), "pullOrderStatus", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
} }
@ -77,19 +92,156 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
//1.拉动组集合+拉动组明细集合pullingGroupList+ pullingpartlist //1.拉动组集合+拉动组明细集合pullingGroupList+ pullingpartlist
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
List<MesPartPull> pulliGroupList = mesPartPullRDao.findByHqlWhere(ddlPackBean); List<MesPartPull> pulliGroupList = mesPartPullRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(pulliGroupList)){ if (CollectionUtils.isEmpty(pulliGroupList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->{}拉动组不存在", organizeCode);
return; return;
} }
Map<String, List<MesPartPull>> pullCodeMap = pulliGroupList.stream().collect(Collectors.groupingBy(MesPartPull::getPullCode));
Map<String, List<MesPartPull>> pullCodeCenterMap = pulliGroupList.stream().collect(Collectors.groupingBy(p -> p.getWorkCenterCode() + "=" + p.getPullCode()));
DdlPackBean ddlPackBeanDetail = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBeanDetail = DdlPackBean.getDdlPackBean(organizeCode);
List<MesPartPullDetail> pullDetailList = mesPartPullDetailRDao.findByHqlWhere(ddlPackBeanDetail); List<MesPartPullDetail> pullDetailList = mesPartPullDetailRDao.findByHqlWhere(ddlPackBeanDetail);
if (CollectionUtils.isEmpty(pullDetailList)){ if (CollectionUtils.isEmpty(pullDetailList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->{}拉动组明细不存在", organizeCode);
return; return;
} }
Map<String, List<MesPartPullDetail>> partPullDetailListMap = pullDetailList.stream().collect(Collectors.groupingBy(MesPartPullDetail::getPartNo));
//2.客户物料集合 [PART_NO] in 拉动组明细物料集合 //2.客户物料集合 [PART_NO] in 拉动组明细物料集合
//3.产线数据 //3.产线数据
DdlPackBean workPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean workPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(pulliGroupList.stream().map(MesPartPull::getWorkCenterCode).collect(Collectors.toList()), "workCenterCode", workPackBean); List<String> workCenterList = pulliGroupList.stream().map(MesPartPull::getWorkCenterCode).collect(Collectors.toList());
DdlPreparedPack.getInPackList(workCenterList, "workCenterCode", workPackBean);
List<MesWorkCenter> mesWorkCenterList = mesWorkCenterRepository.findByHqlWhere(workPackBean); List<MesWorkCenter> mesWorkCenterList = mesWorkCenterRepository.findByHqlWhere(workPackBean);
if (CollectionUtils.isEmpty(mesWorkCenterList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},拉动组对应产线信息不存在-->{}", organizeCode, workCenterList);
return;
}
Map<String, List<MesWorkCenter>> workCenterListMap = mesWorkCenterList.stream().collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
//4.生产工单 在加工状态 [PULLING_STATUS] =0 未创建
DdlPackBean packBeanWorkOrder = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workCenterList, "workCenterCode", packBeanWorkOrder);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(), "workOrderStatus", packBeanWorkOrder);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.WORK_ORDER_PULLING_STATUS.NOTCREATE.getValue(), "pullingStatus", packBeanWorkOrder);
List<MesWorkOrder> workOrderList = mesWorkOrderRepository.findByHqlWhere(packBeanWorkOrder);
if (CollectionUtils.isEmpty(workOrderList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线信息没有【未创建】【在加工】状态的工单-->{}", organizeCode, workCenterList);
return;
}
Map<String, List<MesWorkOrder>> workOrderListMap = workOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getWorkOrderNo));
DdlPackBean packBeanWorkOrderPart = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()), "workOrderNo", workPackBean);
List<MesWorkOrderPart> mesWorkOrderPartList = workOrderPartRepository.findByHqlWhere(packBeanWorkOrderPart);
if (CollectionUtils.isEmpty(mesWorkOrderPartList)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线对应的工单对应工单零件不存在-->{}", organizeCode, workCenterList);
return;
}
//5.取工单零件和拉动组交集,根据拉动主表对应的类型 生成相应的拉动单和拉动单明细
Map<String, List<MesWorkOrderPart>> workOrderNoListMap = mesWorkOrderPartList.stream().collect(Collectors.groupingBy(MesWorkOrderPart::getWorkOrderNo));
for (Map.Entry<String, List<MesWorkOrderPart>> stringListEntry : workOrderNoListMap.entrySet()) {
//需要生成拉动单的工单号 对应工单
List<MesWorkOrder> mesWorkOrders = workOrderListMap.get(stringListEntry.getKey());
MesWorkOrder mesWorkOrder = mesWorkOrders.get(0);
//工单对应的工单零件号
List<MesWorkOrderPart> workOrderParts = stringListEntry.getValue();
//待生成的拉动组明细
List<MesPartPullDetail> pullDetailListNew = new ArrayList<>();
for (MesWorkOrderPart workOrderPart : workOrderParts) {
if (!CollectionUtils.isEmpty(partPullDetailListMap.get(workOrderPart.getPartNo()))) {
pullDetailListNew.addAll(partPullDetailListMap.get(workOrderPart.getPartNo()));
}
}
if (CollectionUtils.isEmpty(pullDetailListNew)) {
LOGGER.info("根据拉动组和生产工单产生拉动单JOB-->工厂号{},产线-->{}对应的工单号-->{}没有需要生成拉动单零件",
organizeCode, mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getWorkOrderNo());
continue;
}
Map<String, List<MesWorkOrderPart>> workOrderPartListMap = workOrderParts.stream().collect(Collectors.groupingBy(MesWorkOrderPart::getPartNo));
//生成拉动单 如果是多个拉动组的话都要产生拉动单
Map<String, List<MesPartPullDetail>> pullCodeListMap = pullDetailListNew.stream().collect(Collectors.groupingBy(MesPartPullDetail::getPullCode));
for (Map.Entry<String, List<MesPartPullDetail>> stringListEntryDetail : pullCodeListMap.entrySet()) {
String pullCode = stringListEntryDetail.getKey();
List<MesPartPull> mesPartPulls = pullCodeMap.get(pullCode);
MesPartPull mesPartPull = mesPartPulls.get(0);//拉动组明细拉动单号对应拉动组
List<MesPartPullDetail> mesPartPullDetails = stringListEntryDetail.getValue();
//调用平台生成拉动单号流水 -yyyyMMdd00001
String orderNo = "";
if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.KITTING_PULL.getValue()) {
orderNo = "KITTING";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.JIS_PULL.getValue()) {
orderNo = "JIS";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.SPS_PULL.getValue()) {
orderNo = "SPS";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.BENZ_PULL.getValue()) {
orderNo = "BENZ";
} else if (mesPartPull.getPullOrderType() == MesExtEnumUtil.PART_PULL_ORDER_TYPE.PICK_PULL.getValue()) {
orderNo = "PICK";
}
BaseResultBean<LinkedHashMap> orderResutlBean = sysOrderNoRuleCloud.getOrderNo(MesCommonConstant.MES_PULL_ORDER_NO);
if (orderResutlBean != null && orderResutlBean.isSuccess()) {
orderNo += orderResutlBean.getResultObject().get(WmsConstWords.CORE_ORDER_NO).toString();
} else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.WMS.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("生成单号失败")
.setErrorSolution("【MES_PULL_ORDER_NO】请重新操作或查看服务")
.build();
}
MesPullingOrderInfo pullingOrder = new MesPullingOrderInfo();
pullingOrder.setPullingOrderNo(orderNo);
pullingOrder.setPullOrderType(mesPartPull.getPullOrderType());
pullingOrder.setPullGroupFid(mesPartPull.getId());
pullingOrder.setCustOrderNo(StringUtil.isEmpty(mesWorkOrder.getCustOrderNo()) ? "" : mesWorkOrder.getCustOrderNo());
pullingOrder.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
pullingOrder.setWorkOrderSeq(StringUtil.isEmpty(mesWorkOrder.getWorkOrderSeq()) ? "" : mesWorkOrder.getWorkOrderSeq());
pullingOrder.setIsPrint(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
pullingOrder.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
pullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.KITTING_PULL.getValue());
pullingOrder.setWorkCenterCode(mesPartPull.getWorkCenterCode());
pullingOrder.setPullCode(mesPartPull.getPullCode());
pullingOrder.setCustPartNo(mesWorkOrder.getCustPartNo());
pullingOrder.setProduceSeq(StringUtil.isEmpty(mesWorkOrder.getProduceSeq()) ? 0 : mesWorkOrder.getProduceSeq());
ConvertBean.serviceModelInitialize(pullingOrder, userName);
mesPullingOrderInfoRepository.insert(pullingOrder);
for (MesPartPullDetail partInfo : mesPartPullDetails) {
MesPullingOrderPartInfo pullingOrderPartInfo = new MesPullingOrderPartInfo();
pullingOrderPartInfo.setPullCode(partInfo.getPullCode());
pullingOrderPartInfo.setPullingOrderNo(pullingOrder.getPullingOrderNo());
pullingOrderPartInfo.setWorkOrderNo(pullingOrder.getWorkOrderNo());
pullingOrderPartInfo.setWorkOrderSeq(pullingOrder.getWorkOrderSeq());
pullingOrderPartInfo.setCustOrderNo(pullingOrder.getCustOrderNo());
pullingOrderPartInfo.setPartNo(partInfo.getPartNo());
pullingOrderPartInfo.setPartName(partInfo.getPartName());
MesWorkOrderPart mesWorkOrderPart = workOrderPartListMap.get(partInfo.getPartNo()).get(0);
pullingOrderPartInfo.setPullQty(mesWorkOrderPart.getItemQty());
pullingOrderPartInfo.setCustOrderNo(pullingOrder.getCustOrderNo());
pullingOrderPartInfo.setWorkOrderSeq(pullingOrder.getWorkOrderSeq());
pullingOrderPartInfo.setWaterSeq(pullingOrder.getProduceSeq());
pullingOrderPartInfo.setWorkCellCode(mesWorkOrderPart.getWorkCellCode());
pullingOrderPartInfo.setEquipment(partInfo.getEquipment());
pullingOrderPartInfo.setLocation(partInfo.getPullAddr());//todo
pullingOrderPartInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.UN_SENTED.getValue());///明细已送料为1未送料为0
pullingOrderPartInfo.setCustPartNo(pullingOrder.getCustPartNo());
ConvertBean.serviceModelInitialize(pullingOrderPartInfo, userName);
mesPullingOrderPartInfoRepository.insert(pullingOrderPartInfo);
}
}
//6.产生拉动单后更新工单拉动状态为已拉动
mesWorkOrder.setPullingStatus(MesExtEnumUtil.WORK_ORDER_PULLING_STATUS.SUBMIT.getValue());
mesWorkOrderRepository.update(mesWorkOrder);
//7.拉动组+加工单号+生成拉动单状态的对应关系中间表,每次新增都要记录
}
} }
@ -103,7 +255,7 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean); DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean);
seriesPackBean.setWhereAppend(seriesPackBean.getWhereAppend() + " order by modifyDatetime desc"); seriesPackBean.setWhereAppend(seriesPackBean.getWhereAppend() + " order by modifyDatetime desc");
MesPullingOrderInfo mesPullingOrder = baseRDao.getByProperty(seriesPackBean); MesPullingOrderInfo mesPullingOrder = baseRDao.getByProperty(seriesPackBean);
if (StringUtil.isEmpty(mesPullingOrder)) { if (StringUtil.isEmpty(mesPullingOrder)) {
resultMap.put("success", false); resultMap.put("success", false);
String message = "产线" + assemblyLine + "拉动组" + pullingGroupCode + "数据为空,请检查数据"; String message = "产线" + assemblyLine + "拉动组" + pullingGroupCode + "数据为空,请检查数据";
@ -116,10 +268,10 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
//List<MesPullingOrderInfo> byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean); //List<MesPullingOrderInfo> byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean);
resultMap.put("",mesPullingOrder); resultMap.put("", mesPullingOrder);
resultMap.put("success", true); resultMap.put("success", true);
String message ="更新SPS状态成功已发送SPS信息给设备! id:"+mesPullingOrder.getId()+ "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + ""; String message = "更新SPS状态成功已发送SPS信息给设备! id:" + mesPullingOrder.getId() + "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + "";
resultMap.put("message", message); resultMap.put("message", message);
//更新主表状态 源系统为25配料完成 现在-【已发送设备-30】 //更新主表状态 源系统为25配料完成 现在-【已发送设备-30】
mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue()); mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue());

@ -58,4 +58,5 @@ public class MesCommonConstant {
public static final String CLIENT_HANDLE_ID = "CLIENT_HANDLE_ID"; public static final String CLIENT_HANDLE_ID = "CLIENT_HANDLE_ID";
public static final String QC_ORDER_PRINT_TEMPLATE = "QC_ORDER_PRINT_TEMPLATE"; public static final String QC_ORDER_PRINT_TEMPLATE = "QC_ORDER_PRINT_TEMPLATE";
public static final String MES_PULL_ORDER_NO = "MES_PULL_ORDER_NO";
} }

Loading…
Cancel
Save