From 5a003a42d2b34e8362910ac1d3e5a8866768e5fe Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期六, 20 十二月 2025 16:50:28 +0800
Subject: [PATCH] 2025.12.20 巡查任务统计相关功能修改
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt | 236 +++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 151 insertions(+), 85 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
index 96d689b..d264f3c 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
@@ -31,24 +31,30 @@
private val subTaskRep: SubTaskRep,
) : SubtaskService {
- val dateUtil = DateUtil()
-
@Autowired
lateinit var taskService: TaskService
+
@Autowired
lateinit var taskMapper: TaskMapper
+
@Autowired
lateinit var evaluationMapper: EvaluationMapper
+
@Autowired
lateinit var problemlistMapper: ProblemlistMapper
+
@Autowired
lateinit var mediafileMapper: MediafileMapper
+
@Autowired
lateinit var scenseMapper: ScenseMapper
+
@Autowired
lateinit var inspectionMapper: InspectionMapper
+
@Autowired
lateinit var monitorobjectversionMapper: MonitorobjectversionMapper
+
@Autowired
lateinit var problemtypeMapper: ProblemtypeMapper
@@ -67,11 +73,11 @@
criteria.andEqualTo("towncode", areaVo.towncode)
criteria.andBetween("planstarttime", areaVo.starttime, areaVo.endtime)
if (!Objects.equals(userGuid, Constant.UserType.ALL_USER.des))
- criteria.andLike("executorguids","%"+userGuid+"%")
+ criteria.andLike("executorguids", "%" + userGuid + "%")
var completecount = 0
var subtasklist = subtaskMapper.selectByExample(example)
subtasklist.forEach {
- if (Objects.equals(it.status, Constant.TaskProgress.RUNINGSTATUS3.text)){
+ if (Objects.equals(it.status, Constant.TaskProgress.RUNINGSTATUS3.text)) {
completecount++
}
}
@@ -104,24 +110,26 @@
criteria.andEqualTo("tsguid", dayTaskId)
if (userType == "1") {
example.and(
- example.createCriteria().orLike("executorguids", "%$userId%")
- .orLike("stAssessorguid", "%$userId%")
+ example.createCriteria().orLike("executorguids", "%$userId%")
+ .orLike("stAssessorguid", "%$userId%")
)
}
example.orderBy("name")
- val result = subtaskMapper.selectByExample(example).apply{
+ val result = subtaskMapper.selectByExample(example).apply {
forEach breaking@{
//宸插鏍告彁绀�
- it.remark= Constant.PROBLEM_CHECK_PASS
+ it.remark = Constant.PROBLEM_CHECK_PASS
problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
createCriteria().andEqualTo("stguid", it.stguid)
- and(createCriteria().orIsNull("remark")
- .orNotEqualTo("remark", Constant.PROBLEM_DELETED))
- }).forEach {problem ->
+ and(
+ createCriteria().orIsNull("remark")
+ .orNotEqualTo("remark", Constant.PROBLEM_DELETED)
+ )
+ }).forEach { problem ->
//瀛愪换鍔′腑鏈夐棶棰樻湭瀹℃牳鏃讹紝璁剧疆鏈鏍告彁绀�
if (problem.extension3 == Constant.PROBLEM_UNCHECKED) {
- it.remark= Constant.PROBLEM_UNCHECKED
+ it.remark = Constant.PROBLEM_UNCHECKED
return@breaking
}
}
@@ -151,6 +159,7 @@
@Transactional
override fun saveList(subtasklist: List<Subtask>): Int {
subtasklist.forEach {
+ if (it.stguid == null) it.stguid = UUIDGenerator.generate16ShortUUID()
subtaskMapper.insert(it)
}
return subtasklist.size
@@ -169,13 +178,13 @@
} else {
guid
}
- val userTypeId = if (userType == "涓荤閮ㄩ棬"){
+ val userTypeId = if (userType == "涓荤閮ㄩ棬") {
"2"
- }else if (userType == "椋炵窘鐢ㄦ埛") {
+ } else if (userType == "椋炵窘鐢ㄦ埛") {
"1"
- } else if(userType == "绠$悊鍛�"){
+ } else if (userType == "绠$悊鍛�") {
"0"
- }else if (userType == "鍦烘櫙") {
+ } else if (userType == "鍦烘櫙") {
"3"
} else {
userType
@@ -188,26 +197,29 @@
dateString = date.substring(0, 7)
}
//鍒ゆ柇鍙傛暟鏄惁姝g‘
- if (dateUtil.StringToDate(dateString) == null) {
+ if (DateUtil.StringToDate(dateString) == null) {
return taskPackList
}
//鏍规嵁type绫诲瀷,寰楀埌鍏蜂綋鏄鍝笁涓湀鏁版嵁
when (type) {
"Middle" -> {
- one = dateUtil.addMonth(dateString, -1)
+ one = DateUtil.addMonth(dateString, -1)
two = dateString
- three = dateUtil.addMonth(dateString, 1)
+ three = DateUtil.addMonth(dateString, 1)
}
+
"Left" -> {
- one = dateUtil.addMonth(dateString, 1)
- two = dateUtil.addMonth(dateString, 2)
- three = dateUtil.addMonth(dateString, 3)
+ one = DateUtil.addMonth(dateString, 1)
+ two = DateUtil.addMonth(dateString, 2)
+ three = DateUtil.addMonth(dateString, 3)
}
+
"Right" -> {
- one = dateUtil.addMonth(dateString, -1)
- two = dateUtil.addMonth(dateString, -2)
- three = dateUtil.addMonth(dateString, -3)
+ one = DateUtil.addMonth(dateString, -1)
+ two = DateUtil.addMonth(dateString, -2)
+ three = DateUtil.addMonth(dateString, -3)
}
+
else -> {
//鍙傛暟涓嶆纭氨杩斿洖
return taskPackList
@@ -242,26 +254,29 @@
dateString = date.substring(0, 7)
}
//鍒ゆ柇鍙傛暟鏄惁姝g‘
- if (dateUtil.StringToDate(dateString) == null) {
+ if (DateUtil.StringToDate(dateString) == null) {
return taskPackList
}
//鏍规嵁type绫诲瀷,寰楀埌鍏蜂綋鏄鍝笁涓湀鏁版嵁
when (type) {
"Middle" -> {
- one = dateUtil.addMonth(dateString, -1)
+ one = DateUtil.addMonth(dateString, -1)
two = dateString
- three = dateUtil.addMonth(dateString, 1)
+ three = DateUtil.addMonth(dateString, 1)
}
+
"Left" -> {
- one = dateUtil.addMonth(dateString, 1)
- two = dateUtil.addMonth(dateString, 2)
- three = dateUtil.addMonth(dateString, 3)
+ one = DateUtil.addMonth(dateString, 1)
+ two = DateUtil.addMonth(dateString, 2)
+ three = DateUtil.addMonth(dateString, 3)
}
+
"Right" -> {
- one = dateUtil.addMonth(dateString, -1)
- two = dateUtil.addMonth(dateString, -2)
- three = dateUtil.addMonth(dateString, -3)
+ one = DateUtil.addMonth(dateString, -1)
+ two = DateUtil.addMonth(dateString, -2)
+ three = DateUtil.addMonth(dateString, -3)
}
+
else -> {
//鍙傛暟涓嶆纭氨杩斿洖
return taskPackList
@@ -385,18 +400,21 @@
override fun findAll(): MutableList<Subtask> = subtaskMapper.selectAll()
- override fun save(subtask: Subtask): Int = subtaskMapper.insert(subtask)
+ override fun save(subtask: Subtask): Int {
+ if (subtask.stguid == null) subtask.stguid = UUIDGenerator.generate16ShortUUID()
+ return subtaskMapper.insert(subtask)
+ }
- //鏇存柊瀛愪换鍔�
override fun update(subtask: Subtask): Int {
+ var res = 0
//鏍规嵁瀛愪换鍔uid鑾峰彇椤跺眰浠诲姟
val toptaskVo = taskService.findByID(subtask.tguid.toString())
// //鏍规嵁鏃ユ湡鑾峰彇鏃ヤ换鍔�
-// val daytaskVo = taskService.findByDate(dateUtil.getDate(subtask.planstarttime)!!)
+ val daytaskVo = taskService.findByDate(subtask.tguid!!, DateUtil.getDate(subtask.planstarttime)!!)
//搴旇鐩存帴鏍规嵁瀛愪换鍔$殑鏃ヤ换鍔d鏌ヨ鏃ヤ换鍔�
- val daytaskVo = taskService.findByID(subtask.tsguid!!)
+// val daytaskVo = taskService.findByID(subtask.tsguid!!)
//鍒ゆ柇鏄惁鏈夋棩浠诲姟
if (StringUtil.isEmpty(daytaskVo.tguid)) {
@@ -407,43 +425,48 @@
task.tsguid = toptaskVo.tguid
task.tguid = guid
task.name = subtask.name
- task.starttime = dateUtil.StringToDate(dateUtil.getDate(subtask.planstarttime)!!.substring(0, 10))
+ task.starttime = DateUtil.StringToDate(DateUtil.getDate(subtask.planstarttime)!!.substring(0, 10))
task.endtime =
- dateUtil.StringToDate(dateUtil.getDate(subtask.planstarttime)!!.substring(0, 10) + " 23:59:59")
+ DateUtil.StringToDate(DateUtil.getDate(subtask.planstarttime)!!.substring(0, 10) + " 23:59:59")
//****鏃ヤ换鍔℃墽琛岀姸鎬佺户鎵垮瓙浠诲姟鐨勭姸鎬�*锛堜慨鏀癸級***
task.runingstatus = subtask.status
//********************************************
taskService.save(task)
subtask.tsguid = guid
- subtaskMapper.updateByPrimaryKeySelective(subtask)
+ res = subtaskMapper.updateByPrimaryKeySelective(subtask)
} else {
-// subtask.tsguid = daytaskVo.tguid
+ subtask.tsguid = daytaskVo.tguid
//*锛堜慨鏀癸級*鏃ヤ换鍔℃鍦ㄦ墽琛岋紝瀛愪换鍔$粨鏉燂紝閬嶅巻鎵�鏈夊叾浣欏瓙浠诲姟锛岄兘鏄粨鏉熸椂鎵嶅皢鏃ヤ换鍔′慨鏀逛负缁撴潫****
if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text
- && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text){
+ && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text
+ ) {
val subtaskVolist = findByDayTaskID(daytaskVo.tguid!!)
var bool = false
subtaskVolist.forEach {
- if (it.status != Constant.TaskProgress.RUNINGSTATUS3.text){
+ if (it.status != Constant.TaskProgress.RUNINGSTATUS3.text) {
bool = true
}
}
- if (!bool){
+ if (!bool) {
daytaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS3.text
}
}
//涓よ�呯姸鎬佺浉鍚屾椂涓嶅仛淇敼锛屽叾浣欐儏鍐垫棩浠诲姟閮戒负姝e湪鎵ц
- else if (subtask.status != daytaskVo.runingstatus){
+ else if (subtask.status != daytaskVo.runingstatus) {
daytaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS2.text
}
val daytask = Task()
BeanUtils.copyProperties(daytaskVo, daytask)
taskMapper.updateByPrimaryKeySelective(daytask)
//****************************************************************************************
- subtaskMapper.updateByPrimaryKeySelective(subtask)
+ res = subtaskMapper.updateByPrimaryKeySelective(subtask)
}
+ return res
+ }
+ override fun changeStatus(subtask: Subtask): Int {
+ val res = update(subtask)
//瀵瑰凡缁撴潫鐨勫瓙浠诲姟杩涜鑷姩璇勫垎
if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text) {
val example = Example(Evaluation::class.java)
@@ -455,10 +478,11 @@
}
}
- return 1
+ return res
}
- override fun delete(id: String): Int{
+ @Transactional
+ override fun delete(id: String): Int {
val subtask = subtaskMapper.selectByPrimaryKey(id)
val dayTaskId = subtask.tsguid
subtaskMapper.deleteByPrimaryKey(id)
@@ -476,15 +500,13 @@
createCriteria().andEqualTo("tid", topTaskId).andEqualTo("sguid", sceneId)
})
mList.forEach {
- if (it.monitornum == null) {
- it.monitornum = 0
- } else {
- it.monitornum = it.monitornum!! - 1
- if (it.monitornum!! < 0) {
- it.monitornum = 0
- }
+ var count = it.extension1?.toIntOrNull() ?: 0
+ count--
+ if (count < 0) {
+ count = 0
}
- monitorobjectversionMapper.insert(it)
+ it.extension1 = count.toString()
+ monitorobjectversionMapper.updateByPrimaryKeySelective(it)
}
// 鍚屾椂鍒犻櫎瀵瑰簲闂鍜屽贰鏌ヨ褰�
@@ -495,7 +517,15 @@
}
- override fun searchSubTask(token: String, sceneType: Int?, districtCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseSearchResultVo {
+ override fun searchSubTask(
+ token: String,
+ sceneType: Int?,
+ districtCode: String?,
+ startTime: String?,
+ endTime: String?,
+ page: Int?,
+ perPage: Int?,
+ ): BaseSearchResultVo {
if (token != "jingan") {
return BaseSearchResultVo().apply {
head = DataHead().apply {
@@ -517,7 +547,7 @@
cal.set(Calendar.MILLISECOND, 0)
cal.time
} else {
- DateUtil().StringToDate(startTime!!)
+ DateUtil.StringToDate(startTime!!)
}
val _endTime = if (endTime.isNullOrBlank()) {
@@ -528,7 +558,7 @@
cal.set(Calendar.MILLISECOND, 999)
cal.time
} else {
- DateUtil().StringToDate(endTime!!)?.apply {
+ DateUtil.StringToDate(endTime!!)?.apply {
time += 24 * 60 * 60 * 1000
}
}
@@ -538,7 +568,7 @@
// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
subtaskMapper.getSubtask2(null, null, _districtCode, _sceneType.toByte(), _startTime, _endTime).forEach {
if (!subtaskMap.containsKey(it.subTaskId)) {
- val vo =SubtaskSearchResultVo()
+ val vo = SubtaskSearchResultVo()
BeanUtils.copyProperties(it, vo)
subtaskMap[it.subTaskId] = vo
}
@@ -548,7 +578,7 @@
problemMap[it.problemId] = problemDetail
subtaskMap[it.subTaskId]?.problemList?.add(problemDetail)
}
- val url = it.mExtension1 + it.mGuid+ ".jpg"
+ val url = it.mExtension1 + it.mGuid + ".jpg"
if (it.isChanged == true) {
problemMap[it.problemId]?.rectificationPics?.add(url)
} else {
@@ -593,7 +623,7 @@
}
val time = if (updateTime != null) {
- DateUtil().StringToDate(updateTime)
+ DateUtil.StringToDate(updateTime)
} else {
null
}
@@ -612,7 +642,7 @@
cal.set(Calendar.MILLISECOND, 0)
cal.time
} else {
- DateUtil().StringToDate(startTime!!)
+ DateUtil.StringToDate(startTime!!)
}
val _endTime = if (endTime.isNullOrBlank()) {
@@ -623,13 +653,13 @@
cal.set(Calendar.MILLISECOND, 999)
cal.time
} else {
- DateUtil().StringToDate(endTime!!)?.apply {
+ DateUtil.StringToDate(endTime!!)?.apply {
this.time += 24 * 60 * 60 * 1000
}
}
- val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
+ val p = PageHelper.startPage<SubtaskSearchResultVo>(page ?: 1, perPage ?: 30)
val subtasklist = subtaskMapper.getSubtask(_districtCode, _startTime, _endTime, _sceneType?.toByte())
@@ -642,8 +672,10 @@
.andNotEqualTo("extension3", Constant.CHANGE_CHECK_FAIL)
.andIsNotNull("extension3")
time?.let {
- and(createCriteria().orGreaterThan("time", it)
- .orGreaterThan("changedtime", it))
+ and(
+ createCriteria().orGreaterThan("time", it)
+ .orGreaterThan("changedtime", it)
+ )
}
}).forEach { p ->
val problem = ProblemDetail().apply {
@@ -738,13 +770,22 @@
return BaseResponse(true, "璇锋眰鎴愬姛", data = result)
}
- override fun searchSubTask3(token: String, updateTime: String?, sceneType: Int?, districtCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseResponse<BaseSearchResultVo> {
+ override fun searchSubTask3(
+ token: String,
+ updateTime: String?,
+ sceneType: Int?,
+ districtCode: String?,
+ startTime: String?,
+ endTime: String?,
+ page: Int?,
+ perPage: Int?,
+ ): BaseResponse<BaseSearchResultVo> {
if (token != "jinshan") {
return BaseResponse(false, "璇锋眰token閿欒")
}
val time = if (updateTime != null) {
- DateUtil().StringToDate(updateTime)
+ DateUtil.StringToDate(updateTime)
} else {
null
}
@@ -763,7 +804,7 @@
cal.set(Calendar.MILLISECOND, 0)
cal.time
} else {
- DateUtil().StringToDate(startTime!!)
+ DateUtil.StringToDate(startTime!!)
}
val _endTime = if (endTime.isNullOrBlank()) {
@@ -774,13 +815,13 @@
cal.set(Calendar.MILLISECOND, 999)
cal.time
} else {
- DateUtil().StringToDate(endTime!!)?.apply {
+ DateUtil.StringToDate(endTime!!)?.apply {
this.time += 24 * 60 * 60 * 1000
}
}
- val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
+ val p = PageHelper.startPage<SubtaskSearchResultVo>(page ?: 1, perPage ?: 30)
val subtasklist = subtaskMapper.getSubtask(_districtCode, _startTime, _endTime, _sceneType?.toByte())
@@ -793,8 +834,10 @@
.andNotEqualTo("extension3", Constant.CHANGE_CHECK_FAIL)
.andIsNotNull("extension3")
time?.let {
- and(createCriteria().orGreaterThan("time", it)
- .orGreaterThan("changedtime", it))
+ and(
+ createCriteria().orGreaterThan("time", it)
+ .orGreaterThan("changedtime", it)
+ )
}
}).forEach { p ->
val problem = ProblemDetail().apply {
@@ -863,7 +906,7 @@
// val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
subtaskMapper.getSubtask2(time, time2, _districtCode, _sceneType?.toByte(), null, null).forEach {
if (!subtaskMap.containsKey(it.subTaskId)) {
- val vo =SubtaskSearchResultVo()
+ val vo = SubtaskSearchResultVo()
BeanUtils.copyProperties(it, vo)
subtaskMap[it.subTaskId] = vo
}
@@ -873,7 +916,7 @@
problemMap[it.problemId] = problemDetail
subtaskMap[it.subTaskId]?.problemList?.add(problemDetail)
}
- val url = it.mExtension1 + it.mGuid+ ".jpg"
+ val url = it.mExtension1 + it.mGuid + ".jpg"
if (it.isChanged == true) {
problemMap[it.problemId]?.rectificationPics?.add(url)
} else {
@@ -894,15 +937,37 @@
return BaseResponse(true, "璇锋眰鎴愬姛", data = result)
}
- override fun findByDate(date: String, userId: String): List<SubtaskVo> {
- val time = DateUtil().StringToDate(date)
+ override fun findByDate(date: String?, userId: String?, sceneId: String?): List<SubtaskVo> {
+ val time = if (date == null) null else DateUtil.StringToDate(date)
val resultList = mutableListOf<SubtaskVo>()
- subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
- createCriteria().andLessThanOrEqualTo("planstarttime", time)
+ val subtasks = if (time != null) {
+ // 鑾峰彇鏌愪竴澶╃殑宸℃煡浠诲姟
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().andLessThanOrEqualTo("planstarttime", time)
.andGreaterThanOrEqualTo("planendtime", time)
- }).forEach {
+ .apply { sceneId?.let { andEqualTo("scenseid", it) } }
+ })
+ } else {
+ // 鑾峰彇鏈�杩戜竴涓湀鍐呯殑锛堟煇涓満鏅殑锛夋墍鏈夊贰鏌ヤ换鍔�
+ PageHelper.startPage<Subtask>(1, 1)
+ val lastOne = subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().apply {
+ sceneId?.let { andEqualTo("scenseid", it) }
+ }
+ orderBy("planstarttime").desc()
+ }).takeIf { it.isNotEmpty() }?.get(0)
+ if (lastOne == null) {
+ emptyList()
+ } else {
+ subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+ createCriteria().andEqualTo("tguid", lastOne.tguid)
+ .andEqualTo("scenseid", lastOne.scenseid)
+ })
+ }
+ }
+ subtasks.forEach {
val vo = SubtaskVo()
BeanUtils.copyProperties(it, vo)
resultList.add(vo)
@@ -915,7 +980,7 @@
topTaskId: String,
startTime: String?,
endTime: String?,
- sceneTypeId: Int?
+ sceneTypeId: Int?,
): List<Subtask> {
return subtaskMapper.selectByTopTask2(topTaskId, sceneTypeId)
@@ -928,7 +993,7 @@
override fun getTaskProgressByArea(areaVo: AreaVo): List<TaskProgressVo> {
// areaVo.scensetypeid ?: throw BizException("缂哄皯鍦烘櫙绫诲瀷鍙傛暟")
val res = mutableListOf<TaskProgressVo>()
- taskRep.findTasks(areaVo).forEach {t->
+ taskRep.findTasks(areaVo).forEach { t ->
if (t?.tguid == null) return@forEach
val pro = TaskProgressVo().apply {
tguid = t.tguid
@@ -942,7 +1007,8 @@
districtName = t.districtname
townCode = t.towncode
townName = t.townname
- subTaskSummary = subtaskMapper.getSummary(t.tguid!!, areaVo.scensetypeid?.toIntOrNull())
+ areaVo.topTaskId = t.tguid
+ subTaskSummary = subTaskRep.findSummary(areaVo)
}
res.add(pro)
}
--
Gitblit v1.9.3