diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderInfoService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderInfoService.java new file mode 100644 index 0000000..b4c0da4 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderInfoService.java @@ -0,0 +1,15 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo; + +import java.util.Map; + +/** + * @Description: + * @CreateDate 2024/04/16 + * @Author mingliang.li + */ +public interface IMesPullingOrderInfoService extends IBaseMesService { + + Map doSPSForEquipment( String assemblyLine, String pullingGroupCode,String organizeCode ); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderPartInfoService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderPartInfoService.java new file mode 100644 index 0000000..63cc6d7 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPullingOrderPartInfoService.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderPartInfo; + +/** + * @Description: + * @CreateDate 2024/04/16 + * @Author mingliang.li + */ +public interface IMesPullingOrderPartInfoService extends IBaseMesService { + + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/SpsInfo.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/SpsInfo.java new file mode 100644 index 0000000..9ba3468 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/model/SpsInfo.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.apiservice.model; + +import lombok.Data; + +/** + * @Description : SpsInfo + * @Author :gsz + * @Date 2024/8/30 9:16 + * @Modify + **/ +@Data +public class SpsInfo { + //产线 + private String assemblyLine; + //拉动单号 + private String pullingGroupCode; + //工厂号 + private String organizeCode ; + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderInfoService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderInfoService.java new file mode 100644 index 0000000..39c90b0 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderInfoService.java @@ -0,0 +1,100 @@ +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.IMesPullingOrderInfoService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +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.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesPartPull; +import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo; +import cn.estsh.i3plus.pojo.mes.repository.MesPullingOrderPartInfoRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class MesPullingOrderInfoService extends BaseMesService implements IMesPullingOrderInfoService { + + @Autowired + private MesPullingOrderPartInfoRepository mesPullingOrderPartInfoRepository; + + protected void setPackQueryBean(MesPullingOrderInfo bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean); + DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean); + DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); + } + + @Override + public void validateImport(List beanList) { + + for (MesPullingOrderInfo item : beanList) { + // 数据校验 + ValidatorBean.checkNotNull(item.getPullCode(), "拉动组代码不能为空"); + ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线代码不能为空"); + + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPullCode(), "pullCode", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getWorkOrderNo(), "workOrderNo", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", seriesPackBean); + boolean flg = baseRDao.isExitByHql(seriesPackBean); + if (flg) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工单【%s】拉动组代码【%s】已经存在,请检查数据", item.getWorkOrderNo(), item.getPullCode()) + .build(); + } + } + } + + @Override + public Map doSPSForEquipment(String assemblyLine, String pullingGroupCode, String organizeCode) { + Map resultMap = new HashMap(); + //查询拉动单状态为已扫描=20的 拉动单 + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", seriesPackBean); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue(), "pullOrderStatus", seriesPackBean); + DdlPreparedPack.getStringEqualPack(assemblyLine, "workCenterCode", seriesPackBean); + seriesPackBean.setWhereAppend(seriesPackBean.getWhereAppend() + " order by modifyDatetime desc"); + + MesPullingOrderInfo mesPullingOrder = baseRDao.getByProperty(seriesPackBean); + if (StringUtil.isEmpty(mesPullingOrder)) { + resultMap.put("success", false); + String message = "产线" + assemblyLine + "拉动组" + pullingGroupCode + "数据为空,请检查数据"; + resultMap.put("message", message); + return resultMap; + } + DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(pullingGroupCode, "pullCode", partPackBean); + partPackBean.setWhereAppend(partPackBean.getWhereAppend() + " order by modifyDatetime desc"); + + List byHqlWhere = mesPullingOrderPartInfoRepository.findByHqlWhere(partPackBean); + + resultMap.put("",mesPullingOrder); + resultMap.put("success", true); + + String message ="更新SPS状态成功,已发送SPS信息给设备! id:"+mesPullingOrder.getId()+ "Code:" + mesPullingOrder.getPullingOrderNo() + "产线" + assemblyLine + "拉动组" + pullingGroupCode + ""; + resultMap.put("message", message); + //更新主表状态 源系统为25配料完成 现在-【已发送设备-30】 + mesPullingOrder.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.SPS_PULL.getValue()); + ConvertBean.serviceModelUpdate(mesPullingOrder, "WS.SPS"); + baseRDao.update(mesPullingOrder); + + return resultMap; + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderPartInfoService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderPartInfoService.java new file mode 100644 index 0000000..e70ef29 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPullingOrderPartInfoService.java @@ -0,0 +1,55 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderInfoService; +import cn.estsh.i3plus.ext.mes.api.base.IMesPullingOrderPartInfoService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +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.MesPullingOrderInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderPartInfo; +import cn.estsh.i3plus.pojo.mes.repository.MesPullingOrderPartInfoRepository; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class MesPullingOrderPartInfoService extends BaseMesService implements IMesPullingOrderPartInfoService { + + + protected void setPackQueryBean(MesPullingOrderPartInfo bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean); + DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); + } + @Override + public void validateImport(List beanList) { + + for (MesPullingOrderPartInfo item : beanList) { + // 数据校验 + ValidatorBean.checkNotNull(item.getPullCode(), "拉动组代码不能为空"); + ValidatorBean.checkNotNull(item.getPartNo(), "物料代码不能为空"); + + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPullCode(), "pullCode", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getWorkOrderNo(), "workOrderNo", seriesPackBean); + DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", seriesPackBean); + boolean flg = baseRDao.isExitByHql(seriesPackBean); + if (flg) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工单【%s】拉动组代码【%s】物料号【%s】已经存在,请检查数据", + item.getWorkOrderNo(), item.getPullCode(), item.getPartNo()) + .build(); + } + } + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServerSPS.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServerSPS.java new file mode 100644 index 0000000..941c744 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/webservice/WebServiceServerSPS.java @@ -0,0 +1,34 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.webservice; + +import cn.estsh.i3plus.ext.mes.apiservice.model.SpsInfo; +import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesPullingOrderInfoService; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jws.WebMethod; +import javax.jws.WebParam; +import javax.jws.WebService; +import java.util.Map; + +/** + * @Description : WebServiceServerSPS + * @Author :gsz + * @Date 2024/8/30 9:18 + * @Modify + **/ + +//@WebService(targetNamespace = "http://yfaiesb/services/ServiceSyncMaximoInstrument") +@WebService(targetNamespace = "http://tempuri.org/services/SyncSPSForEquipmentService") +public class WebServiceServerSPS { + public static final Logger LOGGER = LoggerFactory.getLogger(WebServiceServerSPS.class); + + @WebMethod(action = "SyncSPSForEquipmentService", operationName = "SyncSPSForEquipmentService") + public Map syncSPSForEquipment(@WebParam(name = "info") SpsInfo spsInfo) { + LOGGER.info("syncSPSForEquipment主数据:{}", spsInfo); + + MesPullingOrderInfoService bean = (MesPullingOrderInfoService) SpringContextsUtil.getBean("mesPullingOrderInfoService"); + return bean.doSPSForEquipment(spsInfo.getAssemblyLine(),spsInfo.getPullingGroupCode(),spsInfo.getOrganizeCode()); + } + +}