CardController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package cn.com.qmth.scancentral.controller.admin;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import javax.annotation.Resource;
  6. import javax.servlet.http.HttpServletRequest;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.core.task.AsyncTaskExecutor;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.RestController;
  15. import org.springframework.web.multipart.MultipartFile;
  16. import com.qmth.boot.api.annotation.Aac;
  17. import com.qmth.boot.api.constant.ApiConstant;
  18. import com.qmth.boot.api.utils.RequestUtil;
  19. import com.qmth.boot.core.concurrent.service.ConcurrentService;
  20. import com.qmth.boot.core.exception.ReentrantException;
  21. import cn.com.qmth.scancentral.controller.BaseController;
  22. import cn.com.qmth.scancentral.entity.AnswerCardEntity;
  23. import cn.com.qmth.scancentral.enums.LockType;
  24. import cn.com.qmth.scancentral.service.AdapteFileService;
  25. import cn.com.qmth.scancentral.service.AnswerCardService;
  26. import cn.com.qmth.scancentral.service.ExamService;
  27. import cn.com.qmth.scancentral.vo.UriVo;
  28. import io.swagger.annotations.Api;
  29. import io.swagger.annotations.ApiOperation;
  30. import net.sf.json.JSONObject;
  31. @RestController
  32. @Api(tags = "卡格式接口")
  33. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/card")
  34. @Aac(strict = false, auth = true)
  35. public class CardController extends BaseController {
  36. protected static final Logger log = LoggerFactory.getLogger(CardController.class);
  37. @Autowired
  38. private AnswerCardService answerCardService;
  39. @Resource
  40. private ConcurrentService concurrentService;
  41. @Autowired
  42. private AdapteFileService adapteFileService;
  43. @Autowired
  44. private ExamService examService;
  45. // @Qualifier("task-executor")
  46. @Autowired
  47. private AsyncTaskExecutor taskExecutor;
  48. @ApiOperation(value = "卡格式详情")
  49. @RequestMapping(value = "/info", method = RequestMethod.POST)
  50. public Map<String, Object> info(@RequestParam Long examId) {
  51. Map<String, Object> status = new HashMap<String, Object>();
  52. status.put("synching", concurrentService.isLocked(LockType.CARD_SYNC + "-" + examId));
  53. status.put("updateTime", examService.getById(examId).getCardSyncTime());
  54. Map<String, Object> result = new HashMap<String, Object>();
  55. result.put("status", status);
  56. result.put("answer", answerCardService.listByExamId(examId));
  57. result.put("package", new ArrayList<>());
  58. return result;
  59. }
  60. @ApiOperation(value = "创建/修改题卡卡格式")
  61. @RequestMapping(value = "/answer/save", method = RequestMethod.POST)
  62. public JSONObject answerSave(@RequestParam Long examId, @RequestParam(required = false) Integer number,
  63. @RequestParam(required = false) String subjectCode, @RequestParam(required = false) String parameter,
  64. @RequestParam(required = false) String remark, @RequestParam Integer paperCount,
  65. @RequestParam Boolean singlePage, @RequestParam String md5, @RequestParam(required = false) Integer dpi,
  66. @RequestParam MultipartFile file) {
  67. if (concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).tryLock()) {
  68. try {
  69. JSONObject result = new JSONObject();
  70. AnswerCardEntity card = answerCardService.save(getAccessUser(), examId, number, subjectCode, parameter,
  71. remark, paperCount, singlePage, md5, dpi, file);
  72. result.accumulate("number", card.getNumber());
  73. result.accumulate("updateTime", System.currentTimeMillis());
  74. return result;
  75. } finally {
  76. concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).unlock();
  77. }
  78. } else {
  79. throw new ReentrantException("正在同步卡格式,请稍后再试");
  80. }
  81. }
  82. @ApiOperation(value = "删除答题卡卡格式")
  83. @RequestMapping(value = "/answer/delete", method = RequestMethod.POST)
  84. public JSONObject answerDelete(@RequestParam Long examId, @RequestParam Integer number) {
  85. if (concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).tryLock()) {
  86. try {
  87. answerCardService.delete(getAccessUser(), examId, number);
  88. JSONObject result = new JSONObject();
  89. result.accumulate("number", number);
  90. result.accumulate("updateTime", System.currentTimeMillis());
  91. return result;
  92. } finally {
  93. concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).unlock();
  94. }
  95. } else {
  96. throw new ReentrantException("正在同步卡格式,请稍后再试");
  97. }
  98. }
  99. @ApiOperation(value = "答题卡适配卡格式上传")
  100. @RequestMapping(value = "/answer/adapte/upload", method = RequestMethod.POST)
  101. public UriVo adapteUpload(HttpServletRequest request, @RequestParam Long examId, @RequestParam Integer cardNumber,
  102. @RequestParam MultipartFile file, @RequestParam String md5, @RequestParam Integer dpi) {
  103. return adapteFileService.save(RequestUtil.getIpAddress(request), getAccessUser().getRole(), examId, cardNumber,
  104. md5, dpi, file);
  105. }
  106. @ApiOperation(value = "创建/修改签到表卡格式")
  107. @RequestMapping(value = "/package/save", method = RequestMethod.POST)
  108. public JSONObject packageSave() {
  109. JSONObject result = new JSONObject();
  110. return result;
  111. }
  112. }