diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationLogService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationLogService.java new file mode 100644 index 0000000..7504ecd --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationLogService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.pojo.mes.bean.MesEmergencyLocation; +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 应急件库位管理记录 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/17 16:22 + * @Modify: + **/ +public interface IMesEmergencyLocationLogService { + + @ApiOperation("新增应急件库位管理记录") + void insertMesEmergencyLocationLog(MesEmergencyLocation location); +} diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationService.java new file mode 100644 index 0000000..9828c77 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesEmergencyLocationService.java @@ -0,0 +1,23 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEmergencyLocationModel; +import cn.estsh.i3plus.pojo.mes.bean.MesEmergencyLocation; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 应急件库位管理 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/17 16:22 + * @Modify: + **/ +public interface IMesEmergencyLocationService { + + @ApiOperation("查询应急件库位管理") + List findMesEmergencyLocationList(String organizeCode, String workCenterCode); + + @ApiOperation("操作") + void doAction(MesEmergencyLocationModel mesEmergencyLocationModel); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEmergencyLocationController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEmergencyLocationController.java new file mode 100644 index 0000000..8875bf3 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesEmergencyLocationController.java @@ -0,0 +1,61 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEmergencyLocationService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEmergencyLocationModel; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @Description :应急件库位管理 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/17 16:16 + * @Modify: + **/ +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/emergencyLocation") +public class MesEmergencyLocationController { + + @Autowired + private IMesEmergencyLocationService mesEmergencyLocationService; + + @GetMapping("/query") + @ApiOperation(value = "查询绑定信息") + public ResultBean findMesRecyclablePackageBindingDetail(String organizeCode, String workCenterCode) { + + try { + ValidatorBean.checkNotNull(workCenterCode, "产线代码不能为空"); + ValidatorBean.checkNotNull(organizeCode, "工厂代码不能为空"); + return ResultBean.success("查询成功").setResultList(mesEmergencyLocationService.findMesEmergencyLocationList(organizeCode, workCenterCode)); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + + @PostMapping("/doAction") + @ApiOperation(value = "操作") + public ResultBean doAction(@RequestBody MesEmergencyLocationModel model) { + + try { + ValidatorBean.checkNotNull(model.getWorkCenterCode(), "产线代码不能为空"); + ValidatorBean.checkNotNull(model.getOrganizeCode(), "工厂代码不能为空"); + ValidatorBean.checkNotNull(model.getType(), "操作类型不能为空"); + ValidatorBean.checkNotNull(model.getUserName(), "操作人不能为空"); + mesEmergencyLocationService.doAction(model); + return ResultBean.success("操作成功"); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationLogServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationLogServiceImpl.java new file mode 100644 index 0000000..a4f0ae2 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationLogServiceImpl.java @@ -0,0 +1,38 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEmergencyLocationLogService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.mes.bean.MesEmergencyLocation; +import cn.estsh.i3plus.pojo.mes.bean.MesEmergencyLocationLog; +import cn.estsh.i3plus.pojo.mes.repository.MesEmergencyLocationLogRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +/** + * @Description : 应急件库位管理记录 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/17 16:23 + * @Modify: + **/ +@Slf4j +@Service +public class MesEmergencyLocationLogServiceImpl implements IMesEmergencyLocationLogService { + + @Autowired + private MesEmergencyLocationLogRepository mesEmergencyLocationLogRepository; + + @Override + public void insertMesEmergencyLocationLog(MesEmergencyLocation location) { + MesEmergencyLocationLog log = new MesEmergencyLocationLog(); + BeanUtils.copyProperties(location,log, MesPcnExtConstWords.BASE_BEAN_FIELDS); + log.setFid(UUID.randomUUID().toString()); + ConvertBean.serviceModelInitialize(log,location.getModifyUser()); + mesEmergencyLocationLogRepository.insert(log); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java new file mode 100644 index 0000000..943bdab --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java @@ -0,0 +1,233 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEmergencyLocationLogService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesEmergencyLocationService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.StringUtilExt; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesEmergencyLocationModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +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.MesEmergencyLocation; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.repository.MesEmergencyLocationRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +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 org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Objects; + +/** + * @Description : 应急件库位管理 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/17 16:23 + * @Modify: + **/ +@Slf4j +@Service +public class MesEmergencyLocationServiceImpl implements IMesEmergencyLocationService { + + @Autowired + private MesEmergencyLocationRepository mesEmergencyLocationRepository; + + @Autowired + private IMesEmergencyLocationLogService mesEmergencyLocationLogService; + + @Autowired + private IMesWorkOrderExtService mesWorkOrderExtService; + + @Override + public List findMesEmergencyLocationList(String organizeCode, String workCenterCode) { + if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(workCenterCode)) { + return null; + } + return findMesEmergencyLocationList(organizeCode, CommonEnumUtil.VALID, workCenterCode); + } + + @Override + public void doAction(MesEmergencyLocationModel model) { + switch (model.getType()) { + //入库 + case 10: doStockInOnline(model);break; + //出库 + case 20: doStockOutOnline(model);break; + //GP12 + case 30: doGpInspectionOnline(model);break; + //设置 + case 40: doEmergencySinkLocationSettingOnline(model);break; + default: MesPcnException.throwMesBusiException("扫描类型【%s】不存在", model.getType());break; + } + } + + private List findMesEmergencyLocationList(String organizeCode, Integer status, String workCenterCode) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getNumEqualPack(status, MesPcnExtConstWords.STATUS, packBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{MesPcnExtConstWords.LOCATION_NUMBER}, packBean); + return mesEmergencyLocationRepository.findByHqlWhere(packBean); + } + + private void doStockInOnline(MesEmergencyLocationModel model) { + ValidatorBean.checkNotNull(model.getLocation(), "库位不能为空"); + ValidatorBean.checkNotNull(model.getWorkOrderNo(), "加工单号不能为空"); + //校验库位信息 + MesEmergencyLocation location = getMesEmergencyLocation(model.getOrganizeCode(), model.getWorkCenterCode(), model.getLocation(), null); + checkLocation(model, location); + //校验加工单 + MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getWorkOrderNo()); + checkWorkOrderNo(model, workOrder); + //数据绑定 + location.setWorkOrderNo(workOrder.getWorkOrderNo()); + location.setOfflineDate(workOrder.getOfflineTime()); + location.setCustPartNo(workOrder.getCustPartNo()); + location.setPartName(workOrder.getPartName()); + location.setInDate(TimeTool.getNowTime(true)); + location.setVehicleNo(workOrder.getCarModelCode()); + location.setStockType(MesExtEnumUtil.EMERGENCY_LOCATION_STOCK_TYPE.EMERGENCY_LOCATION_STOCK_TYPE_10.getValue()); + location.setSystemSyncStatus(CommonEnumUtil.FALSE); + ConvertBean.serviceModelUpdate(location, model.getUserName()); + //记录日志 + mesEmergencyLocationLogService.insertMesEmergencyLocationLog(location); + + mesEmergencyLocationRepository.update(location); + } + + private void doStockOutOnline(MesEmergencyLocationModel model) { + ValidatorBean.checkNotNull(model.getWorkOrderNo(), "加工单号不能为空"); + //校验加工单信息 + MesEmergencyLocation locationWorkOrder = getMesEmergencyLocation(model); + locationWorkOrder.setOutDate(TimeTool.getNowTime(true)); + locationWorkOrder.setStockType(MesExtEnumUtil.EMERGENCY_LOCATION_STOCK_TYPE.EMERGENCY_LOCATION_STOCK_TYPE_20.getValue()); + ConvertBean.serviceModelUpdate(locationWorkOrder, model.getUserName()); + //记录日志 + mesEmergencyLocationLogService.insertMesEmergencyLocationLog(locationWorkOrder); + //数据解绑 + locationWorkOrder.setWorkOrderNo(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setOfflineDate(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setCustPartNo(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setPartName(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setInDate(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setVehicleNo(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setSystemSyncStatus(CommonEnumUtil.FALSE); + mesEmergencyLocationRepository.update(locationWorkOrder); + } + + private void doGpInspectionOnline(MesEmergencyLocationModel model) { + ValidatorBean.checkNotNull(model.getWorkOrderNo(), "加工单号不能为空"); + //校验加工单信息 + MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getWorkOrderNo()); + if (Objects.isNull(workOrder)) { + MesPcnException.throwMesBusiException("加工单【%s】信息不存在", model.getWorkOrderNo()); + } + MesEmergencyLocation locationWorkOrder = getMesEmergencyLocation(model); + if (MesExtEnumUtil.EMERGENCY_LOCATION_STOCK_TYPE.EMERGENCY_LOCATION_STOCK_TYPE_30.getValue() == locationWorkOrder.getStockType()) { + locationWorkOrder.setStockType(MesExtEnumUtil.EMERGENCY_LOCATION_STOCK_TYPE.EMERGENCY_LOCATION_STOCK_TYPE_40.getValue()); + } else { + locationWorkOrder.setStockType(MesExtEnumUtil.EMERGENCY_LOCATION_STOCK_TYPE.EMERGENCY_LOCATION_STOCK_TYPE_30.getValue()); + } + ConvertBean.serviceModelUpdate(locationWorkOrder, model.getUserName()); + //记录日志 + mesEmergencyLocationLogService.insertMesEmergencyLocationLog(locationWorkOrder); + //应急件库位管理更新 + mesEmergencyLocationRepository.update(locationWorkOrder); + } + + + private void doEmergencySinkLocationSettingOnline(MesEmergencyLocationModel model) { + ValidatorBean.checkNotNull(model.getLocationNumber(), "库位数不能为空"); + ValidatorBean.checkNotNull(model.getRemindDay(), "提醒天数不能为空"); + List locationList = findMesEmergencyLocationList(model.getOrganizeCode(), null, model.getWorkCenterCode()); + int lastNumber = 0; + if (!CollectionUtils.isEmpty(locationList)) { + lastNumber = locationList.get(locationList.size() - MesPcnExtConstWords.ONE).getLocationNumber(); + if (locationList.size() > model.getLocationNumber()) { + //禁用多于库位 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(model.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.VALID, MesPcnExtConstWords.STATUS, packBean); + DdlPreparedPack.getNumberBiggerPack(model.getLocationNumber(), MesPcnExtConstWords.LOCATION_NUMBER, packBean); + mesEmergencyLocationRepository.updateByProperties(new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.STATUS}, + new Object[]{model.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.FALSE}, packBean); + //解除小于库位 + packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(model.getWorkCenterCode(), MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, MesPcnExtConstWords.STATUS, packBean); + DdlPreparedPack.getNumberSmallerEqualPack(model.getLocationNumber(), MesPcnExtConstWords.LOCATION_NUMBER, packBean); + mesEmergencyLocationRepository.updateByProperties(new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.STATUS}, + new Object[]{model.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.VALID}, packBean); + } + } + //新增加 + while (model.getLocationNumber() > lastNumber) { + MesEmergencyLocation location = new MesEmergencyLocation(); + location.setOrganizeCode(model.getOrganizeCode()); + location.setWorkCenterCode(model.getWorkCenterCode()); + location.setStatus(CommonEnumUtil.VALID); + location.setLocationNumber(lastNumber++); + location.setLocation(model.getWorkCenterCode() + "kw" + StringUtilExt.stringFormat(String.valueOf(lastNumber), 4, true, "0")); + ConvertBean.serviceModelInitialize(location, model.getUserName()); + mesEmergencyLocationRepository.insert(location); + } + } + + private MesEmergencyLocation getMesEmergencyLocation(MesEmergencyLocationModel model) { + MesEmergencyLocation locationWorkOrder = getMesEmergencyLocation(model.getOrganizeCode(), null, null, model.getWorkOrderNo()); + if (Objects.isNull(locationWorkOrder)) { + MesPcnException.throwMesBusiException("加工单【%s】应急件库位管理信息不存在", model.getWorkOrderNo()); + } + if (!model.getWorkCenterCode().equals(locationWorkOrder.getWorkCenterCode())) { + MesPcnException.throwMesBusiException("加工单【%s】所在产线【%s】与当前产线【%s】不匹配", model.getWorkOrderNo(), locationWorkOrder.getWorkCenterCode(), model.getWorkCenterCode()); + } + return locationWorkOrder; + } + + private void checkLocation(MesEmergencyLocationModel model, MesEmergencyLocation location) { + //校验库位是否存在 + if (Objects.isNull(location)) { + MesPcnException.throwMesBusiException("产线【%s】库位【%s】信息不存在", model.getWorkCenterCode(), model.getLocation()); + } + if (!StringUtil.isEmpty(location.getWorkOrderNo())) { + MesPcnException.throwMesBusiException("产线【%s】库位【%s】已存在加工单【%s】", model.getWorkCenterCode(), model.getLocation(), location.getWorkOrderNo()); + } + } + + + private void checkWorkOrderNo(MesEmergencyLocationModel model, MesWorkOrder workOrder) { + //校验工单 + if (Objects.isNull(workOrder)) { + MesPcnException.throwMesBusiException("加工单【%s】信息不存在", model.getWorkOrderNo()); + } + //已完成状态才能入库 + if (Objects.isNull(workOrder.getWorkOrderStatus()) || MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() != workOrder.getWorkOrderStatus()) { + MesPcnException.throwMesBusiException("加工单【%s】状态为【%s】不为【已完成】", model.getWorkOrderNo(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())); + } + if (!model.getWorkCenterCode().equals(workOrder.getWorkCenterCode())) { + MesPcnException.throwMesBusiException("加工单【%s】所在产线【%s】与当前产线【%s】不匹配", model.getWorkOrderNo(), workOrder.getWorkCenterCode(), model.getWorkCenterCode()); + } + //校验是否已经入库 + MesEmergencyLocation locationWorkOrder = getMesEmergencyLocation(model.getOrganizeCode(), null, null, model.getWorkOrderNo()); + if (!Objects.isNull(locationWorkOrder)) { + MesPcnException.throwMesBusiException("加工单号已经入库,产线【%s】库位【%s】", locationWorkOrder.getWorkCenterCode(), locationWorkOrder.getLocation()); + } + } + + + public MesEmergencyLocation getMesEmergencyLocation(String organizeCode, String workCenterCode, String location, String workOrderNo) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, MesPcnExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getStringEqualPack(location, MesPcnExtConstWords.LOCATION, packBean); + DdlPreparedPack.getStringEqualPack(workOrderNo, MesPcnExtConstWords.WORK_ORDER_NO, packBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.VALID, MesPcnExtConstWords.STATUS, packBean); + return mesEmergencyLocationRepository.getByProperty(packBean); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodStepService.java index 31ed0f8..086625f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodStepService.java @@ -1,5 +1,6 @@ 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.api.busi.IMesStationService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesCellEquipContext; @@ -38,6 +39,9 @@ public class MesProcessMethodStepService extends BaseStepService { @Autowired private IMesProductionProcessContextStepService productionProcessContextStepService; + @Autowired + private IMesProductionDispatchContextStepService productionDispatchContextStepService; + @Override public StepResult execute(StationRequestBean reqBean) { StationResultBean resultBean = new StationResultBean(); @@ -53,14 +57,17 @@ public class MesProcessMethodStepService extends BaseStepService { //当前工位使用的设备 MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); + //删除就绪信号 + productionDispatchContextStepService.removeReadySignalContext(reqBean); + //根据设备代码获取点位信息 MesStation station = mesStationService.getMesStationByEquipmentCode(reqBean.getOrganizeCode(), cellEquipContext.getEquipmentCode()); if (Objects.isNull(station) || Objects.isNull(station.getProcessMethod())){ - return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("设备[%s]站点信息未维护", cellEquipContext.getEquipmentCode())); + return stepNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(),stepResult, String.format("设备[%s]站点信息未维护", cellEquipContext.getEquipmentCode())); } - return ((IStepService) SpringContextsUtil.getBean(MesExtEnumUtil.STATION_PROCESS_METHOD.valueOfStrategyClass(station.getProcessMethod()))).executeInState(reqBean); + return ((IStepService) SpringContextsUtil.getBean(MesExtEnumUtil.STATION_PROCESS_METHOD.valueOfStrategyClass(station.getProcessMethod()))).executeInState(reqBean); } } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesEmergencyLocationModel.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesEmergencyLocationModel.java new file mode 100644 index 0000000..3f5f817 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/model/MesEmergencyLocationModel.java @@ -0,0 +1,31 @@ +package cn.estsh.i3plus.ext.mes.pcn.pojo.model; + +import io.swagger.annotations.ApiParam; +import lombok.Data; + +@Data +public class MesEmergencyLocationModel { + @ApiParam(name = "工厂代码") + private String organizeCode; + + @ApiParam(name = "产线代码") + private String workCenterCode; + + @ApiParam(name = "库位") + private String location; + + @ApiParam(name = "加工单号") + private String workOrderNo; + + @ApiParam(name = "库位数") + private Integer locationNumber; + + @ApiParam(name = "提醒天数") + private Integer remindDay; + + @ApiParam("操作类型") + private Integer type; + + @ApiParam("操作人") + private String userName; +} diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index b7584d7..3ced6bc 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -225,6 +225,10 @@ public class MesPcnExtConstWords { public static final String ONLINE_TIME = "onlineTime"; //下线时间 public static final String OFFLINE_TIME = "offlineTime"; + //库位 + public static final String LOCATION = "location"; + //库位序号 + public static final String LOCATION_NUMBER = "locationNumber"; //BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties) public static final String[] BASE_BEAN_FIELDS = {ID, IS_DELETED, IS_VALID, CREATE_DATE_TIME, CREATE_USER, MODIFY_DATE_TIME, MODIFY_USER, DESCRIPTION, REMARK, SYSTEM_SYNC_DATE_TIME, SYSTEM_SYNC_STATUS};