PropertyScanTaskService.kt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. /*
  2. * *********************************************************************************************************************
  3. *
  4. * !!
  5. * .F88X
  6. * X8888Y
  7. * .}888888N;
  8. * i888888N; .:! .I$WI:
  9. * R888888I .'N88~ i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
  10. * .R888888I .;N8888~ .X8' "8I.!,/8" !%NY8`"8I8~~8>,88I
  11. * +888888N; .8888888Y "&&8Y.}8,
  12. * ./888888N; .R888888Y .'}~ .>}'.`+> i}! "i' +/' .'i~ !11,.:">, .~]! .i}i
  13. * ~888888%: .I888888l .]88~`1/iY88Ii+1'.R$8$8]"888888888> Y8$ W8E X8E W8888'188Il}Y88$*
  14. * 18888888 E8888881 .]W%8$`R8X'&8%++N8i,8N%N8+l8%` .}8N:.R$RE%N88N%N$K$R 188,FE$8%~Y88I
  15. * .E888888I .i8888888' .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
  16. * 8888888I .,N888888~ ~88i"8W,!N8*.I88.}888%F,i$88"F88" 888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
  17. * i888888N' I888Y ]88;/EX*IFKFK88X K8R .l8W 88Y ~88}'88E&%8W.X8N``]88!.$8K .:W8I
  18. * .i888888N; I8Y .&8$ .X88! i881.:%888>I88 ;88] +88+.';;;;:.Y88X 18N.,88l .+88/
  19. * .:R888888I
  20. * .&888888I Copyright (c) 2009-2020. 博锐尚格科技股份有限公司
  21. * ~8888'
  22. * .!88~ All rights reserved.
  23. *
  24. * *********************************************************************************************************************
  25. */
  26. package com.persagy.server.services.task
  27. import cn.sagacloud.server.scanbuilding.User
  28. import com.alibaba.fastjson.JSONObject
  29. import com.google.gson.Gson
  30. import com.google.gson.reflect.TypeToken
  31. import com.persagy.base.extensions.toJson
  32. import com.persagy.database.SFilter
  33. import com.persagy.database.SPageQueryInfo
  34. import com.persagy.mybatis.SMybatisDao
  35. import com.persagy.server.Opts
  36. import com.persagy.server.datacenter.models.entities.assistant.TaskPic
  37. import com.persagy.server.datacenter.models.entities.dict.EquipFamilyCategory
  38. import com.persagy.server.datacenter.models.entities.objects.Property
  39. import com.persagy.server.datacenter.models.entities.task.PropertyScanTask
  40. import com.persagy.server.datacenter.models.entities.task.SchemeUtils
  41. import com.persagy.server.scanbuilding.UserLog
  42. import com.persagy.server.services.base.RService
  43. import com.persagy.server.util.IdUtils
  44. import com.persagy.service.SBaseService
  45. import com.persagy.service.SObjectService
  46. import com.persagy.service.SPageContext
  47. import com.persagy.service.models.requests.SCreateRequest
  48. import org.slf4j.LoggerFactory
  49. import org.springframework.web.bind.annotation.RequestBody
  50. import java.util.*
  51. import kotlin.collections.ArrayList
  52. /**
  53. * 资产台账任务
  54. *
  55. * @author 邓婷婷
  56. */
  57. object PropertyScanTaskService : RService<PropertyScanTask>(SMybatisDao(PropertyScanTask::class.java)) {
  58. // 日志
  59. private val logger = LoggerFactory.getLogger(PropertyScanTaskService::class.java)
  60. /** 扫楼日志 */
  61. var userLogService = SObjectService(SMybatisDao(UserLog::class.java))
  62. /** 用户 */
  63. var userService = SObjectService(SMybatisDao(User::class.java))
  64. /** 用户 */
  65. var equipFamilyCategoryService = SObjectService(SMybatisDao(EquipFamilyCategory::class.java))
  66. /**
  67. * 插入之前先过滤已经存在未验证任务的对象,返回新列表
  68. */
  69. fun createBefore(@RequestBody request: SCreateRequest<PropertyScanTask>): SCreateRequest<PropertyScanTask> {
  70. val propertyTaskList = request.content;
  71. var newList = arrayListOf<PropertyScanTask>()
  72. for(property in propertyTaskList){
  73. val propertyTask = PropertyScanTaskService.select("equipId" to property.equipId!!,"taskState" to 1).entity()
  74. if(propertyTask==null){//表示当前设备已经存在未验证的任务
  75. newList.add(property)
  76. }
  77. }
  78. request.content = newList
  79. println(newList.size)
  80. return request
  81. }
  82. /**
  83. * 创建之前操作
  84. */
  85. override fun onCreateBefore(propertyScanTask: PropertyScanTask): Boolean {
  86. try {
  87. val gson = Gson()
  88. var flag = false
  89. if(propertyScanTask.taskState == -1){//表示当前任务是未找到状态,重新生成任务
  90. flag = true
  91. val propertyScanTaskService = SBaseService(SMybatisDao(PropertyScanTask::class.java))
  92. val resetTask = propertyScanTaskService.select("equipId" to propertyScanTask.equipId!!,"taskState" to -1).entity()
  93. if( resetTask!=null ){
  94. resetTask.taskState = 0
  95. propertyScanTaskService.update(resetTask)
  96. }
  97. }
  98. val projectId = SPageContext.getHeader("projectId")
  99. // if (propertyScanTask.id.isNullOrEmpty()) {
  100. propertyScanTask.id = UUID.randomUUID().toString()
  101. // }
  102. if(!projectId.isNullOrEmpty()){
  103. propertyScanTask.projectId = projectId
  104. }
  105. propertyScanTask.taskSource = 3//数据源为资产
  106. propertyScanTask.taskState = 1//任务状态为待验证
  107. propertyScanTask.taskType = "1"
  108. if (!propertyScanTask.equipId.isNullOrEmpty()) {//当设备id不为空时,去设备表查询对应的详细信息
  109. val propertyService = SBaseService(SMybatisDao(Property::class.java))
  110. val property = propertyService.select("id" to propertyScanTask.equipId!!).entity()
  111. if (propertyScanTask.schemeId.isNullOrEmpty()){
  112. propertyScanTask.schemeId = SchemeUtils.setScheme(property!!.family!!)
  113. }
  114. // property.ledgerParam.PhotoDoc.Pic
  115. if(property!!.infos != null){//设备图片信息
  116. val photoDoc = property!!.infos!!.get("PhotoDoc")
  117. if( photoDoc != null){
  118. val obj = JSONObject.parseObject(photoDoc!!.toJson())
  119. val pic = obj.getString("Pic")
  120. val type = object : TypeToken<ArrayList<TaskPic>>() {
  121. }.type
  122. val siInSpList = gson.fromJson<ArrayList<TaskPic>>(pic, type)
  123. propertyScanTask.taskPicList = siInSpList
  124. }
  125. val containsKey = property.infos!!.containsKey(Opts.INSTALLLOCATION)
  126. if (containsKey){
  127. propertyScanTask.installLocation = property.infos!![Opts.INSTALLLOCATION].toString()
  128. }
  129. }
  130. try {
  131. if (!property.infos.isNullOrEmpty()){
  132. val containsKey = property.infos!!.containsKey(Opts.MANUFACTURER)
  133. if (containsKey){
  134. propertyScanTask.manufacturer = property.infos!![Opts.MANUFACTURER].toString()
  135. }
  136. val containsKey2 = property.infos!!.containsKey(Opts.SPECIFICATION)
  137. if(containsKey2) {
  138. propertyScanTask.specification = property.infos!![Opts.SPECIFICATION].toString()
  139. }
  140. val containsKeys = property.infos!!.containsKey(Opts.SUPPLIER)
  141. if (containsKeys){
  142. propertyScanTask.supplier = property.infos!![Opts.SUPPLIER].toString()
  143. }
  144. }
  145. } catch (e: Exception) {
  146. e.printStackTrace()
  147. }
  148. if(flag){
  149. propertyScanTask.equipName = property!!.name
  150. propertyScanTask.localId = property!!.localId
  151. propertyScanTask.localName = property!!.localName
  152. propertyScanTask.bimId = property!!.bimId
  153. propertyScanTask.classCode = property!!.family
  154. propertyScanTask.buildingId = property!!.buildingId
  155. propertyScanTask.floorId = property!!.floorId
  156. propertyScanTask.cadId = property!!.cadId
  157. // propertyScanTask.supplier = property!!.dpSupplierID
  158. // propertyScanTask.specification = property!!.dpManufacturerID
  159. // propertyScanTask.manufacturer = property!!.dpMaintainerID
  160. propertyScanTask.bimLocation = property.bimLocation
  161. if (property.codeType!=null){
  162. propertyScanTask.taskType = property.codeType.toString()
  163. }else{
  164. propertyScanTask.taskType = "1"
  165. }
  166. }else{
  167. if (propertyScanTask.equipName.isNullOrEmpty()) {
  168. propertyScanTask.equipName = property!!.name
  169. }
  170. if (propertyScanTask.localId.isNullOrEmpty()) {
  171. propertyScanTask.localId = property!!.localId
  172. }
  173. if (propertyScanTask.localName.isNullOrEmpty()) {
  174. propertyScanTask.localName = property!!.localName
  175. }
  176. if (propertyScanTask.bimId.isNullOrEmpty()) {
  177. propertyScanTask.bimId = property!!.bimId
  178. }
  179. if (propertyScanTask.classCode.isNullOrEmpty()) {
  180. propertyScanTask.classCode = property!!.family
  181. }
  182. if (propertyScanTask.buildingId.isNullOrEmpty()) {
  183. propertyScanTask.buildingId = property!!.buildingId
  184. }
  185. if (propertyScanTask.floorId.isNullOrEmpty()) {
  186. propertyScanTask.floorId = property!!.floorId
  187. }
  188. if (propertyScanTask.cadId.isNullOrEmpty()) {
  189. propertyScanTask.cadId = property!!.cadId
  190. }
  191. // if (propertyScanTask.supplier.isNullOrEmpty()) {
  192. // propertyScanTask.supplier = property!!.dpSupplierID
  193. // }
  194. // if (propertyScanTask.specification.isNullOrEmpty()) {
  195. // propertyScanTask.specification = property!!.dpManufacturerID
  196. // }
  197. // if (propertyScanTask.manufacturer.isNullOrEmpty()) {
  198. // propertyScanTask.manufacturer = property!!.dpMaintainerID
  199. // }
  200. if (propertyScanTask.bimLocation.isNullOrEmpty()){
  201. propertyScanTask.bimLocation = property.bimLocation
  202. }
  203. if (propertyScanTask.taskType.isNullOrEmpty()){
  204. if (property.codeType!=null){
  205. propertyScanTask.taskType = property.codeType.toString()
  206. }else{
  207. propertyScanTask.taskType = "1"
  208. }
  209. }
  210. }
  211. }
  212. } catch (e: Exception) {
  213. e.printStackTrace()
  214. }
  215. return true
  216. } // Function onCreateBefore()
  217. override fun onDeleteBefore(entity: PropertyScanTask): Boolean {
  218. val entity1 = select(SFilter.eq("id", entity.id!!)).entity()
  219. val propertyService = SBaseService(SMybatisDao(Property::class.java))
  220. val property = propertyService.select(SFilter.eq("id", entity1!!.equipId!!)).entity()
  221. val list = ArrayList<String>()
  222. list.add("TaskState")
  223. property!!.taskState = null
  224. propertyService.update(property,list)
  225. return super.onDeleteBefore(entity)
  226. }
  227. /**
  228. * 创建成功之后
  229. */
  230. override fun onCreateSuccess(propertyScanTaskList: ArrayList<PropertyScanTask>) {
  231. for(task in propertyScanTaskList){
  232. val property = Property()
  233. val propertyService = SBaseService(SMybatisDao(Property::class.java))
  234. property.id = task.equipId!!
  235. property.taskState = 1
  236. propertyService.update(property)
  237. }
  238. } // Fun onCreateSuccess
  239. /**
  240. * 状态修改完成之后
  241. */
  242. override fun onUpdateSuccess(list: ArrayList<PropertyScanTask>) {
  243. val projectId = SPageContext.getHeader("projectId")
  244. for (task in list) {
  245. val propertyService = SBaseService(SMybatisDao(Property::class.java))
  246. if(task.equipId == null ){
  247. val propertyScanTask = PropertyScanTaskService.select("id" to task.id!!).entity()
  248. task.equipId = propertyScanTask!!.equipId
  249. }
  250. //更改设备对象的状态
  251. val propertyOld = propertyService.select("id" to task.equipId!!).entity()
  252. if(propertyOld!!.taskState != -1) {//未找到
  253. val property = Property()
  254. property.id = task.equipId!!
  255. property.taskState = task.taskState
  256. propertyService.update(property)
  257. }
  258. try {
  259. if (!Opts.coming.isNullOrEmpty()&&Opts.coming == "app"){
  260. val entity = userService.select(SFilter.eq("projectId", projectId!!), SFilter.eq("phone", Opts.account!!)).entity()
  261. val userLog = UserLog()
  262. userLog.comming = "app"
  263. userLog.action = "修改资产任务"
  264. userLog.id = IdUtils.uuidCreate()
  265. userLog.note = "确认资产任务"
  266. userLog.phone = entity?.phone
  267. userLog.projectId = projectId
  268. userLog.userId = entity!!.id
  269. userLog.name = entity.name
  270. userLog.objectId = task.id
  271. userLogService.insert(userLog)
  272. }
  273. } catch (e: Exception) {
  274. e.printStackTrace()
  275. }
  276. }
  277. } // Fun onUpdateSuccess
  278. override fun onQuerySuccess(pageInfo: SPageQueryInfo<PropertyScanTask>) {
  279. if (!pageInfo.content.isNullOrEmpty()){
  280. for (content in pageInfo.content!!){
  281. val entity = equipFamilyCategoryService.select(SFilter.eq("family", content.classCode!!)).entity()
  282. if (entity!=null) {
  283. content.equipFamily = entity
  284. }else {
  285. }
  286. }
  287. }
  288. super.onQuerySuccess(pageInfo)
  289. }
  290. } // Class PropertyScanTaskService