From 92cd3d529bd28317325fcf527fb278270667bcf0 Mon Sep 17 00:00:00 2001 From: djz8236 Date: Wed, 7 Jun 2023 23:41:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=B0=83=E5=BA=A6=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=20=E5=AE=8C=E5=96=84=E6=A0=B9=E6=8D=AE=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E7=94=9F=E6=88=90=E5=B7=A5=E5=8D=95=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DispatchOrderinfoDto.java | 2 +- .../DispatchPatrolPlan.java | 4 +- .../DispatchPatrolPlanDetailsVo.java | 2 + .../DispatchPatrolPlanDto.java | 2 + .../DispatchPatrolPlanVo.java | 2 + .../api/enums/CommonConstant.java | 14 ++ .../supervise-dispatchcenter-biz/pom.xml | 6 + .../DispatchOrderinfoService.java | 8 ++ .../DispatchPlanWorkerService.java | 11 ++ .../dispatchcenter/config/XxlJobConfig.java | 70 +++++++++ .../scheduing/PlanScheduing.java | 135 ++++++++++++++++++ .../src/main/resources/application.yml | 14 +- 12 files changed, 267 insertions(+), 3 deletions(-) create mode 100644 yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/enums/CommonConstant.java create mode 100644 yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/config/XxlJobConfig.java create mode 100644 yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/scheduing/PlanScheduing.java diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchorderinfo/DispatchOrderinfoDto.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchorderinfo/DispatchOrderinfoDto.java index a43ccbd9..2187ed4d 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchorderinfo/DispatchOrderinfoDto.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchorderinfo/DispatchOrderinfoDto.java @@ -67,7 +67,7 @@ public class DispatchOrderinfoDto implements Dto { @ApiModelProperty("描述:1-一般;2-重要; 3-紧急;4-督办。") private String orderdegree; // 描述:1-一般;2-重要; 3-紧急;4-督办。 @ApiModelProperty("描述:1-计划巡视;") - private Integer ordertype; // 描述:1-计划巡视; + private String ordertype; // 描述:1-计划巡视; @ApiModelProperty("工单内容") private String ordercontent; // 工单内容 @ApiModelProperty("到达现场时间") diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlan.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlan.java index 9e5d3e66..65fe4967 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlan.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlan.java @@ -52,8 +52,10 @@ public class DispatchPatrolPlan extends BaseEntity { @ApiModelProperty("计划名称") private String planname; // 计划名称 - @ApiModelProperty("客户标识") + @ApiModelProperty("客户标识") private String custid; // 客户标识 + @ApiModelProperty("客户名称") + private String custname; // 客户标识 @ApiModelProperty("监管公司id") private String supervisesid; // 监管公司id @ApiModelProperty("1计划巡视、2专项巡视") diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDetailsVo.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDetailsVo.java index 4dfae839..92378a5f 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDetailsVo.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDetailsVo.java @@ -55,6 +55,8 @@ public class DispatchPatrolPlanDetailsVo implements Vo { private String planname; // 计划名称 @ApiModelProperty("客户标识") private String custid; // 客户标识 + @ApiModelProperty("客户名称") + private String custname; // 客户标识 @ApiModelProperty("监管公司id") private String supervisesid; // 监管公司id @ApiModelProperty("1计划巡视、2专项巡视") diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDto.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDto.java index 97ceb6d1..c93d05be 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDto.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDto.java @@ -58,6 +58,8 @@ public class DispatchPatrolPlanDto implements Dto { private String planname; // 计划名称 @ApiModelProperty("客户标识") private String custid; // 客户标识 + @ApiModelProperty("客户名称") + private String custname; // 客户标识 @ApiModelProperty("监管公司id") private String supervisesid; // 监管公司id @ApiModelProperty("1计划巡视、2专项巡视") diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanVo.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanVo.java index 7f81868d..7af09570 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanVo.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanVo.java @@ -55,6 +55,8 @@ public class DispatchPatrolPlanVo implements Vo { private String planname; // 计划名称 @ApiModelProperty("客户标识") private String custid; // 客户标识 + @ApiModelProperty("客户名称") + private String custname; // 客户标识 @ApiModelProperty("监管公司id") private String supervisesid; // 监管公司id @ApiModelProperty("1计划巡视、2专项巡视") diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/enums/CommonConstant.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/enums/CommonConstant.java new file mode 100644 index 00000000..59a38c29 --- /dev/null +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/enums/CommonConstant.java @@ -0,0 +1,14 @@ +package com.yxt.supervise.dispatchcenter.api.enums; + +public enum CommonConstant { + PATROLPERIOD_DAY(5),PATROLPERIOD_MONTH(2); + private int code; + + public int getCode() { + return code; + } + + CommonConstant(int code) { + this.code = code; + } +} diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml index 124f5b78..b0ce13e3 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml @@ -15,6 +15,12 @@ 0.0.1 + + + com.xuxueli + xxl-job-core + 2.2.0 + org.springframework.boot spring-boot-starter-cache diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchorderinfo/DispatchOrderinfoService.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchorderinfo/DispatchOrderinfoService.java index bfcd848a..c47b554f 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchorderinfo/DispatchOrderinfoService.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchorderinfo/DispatchOrderinfoService.java @@ -160,4 +160,12 @@ public class DispatchOrderinfoService extends MybatisBaseService qw = createQueryWrapper(query); + return baseMapper.selectList(qw).size(); + } } \ No newline at end of file diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchplanworker/DispatchPlanWorkerService.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchplanworker/DispatchPlanWorkerService.java index f7a6926b..4cb73fcf 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchplanworker/DispatchPlanWorkerService.java +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchplanworker/DispatchPlanWorkerService.java @@ -44,6 +44,7 @@ import com.yxt.supervise.dispatchcenter.api.dispatchplanworker.DispatchPlanWorke import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -123,4 +124,14 @@ public class DispatchPlanWorkerService extends MybatisBaseService selectByPlanSid(String sid) { + if(StringUtils.isBlank(sid)){ + return new ArrayList<>(); + } + DispatchPlanWorkerQuery query=new DispatchPlanWorkerQuery(); + query.setPlanid(sid); + QueryWrapper qw = createQueryWrapper(query); + return baseMapper.selectList(qw); + } } \ No newline at end of file diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/config/XxlJobConfig.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/config/XxlJobConfig.java new file mode 100644 index 00000000..5e2f452b --- /dev/null +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/config/XxlJobConfig.java @@ -0,0 +1,70 @@ +package com.yxt.supervise.dispatchcenter.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +@Slf4j +@Configuration +public class XxlJobConfig { + + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + + @Value("${xxl.job.executor.address}") + private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); + xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } + + /** + * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP; + * + * 1、引入依赖: + * + * org.springframework.cloud + * spring-cloud-commons + * ${version} + * + * + * 2、配置文件,或者容器启动变量 + * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' + * + * 3、获取IP + * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + */ + +} diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/scheduing/PlanScheduing.java b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/scheduing/PlanScheduing.java new file mode 100644 index 00000000..10eef5ae --- /dev/null +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/scheduing/PlanScheduing.java @@ -0,0 +1,135 @@ +package com.yxt.supervise.dispatchcenter.scheduing; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.yxt.supervise.dispatchcenter.api.dispatchorderinfo.DispatchOrderinfo; +import com.yxt.supervise.dispatchcenter.api.dispatchorderinfo.DispatchOrderinfoDto; +import com.yxt.supervise.dispatchcenter.api.dispatchpatrolplan.DispatchPatrolPlan; +import com.yxt.supervise.dispatchcenter.api.dispatchplanworker.DispatchPlanWorker; +import com.yxt.supervise.dispatchcenter.api.dispatchworker.DispatchWorkerDto; +import com.yxt.supervise.dispatchcenter.api.enums.CommonConstant; +import com.yxt.supervise.dispatchcenter.biz.dispatchorderinfo.DispatchOrderinfoService; +import com.yxt.supervise.dispatchcenter.biz.dispatchpatrolplan.DispatchPatrolPlanService; +import com.yxt.supervise.dispatchcenter.biz.dispatchplanworker.DispatchPlanWorkerService; +import io.swagger.annotations.ApiModelProperty; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +@Slf4j +@Component +public class PlanScheduing { + @Autowired + private DispatchPatrolPlanService dispatchPatrolPlanService; + @Autowired + private DispatchPlanWorkerService dispatchPlanWorkerService; + @Autowired + private DispatchOrderinfoService dispatchOrderinfoService; + @XxlJob("planScheduing") + public ReturnT planScheduing(String param) throws Exception { + List lists = dispatchPatrolPlanService.list(); + log.info("lists:{}", JSONObject.toJSONString(lists)); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String today= LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + //对未结束的 策略生成计划 + lists.stream() + .filter(data->data.getStartdate()!=null && data.getEnddate()!=null ) + .forEach(data->{ + + Date dEnd = null; + try { + dEnd = sdf.parse(data.getEnddate()); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar startDate = Calendar.getInstance(); + //开始日期 + try { + startDate.setTime(sdf.parse(data.getStartdate())); + } catch (ParseException e) { + e.printStackTrace(); + } + int type = Calendar.DAY_OF_MONTH; + + if (CommonConstant.PATROLPERIOD_MONTH.equals(data.getCycletypekey())){ + type = Calendar.MONTH; + } + + while (dEnd.after(startDate.getTime())) { + if (today.equals(sdf.format(startDate.getTime())) || + (new Date().before(startDate.getTime()))){ + List list = dispatchPatrolPlanService + .list(new LambdaQueryWrapper() + .eq(DispatchPatrolPlan::getSid, data.getSid())); + if (list == null || list.size()==0) + newPlanOrder(data); + break; + } + startDate.add(type,Integer.valueOf(data.getCyclevalue())); + } + } + ); + + return ReturnT.SUCCESS; + } + + public DispatchOrderinfoDto newPlanOrder(DispatchPatrolPlan data) { + DispatchOrderinfoDto iesPatrolOrder = new DispatchOrderinfoDto(); + iesPatrolOrder.setCustid(data.getCustid()); // 客户ID + iesPatrolOrder.setCustname(data.getCustname()); // 客户名称 + iesPatrolOrder.setSupervisesid(data.getSupervisesid()); // 监管公司id + String no_s = getNo(data); + iesPatrolOrder.setOrderno(no_s); // 用法说明:工单编号规则。 + iesPatrolOrder.setOrdername(data.getCustname()); // 工单名称 + iesPatrolOrder.setOrderdegree("一般"); // 描述:1-一般;2-重要; 3-紧急;4-督办。 + iesPatrolOrder.setOrderdegreekey("1"); + iesPatrolOrder.setOrdertype(data.getPatroltype()); // 描述:1-计划巡视; + iesPatrolOrder.setOrdertypekey(data.getPatroltypekey()); + iesPatrolOrder.setReceiveperson(data.getContactperson()); // 现场联系人 + iesPatrolOrder.setReceivetel(data.getContactphone()); // 现场联系人电话 + iesPatrolOrder.setTemplatesid(data.getTemplateid()); // templatesid + List list = dispatchPlanWorkerService.selectByPlanSid(data.getSid()); + List workers=new ArrayList<>(); + list.forEach(l->{ + DispatchWorkerDto dd=new DispatchWorkerDto(); + BeanUtil.copyProperties(l,dd); + workers.add(dd); + }); + iesPatrolOrder.setWorkers(workers); + dispatchOrderinfoService.saveOrUpdateDto(iesPatrolOrder); + + return iesPatrolOrder; + } + + private String getNo(DispatchPatrolPlan data ) { + SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd"); + int no=dispatchOrderinfoService.selectByCustSidAndDate(data.getCustid(), sdf.format(new Date())); + String no_s="01"; + if (no==0){ + no_s="01"; + } + if(no>0&&no<10){ + no++; + no_s="0"+no; + } + if(no>10){ + no++; + no_s=""+no; + } + return "GD"+sdf.format(new Date())+no_s; + } + +} diff --git a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml index 159ee2cf..f5d72e8d 100644 --- a/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml +++ b/yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml @@ -56,4 +56,16 @@ hystrix: ribbon: ReadTimeout: 30000 ConnectTimeout: 30000 - +### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" +xxl: + job: + admin: + addresses: http://127.0.0.1:8088/xxl-job-admin + accessToken: default_token + executor: + appname: supervise-dispatchcenter-executor + address: + ip: + port: 9679 + logpath: + logretentiondays: 30