Browse Source

工单调度系统 完善根据计划生成工单的功能

master
djz8236 2 years ago
parent
commit
92cd3d529b
  1. 2
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchorderinfo/DispatchOrderinfoDto.java
  2. 4
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlan.java
  3. 2
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDetailsVo.java
  4. 2
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanDto.java
  5. 2
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/dispatchpatrolplan/DispatchPatrolPlanVo.java
  6. 14
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-api/src/main/java/com/yxt/supervise/dispatchcenter/api/enums/CommonConstant.java
  7. 6
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml
  8. 8
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchorderinfo/DispatchOrderinfoService.java
  9. 11
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/biz/dispatchplanworker/DispatchPlanWorkerService.java
  10. 70
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/config/XxlJobConfig.java
  11. 135
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/java/com/yxt/supervise/dispatchcenter/scheduing/PlanScheduing.java
  12. 14
      yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml

2
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-督办。") @ApiModelProperty("描述:1-一般;2-重要; 3-紧急;4-督办。")
private String orderdegree; // 描述:1-一般;2-重要; 3-紧急;4-督办。 private String orderdegree; // 描述:1-一般;2-重要; 3-紧急;4-督办。
@ApiModelProperty("描述:1-计划巡视;") @ApiModelProperty("描述:1-计划巡视;")
private Integer ordertype; // 描述:1-计划巡视; private String ordertype; // 描述:1-计划巡视;
@ApiModelProperty("工单内容") @ApiModelProperty("工单内容")
private String ordercontent; // 工单内容 private String ordercontent; // 工单内容
@ApiModelProperty("到达现场时间") @ApiModelProperty("到达现场时间")

4
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("计划名称") @ApiModelProperty("计划名称")
private String planname; // 计划名称 private String planname; // 计划名称
@ApiModelProperty("客户标识") @ApiModelProperty("客户标识")
private String custid; // 客户标识 private String custid; // 客户标识
@ApiModelProperty("客户名称")
private String custname; // 客户标识
@ApiModelProperty("监管公司id") @ApiModelProperty("监管公司id")
private String supervisesid; // 监管公司id private String supervisesid; // 监管公司id
@ApiModelProperty("1计划巡视、2专项巡视") @ApiModelProperty("1计划巡视、2专项巡视")

2
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; // 计划名称 private String planname; // 计划名称
@ApiModelProperty("客户标识") @ApiModelProperty("客户标识")
private String custid; // 客户标识 private String custid; // 客户标识
@ApiModelProperty("客户名称")
private String custname; // 客户标识
@ApiModelProperty("监管公司id") @ApiModelProperty("监管公司id")
private String supervisesid; // 监管公司id private String supervisesid; // 监管公司id
@ApiModelProperty("1计划巡视、2专项巡视") @ApiModelProperty("1计划巡视、2专项巡视")

2
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; // 计划名称 private String planname; // 计划名称
@ApiModelProperty("客户标识") @ApiModelProperty("客户标识")
private String custid; // 客户标识 private String custid; // 客户标识
@ApiModelProperty("客户名称")
private String custname; // 客户标识
@ApiModelProperty("监管公司id") @ApiModelProperty("监管公司id")
private String supervisesid; // 监管公司id private String supervisesid; // 监管公司id
@ApiModelProperty("1计划巡视、2专项巡视") @ApiModelProperty("1计划巡视、2专项巡视")

2
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; // 计划名称 private String planname; // 计划名称
@ApiModelProperty("客户标识") @ApiModelProperty("客户标识")
private String custid; // 客户标识 private String custid; // 客户标识
@ApiModelProperty("客户名称")
private String custname; // 客户标识
@ApiModelProperty("监管公司id") @ApiModelProperty("监管公司id")
private String supervisesid; // 监管公司id private String supervisesid; // 监管公司id
@ApiModelProperty("1计划巡视、2专项巡视") @ApiModelProperty("1计划巡视、2专项巡视")

14
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;
}
}

6
yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/pom.xml

@ -15,6 +15,12 @@
<version>0.0.1</version> <version>0.0.1</version>
<dependencies> <dependencies>
<!--xxl-job-->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId> <artifactId>spring-boot-starter-cache</artifactId>

8
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<DispatchOrderin
BeanUtil.copyProperties(entity, vo); BeanUtil.copyProperties(entity, vo);
return vo; return vo;
} }
public int selectByCustSidAndDate(String custid, String date) {
DispatchOrderinfoQuery query=new DispatchOrderinfoQuery();
query.setCustid(custid);
query.setOrderno("GD"+date);
QueryWrapper<DispatchOrderinfo> qw = createQueryWrapper(query);
return baseMapper.selectList(qw).size();
}
} }

11
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 org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -123,4 +124,14 @@ public class DispatchPlanWorkerService extends MybatisBaseService<DispatchPlanWo
baseMapper.insert(entity); baseMapper.insert(entity);
}); });
} }
public List<DispatchPlanWorker> selectByPlanSid(String sid) {
if(StringUtils.isBlank(sid)){
return new ArrayList<>();
}
DispatchPlanWorkerQuery query=new DispatchPlanWorkerQuery();
query.setPlanid(sid);
QueryWrapper<DispatchPlanWorker> qw = createQueryWrapper(query);
return baseMapper.selectList(qw);
}
} }

70
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引入依赖
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2配置文件或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}

135
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<String> planScheduing(String param) throws Exception {
List<DispatchPatrolPlan> 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<DispatchPatrolPlan> list = dispatchPatrolPlanService
.list(new LambdaQueryWrapper<DispatchPatrolPlan>()
.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<DispatchPlanWorker> list = dispatchPlanWorkerService.selectByPlanSid(data.getSid());
List<DispatchWorkerDto> 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;
}
}

14
yxt_supervise/supervise-dispatchcenter/supervise-dispatchcenter-biz/src/main/resources/application.yml

@ -56,4 +56,16 @@ hystrix:
ribbon: ribbon:
ReadTimeout: 30000 ReadTimeout: 30000
ConnectTimeout: 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

Loading…
Cancel
Save