From 46098b464d33d67580d76939a51ecaec8f9209ca Mon Sep 17 00:00:00 2001 From: liuao <1150003126@qq.com> Date: Tue, 13 May 2025 16:09:40 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B45=E6=9C=8813=E6=97=A516:08:40=201.?= =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=E3=80=82=E5=AE=9A=E6=97=B6=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E8=AE=A1=E5=88=92=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/IntelligenceSiteApplication.java | 2 + .../boot/intelligencesite/entity/IWarn.java | 2 + .../mapper/IResourceScheduleMapper.java | 7 ++ .../intelligencesite/mapper/IWarnMapper.java | 3 + .../schedule/ResourceSchedules.java | 116 ++++++++++++++++++ .../schedule/dto/PlanDTO.java | 49 ++++++++ .../intelligencesite/schedule/enums/Info.java | 29 +++++ .../service/IIResourceScheduleService.java | 3 + .../service/IIWarnService.java | 3 + .../impl/IResourceScheduleServiceImpl.java | 5 + .../service/impl/IWarnServiceImpl.java | 5 + .../service/impl/TourRunServiceImpl.java | 5 +- .../mappers/IResourceScheduleMapper.xml | 34 +++++ src/main/resources/mappers/IWarnMapper.xml | 5 + 14 files changed, 265 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/zilber/boot/intelligencesite/schedule/ResourceSchedules.java create mode 100644 src/main/java/com/zilber/boot/intelligencesite/schedule/dto/PlanDTO.java create mode 100644 src/main/java/com/zilber/boot/intelligencesite/schedule/enums/Info.java diff --git a/src/main/java/com/zilber/boot/IntelligenceSiteApplication.java b/src/main/java/com/zilber/boot/IntelligenceSiteApplication.java index cc306b5..62bab95 100644 --- a/src/main/java/com/zilber/boot/IntelligenceSiteApplication.java +++ b/src/main/java/com/zilber/boot/IntelligenceSiteApplication.java @@ -5,6 +5,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.scheduling.annotation.EnableScheduling; /** * 启动程序 @@ -14,6 +15,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @EnableKnife4j @MapperScan(basePackages = "com.zilber.boot.*.mapper") +@EnableScheduling public class IntelligenceSiteApplication { public static void main(String[] args) diff --git a/src/main/java/com/zilber/boot/intelligencesite/entity/IWarn.java b/src/main/java/com/zilber/boot/intelligencesite/entity/IWarn.java index 8e4399b..f873179 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/entity/IWarn.java +++ b/src/main/java/com/zilber/boot/intelligencesite/entity/IWarn.java @@ -71,5 +71,7 @@ public class IWarn implements Serializable { @TableField(exist = false) private Date endTime; + @ApiModelProperty(value = "当前进度") + private Integer currentProgress; } diff --git a/src/main/java/com/zilber/boot/intelligencesite/mapper/IResourceScheduleMapper.java b/src/main/java/com/zilber/boot/intelligencesite/mapper/IResourceScheduleMapper.java index e74bef7..7ebf3bb 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/mapper/IResourceScheduleMapper.java +++ b/src/main/java/com/zilber/boot/intelligencesite/mapper/IResourceScheduleMapper.java @@ -2,7 +2,10 @@ package com.zilber.boot.intelligencesite.mapper; import com.zilber.boot.intelligencesite.entity.IResourceSchedule; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zilber.boot.intelligencesite.schedule.dto.PlanDTO; +import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -16,4 +19,8 @@ import java.util.List; public interface IResourceScheduleMapper extends BaseMapper { List queryList(IResourceSchedule iResourceSchedule); + + void removeAll(); + List listCheckedPlan(@Param("date") Date date); + } diff --git a/src/main/java/com/zilber/boot/intelligencesite/mapper/IWarnMapper.java b/src/main/java/com/zilber/boot/intelligencesite/mapper/IWarnMapper.java index b7d685a..ad95630 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/mapper/IWarnMapper.java +++ b/src/main/java/com/zilber/boot/intelligencesite/mapper/IWarnMapper.java @@ -18,4 +18,7 @@ public interface IWarnMapper extends BaseMapper { List queryList(IWarn iWarn); IWarn selectByPlanId(Long id); + + void removeAll(); + } diff --git a/src/main/java/com/zilber/boot/intelligencesite/schedule/ResourceSchedules.java b/src/main/java/com/zilber/boot/intelligencesite/schedule/ResourceSchedules.java new file mode 100644 index 0000000..ac85e28 --- /dev/null +++ b/src/main/java/com/zilber/boot/intelligencesite/schedule/ResourceSchedules.java @@ -0,0 +1,116 @@ +package com.zilber.boot.intelligencesite.schedule; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zilber.boot.intelligencesite.entity.IProductionPlan; +import com.zilber.boot.intelligencesite.entity.IResourceSchedule; +import com.zilber.boot.intelligencesite.entity.IWarn; +import com.zilber.boot.intelligencesite.mapper.IResourceScheduleMapper; +import com.zilber.boot.intelligencesite.schedule.dto.PlanDTO; +import com.zilber.boot.intelligencesite.schedule.enums.Info; +import com.zilber.boot.intelligencesite.service.IIProductionPlanService; +import com.zilber.boot.intelligencesite.service.IIResourceScheduleService; +import com.zilber.boot.intelligencesite.service.IIWarnService; +import com.zilber.boot.system.pojo.SysDictionary; +import com.zilber.boot.system.service.ISysDictionaryService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * @Author LJX + * @TIME 2025-05-13 13:50 + * @PROJECT intelligence-site + * created by Intellij IDEA + * Description + */ +@Component +@Slf4j +public class ResourceSchedules { + + @Resource + private IIWarnService warnService; + + @Resource + private IIResourceScheduleService rsService; + + @Resource + private ISysDictionaryService dictionaryService; + + @Resource + private IResourceScheduleMapper resourceScheduleMapper; + + @Scheduled(cron = "0 */5 * * * ?") + public void checkPlan() { + Date now = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + log.info("开始检测各个计划的进度:" + sdf.format(now)); + Integer expenses = null; + //在字典查询进度警告标度。如果报错或为空,默认值是5 + LambdaQueryWrapper dictionaryWrapper = new LambdaQueryWrapper<>(); + dictionaryWrapper.eq(SysDictionary::getName, "purpose_expenses"); + try { + SysDictionary one = dictionaryService.getOne(dictionaryWrapper); +// if ( one != null) { +// expenses = Integer.parseInt(one.getCode()); +// } + expenses = Integer.parseInt(one.getCode()); + } + catch ( Exception e) { + //如果出现异常,初始化标度 + expenses = 5; + } + //查询计划开始时间小于当前时间,计划结束时间大于当前时间的parentId为0的计划以及当前进度 + List planDTOS = resourceScheduleMapper.listCheckedPlan(now); + //删除之前的数据 + rsService.removeAll(); + warnService.removeAll(); + //循环比较,插入数据 + for ( PlanDTO plan: planDTOS) { + if ( plan.getAccumulativeProgress() <= plan.getDiff() - expenses) {//进度慢 + log.info("计划\"" + plan.getPlanName() + "\"进度较慢"); + rsService.save(productionPlan(plan, now, Info.PRODUCTION_PLAN_SLOW.getMessage())); + warnService.save(warn(plan, now, Info.WARN_SLOW.getMessage())); + log.info("计划\"" + plan.getPlanName() + "\"进度更新完毕"); + } + else if ( plan.getAccumulativeProgress() >= plan.getDiff() + expenses){//进度快 + log.info("计划\"" + plan.getPlanName() + "\"进度更新完毕"); + rsService.save(productionPlan(plan, now, Info.PRODUCTION_PLAN_QUICK.getMessage())); + log.info("计划\"" + plan.getPlanName() + "\"进度较慢"); + } + } + Date end = new Date(); + log.info("全部计划进度更新已完毕:" + sdf.format(end)); + } + + private IResourceSchedule productionPlan(PlanDTO dto, Date date, String message) { + IResourceSchedule rs = new IResourceSchedule(); + rs.setPlanId(dto.getId()); + rs.setPlanName(dto.getPlanName()); + rs.setStartTime(dto.getStartTime()); + rs.setEndTime(dto.getEndTime()); + rs.setCreateTime(date); + rs.setCreator("admin"); + rs.setCurrentProgress(dto.getAccumulativeProgress()); + rs.setAdvises(message); + return rs; + } + + private IWarn warn(PlanDTO dto, Date date, String message) { + IWarn warn = new IWarn(); + warn.setPlanId(dto.getId()); + warn.setPlanName(dto.getPlanName()); + warn.setWarnInfo(message); + warn.setStartTime(dto.getStartTime()); + warn.setEndTime(dto.getEndTime()); + warn.setCreateTime(date); + warn.setCreator("admin"); + warn.setCurrentProgress(dto.getAccumulativeProgress()); + return warn; + } + +} diff --git a/src/main/java/com/zilber/boot/intelligencesite/schedule/dto/PlanDTO.java b/src/main/java/com/zilber/boot/intelligencesite/schedule/dto/PlanDTO.java new file mode 100644 index 0000000..ba35ef6 --- /dev/null +++ b/src/main/java/com/zilber/boot/intelligencesite/schedule/dto/PlanDTO.java @@ -0,0 +1,49 @@ +package com.zilber.boot.intelligencesite.schedule.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.zilber.boot.intelligencesite.entity.IProductionPlan; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * @Author LJX + * @TIME 2025-05-13 14:14 + * @PROJECT intelligence-site + * created by Intellij IDEA + * Description + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PlanDTO { + + @TableId(value = "id") + private Long id; + + @ApiModelProperty(value = "计划名称") + private String planName; + + @ApiModelProperty(value = "计划开始时间") + private Date startTime; + + @ApiModelProperty(value = "计划结束时间") + private Date endTime; + + @ApiModelProperty(value = "总工期天数") + private Integer duration; + + private Integer diff; + + @ApiModelProperty(value = "累计完成进度") + private Integer accumulativeProgress; + +} diff --git a/src/main/java/com/zilber/boot/intelligencesite/schedule/enums/Info.java b/src/main/java/com/zilber/boot/intelligencesite/schedule/enums/Info.java new file mode 100644 index 0000000..1412833 --- /dev/null +++ b/src/main/java/com/zilber/boot/intelligencesite/schedule/enums/Info.java @@ -0,0 +1,29 @@ +package com.zilber.boot.intelligencesite.schedule.enums; + +/** + * @Author LJX + * @TIME 2025-05-13 15:20 + * @PROJECT intelligence-site + * created by Intellij IDEA + * Description + */ +public enum Info { + + PRODUCTION_PLAN_SLOW("进度偏慢,建议增派人手。"), + PRODUCTION_PLAN_QUICK("进度较快,建议考虑减少人手"), + WARN_SLOW("施工进度较偏慢"), + ; + + private String message; + + public String getMessage() { + return message; + } + + Info() { + } + + Info(String message) { + this.message = message; + } +} diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/IIResourceScheduleService.java b/src/main/java/com/zilber/boot/intelligencesite/service/IIResourceScheduleService.java index 6e1f384..c84ab8f 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/IIResourceScheduleService.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/IIResourceScheduleService.java @@ -16,4 +16,7 @@ import java.util.List; public interface IIResourceScheduleService extends IService { List queryList(IResourceSchedule iResourceSchedule); + + void removeAll(); + } diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/IIWarnService.java b/src/main/java/com/zilber/boot/intelligencesite/service/IIWarnService.java index a6bd510..40b5c4c 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/IIWarnService.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/IIWarnService.java @@ -16,4 +16,7 @@ import java.util.List; public interface IIWarnService extends IService { List queryList(IWarn iWarn); + + void removeAll(); + } diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IResourceScheduleServiceImpl.java b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IResourceScheduleServiceImpl.java index 8e8625b..1f3a533 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IResourceScheduleServiceImpl.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IResourceScheduleServiceImpl.java @@ -29,4 +29,9 @@ public class IResourceScheduleServiceImpl extends ServiceImpl queryList(IResourceSchedule iResourceSchedule) { return iResourceScheduleMapper.queryList(iResourceSchedule); } + + @Override + public void removeAll() { + iResourceScheduleMapper.removeAll(); + } } diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IWarnServiceImpl.java b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IWarnServiceImpl.java index 3edfb17..600eb96 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IWarnServiceImpl.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IWarnServiceImpl.java @@ -27,4 +27,9 @@ public class IWarnServiceImpl extends ServiceImpl implements public List queryList(IWarn iWarn) { return iWarnMapper.queryList(iWarn); } + + @Override + public void removeAll() { + iWarnMapper.removeAll(); + } } diff --git a/src/main/java/com/zilber/boot/module/vehicle/service/impl/TourRunServiceImpl.java b/src/main/java/com/zilber/boot/module/vehicle/service/impl/TourRunServiceImpl.java index 0f7aeb2..81aa791 100644 --- a/src/main/java/com/zilber/boot/module/vehicle/service/impl/TourRunServiceImpl.java +++ b/src/main/java/com/zilber/boot/module/vehicle/service/impl/TourRunServiceImpl.java @@ -288,13 +288,12 @@ public class TourRunServiceImpl * @param errorMessage 自定义错误信息(result为空时的异常信息) * @return */ - private String handleResult(JSONObject result, String errorMessage) - { + private String handleResult(JSONObject result, String errorMessage) { if ( result != null) { if ( !result.get(Constant.CODE).toString().equals(Constant.SUCCESS_CODE)) { throw new ServiceException(result.get(Constant.message).toString()); } - return ((JSONObject) result.get("result")).get("accessToken").toString(); + return result.getJSONObject("result").get("accessToken").toString(); } else { throw new ServiceException(errorMessage); diff --git a/src/main/resources/mappers/IResourceScheduleMapper.xml b/src/main/resources/mappers/IResourceScheduleMapper.xml index e32aa7d..13c7d02 100644 --- a/src/main/resources/mappers/IResourceScheduleMapper.xml +++ b/src/main/resources/mappers/IResourceScheduleMapper.xml @@ -35,5 +35,39 @@ id, plan_id, plan_name, start_time, end_time, create_time, creator, current_prog order by create_time desc + + + + + diff --git a/src/main/resources/mappers/IWarnMapper.xml b/src/main/resources/mappers/IWarnMapper.xml index a91d94b..f9204cb 100644 --- a/src/main/resources/mappers/IWarnMapper.xml +++ b/src/main/resources/mappers/IWarnMapper.xml @@ -52,5 +52,10 @@ id, plan_id, plan_name, deviation_type, deviation_days, warn_info, create_time, + + +