diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/UnBindProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/UnBindProcessor.java new file mode 100644 index 000000000..adfb755bf --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/UnBindProcessor.java @@ -0,0 +1,30 @@ +package org.springblade.job.processor.produce; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.produce.feign.IDisTaskingClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 自动解绑 + * + * @author litao + */ +@Component +@Data +@Slf4j +public class UnBindProcessor implements BasicProcessor { + + @Resource + private IDisTaskingClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("自动解绑开始"); + return new ProcessResult(client.unBindEc()); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java index 96db40e29..ccc10cca3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java @@ -19,6 +19,7 @@ public interface IDisTaskingClient { String SYNC_DIS_TASKING = API_PREFIX + "/syncDisTasking"; String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder"; + String UN_BIND_EC = API_PREFIX + "/unBindEc"; /** @@ -39,4 +40,7 @@ public interface IDisTaskingClient { */ @GetMapping(RB_TRANSFER_ORDER) boolean rbTransferOrder(); + + @GetMapping(UN_BIND_EC) + boolean unBindEc(); } diff --git a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java index 4a149cfda..d38f6ba20 100644 --- a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java +++ b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java @@ -109,6 +109,10 @@ public enum DictEnum { * 加工周期 */ PROCESS_CYCLE("process_cycle"), + /** + * 解绑配置 + */ + UNBIND_CONFIG("unbind_config"), ; final String name; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java index c3932faea..1e5838a27 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java @@ -39,4 +39,9 @@ public class DisTaskingClient implements IDisTaskingClient { public boolean rbTransferOrder() { return handoverRecordService.rbTransferOrder(); } + + @Override + public boolean unBindEc() { + return pdaSaveServiceImpl.unBindEc(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index f121d8e72..0d458baed 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -82,4 +82,9 @@ public interface IMacToolUseService extends BaseService { void setSjDataCapture(MesQcProduceRunEntity qcProduceRun, Boolean aTrue); List listMacToolUse(Long id, boolean b); + + /** + * 查询所有未解绑的数据 + */ + List listByNoFinished(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java index def4f0032..5688fe7a6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java @@ -43,6 +43,11 @@ public interface IPdaSaveService extends BaseService { * @param unBingVo 解绑数据 */ void unBind(UnBingVo unBingVo); + /** + *

方法名: unBindEc

+ *

方法描述: 自动解绑

+ */ + boolean unBindEc(); List getUnbindByCard(String cardNo); /** diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index 67f98dac4..31ed781d6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -346,6 +346,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl listByNoFinished() { + return this.list(Wrappers.lambdaQuery(MacToolUse.class).eq(MacToolUse::getFinished, 0).orderByAsc(MacToolUse::getMtnCode)); + } + private Double setMaxHeat(Map eUMap, JSONObject jsonObject, Double heat) { if (eUMap.get(heat1) != null) { if (jsonObject.getString(eUMap.get(heat1).getString("attrCode")) != null && Double.valueOf(jsonObject.getString(eUMap.get(heat1).getString("attrCode"))) > heat) { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index fe0e24c34..680aecbb9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -17,6 +17,10 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.basic.pojo.entity.CenterTeam; +import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.service.ICenterTeamService; +import org.springblade.desk.basic.service.IWorkCenterService; import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.device.pojo.entity.EquipmentEntity; @@ -52,8 +56,11 @@ import org.springblade.desk.quality.service.IInspectionTaskService; import org.springblade.desk.quality.service.IReviewSheetService; import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; +import org.springblade.system.cache.DictCache; import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.Dict; import org.springblade.system.pojo.entity.User; +import org.springblade.system.pojo.enums.DictEnum; import org.springblade.wms.pojo.entity.StClassRequest; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -106,6 +113,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl mtuList = macToolUseService.listByNoFinished(); + if (mtuList == null || mtuList.isEmpty()) { + return true; + } + + // 查询所有的配置项 + List configs = DictCache.getList(DictEnum.UNBIND_CONFIG.getName()); + if (configs == null || configs.isEmpty()) { + return true; + } + Map ucMap = new LinkedHashMap<>(); + for (Dict uc : configs) { + ucMap.put(uc.getDictKey(), Integer.valueOf(uc.getDictValue())); + } + List list = new ArrayList<>(); + Date nowDate = new Date(); + Double cycle = 0d; + double num = 0d; + + for (MacToolUse mtu : mtuList) { + WorkPlan workPlan = this.getById(mtu.getWpId()); + if (workPlan == null) { + continue; + } + CenterTeam centerTeam = centerTeamService.getByTsId(workPlan.getMakeTeam()); + if (centerTeam == null) { + continue; + } + WorkCenter workCenter = workCenterService.getById(centerTeam.getWcId()); + if (workCenter == null) { + continue; + } + if (ucMap.get(workCenter.getWcName()) != null) { + cycle = Double.valueOf(ucMap.get(workCenter.getWcName())); + } else { + cycle = 0d; + } + if (cycle <= 0) { + continue; + } + long difference = (nowDate.getTime() - mtu.getCreateTime().getTime()); + num = (double) (difference / (60 * 60 * 1000)); + //计算出时间差,以小时结尾 + if (cycle <= num) { + list.add(mtu); + } + } + if (list.isEmpty()) { + return true; + } + //更改状态 + RackSetEntity brs; + FeiBaSetEntity bfs; + EquipmentEntity dec; + for (MacToolUse mtu : list) { + mtu.setFinished(1); + mtu.setUnBuildTime(new Date()); + macToolUseService.updateById(mtu); + //挂具解绑 + if (mtu.getBsRackSet() != null) { + brs = rackSetService.getById(mtu.getBsRackSet()); + brs.setBindQty((short) 0); + brs.setStatus(RackSetEntity.RS_STATUS_FREE); + rackSetService.updateById(brs); + } + //飞靶解绑 + if (mtu.getBsFeiBaSet() != null) { + bfs = feiBaSetService.getById(mtu.getBsFeiBaSet()); + bfs.setBindQty((short) 0); + bfs.setStatus(FeiBaSetEntity.FS_STATUS_FREE); + feiBaSetService.updateById(bfs); + } + //设备解绑 + if (mtu.getEquipmentCard() != null) { + dec = equipmentService.getById(mtu.getEquipmentCard()); + dec.setBindQty(dec.getBindQty().subtract(BigDecimal.valueOf(1))); + if (dec.getBindQty().compareTo(BigDecimal.valueOf(0)) <= 0) { + dec.setBindQty(BigDecimal.valueOf(0)); + dec.setStatus(0); + } + equipmentService.updateById(dec); + } + } + return true; + } + @Override public List getUnbindByCard(String cardNo) { WorkOrder prWorkOrder = workOrderService.getWorkOrderByCardNo(cardNo); @@ -515,7 +616,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl + * List spiList = safePatrolInspectionDao.getByCode(code); + *

+ * if (spiList == null || spiList.size() == 0) { + * throw new BusinessException("根据编码未找到需要处理数据"); + * } + *

+ * PfUserInfo userByLdapName = epDosingRecDao.getUserByLdapName(man); + *

+ * if (userByLdapName == null || userByLdapName.getUserId() == null) { + * throw new BusinessException("根据域账号未找到对应的处理人"); + * } + *

+ * Date date = new Date(); + * for (SafePatrolInspection safePatrolInspection : spiList) { + * // 如果在一个小时内将生成的任务处理掉那么算准时完成,在一个小时以后并且下个任务未生成之前处理 算未准时完成,如果在下个任务生成时还未处理算缺卡,并将任务改为缺卡,7点生成的任务除外特殊算(8点查询有任务改为缺卡) + *

+ * // 不超过一个小时算正常检验 + * if (new Date().getTime() - safePatrolInspection.getLaunchTime().getTime() <= 60 * 60 * 1000) { + * safePatrolInspection.setTaskStatus(SafePatrolInspection.CHECKED); + * }else { + * // 超过一个小时但是下个任务并没有触发 + * int hours = safePatrolInspection.getLaunchTime().getHours(); + * int hours1 = new Date().getHours(); + * if (hours == 0 && hours1 < 2) { + * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); + * } else if (hours == 2 && hours1 < 5) { + * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); + * } else if (hours == 5 && hours1 < 7) { + * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); + * } else if (hours == 7 && hours1 < 8) { + * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); + * } else { + * // 超过一个小时但是下个任务已触发 + * safePatrolInspection.setTaskStatus(SafePatrolInspection.NO_CHECK); + * } + * } + * safePatrolInspection.setTestTime(date); + * safePatrolInspection.setInsMan(userByLdapName); + * safePatrolInspection.setParMemo(memo); + * SafeInspectionPoint safeInspectionPoint = safeInspectionPointService.getByKey(safePatrolInspection.getIpId()); + * safeInspectionPoint.setLastInsCycle(date); + * this.updateOldPatrol(safePatrolInspection.getIpId(), safePatrolInspection.getLaunchTime(), userByLdapName.getUserId()); + * } + * } * - * List spiList = safePatrolInspectionDao.getByCode(code); - * - * if (spiList == null || spiList.size() == 0) { - * throw new BusinessException("根据编码未找到需要处理数据"); - * } - * - * PfUserInfo userByLdapName = epDosingRecDao.getUserByLdapName(man); - * - * if (userByLdapName == null || userByLdapName.getUserId() == null) { - * throw new BusinessException("根据域账号未找到对应的处理人"); - * } - * - * Date date = new Date(); - * for (SafePatrolInspection safePatrolInspection : spiList) { - * // 如果在一个小时内将生成的任务处理掉那么算准时完成,在一个小时以后并且下个任务未生成之前处理 算未准时完成,如果在下个任务生成时还未处理算缺卡,并将任务改为缺卡,7点生成的任务除外特殊算(8点查询有任务改为缺卡) - * - * // 不超过一个小时算正常检验 - * if (new Date().getTime() - safePatrolInspection.getLaunchTime().getTime() <= 60 * 60 * 1000) { - * safePatrolInspection.setTaskStatus(SafePatrolInspection.CHECKED); - * }else { - * // 超过一个小时但是下个任务并没有触发 - * int hours = safePatrolInspection.getLaunchTime().getHours(); - * int hours1 = new Date().getHours(); - * if (hours == 0 && hours1 < 2) { - * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); - * } else if (hours == 2 && hours1 < 5) { - * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); - * } else if (hours == 5 && hours1 < 7) { - * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); - * } else if (hours == 7 && hours1 < 8) { - * safePatrolInspection.setTaskStatus(SafePatrolInspection.NOT_ON_TIME); - * } else { - * // 超过一个小时但是下个任务已触发 - * safePatrolInspection.setTaskStatus(SafePatrolInspection.NO_CHECK); - * } - * } - * safePatrolInspection.setTestTime(date); - * safePatrolInspection.setInsMan(userByLdapName); - * safePatrolInspection.setParMemo(memo); - * SafeInspectionPoint safeInspectionPoint = safeInspectionPointService.getByKey(safePatrolInspection.getIpId()); - * safeInspectionPoint.setLastInsCycle(date); - * this.updateOldPatrol(safePatrolInspection.getIpId(), safePatrolInspection.getLaunchTime(), userByLdapName.getUserId()); - * } - * } - * */ + */ @Override @Transactional - public void saveSafetyInspection(String code, String memo,String pathStr) { + public void saveSafetyInspection(String code, String memo, String pathStr) { // 根据编码去拿未检验的数据 List spiList = inspectionService.getByCode(code); if (spiList == null || spiList.size() == 0) { @@ -916,10 +1018,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl b.getLaunchTime().compareTo(a.getLaunchTime())); BsSafePatrolInspectionEntity latestTask = spiList.get(0); - + // 计算最新任务的时间差(毫秒) long timeDiff = date.getTime() - latestTask.getLaunchTime().getTime(); - + // 处理所有任务 for (BsSafePatrolInspectionEntity safePatrolInspection : spiList) { if (safePatrolInspection.getId().equals(latestTask.getId())) { @@ -933,14 +1035,14 @@ public class PdaSaveServiceImpl extends BaseServiceImpl