|
|
@@ -17,6 +17,7 @@ import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.models.auth.In;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.shiro.SecurityUtils;
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
|
|
import org.jeecg.common.aspect.annotation.PermissionData;
|
|
|
@@ -25,6 +26,7 @@ import org.jeecg.common.system.api.ISysBaseAPI;
|
|
|
import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
import org.jeecg.common.system.query.QueryGenerator;
|
|
|
import org.jeecg.common.system.vo.DictModel;
|
|
|
+import org.jeecg.common.system.vo.LoginUser;
|
|
|
import org.jeecg.common.system.vo.SysDepartModel;
|
|
|
import org.jeecg.modules.smscheck.configs.CheckStateCode;
|
|
|
import org.jeecg.modules.smscheck.entity.*;
|
|
|
@@ -152,7 +154,34 @@ public class SmsCheckTaskController extends JeecgController<SmsCheckTask, ISmsCh
|
|
|
@ApiOperation(value = "稽核任务-编辑", notes = "稽核任务-编辑")
|
|
|
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
|
|
|
public Result<String> edit(@RequestBody SmsCheckTask smsCheckTask) {
|
|
|
- this.taskService.update(new SmsCheckTask().setTaskState(smsCheckTask.getTaskState()).setDescription(smsCheckTask.getDescription()),
|
|
|
+ this.taskService.update(new SmsCheckTask().setTaskState(smsCheckTask.getTaskState())
|
|
|
+ .setDescription(smsCheckTask.getDescription())
|
|
|
+ .setTaskStartTime(smsCheckTask.getTaskStartTime()).setTaskEndTime(smsCheckTask.getTaskEndTime()),
|
|
|
+ new UpdateWrapper<SmsCheckTask>().lambda().eq(SmsCheckTask::getId,smsCheckTask.getId()));
|
|
|
+ return Result.OK("编辑成功!");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 编辑(子稽核员)
|
|
|
+ *
|
|
|
+ * @param smsCheckTask 对象
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @AutoLog(value = "稽核任务-编辑 子稽核员")
|
|
|
+ @ApiOperation(value = "稽核任务-编辑 子稽核员", notes = "稽核任务-编辑 子稽核员")
|
|
|
+ @RequestMapping(value = "/edit/create/user", method = {RequestMethod.PUT, RequestMethod.POST})
|
|
|
+ @PermissionData(value = "/truck/task/edit/person")
|
|
|
+ public Result<String> editCreateUser(@RequestBody SmsCheckTask smsCheckTask) {
|
|
|
+
|
|
|
+
|
|
|
+ SmsCheckTask byId = taskService.getById(smsCheckTask.getId());
|
|
|
+ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
+ if (!byId.getCreateBy().equals(loginUser.getWorkNo())){
|
|
|
+ return Result.error("子稽核员不可操作非本人创建任务!");
|
|
|
+ }
|
|
|
+ this.taskService.update(new SmsCheckTask().setTaskState(smsCheckTask.getTaskState())
|
|
|
+ .setDescription(smsCheckTask.getDescription())
|
|
|
+ .setTaskStartTime(smsCheckTask.getTaskStartTime()).setTaskEndTime(smsCheckTask.getTaskEndTime()),
|
|
|
new UpdateWrapper<SmsCheckTask>().lambda().eq(SmsCheckTask::getId,smsCheckTask.getId()));
|
|
|
return Result.OK("编辑成功!");
|
|
|
}
|
|
|
@@ -543,6 +572,147 @@ public class SmsCheckTaskController extends JeecgController<SmsCheckTask, ISmsCh
|
|
|
return Result.OK("导入成功!导入成功条数" + ( listErro.size()-compareNum.get())+"。 导入失败条数"+ compareNum , listErro);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 通过excel导入数据
|
|
|
+ *
|
|
|
+ * @param taskId 任务id
|
|
|
+ * @param list 数据
|
|
|
+ * @return 导入结果
|
|
|
+ */
|
|
|
+ @PostMapping(value = "/{taskId}/importCustomerData/create/user")
|
|
|
+ @PermissionData(value = "truck/task/import/person")
|
|
|
+ public Result<?> importCustomerDataCreateuser(@PathVariable String taskId, @RequestBody List<SmsCheckCustomerInfoVo> list) throws ExecutionException, InterruptedException {
|
|
|
+ UUID uuid = UUID.randomUUID();
|
|
|
+ //1同一个任务 用户编号不可一致
|
|
|
+ //2 员工得存在
|
|
|
+ // 开始时间
|
|
|
+ long start = System.currentTimeMillis();
|
|
|
+ // List<SmsCheckCustomerInfo> dataList = new ArrayList<>();
|
|
|
+ //导入失败数据
|
|
|
+ List<SmsCheckCustomerInfoVo> listErro = new ArrayList<>();
|
|
|
+ int customerCount = 0;
|
|
|
+
|
|
|
+ List<SysUser> userList = sysUserService.list(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0));
|
|
|
+
|
|
|
+ Map<String, SysUser> userMap
|
|
|
+ = userList.stream().collect(Collectors.toMap(SysUser::getWorkNo, Function.identity(), (o, n) -> o));
|
|
|
+
|
|
|
+ AtomicInteger compareNum = new AtomicInteger(0);
|
|
|
+ Set<String>set =new HashSet<>();
|
|
|
+ SmsCheckTask byId = taskService.getById(taskId);
|
|
|
+ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
|
|
+ if (!byId.getCreateBy().equals(loginUser.getWorkNo())){
|
|
|
+ return Result.error("子稽核员不可导入非本人创建任务!");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (byId.getType()==2){
|
|
|
+ //客户信息所属类型:1:行短稽核 2:物联网业务稽核 3.复开审批 4.中继线稽核'
|
|
|
+
|
|
|
+ Map<Integer,SmsCheckCustomerInfoError>mapError = new HashMap<>();
|
|
|
+ Map<Integer,SmsCheckCustomerInfoVo> mapNormal =new HashMap<>();
|
|
|
+ Map<Integer,SmsCheckCustomerInfoVo> mapErrorVo =new HashMap<>();
|
|
|
+ int setSize =0;
|
|
|
+ int keys=0;
|
|
|
+ for (SmsCheckCustomerInfoVo smsCheckCustomerInfoVo : list) {
|
|
|
+ keys++;
|
|
|
+ String[] split = smsCheckCustomerInfoVo.getUserNo().trim().split("、");
|
|
|
+ String errNo="";
|
|
|
+ for (String s : split) {
|
|
|
+ setSize++;
|
|
|
+ set.add(s);
|
|
|
+ if (setSize!=set.size()){
|
|
|
+ setSize--;
|
|
|
+ errNo+=s+" ";
|
|
|
+ smsCheckCustomerInfoVo.setResult("0");
|
|
|
+ smsCheckCustomerInfoVo.setErrorMsg("用户编号"+errNo+"重复");
|
|
|
+ mapErrorVo.put(keys,smsCheckCustomerInfoVo);
|
|
|
+ }else {
|
|
|
+ if (StringUtils.isBlank(errNo)){
|
|
|
+ mapNormal.put(keys,smsCheckCustomerInfoVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<SmsCheckCustomerInfoVo> errorListVo =new ArrayList<>(mapErrorVo.values());
|
|
|
+ List<SmsCheckCustomerInfoError> errorList = new ArrayList<>(mapError.values());
|
|
|
+
|
|
|
+ list= new ArrayList<>(mapNormal.values());
|
|
|
+ list.addAll(errorListVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 每20条数据开启一条线程
|
|
|
+ int threadSize = 20;
|
|
|
+ // 总数据条数
|
|
|
+ int dataSize = list.size();
|
|
|
+ // 线程数
|
|
|
+ int threadNum = dataSize / threadSize + 1;
|
|
|
+ //暂定20个一组
|
|
|
+ boolean special = list.size() % threadSize == 0;
|
|
|
+
|
|
|
+ ExecutorService executorService = new ThreadPoolExecutor(threadNum, threadNum+5,
|
|
|
+ 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue<Runnable>(10) );
|
|
|
+
|
|
|
+ Map<String,List<SmsCheckCustomerInfoVo>> mapData = new HashMap<>();
|
|
|
+ List<SmsCheckCustomerInfoVo> cutList ;
|
|
|
+ for (int i = 0; i < threadNum; i++) {
|
|
|
+ //最后一次
|
|
|
+ if (i == threadNum - 1) {
|
|
|
+ if (special) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ mapData.put(""+i, list.subList( threadSize * i, list.size()));
|
|
|
+ } else {
|
|
|
+ mapData.put(""+i,list.subList( threadSize * i, threadSize * (i + 1)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String key : mapData.keySet()) {
|
|
|
+ List<SmsCheckCustomerInfoVo> smsCheckCustomerInfoVos = mapData.get(key);
|
|
|
+ ImportCustomerDataTask importCustomerDataTask = new ImportCustomerDataTask();
|
|
|
+ importCustomerDataTask.setUuid(uuid);
|
|
|
+ importCustomerDataTask.setTaskId(taskId);
|
|
|
+ importCustomerDataTask.setUserMap(userMap);
|
|
|
+ importCustomerDataTask.setList(smsCheckCustomerInfoVos);
|
|
|
+ importCustomerDataTask.setTaskService(taskService);
|
|
|
+ importCustomerDataTask.setCompanyService(companyService);
|
|
|
+ importCustomerDataTask.setSmsNumberService(smsNumberService);
|
|
|
+ importCustomerDataTask.setCompareNum(compareNum);
|
|
|
+ importCustomerDataTask.setCustomerInfoService(customerInfoService);
|
|
|
+
|
|
|
+ Future submit = executorService.submit(importCustomerDataTask);
|
|
|
+ List<SmsCheckCustomerInfoVo> o = (List<SmsCheckCustomerInfoVo>) submit.get();
|
|
|
+ listErro.addAll(o);
|
|
|
+ }
|
|
|
+ SmsCheckTask task = taskService.getById(taskId);
|
|
|
+ // 更新导入
|
|
|
+ if (list.size()-compareNum.get()>0) {
|
|
|
+ task.setCustomerCount(task.getCustomerCount() + (list.size()-compareNum.get()));
|
|
|
+ taskService.updateById(task);
|
|
|
+ }
|
|
|
+ if (listErro!=null && listErro.size()>0){
|
|
|
+ List<SmsCheckCustomerInfoError> smsCheckCustomerInfoErrors = new ArrayList<>();
|
|
|
+ for (SmsCheckCustomerInfoVo smsCheckCustomerInfoVo : listErro) {
|
|
|
+ if (StringUtils.isNotBlank(smsCheckCustomerInfoVo.getResult())&&smsCheckCustomerInfoVo.getResult().equals("0")){
|
|
|
+ SmsCheckCustomerInfoError smsCheckCustomerInfoError =new SmsCheckCustomerInfoError();
|
|
|
+ BeanUtils.copyProperties(smsCheckCustomerInfoVo, smsCheckCustomerInfoError);
|
|
|
+ smsCheckCustomerInfoError.setDelFlag(0);
|
|
|
+ smsCheckCustomerInfoError.setBatchNo(uuid.toString());
|
|
|
+ smsCheckCustomerInfoErrors.add(smsCheckCustomerInfoError);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //smsCheckCustomerInfoErrors.addAll(errorList);
|
|
|
+ boolean b = smsCheckCustomerInfoErrorService.saveOrUpdateBatch(smsCheckCustomerInfoErrors);
|
|
|
+ }
|
|
|
+ executorService.shutdown();
|
|
|
+ System.err.println("执行任务消耗了 :" + (System.currentTimeMillis() - start) + "毫秒");
|
|
|
+ return Result.OK("导入成功!导入成功条数" + ( listErro.size()-compareNum.get())+"。 导入失败条数"+ compareNum , listErro);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 校验客户信息
|
|
|
*
|