Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ab627f1b
authored
Nov 08, 2023
by
Ren Ping
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:初始化工程师容量定时任务 dispatch
1 parent
c10eb803
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
85 additions
and
32 deletions
project-dispatch/src/main/java/com/dituhui/pea/dispatch/dao/DispatchEngineerRepository.java
project-dispatch/src/main/java/com/dituhui/pea/dispatch/dao/DispatchOrderRepository.java
project-dispatch/src/main/java/com/dituhui/pea/dispatch/pojo/Technician.java
project-dispatch/src/main/java/com/dituhui/pea/dispatch/service/impl/BatchServiceImpl.java
project-dispatch/src/main/resources/application-dev.yaml
project-dispatch/src/main/java/com/dituhui/pea/dispatch/dao/DispatchEngineerRepository.java
View file @
ab627f1
...
...
@@ -2,15 +2,24 @@ package com.dituhui.pea.dispatch.dao;
import
com.dituhui.pea.dispatch.entity.DispatchEngineer
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.CrudRepository
;
import
java.util.List
;
import
java.util.Map
;
public
interface
DispatchEngineerRepository
extends
CrudRepository
<
DispatchEngineer
,
Long
>,
JpaRepository
<
DispatchEngineer
,
Long
>
{
List
<
DispatchEngineer
>
findByGroupId
(
String
groupId
);
List
<
DispatchEngineer
>
findByGroupIdAndBatchNo
(
String
groupId
,
String
batchNo
);
List
<
DispatchEngineer
>
findByTeamIdAndBatchNo
(
String
teamId
,
String
batchNo
);
@Query
(
value
=
"SELECT ?1 group_id, o.team_id,?2 batch_no,o.engineer_code, a.name engineer_name, b.x, b.y , max_num, max_minute, max_distance, b.vehicle vehicle_type FROM `org_team_engineer` o\n"
+
" join engineer_info a on o.engineer_code=a.engineer_code\n"
+
" left join engineer_business b on a.engineer_code = b.engineer_code\n"
+
" WHERE o.team_id=?3 AND o.`status`=1\n"
,
nativeQuery
=
true
)
List
<
Map
<
String
,
Object
>>
getNewDispatchEngineer
(
String
groupId
,
String
batchNo
,
String
teamId
);
}
\ No newline at end of file
project-dispatch/src/main/java/com/dituhui/pea/dispatch/dao/DispatchOrderRepository.java
View file @
ab627f1
package
com
.
dituhui
.
pea
.
dispatch
.
dao
;
import
com.dituhui.pea.dispatch.entity.DispatchEngineer
;
import
com.dituhui.pea.dispatch.entity.DispatchOrder
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.CrudRepository
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
public
interface
DispatchOrderRepository
extends
CrudRepository
<
DispatchOrder
,
Long
>,
JpaRepository
<
DispatchOrder
,
Long
>
{
...
...
@@ -34,4 +36,30 @@ public interface DispatchOrderRepository extends CrudRepository<DispatchOrder, L
Optional
<
DispatchOrder
>
findByGroupIdAndBatchNoAndOrderIdAndDt
(
String
groupId
,
String
batchNo
,
String
orderId
,
String
dt
);
List
<
DispatchOrder
>
findByTeamIdAndBatchNo
(
String
teamId
,
String
batchNo
);
@Query
(
value
=
" SELECT ?1 group_id, ?2 batch_no, a.org_team_id team_id, a.order_id, date_format(a.dt,'%Y-%m-%d') dt, a.x, a.y , \n"
+
" a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n"
+
" CONCAT(a.brand, '-', a.type, '-', a.skill) skills , a.take_time , a.appointment_status status\n"
+
" FROM order_info a \n"
+
" WHERE a.org_team_id=?3 AND a.dt = ?4 AND bean_status='OPEN'\n"
+
" AND appointment_method LIKE 'AUTO%' AND a.appointment_status IN ('INIT', 'PRE')\n"
+
" AND order_status ='NORMAL' AND service_status='INIT'\n"
+
" ORDER BY a.expect_time_begin ASC \n"
,
nativeQuery
=
true
)
List
<
Map
<
String
,
Object
>>
getNewDispatchOrder
(
String
groupId
,
String
batchNo
,
String
teamId
,
String
batchDay
);
@Query
(
value
=
" select ?1 group_id, ?2 batch_no, a.org_team_id team_id, a.order_id, date_format(a.dt,'%Y-%m-%d') dt, a.x, a.y , \n"
+
" a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n"
+
" concat(a.brand, '-', a.type, '-', a.skill) skills , a.take_time, a.appointment_status status, \n"
+
" a.engineer_code, date_format(a.plan_start_time,'%Y-%m-%d %H:%i:%s') time_begin, date_format(a.plan_end_time,'%Y-%m-%d %H:%i:%s') time_end \n"
+
" from order_info a \n"
+
" where a.org_team_id=?3 and a.dt = ?4 and bean_status='OPEN'\n"
+
" and appointment_method like 'AUTO%' and a.appointment_status in ('CONFIRM')\n"
+
" and order_status ='NORMAL' and service_status='INIT'\n"
+
" order by a.expect_time_begin asc "
,
nativeQuery
=
true
)
List
<
Map
<
String
,
Object
>>
getNewDispatchConfirmOrder
(
String
groupId
,
String
batchNo
,
String
teamId
,
String
batchDay
);
}
\ No newline at end of file
project-dispatch/src/main/java/com/dituhui/pea/dispatch/pojo/Technician.java
View file @
ab627f1
This diff is collapsed.
Click to expand it.
project-dispatch/src/main/java/com/dituhui/pea/dispatch/service/impl/BatchServiceImpl.java
View file @
ab627f1
...
...
@@ -230,40 +230,54 @@ public class BatchServiceImpl implements BatchService {
//dispatchOrderRepository.deleteAllInBatch(dispatchOrderRepository.findByTeamIdAndBatchNo(teamId,batchNo));
log
.
info
(
"写入新批次技术员、工单数据, teamId:{}, day:{}, batchNo:{}"
,
teamId
,
batchDay
,
batchNo
);
String
sqlEngineer
=
"INSERT INTO dispatch_engineer (group_id, team_id, batch_no, engineer_code, engineer_name, x, y, max_num, max_minute, max_distance, vehicle_type)\n"
+
"SELECT ?, o.team_id,?,o.engineer_code, a.name , b.x, b.y , max_num, max_minute, max_distance, b.vehicle FROM `org_team_engineer` o\n"
+
" join engineer_info a on o.engineer_code=a.engineer_code\n"
+
" left join engineer_business b on a.engineer_code = b.engineer_code\n"
+
" WHERE o.team_id=? AND o.`status`=1\n"
//+ " AND b.x IS NOT NULL AND b.x !=''"
+
" order by a.engineer_code asc"
;
int
engCount
=
jdbcTemplate
.
update
(
sqlEngineer
,
groupId
,
batchNo
,
teamId
);
// String sqlEngineer = "INSERT INTO dispatch_engineer (group_id, team_id, batch_no, engineer_code, engineer_name, x, y, max_num, max_minute, max_distance, vehicle_type)\n"
// + "SELECT ?, o.team_id,?,o.engineer_code, a.name , b.x, b.y , max_num, max_minute, max_distance, b.vehicle FROM `org_team_engineer` o\n"
// + " join engineer_info a on o.engineer_code=a.engineer_code\n"
// + " left join engineer_business b on a.engineer_code = b.engineer_code\n"
// + " WHERE o.team_id=? AND o.`status`=1\n"
// //+ " AND b.x IS NOT NULL AND b.x !=''"
// + " order by a.engineer_code asc";
// int engCount = jdbcTemplate.update(sqlEngineer, groupId, batchNo, teamId);
List
<
Map
<
String
,
Object
>>
engMapList
=
dispatchEngineerRepository
.
getNewDispatchEngineer
(
groupId
,
batchNo
,
teamId
);
List
<
DispatchEngineer
>
engList
=
JSONObject
.
parseArray
(
JSONObject
.
toJSONString
(
engMapList
),
DispatchEngineer
.
class
);
engList
.
forEach
(
eng
->
eng
.
setExt
(
null
));
dispatchEngineerRepository
.
saveAll
(
engList
);
int
engCount
=
engList
.
size
();
// 未派过的工单(已派过PRE状态还可以再次派)
String
sqlOrder
=
"INSERT INTO dispatch_order (group_id, batch_no, team_id, order_id , dt, x, y, \n"
+
" expect_time_begin, expect_time_end, tags, priority , skills , take_time, status )\n"
+
" SELECT ?, ?, a.org_team_id , a.order_id, ?, a.x, a.y , \n"
+
" a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n"
+
" CONCAT(a.brand, '-', a.type, '-', a.skill) skills , a.take_time , a.appointment_status\n"
+
" FROM order_info a \n"
+
" WHERE a.org_team_id=? AND a.dt = ? AND bean_status='OPEN'\n"
+
" AND appointment_method LIKE 'AUTO%' AND a.appointment_status IN ('INIT', 'PRE')\n"
+
" AND order_status ='NORMAL' AND service_status='INIT'\n"
+
" ORDER BY a.expect_time_begin ASC \n"
;
int
orderCount
=
jdbcTemplate
.
update
(
sqlOrder
,
groupId
,
batchNo
,
batchDay
,
teamId
,
batchDay
);
// String sqlOrder = "INSERT INTO dispatch_order (group_id, batch_no, team_id, order_id , dt, x, y, \n"
// + " expect_time_begin, expect_time_end, tags, priority , skills , take_time, status )\n"
// + " SELECT ? group_id, ? batch_no, a.org_team_id team_id, a.order_id, a.dt dt, a.x, a.y , \n"
// + " a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n"
// + " CONCAT(a.brand, '-', a.type, '-', a.skill) skills , a.take_time , a.appointment_status status\n"
// + " FROM order_info a \n" + " WHERE a.org_team_id=? AND a.dt = ? AND bean_status='OPEN'\n"
// + " AND appointment_method LIKE 'AUTO%' AND a.appointment_status IN ('INIT', 'PRE')\n"
// + " AND order_status ='NORMAL' AND service_status='INIT'\n"
// + " ORDER BY a.expect_time_begin ASC \n";
// int orderCount = jdbcTemplate.update(sqlOrder, groupId, batchNo, batchDay, teamId, batchDay);
List
<
Map
<
String
,
Object
>>
orderList
=
dispatchOrderRepository
.
getNewDispatchOrder
(
groupId
,
batchNo
,
teamId
,
batchDay
);
dispatchOrderRepository
.
saveAll
(
JSONObject
.
parseArray
(
JSONObject
.
toJSONString
(
orderList
),
DispatchOrder
.
class
));
int
orderCount
=
orderList
.
size
();
// confirm的要做预占用,所以也加入进来
String
sqlOrderConfirm
=
"INSERT INTO dispatch_order (group_id, batch_no, team_id, order_id , dt, x, y, \n"
+
" expect_time_begin, expect_time_end, tags, priority , skills , take_time, status, engineer_code, time_begin, time_end )\n"
+
" select ?, ?, a.org_team_id , a.order_id, a.dt, a.x, a.y , \n"
+
" a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n"
+
" concat(a.brand, '-', a.type, '-', a.skill) skills , a.take_time, a.appointment_status, \n"
+
" a.engineer_code, a.plan_start_time, a.plan_end_time \n"
+
" from order_info a \n"
+
" where a.org_team_id=? and a.dt = ? and bean_status='OPEN'\n"
+
" and appointment_method like 'AUTO%' and a.appointment_status in ('CONFIRM')\n"
+
" and order_status ='NORMAL' and service_status='INIT'\n"
+
" order by a.expect_time_begin asc "
;
int
orderConfirmCount
=
jdbcTemplate
.
update
(
sqlOrderConfirm
,
groupId
,
batchNo
,
teamId
,
batchDay
);
// String sqlOrderConfirm = "INSERT INTO dispatch_order (group_id, batch_no, team_id, order_id , dt, x, y, \n" +
// " expect_time_begin, expect_time_end, tags, priority , skills , take_time, status, engineer_code, time_begin, time_end )\n" +
// " select ? group_id, ? batch_no, a.org_team_id team_id, a.order_id, a.dt, a.x, a.y , \n" +
// " a.expect_time_begin, a.expect_time_end, a.tags, a.priority , \n" +
// " concat(a.brand, '-', a.type, '-', a.skill) skills , a.take_time, a.appointment_status status, \n" +
// " a.engineer_code, a.plan_start_time time_begin, a.plan_end_time time_end \n" +
// " from order_info a \n" +
// " where a.org_team_id=? and a.dt = ? and bean_status='OPEN'\n" +
// " and appointment_method like 'AUTO%' and a.appointment_status in ('CONFIRM')\n" +
// " and order_status ='NORMAL' and service_status='INIT'\n" +
// " order by a.expect_time_begin asc ";
// int orderConfirmCount = jdbcTemplate.update(sqlOrderConfirm, groupId, batchNo, teamId, batchDay);
List
<
Map
<
String
,
Object
>>
orderConfirmList
=
dispatchOrderRepository
.
getNewDispatchConfirmOrder
(
groupId
,
batchNo
,
teamId
,
batchDay
);
dispatchOrderRepository
.
saveAll
(
JSONObject
.
parseArray
(
JSONObject
.
toJSONString
(
orderConfirmList
),
DispatchOrder
.
class
));
int
orderConfirmCount
=
orderConfirmList
.
size
();
log
.
info
(
"准备批次数据 engCount:{}, orderCount:{}, orderConfirmCount:{}"
,
engCount
,
orderCount
,
orderConfirmCount
);
...
...
project-dispatch/src/main/resources/application-dev.yaml
View file @
ab627f1
...
...
@@ -3,7 +3,7 @@ server:
dispatch
:
cron
:
expr
:
0
10
8-22 * * ?
expr
:
0
47
8-22 * * ?
next-day-limit
:
2
# expr: 0 */10 8-18 * * ?
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment