AttendanceClassApi.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. /*
  2. * Copyright 2017-2020 吴学文 and java110 team.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.java110.common.api;
  17. import com.alibaba.fastjson.JSONArray;
  18. import com.alibaba.fastjson.JSONObject;
  19. import com.java110.common.bmo.attendanceClassesTask.IDeleteAttendanceClassesTaskBMO;
  20. import com.java110.common.bmo.attendanceClassesTask.IGetAttendanceClassesTaskBMO;
  21. import com.java110.common.bmo.attendanceClassesTask.ISaveAttendanceClassesTaskBMO;
  22. import com.java110.common.bmo.attendanceClassesTask.IUpdateAttendanceClassesTaskBMO;
  23. import com.java110.common.bmo.attendanceClassesTaskDetail.IDeleteAttendanceClassesTaskDetailBMO;
  24. import com.java110.common.bmo.attendanceClassesTaskDetail.IGetAttendanceClassesTaskDetailBMO;
  25. import com.java110.common.bmo.attendanceClassesTaskDetail.ISaveAttendanceClassesTaskDetailBMO;
  26. import com.java110.common.bmo.attendanceClassesTaskDetail.IUpdateAttendanceClassesTaskDetailBMO;
  27. import com.java110.common.bmo.attendanceLog.IDeleteAttendanceLogBMO;
  28. import com.java110.common.bmo.attendanceLog.IGetAttendanceLogBMO;
  29. import com.java110.common.bmo.attendanceLog.ISaveAttendanceLogBMO;
  30. import com.java110.common.bmo.attendanceLog.IUpdateAttendanceLogBMO;
  31. import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto;
  32. import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto;
  33. import com.java110.dto.attendanceClasses.AttendanceLogDto;
  34. import com.java110.po.attendanceClassesTask.AttendanceClassesTaskPo;
  35. import com.java110.po.attendanceClassesTaskDetail.AttendanceClassesTaskDetailPo;
  36. import com.java110.po.attendanceLog.AttendanceLogPo;
  37. import com.java110.utils.util.Assert;
  38. import com.java110.utils.util.BeanConvertUtil;
  39. import com.java110.utils.util.DateUtil;
  40. import com.java110.utils.util.StringUtil;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.http.ResponseEntity;
  43. import org.springframework.web.bind.annotation.*;
  44. import java.util.Calendar;
  45. import java.util.Date;
  46. import java.util.List;
  47. /**
  48. * @ClassName AttendanceClassApi
  49. * @Description 考勤相关处理API类
  50. * @Author wuxw
  51. * @Date 2021/1/31 0:42
  52. * @Version 1.0
  53. * add by wuxw 2021/1/31
  54. **/
  55. @RestController
  56. @RequestMapping(value = "/attendanceClass")
  57. public class AttendanceClassApi {
  58. @Autowired
  59. private ISaveAttendanceClassesTaskBMO saveAttendanceClassesTaskBMOImpl;
  60. @Autowired
  61. private IUpdateAttendanceClassesTaskBMO updateAttendanceClassesTaskBMOImpl;
  62. @Autowired
  63. private IDeleteAttendanceClassesTaskBMO deleteAttendanceClassesTaskBMOImpl;
  64. @Autowired
  65. private IGetAttendanceClassesTaskBMO getAttendanceClassesTaskBMOImpl;
  66. @Autowired
  67. private ISaveAttendanceClassesTaskDetailBMO saveAttendanceClassesTaskDetailBMOImpl;
  68. @Autowired
  69. private IUpdateAttendanceClassesTaskDetailBMO updateAttendanceClassesTaskDetailBMOImpl;
  70. @Autowired
  71. private IDeleteAttendanceClassesTaskDetailBMO deleteAttendanceClassesTaskDetailBMOImpl;
  72. @Autowired
  73. private IGetAttendanceClassesTaskDetailBMO getAttendanceClassesTaskDetailBMOImpl;
  74. @Autowired
  75. private ISaveAttendanceLogBMO saveAttendanceLogBMOImpl;
  76. @Autowired
  77. private IUpdateAttendanceLogBMO updateAttendanceLogBMOImpl;
  78. @Autowired
  79. private IDeleteAttendanceLogBMO deleteAttendanceLogBMOImpl;
  80. @Autowired
  81. private IGetAttendanceLogBMO getAttendanceLogBMOImpl;
  82. /**
  83. * 微信保存消息模板
  84. *
  85. * @param reqJson
  86. * @return
  87. * @serviceCode /attendanceClass/saveAttendanceClassesTask
  88. * @path /app/attendanceClass/saveAttendanceClassesTask
  89. */
  90. @RequestMapping(value = "/saveAttendanceClassesTask", method = RequestMethod.POST)
  91. public ResponseEntity<String> saveAttendanceClassesTask(@RequestBody JSONObject reqJson) {
  92. Assert.hasKeyAndValue(reqJson, "classId", "请求报文中未包含classId");
  93. JSONArray attendanceClassesTaskDetails = reqJson.getJSONArray("attendanceClassesTaskDetails");
  94. List<AttendanceClassesTaskDetailPo> attendanceClassesTaskDetailPos
  95. = JSONArray.parseArray(attendanceClassesTaskDetails.toJSONString(), AttendanceClassesTaskDetailPo.class);
  96. AttendanceClassesTaskPo attendanceClassesTaskPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskPo.class);
  97. return saveAttendanceClassesTaskBMOImpl.save(attendanceClassesTaskPo, attendanceClassesTaskDetailPos);
  98. }
  99. /**
  100. * 微信修改消息模板
  101. *
  102. * @param reqJson
  103. * @return
  104. * @serviceCode /attendanceClass/updateAttendanceClassesTask
  105. * @path /app/attendanceClass/updateAttendanceClassesTask
  106. */
  107. @RequestMapping(value = "/updateAttendanceClassesTask", method = RequestMethod.POST)
  108. public ResponseEntity<String> updateAttendanceClassesTask(@RequestBody JSONObject reqJson) {
  109. Assert.hasKeyAndValue(reqJson, "classId", "请求报文中未包含classId");
  110. Assert.hasKeyAndValue(reqJson, "storeId", "请求报文中未包含storeId");
  111. Assert.hasKeyAndValue(reqJson, "taskId", "taskId不能为空");
  112. AttendanceClassesTaskPo attendanceClassesTaskPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskPo.class);
  113. return updateAttendanceClassesTaskBMOImpl.update(attendanceClassesTaskPo);
  114. }
  115. /**
  116. * 微信删除消息模板
  117. *
  118. * @param reqJson
  119. * @return
  120. * @serviceCode /attendanceClass/deleteAttendanceClassesTask
  121. * @path /app/attendanceClass/deleteAttendanceClassesTask
  122. */
  123. @RequestMapping(value = "/deleteAttendanceClassesTask", method = RequestMethod.POST)
  124. public ResponseEntity<String> deleteAttendanceClassesTask(@RequestBody JSONObject reqJson) {
  125. Assert.hasKeyAndValue(reqJson, "communityId", "小区ID不能为空");
  126. Assert.hasKeyAndValue(reqJson, "taskId", "taskId不能为空");
  127. AttendanceClassesTaskPo attendanceClassesTaskPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskPo.class);
  128. return deleteAttendanceClassesTaskBMOImpl.delete(attendanceClassesTaskPo);
  129. }
  130. /**
  131. * 微信删除消息模板
  132. *
  133. * @param storeId 商户ID
  134. * @return
  135. * @serviceCode /attendanceClass/queryAttendanceClassesTask
  136. * @path /app/attendanceClass/queryAttendanceClassesTask
  137. */
  138. @RequestMapping(value = "/queryAttendanceClassesTask", method = RequestMethod.GET)
  139. public ResponseEntity<String> queryAttendanceClassesTask(@RequestHeader(value = "store-id") String storeId,
  140. @RequestParam(value = "page") int page,
  141. @RequestParam(value = "row") int row,
  142. @RequestParam(value = "classId", required = false) String classId,
  143. @RequestParam(value = "staffId", required = false) String staffId,
  144. @RequestParam(value = "staffName", required = false) String staffName,
  145. @RequestParam(name = "date", required = false) String date) throws Exception {
  146. AttendanceClassesTaskDto attendanceClassesTaskDto = new AttendanceClassesTaskDto();
  147. attendanceClassesTaskDto.setPage(page);
  148. attendanceClassesTaskDto.setRow(row);
  149. attendanceClassesTaskDto.setStoreId(storeId);
  150. attendanceClassesTaskDto.setClassId(classId);
  151. attendanceClassesTaskDto.setStaffName(staffName);
  152. attendanceClassesTaskDto.setStaffId(staffId);
  153. if (!StringUtil.isEmpty(date)) {
  154. String[] dates = date.split("-");
  155. attendanceClassesTaskDto.setTaskYear(dates[0] + "");
  156. attendanceClassesTaskDto.setTaskMonth(dates[1] + "");
  157. if (dates.length == 3) {
  158. attendanceClassesTaskDto.setTaskDay(dates[2] + "");
  159. }
  160. }
  161. return getAttendanceClassesTaskBMOImpl.get(attendanceClassesTaskDto);
  162. }
  163. /**
  164. * 微信保存消息模板
  165. *
  166. * @param reqJson
  167. * @return
  168. * @serviceCode /attendanceClass/saveAttendanceClassesTaskDetail
  169. * @path /app/attendanceClass/saveAttendanceClassesTaskDetail
  170. */
  171. @RequestMapping(value = "/saveAttendanceClassesTaskDetail", method = RequestMethod.POST)
  172. public ResponseEntity<String> saveAttendanceClassesTaskDetail(@RequestBody JSONObject reqJson) {
  173. Assert.hasKeyAndValue(reqJson, "taskId", "请求报文中未包含taskId");
  174. Assert.hasKeyAndValue(reqJson, "storeId", "请求报文中未包含storeId");
  175. AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskDetailPo.class);
  176. return saveAttendanceClassesTaskDetailBMOImpl.save(attendanceClassesTaskDetailPo);
  177. }
  178. /**
  179. * 微信修改消息模板
  180. *
  181. * @param reqJson
  182. * @return
  183. * @serviceCode /attendanceClass/updateAttendanceClassesTaskDetail
  184. * @path /app/attendanceClass/updateAttendanceClassesTaskDetail
  185. */
  186. @RequestMapping(value = "/updateAttendanceClassesTaskDetail", method = RequestMethod.POST)
  187. public ResponseEntity<String> updateAttendanceClassesTaskDetail(@RequestBody JSONObject reqJson) {
  188. Assert.hasKeyAndValue(reqJson, "taskId", "请求报文中未包含taskId");
  189. Assert.hasKeyAndValue(reqJson, "detailId", "detailId不能为空");
  190. boolean finishAllTaskDetail = false;
  191. if (reqJson.containsKey("finishAllTaskDetail") && reqJson.getBoolean("finishAllTaskDetail")) {
  192. finishAllTaskDetail = true;
  193. }
  194. AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskDetailPo.class);
  195. return updateAttendanceClassesTaskDetailBMOImpl.update(attendanceClassesTaskDetailPo, finishAllTaskDetail);
  196. }
  197. /**
  198. * 微信删除消息模板
  199. *
  200. * @param reqJson
  201. * @return
  202. * @serviceCode /attendanceClass/deleteAttendanceClassesTaskDetail
  203. * @path /app/attendanceClass/deleteAttendanceClassesTaskDetail
  204. */
  205. @RequestMapping(value = "/deleteAttendanceClassesTaskDetail", method = RequestMethod.POST)
  206. public ResponseEntity<String> deleteAttendanceClassesTaskDetail(@RequestBody JSONObject reqJson) {
  207. Assert.hasKeyAndValue(reqJson, "communityId", "小区ID不能为空");
  208. Assert.hasKeyAndValue(reqJson, "detailId", "detailId不能为空");
  209. AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = BeanConvertUtil.covertBean(reqJson, AttendanceClassesTaskDetailPo.class);
  210. return deleteAttendanceClassesTaskDetailBMOImpl.delete(attendanceClassesTaskDetailPo);
  211. }
  212. /**
  213. * 微信删除消息模板
  214. *
  215. * @param storeId 商户ID
  216. * @return
  217. * @serviceCode /attendanceClass/queryAttendanceClassesTaskDetail
  218. * @path /app/attendanceClass/queryAttendanceClassesTaskDetail
  219. */
  220. @RequestMapping(value = "/queryAttendanceClassesTaskDetail", method = RequestMethod.GET)
  221. public ResponseEntity<String> queryAttendanceClassesTaskDetail(@RequestHeader(value = "store-id") String storeId,
  222. @RequestParam(value = "page") int page,
  223. @RequestParam(value = "row") int row) {
  224. AttendanceClassesTaskDetailDto attendanceClassesTaskDetailDto = new AttendanceClassesTaskDetailDto();
  225. attendanceClassesTaskDetailDto.setPage(page);
  226. attendanceClassesTaskDetailDto.setRow(row);
  227. attendanceClassesTaskDetailDto.setStoreId(storeId);
  228. return getAttendanceClassesTaskDetailBMOImpl.get(attendanceClassesTaskDetailDto);
  229. }
  230. /**
  231. * 添加设备接口类
  232. *
  233. * @return 成功或者失败
  234. * @throws Exception
  235. * @serviceCode /attendanceClass/getMonthAttendance
  236. * @path /app/attendanceClass/getMonthAttendance
  237. */
  238. @RequestMapping(path = "/getMonthAttendance", method = RequestMethod.GET)
  239. public ResponseEntity<String> getMonthAttendance(
  240. @RequestHeader(value = "store-id") String storeId,
  241. @RequestParam int page,
  242. @RequestParam int row,
  243. @RequestParam(name = "classesId", required = false) String classesId,
  244. @RequestParam(name = "staffName", required = false) String staffName,
  245. @RequestParam(name = "staffId", required = false) String staffId,
  246. @RequestParam(name = "date", required = false) String date,
  247. @RequestParam(name = "departmentId", required = false) String departmentId
  248. ) throws Exception {
  249. AttendanceClassesTaskDto attendanceClassesTaskDto = new AttendanceClassesTaskDto();
  250. attendanceClassesTaskDto.setPage(page);
  251. attendanceClassesTaskDto.setRow(row);
  252. attendanceClassesTaskDto.setClassId(classesId);
  253. attendanceClassesTaskDto.setStaffName(staffName);
  254. attendanceClassesTaskDto.setStaffId(staffId);
  255. attendanceClassesTaskDto.setStoreId(storeId);
  256. if (!StringUtil.isEmpty(date)) {
  257. Date reqDate = DateUtil.getDateFromString(date, DateUtil.DATE_FORMATE_STRING_B);
  258. Calendar calendar = Calendar.getInstance();
  259. calendar.setTime(reqDate);
  260. attendanceClassesTaskDto.setTaskYear(calendar.get(Calendar.YEAR) + "");
  261. attendanceClassesTaskDto.setTaskMonth((calendar.get(Calendar.MONTH) + 1) + "");
  262. }
  263. return getAttendanceClassesTaskDetailBMOImpl.getMonthAttendance(attendanceClassesTaskDto);
  264. }
  265. /**
  266. * 微信保存消息模板
  267. *
  268. * @param reqJson
  269. * @return
  270. * @serviceCode /attendanceClass/saveAttendanceLog
  271. * @path /app/attendanceClass/saveAttendanceLog
  272. */
  273. @RequestMapping(value = "/saveAttendanceLog", method = RequestMethod.POST)
  274. public ResponseEntity<String> saveAttendanceLog(@RequestBody JSONObject reqJson) {
  275. Assert.hasKeyAndValue(reqJson, "staffId", "请求报文中未包含staffId");
  276. AttendanceLogPo attendanceLogPo = BeanConvertUtil.covertBean(reqJson, AttendanceLogPo.class);
  277. return saveAttendanceLogBMOImpl.save(attendanceLogPo);
  278. }
  279. /**
  280. * 微信修改消息模板
  281. *
  282. * @param reqJson
  283. * @return
  284. * @serviceCode /attendanceClass/updateAttendanceLog
  285. * @path /app/attendanceClass/updateAttendanceLog
  286. */
  287. @RequestMapping(value = "/updateAttendanceLog", method = RequestMethod.POST)
  288. public ResponseEntity<String> updateAttendanceLog(@RequestBody JSONObject reqJson) {
  289. Assert.hasKeyAndValue(reqJson, "staffId", "请求报文中未包含staffId");
  290. Assert.hasKeyAndValue(reqJson, "storeId", "请求报文中未包含storeId");
  291. Assert.hasKeyAndValue(reqJson, "logId", "logId不能为空");
  292. AttendanceLogPo attendanceLogPo = BeanConvertUtil.covertBean(reqJson, AttendanceLogPo.class);
  293. return updateAttendanceLogBMOImpl.update(attendanceLogPo);
  294. }
  295. /**
  296. * 微信删除消息模板
  297. *
  298. * @param reqJson
  299. * @return
  300. * @serviceCode /attendanceClass/deleteAttendanceLog
  301. * @path /app/attendanceClass/deleteAttendanceLog
  302. */
  303. @RequestMapping(value = "/deleteAttendanceLog", method = RequestMethod.POST)
  304. public ResponseEntity<String> deleteAttendanceLog(@RequestBody JSONObject reqJson) {
  305. Assert.hasKeyAndValue(reqJson, "communityId", "小区ID不能为空");
  306. Assert.hasKeyAndValue(reqJson, "logId", "logId不能为空");
  307. AttendanceLogPo attendanceLogPo = BeanConvertUtil.covertBean(reqJson, AttendanceLogPo.class);
  308. return deleteAttendanceLogBMOImpl.delete(attendanceLogPo);
  309. }
  310. /**
  311. * 微信删除消息模板
  312. *
  313. * @param storeId 商户ID
  314. * @return
  315. * @serviceCode /attendanceClass/queryAttendanceLog
  316. * @path /app/attendanceClass/queryAttendanceLog
  317. */
  318. @RequestMapping(value = "/queryAttendanceLog", method = RequestMethod.GET)
  319. public ResponseEntity<String> queryAttendanceLog(@RequestHeader(value = "store-id") String storeId,
  320. @RequestParam(name = "staffName", required = false) String staffName,
  321. @RequestParam(name = "staffId", required = false) String staffId,
  322. @RequestParam(name = "date", required = false) String date,
  323. @RequestParam(value = "page") int page,
  324. @RequestParam(value = "row") int row) {
  325. AttendanceLogDto attendanceLogDto = new AttendanceLogDto();
  326. attendanceLogDto.setPage(page);
  327. attendanceLogDto.setRow(row);
  328. attendanceLogDto.setStoreId(storeId);
  329. attendanceLogDto.setStaffId(staffId);
  330. attendanceLogDto.setStaffName(staffName);
  331. attendanceLogDto.setClockTime(date);
  332. return getAttendanceLogBMOImpl.get(attendanceLogDto);
  333. }
  334. }