123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package cn.com.qmth.scancentral.controller.admin;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Map;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.core.task.AsyncTaskExecutor;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import com.qmth.boot.api.annotation.Aac;
- import com.qmth.boot.api.constant.ApiConstant;
- import com.qmth.boot.api.utils.RequestUtil;
- import com.qmth.boot.core.concurrent.service.ConcurrentService;
- import com.qmth.boot.core.exception.ReentrantException;
- import cn.com.qmth.scancentral.controller.BaseController;
- import cn.com.qmth.scancentral.entity.AnswerCardEntity;
- import cn.com.qmth.scancentral.enums.LockType;
- import cn.com.qmth.scancentral.service.AdapteFileService;
- import cn.com.qmth.scancentral.service.AnswerCardService;
- import cn.com.qmth.scancentral.service.ExamService;
- import cn.com.qmth.scancentral.vo.UriVo;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import net.sf.json.JSONObject;
- @RestController
- @Api(tags = "卡格式接口")
- @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/card")
- @Aac(strict = false, auth = true)
- public class CardController extends BaseController {
- protected static final Logger log = LoggerFactory.getLogger(CardController.class);
- @Autowired
- private AnswerCardService answerCardService;
- @Resource
- private ConcurrentService concurrentService;
- @Autowired
- private AdapteFileService adapteFileService;
- @Autowired
- private ExamService examService;
- // @Qualifier("task-executor")
- @Autowired
- private AsyncTaskExecutor taskExecutor;
- @ApiOperation(value = "卡格式详情")
- @RequestMapping(value = "/info", method = RequestMethod.POST)
- public Map<String, Object> info(@RequestParam Long examId) {
- Map<String, Object> status = new HashMap<String, Object>();
- status.put("synching", concurrentService.isLocked(LockType.CARD_SYNC + "-" + examId));
- status.put("updateTime", examService.getById(examId).getCardSyncTime());
- Map<String, Object> result = new HashMap<String, Object>();
- result.put("status", status);
- result.put("answer", answerCardService.listByExamId(examId));
- result.put("package", new ArrayList<>());
- return result;
- }
- @ApiOperation(value = "创建/修改题卡卡格式")
- @RequestMapping(value = "/answer/save", method = RequestMethod.POST)
- public JSONObject answerSave(@RequestParam Long examId, @RequestParam(required = false) Integer number,
- @RequestParam(required = false) String subjectCode, @RequestParam(required = false) String parameter,
- @RequestParam(required = false) String remark, @RequestParam Integer paperCount,
- @RequestParam Boolean singlePage, @RequestParam String md5, @RequestParam(required = false) Integer dpi,
- @RequestParam MultipartFile file) {
- if (concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).tryLock()) {
- try {
- JSONObject result = new JSONObject();
- AnswerCardEntity card = answerCardService.save(getAccessUser(), examId, number, subjectCode, parameter,
- remark, paperCount, singlePage, md5, dpi, file);
- result.accumulate("number", card.getNumber());
- result.accumulate("updateTime", System.currentTimeMillis());
- return result;
- } finally {
- concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).unlock();
- }
- } else {
- throw new ReentrantException("正在同步卡格式,请稍后再试");
- }
- }
- @ApiOperation(value = "删除答题卡卡格式")
- @RequestMapping(value = "/answer/delete", method = RequestMethod.POST)
- public JSONObject answerDelete(@RequestParam Long examId, @RequestParam Integer number) {
- if (concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).tryLock()) {
- try {
- answerCardService.delete(getAccessUser(), examId, number);
- JSONObject result = new JSONObject();
- result.accumulate("number", number);
- result.accumulate("updateTime", System.currentTimeMillis());
- return result;
- } finally {
- concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).unlock();
- }
- } else {
- throw new ReentrantException("正在同步卡格式,请稍后再试");
- }
- }
- @ApiOperation(value = "答题卡适配卡格式上传")
- @RequestMapping(value = "/answer/adapte/upload", method = RequestMethod.POST)
- public UriVo adapteUpload(HttpServletRequest request, @RequestParam Long examId, @RequestParam Integer cardNumber,
- @RequestParam MultipartFile file, @RequestParam String md5, @RequestParam Integer dpi) {
- return adapteFileService.save(RequestUtil.getIpAddress(request), getAccessUser().getRole(), examId, cardNumber,
- md5, dpi, file);
- }
- @ApiOperation(value = "创建/修改签到表卡格式")
- @RequestMapping(value = "/package/save", method = RequestMethod.POST)
- public JSONObject packageSave() {
- JSONObject result = new JSONObject();
- return result;
- }
- }
|