Pārlūkot izejas kodu

1.之前未提代码

liuhy 2 gadi atpakaļ
vecāks
revīzija
48ace20813
27 mainītis faili ar 1031 papildinājumiem un 244 dzēšanām
  1. 0 0
      db/电信北区稽核.pdma.json
  2. 1 1
      tnc-base/tnc-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
  3. 155 0
      tnc-base/tnc-base-core/src/main/java/org/jeecg/common/util/BeanCopyUtil.java
  4. 12 0
      tnc-base/tnc-base-core/src/main/java/org/jeecg/common/util/BeanCopyUtilCallBack.java
  5. 16 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/configs/CheckTypeCode.java
  6. 60 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/configs/ShutdownLabelByCode.java
  7. 25 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SmsCheckCustomerInfoController.java
  8. 140 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SmsTruckCustomerDataController.java
  9. 152 233
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SpecialExaminationContrller.java
  10. 91 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmcTruckCheckLog.java
  11. 54 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmcTruckCheckLogVo.java
  12. 5 3
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsCheckCustomerInfo.java
  13. 107 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsCheckCustomerSpeciaInfo.java
  14. 72 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsTruckCustomerData.java
  15. 2 3
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SpecialExamination.java
  16. 13 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SpecialExaminationBatchVo.java
  17. 12 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmcTruckCheckLogMapper.java
  18. 9 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmsCheckCustomerSpeciaInfoMapper.java
  19. 13 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmsTruckCustomerDataMapper.java
  20. 9 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmcTruckCheckLogService.java
  21. 7 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmsCheckCustomerSpeciaInfoService.java
  22. 11 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmsTruckCustomerDataService.java
  23. 0 1
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SpecialExaminationService.java
  24. 36 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmcTruckCheckLogServiceImpl.java
  25. 11 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsCheckCustomerSpeciaInfoServiceImpl.java
  26. 15 0
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsTruckCustomerDataServiceImpl.java
  27. 3 3
      tnc-sms/src/main/java/org/jeecg/modules/smscheck/vo/SpecialExaminationCustomerVo.java

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
db/电信北区稽核.pdma.json


+ 1 - 1
tnc-base/tnc-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java

@@ -180,7 +180,7 @@ public class QueryGenerator {
 					value = replaceValue(rule,value);
 					// add -begin 添加判断为字符串时设为全模糊查询
 					//if( (rule==null || QueryRuleEnum.EQ.equals(rule)) && "class java.lang.String".equals(type)) {
-						// 可以设置左右模糊或全模糊,因人而异
+						// 可以设置左右模糊或全模糊,因人而异staff_username
 						//rule = QueryRuleEnum.LIKE;
 					//}
 					// add -end 添加判断为字符串时设为全模糊查询

+ 155 - 0
tnc-base/tnc-base-core/src/main/java/org/jeecg/common/util/BeanCopyUtil.java

@@ -0,0 +1,155 @@
+package org.jeecg.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.BeanCopyUtilCallBack;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.BeanWrapper;
+import org.springframework.beans.BeanWrapperImpl;
+
+import java.beans.PropertyDescriptor;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
+
+/**
+ * @Description list<Bean>拷贝工具类
+ * @ClassName BeanCopyUtil
+ * @Author Miss You BUG
+ * @Date 2020/6/19 14:24
+ * @Version 1.0
+ * <p>
+ * 版权声明:本文为CSDN博主「百块富翁-missyouBUG-renkaijiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
+ * 原文链接:https://blog.csdn.net/lingyancangqiong/article/details/118539165
+ */
+@Slf4j
+public class BeanCopyUtil extends BeanUtils {
+
+
+    /**
+     * <p>对象数据的拷贝</p>
+     *
+     * @param sources 数据源
+     * @param target  目标参数类型(eg: UserVo:new)
+     * @return
+     * @author Miss You BUG
+     * @Date 2020/6/19 15:20
+     */
+    public static <S, T> T copyProperties(S sources, Supplier<T> target) {
+        T t = target.get();
+        copyProperties(sources, t);
+        return t;
+    }
+
+    /**
+     * <p>带回调参数的对象数据的拷贝</p>
+     *
+     * @param sources 数据源
+     * @param target  目标参数类型(eg: BeanCopyUtil.copyProperties(user,UserVO:: new, (userDo,userVo) ->{
+     *                *                 userVo.setSex("1")})
+     * @return
+     * @author Miss You BUG
+     * @Date 2020/6/19 15:20
+     */
+    public static <S, T> T copyProperties(S sources, Supplier<T> target, BeanCopyUtilCallBack<S, T> callBack) {
+        T t = target.get();
+        copyProperties(sources, t);
+        if (callBack != null) {
+            callBack.callBack(sources, t);
+        }
+        return t;
+    }
+    /**
+     * 拷贝不为空的字段
+     * 使用场景:只想把 sources中有值的拷贝到target中,而不把target对应sources中没有值的赋值为null
+     * 使用 BeanUtils.copyProperties();会全量拷贝,包括null
+     *
+     * @param sources 数据源
+     * @param target  目标
+     * @param <S>     数据源泛型
+     * @param <T>     目标泛型
+     * @return 目标数据
+     */
+    public static <S, T> T copyNotEmptyProperties(S sources, T target) {
+        copyProperties(sources, target, getNullPropertyNames(sources));
+        return target;
+    }
+
+    /**
+     * 拷贝不为空的字段:带回调参数
+     * 使用场景:只想把 sources中有值的拷贝到target中,而不把target对应sources中没有值的赋值为null
+     * 使用 BeanUtils.copyProperties();会全量拷贝,包括null
+     *
+     * @param sources 数据源
+     * @param target  目标
+     * @param <S>     数据源泛型
+     * @param <T>     目标泛型
+     * @return 目标数据
+     */
+    public static <S, T> T copyNotEmptyProperties(S sources, T target, BeanCopyUtilCallBack<S, T> callBack) {
+        copyProperties(sources, target, getNullPropertyNames(sources));
+        if (callBack != null) {
+            callBack.callBack(sources, target);
+        }
+        return target;
+    }
+
+
+    /**
+     * <p>集合数据的拷贝</p>
+     *
+     * @param sources 数据源
+     * @param target  目标参数类型(eg: UserVo:new)
+     * @return
+     * @author Miss You BUG
+     * @Date 2020/6/19 15:06
+     */
+    public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target) {
+        return copyListProperties(sources, target, null);
+    }
+
+
+    /**
+     * <p>带回调参数的集合数据的拷贝</p>
+     *
+     * @param sources  数据源类
+     * @param target   目标类::new (eg: UserVO::new)
+     * @param callBack 回调函数 eg: BeanCopyUtil.copyListProperties(userLiset,UserVO:: new, (userDo,userVo) ->{
+     *                 userVo.setSex("1");
+     *                 userVO.setName(userDo.getUserName());
+     *                 })
+     * @return List<T> List<Bean>
+     * @author Miss You BUG
+     * @Date 2020/6/19 15:09
+     */
+    public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target, BeanCopyUtilCallBack<S, T> callBack) {
+        List<T> list = new ArrayList<>(sources.size());
+        for (S source : sources) {
+            T t = target.get();
+            copyProperties(source, t);
+            list.add(t);
+            if (callBack != null) {
+                callBack.callBack(source, t);
+            }
+        }
+        return list;
+    }
+
+
+    /**
+     * 获取为空的字段
+     */
+    private static String[] getNullPropertyNames(Object source) {
+        BeanWrapper src = new BeanWrapperImpl(source);
+        PropertyDescriptor[] pds = src.getPropertyDescriptors();
+        Set<String> emptyNames = new HashSet<>();
+        for (PropertyDescriptor pd : pds) {
+            Object srcValue = src.getPropertyValue(pd.getName());
+            if (srcValue == null) {
+                emptyNames.add(pd.getName());
+            }
+        }
+        return emptyNames.toArray(new String[emptyNames.size()]);
+    }
+}

+ 12 - 0
tnc-base/tnc-base-core/src/main/java/org/jeecg/common/util/BeanCopyUtilCallBack.java

@@ -0,0 +1,12 @@
+package org.jeecg.common.util;
+
+/**
+ * @Description 默认回调方法
+ * @ClassName BeanCopyUtilCallBack
+ * @Author Miss You BUG
+ * @Date 2020/6/19 14:22
+ * @Version 1.0
+ */
+public interface BeanCopyUtilCallBack<S, T> {
+    void callBack(S s, T t);
+}

+ 16 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/configs/CheckTypeCode.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.smscheck.configs;
+
+/**
+ * 任务信息类型编码
+ * 1:行短稽核 2:物联网业务稽核 3.复开审批 4.中继线稽核
+ */
+public final class CheckTypeCode {
+    /**行短*/
+    public static final Integer CHECK_TYPE_1 = 1;
+    /**物联网*/
+    public static final Integer CHECK_TYPE_2 = 2;
+    /**特审复开审批*/
+    public static final Integer CHECK_TYPE_3 = 3;
+    /**中继线*/
+    public static final Integer CHECK_TYPE_4 = 4;
+}

+ 60 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/configs/ShutdownLabelByCode.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.smscheck.configs;
+/**
+ * 特审复开审批关停标签枚举
+ */
+public enum ShutdownLabelByCode {
+
+    ShutdownLabel0("0", "安防停机(高危漫游地)"), ShutdownLabel1("1", "安防关停(紫名单)"),
+    ShutdownLabel2("2", "安防停机(专班研判)"),ShutdownLabel3("3", "安防停机(可复开)"),
+    ShutdownLabel4("4", "沉默移动卡保护性单停"),ShutdownLabel5("5", "集团一点停复机(单停)"),
+    ShutdownLabel6("6", "大数据保护停机单停"),ShutdownLabel7("7", "工信部断卡单停"),
+    ShutdownLabel8("8", "实人核验未通过关停(单停)");
+
+
+
+
+
+    private String code;
+    private String msg;
+
+
+    ShutdownLabelByCode(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    //这里就是将code翻译成对应的中文
+    public static String msg(String code) {
+        ShutdownLabelByCode[] resultStates = values();
+        for (ShutdownLabelByCode resultState : resultStates) {
+            if (resultState.code().equals(code)) {
+                return resultState.msg();
+            }
+        }
+        return null;
+    }
+
+    public String code(){
+        return this.code;
+    }
+
+    public String msg(){
+        return this.msg;
+    }
+
+
+    public String getCode() {
+        return code;
+    }
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getMsg() {
+        return msg;
+    }
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+    }
+
+

+ 25 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SmsCheckCustomerInfoController.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.smscheck.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Dict;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -20,7 +21,9 @@ 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.LoginUser;
+import org.jeecg.common.util.BeanCopyUtil;
 import org.jeecg.modules.smscheck.configs.CheckStateCode;
+import org.jeecg.modules.smscheck.configs.CheckTypeCode;
 import org.jeecg.modules.smscheck.entity.*;
 import org.jeecg.modules.smscheck.service.*;
 import org.jeecg.modules.smscheck.vo.SmsCheckCustomerInfoTaskVo;
@@ -31,6 +34,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 
 /**
@@ -78,6 +82,26 @@ public class SmsCheckCustomerInfoController extends JeecgController<SmsCheckCust
         return Result.OK(pageList);
     }
 
+    @ApiOperation(value = "特审复开客户信息-分页列表查询", notes = "特审复开客户信息-分页列表查询")
+    @GetMapping(value = "/special/list")
+    @PermissionData(pageComponent = "smscheck/modules/TaskCheckList")
+    public Result<IPage<SmsCheckCustomerSpeciaInfo>> queryPageListSpecial(SmsCheckCustomerInfo smsCheckCustomerInfo,
+                                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                             HttpServletRequest request) {
+        smsCheckCustomerInfo.setType(CheckTypeCode.CHECK_TYPE_3);
+        QueryWrapper<SmsCheckCustomerInfo> queryWrapper = QueryGenerator.initQueryWrapper(smsCheckCustomerInfo, request.getParameterMap());
+        Page<SmsCheckCustomerInfo> page = new Page<>(pageNo, pageSize);
+        IPage<SmsCheckCustomerInfo> pageList = customerInfoService.page(page, queryWrapper);
+        List<SmsCheckCustomerInfo> records = pageList.getRecords();
+        List<SmsCheckCustomerSpeciaInfo> smsCheckCustomerSpeciaInfos = BeanCopyUtil.copyListProperties(records, SmsCheckCustomerSpeciaInfo::new);
+        IPage<SmsCheckCustomerSpeciaInfo> smsCheckCustomerSpeciaInfoIPage = new Page<>();
+        BeanUtil.copyProperties(pageList,smsCheckCustomerSpeciaInfoIPage);
+        smsCheckCustomerSpeciaInfoIPage.setRecords(smsCheckCustomerSpeciaInfos);
+        return Result.OK(smsCheckCustomerSpeciaInfoIPage);
+    }
+
+
     /**
      * 分页列表查询
      *
@@ -260,6 +284,7 @@ public class SmsCheckCustomerInfoController extends JeecgController<SmsCheckCust
         return super.exportXls(request, smsCheckCustomerInfo, SmsCheckCustomerInfo.class, "客户信息");
     }
 
+
     /**
      * 通过excel导入数据
      *

+ 140 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SmsTruckCustomerDataController.java

@@ -0,0 +1,140 @@
+package org.jeecg.modules.smscheck.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.A;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.smscheck.configs.CheckStateCode;
+import org.jeecg.modules.smscheck.entity.*;
+import org.jeecg.modules.smscheck.service.ISmsCheckCustomerInfoService;
+import org.jeecg.modules.smscheck.service.SmcTruckCheckLogService;
+import org.jeecg.modules.smscheck.service.SmsTruckCustomerDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 中继线
+ */
+@Api(tags = "中继线数据文件")
+@RestController
+@RequestMapping("/smsTurck/customerData")
+@Slf4j
+public class SmsTruckCustomerDataController  extends JeecgController<SmsTruckCustomerData, SmsTruckCustomerDataService> {
+    /**
+     * 客户信息业务
+     */
+    @Autowired
+    private ISmsCheckCustomerInfoService infoService;
+
+    @Autowired
+    private SmsTruckCustomerDataService smsTruckCustomerDataService;
+    /**
+     * 中继线稽核结果
+     */
+    @Autowired
+    private SmcTruckCheckLogService smcTruckCheckLogService;
+
+
+    //日志
+    @AutoLog(value = "中继线客户资料-插入修改")
+    //API文档
+    @ApiOperation(value = "中继线客户资料-插入修改", notes = "中继线客户资料-插入修改")
+    @PostMapping(value = "/edit/info")
+    public Result<String> editLot(@RequestBody SmsTruckCustomerData smsTruckCustomerData) {
+        String infoId = smsTruckCustomerData.getInfoId();
+        if (StringUtils.isEmpty(infoId)) {
+            return Result.error("客户编码不能为空");
+        }
+        if (null == infoService.getById(infoId)) {
+            return Result.error("客户信息不存在");
+        }
+        LambdaQueryWrapper<SmsTruckCustomerData> queryWrapperData = new LambdaQueryWrapper<>();
+        queryWrapperData.eq(SmsTruckCustomerData::getInfoId, smsTruckCustomerData.getInfoId());
+        List<SmsTruckCustomerData> list = smsTruckCustomerDataService.list(queryWrapperData);
+        if (list.size() == 0) {
+            smsTruckCustomerDataService.save(smsTruckCustomerData);
+        } else {
+            //获取ID
+            String id = list.get(0).getId();
+            smsTruckCustomerData.setId(id);
+            smsTruckCustomerDataService.updateById(smsTruckCustomerData);
+        }
+        SmsCheckCustomerInfo customerInfo = infoService.getById(infoId);
+        customerInfo.setCheckState(CheckStateCode.CHECK_STSTE_2);
+        infoService.updateById(customerInfo);
+        return Result.OK("编辑成功!");
+    }
+
+
+    @AutoLog(value = "中继线资料-详情")
+    @ApiOperation(value = "中继线资料-详情", notes = "中继线资料-详情")
+    @PostMapping(value = "/query/infoId")
+    public Result<SmsTruckCustomerData> queryByInfoId(@RequestBody SmsTruckCustomerData smsTruckCustomerData) {
+        //客户ID
+        String infoId = smsTruckCustomerData.getInfoId();
+        if (StringUtils.isEmpty(infoId)) {
+            return Result.error("客户编码不能为空");
+        }
+        LambdaQueryWrapper<SmsTruckCustomerData> queryWrapperData = new LambdaQueryWrapper<>();
+        queryWrapperData.eq(SmsTruckCustomerData::getInfoId, smsTruckCustomerData.getInfoId());
+        SmsTruckCustomerData data = smsTruckCustomerDataService.getOne(queryWrapperData);
+        return Result.OK("查询完成", data);
+    }
+
+    @AutoLog(value = "物联网客户资料-插入修改")
+    @ApiOperation(value = "物联网客户资料-插入修改", notes = "物联网客户资料-插入修改")
+    @PostMapping(value = "/check/info")
+    public Result<String> editLotLog(@RequestBody SmcTruckCheckLog smcTruckCheckLog)  {
+        try {
+            //客户信息ID
+            String infoId = smcTruckCheckLog.getInfoId();
+            //客户资料ID
+            String dataId = smcTruckCheckLog.getDataId();
+            if (StringUtils.isEmpty(infoId) || StringUtils.isEmpty(dataId)) {
+                return Result.error("客户编码不能为空");
+            }
+            SmsCheckCustomerInfo info = infoService.getById(infoId);
+            if (null == infoService.getById(infoId)) {
+                return Result.error("客户信息不存在");
+            }
+            //任务ID
+            String taskId = info.getTaskId();
+            smcTruckCheckLog.setTaskId(taskId);
+            LambdaQueryWrapper<SmcTruckCheckLog> queryWrapperData = new LambdaQueryWrapper<>();
+            queryWrapperData.eq(SmcTruckCheckLog::getDataId, smcTruckCheckLog.getDataId());
+            List<SmcTruckCheckLog> lotList = smcTruckCheckLogService.list(queryWrapperData);
+            if (lotList.size() == 0) {
+                smcTruckCheckLogService.save(smcTruckCheckLog);
+            } else {
+                String id = lotList.get(0).getId();
+                smcTruckCheckLog.setId(id);
+                smcTruckCheckLogService.updateById(smcTruckCheckLog);
+            }
+            SmcTruckCheckLogVo smcTruckCheckLogVo = new SmcTruckCheckLogVo();
+            BeanUtil.copyProperties(smcTruckCheckLog,smcTruckCheckLogVo);
+            //判断客户信息稽核结果
+            Boolean status = smcTruckCheckLogService.checkStatus(smcTruckCheckLogVo);
+            int lotStatus = status ? 5 : 4;
+            //修改客户信息稽核结果
+            info.setCheckState(lotStatus);
+            infoService.updateById(info);
+            return Result.OK("稽核成功!");
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+}
+

+ 152 - 233
tnc-sms/src/main/java/org/jeecg/modules/smscheck/controller/SpecialExaminationContrller.java

@@ -7,6 +7,7 @@ import cn.hutool.core.lang.Tuple;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,15 +18,21 @@ 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;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 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.util.MinioUtil;
+import org.jeecg.common.util.UUIDGenerator;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.config.shiro.ShiroRealm;
 import org.jeecg.modules.smscheck.configs.CheckStateCode;
+import org.jeecg.modules.smscheck.configs.CheckTypeCode;
+import org.jeecg.modules.smscheck.configs.ShutdownLabelByCode;
 import org.jeecg.modules.smscheck.entity.*;
 import org.jeecg.modules.smscheck.service.*;
 import org.jeecg.modules.smscheck.vo.SmsCheckCustomerInfoVo;
@@ -36,11 +43,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -48,7 +57,7 @@ import java.util.List;
 @RestController
 @RequestMapping("/special/examination")
 @Slf4j
-public class SpecialExaminationContrller {
+public class SpecialExaminationContrller extends JeecgController<SmsCheckCustomerSpeciaInfo, SmsCheckCustomerSpeciaInfoService> {
 
     @Resource
     private SpecialExaminationService specialExaminationService;
@@ -76,7 +85,6 @@ public class SpecialExaminationContrller {
     @Autowired
     private ISysBaseAPI sysBaseApi;
 
-
     @ApiOperation(value = "客户资料-信息查询查询", notes = "客户资料-个人列表查询")
     @PostMapping(value = "/find/user/id")
     public Result<?> findUserId(@RequestBody SpecialExamination specialExamination) {
@@ -166,201 +174,25 @@ public class SpecialExaminationContrller {
         return Result.OK(pageList);
     }
 
-    @AutoLog(value = "特审复开审批号-添加")
-    @ApiOperation(value = "特审复开审批号-添加", notes = "特审复开审批号-添加")
-    @PostMapping(value = "/upload/files")
-    public Result<?> uploadFiles(HttpServletRequest request) {
-        String infoId = request.getParameter("infoId");
-        if (null == infoService.getById(infoId)) {
+    @AutoLog(value = "特审复开审批-添加")
+    @ApiOperation(value = "特审复开审批-添加", notes = "特审复开审批-添加")
+    @PostMapping(value = "/edit/info")
+    public Result<?> uploadFiles(@RequestBody SpecialExamination specialExamination) {
+        String infoId = specialExamination.getInfoId();
+        SmsCheckCustomerInfo customerInfo = infoService.getById(infoId);
+        if (null == customerInfo) {
             return Result.error("客户信息不存在");
         }
-
-        Result<?> result = new Result<>();
-        String bizPath = request.getParameter("biz");
-        //LOWCOD-2580 sys/common/upload接口存在任意文件上传漏洞
-        if (oConvertUtils.isNotEmpty(bizPath) && (bizPath.contains("../") || bizPath.contains("..\\"))) {
-            throw new JeecgBootException("上传目录bizPath,格式非法!");
-        }
-        if (oConvertUtils.isEmpty(bizPath)) {
-            bizPath = "";
-        }
-
-        //关停标签
-        String shutdownLabel = request.getParameter("shutdownLabel");
-        //材料标签
-        String materialLabel = request.getParameter("materialLabel");
-        //用户标签
-        String userLable = request.getParameter("userLable");
-        //客户名称/使用人名称
-        String customerName = request.getParameter("customerName");
-        //复开号码
-        String openingNumber = request.getParameter("openingNumber");
-
-        if (StrUtil.isBlank(shutdownLabel) && StrUtil.isBlank(materialLabel)
-                || StrUtil.isBlank(userLable) || StrUtil.isBlank(customerName)
-                || StrUtil.isBlank(openingNumber)) {
-            return Result.error("参数不全");
-        }
-
-        Integer shutdownLabelInt = Integer.valueOf(shutdownLabel);
-        Integer materialLabelInt = Integer.valueOf(materialLabel);
-        Integer userLableInt = Integer.valueOf(userLable);
-
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-
-        //单位名称
-        String unitName = request.getParameter("unitName");
-        //关停时间
-        String shutdownTime = request.getParameter("shutdownTime");
-        //申请复开原因
-        String reasonReopening = request.getParameter("reasonReopening");
-
-
-        String filePathIdCard = null;
-        List<MultipartFile> fileListIdCard = multipartRequest.getFiles("fileListIdCard");
-        for (MultipartFile file : fileListIdCard) {
-            String file_url = MinioUtil.upload(file, bizPath);
-            if (oConvertUtils.isEmpty(file_url)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-            if (filePathIdCard == null) {
-                filePathIdCard = file_url;
-            } else {
-                filePathIdCard = filePathIdCard + "," + file_url;
-            }
-        }
-
-        String filePathUserCertificate = null;
-        List<MultipartFile> fileListUserCertificate = multipartRequest.getFiles("fileListUserCertificate");
-        for (MultipartFile file : fileListUserCertificate) {
-            String file_url = MinioUtil.upload(file, bizPath);
-            if (oConvertUtils.isEmpty(file_url)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-            if (filePathUserCertificate == null) {
-                filePathUserCertificate = file_url;
-            } else {
-                filePathUserCertificate = filePathUserCertificate + "," + file_url;
-            }
-        }
-
-
-        MultipartFile fileListHandCertificate = multipartRequest.getFile("fileListHandCertificate");
-        String filePathHandCertificate = null;
-        if (fileListHandCertificate != null) {
-            filePathHandCertificate = MinioUtil.upload(fileListHandCertificate, bizPath);
-            if (oConvertUtils.isEmpty(filePathHandCertificate)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListNumberCard = multipartRequest.getFile("fileListNumberCard");
-        String filePathNumberCard = null;
-        if (fileListNumberCard != null) {
-            filePathNumberCard = MinioUtil.upload(fileListNumberCard, bizPath);
-            if (oConvertUtils.isEmpty(filePathNumberCard)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListLetter = multipartRequest.getFile("fileListLetter");
-        String filePathLetter = null;
-        if (fileListLetter != null) {
-            filePathLetter = MinioUtil.upload(fileListLetter, bizPath);
-            if (oConvertUtils.isEmpty(filePathLetter)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListBusiness = multipartRequest.getFile("fileListBusiness");
-        String filePathBusiness = null;
-        if (fileListBusiness != null) {
-            filePathBusiness = MinioUtil.upload(fileListBusiness, bizPath);
-            if (oConvertUtils.isEmpty(filePathBusiness)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListIntroduction = multipartRequest.getFile("fileListIntroduction");
-        String filePathIntroduction = null;
-        if (fileListIntroduction != null) {
-            filePathIntroduction = MinioUtil.upload(fileListIntroduction, bizPath);
-            if (oConvertUtils.isEmpty(filePathIntroduction)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListVoucher = multipartRequest.getFile("fileListVoucher");
-        String filePathVoucher = null;
-        if (fileListVoucher != null) {
-            filePathVoucher = MinioUtil.upload(fileListVoucher, bizPath);
-            if (oConvertUtils.isEmpty(filePathVoucher)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile fileListVideo = multipartRequest.getFile("fileListVideo");
-        String filePathVideo = null;
-        if (fileListVideo != null) {
-            filePathVideo = MinioUtil.upload(fileListVideo, bizPath);
-            if (oConvertUtils.isEmpty(filePathVideo)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile specialReviewForm = multipartRequest.getFile("specialReviewForm");
-        String filePathSpecialReviewForm = null;
-        if (specialReviewForm != null) {
-            filePathSpecialReviewForm = MinioUtil.upload(specialReviewForm, bizPath);
-            if (oConvertUtils.isEmpty(filePathSpecialReviewForm)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
-        }
-
-        MultipartFile nameFindCompliance = multipartRequest.getFile("nameFindCompliance");
-        String filePathNameFindCompliance = null;
-        if (nameFindCompliance != null) {
-            filePathNameFindCompliance = MinioUtil.upload(nameFindCompliance, bizPath);
-            if (oConvertUtils.isEmpty(filePathNameFindCompliance)) {
-                return Result.error("上传失败,请检查配置信息是否正确!");
-            }
+        if (CheckStateCode.CHECK_STSTE_5.equals(customerInfo.getCheckState())){
+            return Result.error("该资料已经通过稽核不可再次修改");
         }
-        //系统实名制备注信息
-        String nameFindComplianceRemark = request.getParameter("nameFindComplianceRemark");
-
-        SpecialExamination specialExamination = new SpecialExamination();
-        specialExamination.setInfoId(infoId);
-        specialExamination.setShutdownLabel(shutdownLabelInt);
-        specialExamination.setMaterialLabel(materialLabelInt);
-        specialExamination.setUserLable(userLableInt);
-        specialExamination.setOpeningNumber(openingNumber);
-        specialExamination.setCustomerName(customerName);
-        specialExamination.setUnitName(unitName);
-        specialExamination.setShutdownTime(shutdownTime);
-        specialExamination.setReasonReopening(reasonReopening);
-        specialExamination.setIdCard(filePathIdCard);
-        specialExamination.setHandCertificate(filePathHandCertificate);
-        specialExamination.setNumberCard(filePathNumberCard);
-        specialExamination.setLetterCommitment(filePathLetter);
-        specialExamination.setBusinessLicense(filePathBusiness);
-        specialExamination.setLetterIntroduction(filePathIntroduction);
-        specialExamination.setUserCertificate(filePathUserCertificate);
-        specialExamination.setConsumptionVoucher(filePathVoucher);
-        specialExamination.setCommitmentVideo(filePathVideo);
-        specialExamination.setNameFindCompliance(filePathNameFindCompliance);
-        specialExamination.setSpecialReviewForm(filePathSpecialReviewForm);
-        //系统实名制备注信息
-        specialExamination.setNameFindComplianceRemark(nameFindComplianceRemark);
 
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         specialExamination.setCreateUser(sysUser.getUsername());
         specialExamination.setStaffNo(sysUser.getWorkNo());
-
         specialExamination.setStatus(0);
-
         LambdaQueryWrapper<SpecialExamination> queryWrapperData = new LambdaQueryWrapper<>();
         queryWrapperData.eq(SpecialExamination::getInfoId, infoId);
-
         List<SpecialExamination> list = specialExaminationService.list(queryWrapperData);
         if (list.size() == 0) {
             specialExaminationService.save(specialExamination);
@@ -368,12 +200,65 @@ public class SpecialExaminationContrller {
             specialExamination.setId(list.get(0).getId());
             specialExaminationService.updateById(specialExamination);
         }
-        SmsCheckCustomerInfo customerInfo = infoService.getById(infoId);
+        //修改客户信息列;关停标签/有无特审单
+        //客户信息状态
         customerInfo.setCheckState(CheckStateCode.CHECK_STSTE_2);
+        //获取关停标签
+        String shutdownLabel = ShutdownLabelByCode.msg(specialExamination.getShutdownLabel().toString());
+        customerInfo.setShutdownLabel(shutdownLabel);
+        //获取材料标签=是否特审
+        String materialLabel = specialExamination.getMaterialLabel() == 0 ? "是" : "否";
+        customerInfo.setMaterialLabel(materialLabel);
         infoService.updateById(customerInfo);
         return Result.OK("已成功提交申请");
     }
 
+    @AutoLog(value = "特审复开审批-资料批量上传")
+    @ApiOperation(value = "特审复开审批-资料批量上传", notes = "特审复开审批-资料批量上传")
+    @PostMapping(value = "/batch/edit/info")
+    public Result<?> batchUploadFiles(@RequestBody SpecialExaminationBatchVo specialExaminationBatchVo) {
+        List<String> infoIds = specialExaminationBatchVo.getInfoIds();
+        if (infoIds.size() == 0) {
+            return Result.error("客户信息不能为空");
+        }
+        for (String infoId : infoIds) {
+            //获取客户信息
+            SmsCheckCustomerInfo customerInfo = infoService.getById(infoId);
+            if ( CheckStateCode.CHECK_STSTE_5.equals(customerInfo.getCheckState())){
+                //待稽核客户信息不能修改
+                continue;
+            }
+            SpecialExamination specialExamination = new SpecialExamination();
+            BeanUtil.copyProperties(specialExaminationBatchVo, specialExamination);
+            LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            specialExamination.setCreateUser(sysUser.getUsername());
+            specialExamination.setStaffNo(sysUser.getWorkNo());
+            specialExamination.setStatus(0);
+            specialExamination.setInfoId(infoId);
+            LambdaQueryWrapper<SpecialExamination> queryWrapperData = new LambdaQueryWrapper<>();
+            queryWrapperData.eq(SpecialExamination::getInfoId, infoId);
+            List<SpecialExamination> list = specialExaminationService.list(queryWrapperData);
+            if (list.size() == 0) {
+                specialExaminationService.save(specialExamination);
+            } else {
+                specialExamination.setId(list.get(0).getId());
+                specialExaminationService.updateById(specialExamination);
+            }
+
+            //客户信息状态
+            customerInfo.setCheckState(CheckStateCode.CHECK_STSTE_2);
+            //修改客户信息列;关停标签/有无特审单
+            //获取关停标签
+            String shutdownLabel = ShutdownLabelByCode.msg(specialExamination.getShutdownLabel().toString());
+            customerInfo.setShutdownLabel(shutdownLabel);
+            //获取材料标签=是否特审
+            String materialLabel = specialExamination.getMaterialLabel() == 0 ? "是" : "否";
+            customerInfo.setMaterialLabel(materialLabel);
+            infoService.updateById(customerInfo);
+        }
+        return Result.OK("已成功提交申请");
+    }
+
     @AutoLog(value = "特审复开审批号-添加")
     @ApiOperation(value = "特审复开审批号-添加", notes = "特审复开审批号-添加")
     @PostMapping(value = "/add")
@@ -427,10 +312,10 @@ public class SpecialExaminationContrller {
     }
 
     /**
-     * 通过excel导入数据
+     * 读取excel数据
      *
      * @param file 请求
-     * @return 导入结果
+     * @return 读取结果
      */
     @PostMapping(value = "/importCustomerExcel")
     public Result<?> importCustomerExcel(@RequestPart("file") MultipartFile file) {
@@ -439,7 +324,6 @@ public class SpecialExaminationContrller {
             return Result.error("文件类型不正确!请导入文件类型->.xlsx或.xls");
         }
         Dict dict = new Dict();
-
         ImportParams params = new ImportParams();
         params.setTitleRows(0);
         try {
@@ -448,21 +332,9 @@ public class SpecialExaminationContrller {
                     file.getInputStream(), SpecialExaminationCustomerVo.class, params);
             List<SpecialExaminationCustomerVo> voList = new ArrayList<>();
             int errorCount = 0;
-
-            // 获取所有字典值
-            List<DictModel> dictModels = sysBaseApi.getDictItems("user_type");
-            Dict dictItemMap = Dict.create();
-            dictModels.forEach(model -> {
-                dictItemMap.put(model.getValue(), model.getText());
-            });
-
-            Tuple dictTuple = new Tuple(dictItemMap);
-
             for (SpecialExaminationCustomerVo vo : list) {
-                if (ObjectUtil.isNotNull(vo)) {
-                    if (StrUtil.isNotBlank(vo.getErrorMsg())) {
-                        errorCount++;
-                    }
+                if (StringUtils.isNotEmpty(vo.getCustomerName()) && StringUtils.isNotEmpty(vo.getSmsNumber())
+                        && vo.getMaterialLabel() != null && StringUtils.isNotEmpty(vo.getNameFindCompliance())) {
                     voList.add(vo);
                 }
             }
@@ -477,7 +349,7 @@ public class SpecialExaminationContrller {
 
 
     /**
-     * 通过excel导入数据
+     * 导入excel数据
      *
      * @param taskId 任务id
      * @param list   数据
@@ -486,47 +358,36 @@ public class SpecialExaminationContrller {
     @PostMapping(value = "/{taskId}/importCustomerData")
     public Result<?> importCustomerData(@PathVariable String taskId, @RequestBody List<SpecialExaminationCustomerVo> list) {
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        List<SmsCheckCustomerInfo> dataList = new ArrayList<>();
+        String generate = UUIDGenerator.generate();
         //导入失败数据
-        List<SpecialExaminationCustomerVo> listErro = new ArrayList<>();
+        List<SpecialExaminationCustomerVo> listExcel = new ArrayList<>();
         int customerCount = 0;
         for (int i = 0; i < list.size(); i++) {
             SpecialExaminationCustomerVo infoVo = list.get(i);
-            infoVo.setTaskId(taskId);
             SmsCheckCustomerInfo info = new SmsCheckCustomerInfo();
             BeanUtil.copyProperties(infoVo, info, true);
+            info.setTaskId(generate);
             info.setStaffUsername(sysUser.getUsername());
             info.setStaffName(sysUser.getRealname());
             info.setDelFlag(CommonConstant.DEL_FLAG_0);
             // 0:未处理;1:未完善;2:待稽核;3:待整改;4:已整改;5:稽核通过;
-            info.setCheckState(0);
-            dataList.add(info);
-            info.setTaskId(taskId);
-            long count = customerInfoService.count(
-                    new LambdaQueryWrapper<SmsCheckCustomerInfo>()
-                            .eq(SmsCheckCustomerInfo::getTaskId, info.getTaskId())
-                            .eq(SmsCheckCustomerInfo::getUserNo, info.getUserNo())
-                            .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0));
-            if (count > 0) {
-                infoVo.setResult("0");
-                infoVo.setErrorMsg("公司信息已存在");
-                listErro.add(infoVo);
-                // TODO 重复处理,放校验里面?
-//				 return Result.error("客户[" + info.getCustomerNo() + "]已存在!");
-            } else {
+            info.setCheckState(CheckStateCode.CHECK_STSTE_0);
+            info.setType(CheckTypeCode.CHECK_TYPE_3);
+            if (StringUtils.isNotEmpty(info.getCustomerName())
+                    && StringUtils.isNotEmpty(info.getSmsNumber())
+                    && StringUtils.isNotEmpty(info.getMaterialLabel())
+                    && StringUtils.isNotEmpty(info.getNameFindCompliance())
+            ) {
+                infoVo.setResult("1");
                 customerCount++;
                 customerInfoService.save(info);
-                infoVo.setResult("1");
-                listErro.add(infoVo);
+            } else {
+                infoVo.setResult("0");
+                infoVo.setErrorMsg("缺失必填项");
             }
+            listExcel.add(infoVo);
         }
-        SmsCheckTask task = taskService.getById(taskId);
-        // 更新导入
-        if (customerCount > 0) {
-            task.setCustomerCount(task.getCustomerCount() + customerCount);
-            taskService.updateById(task);
-        }
-        return Result.OK("导入成功!导入条数" + customerCount, listErro);
+        return Result.OK("导入成功!导入条数" + customerCount, listExcel);
     }
 
 
@@ -587,5 +448,63 @@ public class SpecialExaminationContrller {
         return Result.ok(one);
     }
 
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXlsSpecial(HttpServletRequest request, SmsCheckCustomerSpeciaInfo smsCheckCustomerSpeciaInfo) {
+        return super.exportXls(request, smsCheckCustomerSpeciaInfo, SmsCheckCustomerSpeciaInfo.class, "特审复开客户信息");
+    }
+
+    /**
+     * 通过id查询 稽核统计数
+     *
+     * @return 数据
+     */
+    //@AutoLog(value = "客户信息-通过id查询")
+    @ApiOperation(value = "客户信息-通过id查询 稽核统计数", notes = "客户信息-通过id查询 稽核统计数")
+    @GetMapping(value = "/type/count")
+    @PermissionData(pageComponent = "smscheck/modules/TaskCheckList")
+    public Result<Dict> count(HttpServletRequest request) {
+        Dict dict = Dict.create();
+        // 客户总数
+        QueryWrapper<SmsCheckCustomerInfo> countQueryWrapper = QueryGenerator.initQueryWrapper(new SmsCheckCustomerInfo(), request.getParameterMap());
+        countQueryWrapper.lambda().eq(SmsCheckCustomerInfo::getType, CheckTypeCode.CHECK_TYPE_3)
+                .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0);
+        long count = customerInfoService.count(countQueryWrapper);
+
+        // 未处理数
+        QueryWrapper<SmsCheckCustomerInfo> undoCountQueryWrapper = QueryGenerator.initQueryWrapper(new SmsCheckCustomerInfo(), request.getParameterMap());
+        undoCountQueryWrapper.lambda().eq(SmsCheckCustomerInfo::getType, CheckTypeCode.CHECK_TYPE_3)
+                .in(SmsCheckCustomerInfo::getCheckState, Arrays.asList(0, 1))
+                .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0);
+        long undoCount = customerInfoService.count(undoCountQueryWrapper);
+
+        // 待稽核数
+        QueryWrapper<SmsCheckCustomerInfo> uncheckCountQueryWrapper = QueryGenerator.initQueryWrapper(new SmsCheckCustomerInfo(), request.getParameterMap());
+        uncheckCountQueryWrapper.lambda().eq(SmsCheckCustomerInfo::getType, CheckTypeCode.CHECK_TYPE_3)
+                .in(SmsCheckCustomerInfo::getCheckState, Arrays.asList(2, 3))
+                .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0);
+        long uncheckCount = customerInfoService.count(uncheckCountQueryWrapper);
+
+        // 待整改数
+        QueryWrapper<SmsCheckCustomerInfo> checkedCountQueryWrapper = QueryGenerator.initQueryWrapper(new SmsCheckCustomerInfo(), request.getParameterMap());
+        checkedCountQueryWrapper.lambda().eq(SmsCheckCustomerInfo::getType, CheckTypeCode.CHECK_TYPE_3)
+                .eq(SmsCheckCustomerInfo::getCheckState, 4)
+                .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0);
+        long checkedCount = customerInfoService.count(checkedCountQueryWrapper);
+
+        // 稽核完成数
+        QueryWrapper<SmsCheckCustomerInfo> passedCountQueryWrapper = QueryGenerator.initQueryWrapper(new SmsCheckCustomerInfo(), request.getParameterMap());
+        passedCountQueryWrapper.lambda().eq(SmsCheckCustomerInfo::getType, CheckTypeCode.CHECK_TYPE_3)
+                .eq(SmsCheckCustomerInfo::getCheckState, 5)
+                .eq(SmsCheckCustomerInfo::getDelFlag, CommonConstant.DEL_FLAG_0);
+        long passedCount = customerInfoService.count(passedCountQueryWrapper);
+
+        dict.put("count", count);
+        dict.put("undoCount", undoCount);
+        dict.put("uncheckCount", uncheckCount);
+        dict.put("checkedCount", checkedCount);
+        dict.put("passedCount", passedCount);
+
+        return Result.OK(dict);
+    }
 
 }

+ 91 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmcTruckCheckLog.java

@@ -0,0 +1,91 @@
+package org.jeecg.modules.smscheck.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+@Data
+@TableName("smc_truck_check_log")
+//不用带set和get前缀   user.name("aaa").age(18)
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="smc_truck_check_log", description="中继线稽核结果")
+public class SmcTruckCheckLog implements Serializable {
+    /** 主键 */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /** 任务id */
+    private String taskId;
+    /** 客户信息id */
+    private String infoId;
+    /** 客户资料ID */
+    private String dataId;
+    /** 客户营业执照 */
+    private Integer businessLicenseState;
+    /**  */
+    private String businessLicenseNote;
+    /** 经办人介绍信和身份证复印件 */
+    private Integer idCardState;
+    /**  */
+    private String idCardNote;
+    /** 标准文本合同 */
+    private Integer contractState;
+    /**  */
+    private String contractNote;
+    /** 中继线业务预审表 */
+    private Integer prequaliFicationState;
+    /**  */
+    private String prequaliFicationNote;
+    /** 风险评估表 */
+    private Integer riskState;
+    /**  */
+    private String riskNote;
+    /** 呼叫中心/会议电话业务说明函 */
+    private Integer coverLetterState;
+    /**  */
+    private String coverLetterNote;
+    /** 办公现场和装机地址现场拍照(需客户经理入镜) */
+    private Integer takePhotosState;
+    /**  */
+    private String takePhotosNote;
+    /** 增值业务许可证 */
+    private Integer addedLicenseState;
+    /**  */
+    private String addedLicenseNote;
+    /** 注册资金不低于50万 */
+    private Integer registeredCapitalState;
+    /**  */
+    private String registeredCapitalNote;
+    /** 屋租赁合同或房屋产权证明 */
+    private Integer ownershipCertificateState;
+    /**  */
+    private String ownershipCertificateNote;
+    /** 客户信用查询截屏 */
+    private Integer creditInquiryState;
+    /**  */
+    private String creditInquiryNote;
+    /** 企业法人身份证复印件 */
+    private Integer legalPersonalityState;
+    /**  */
+    private String legalPersonalityNote;
+    /** 创建人 */
+    private String createBy;
+    /** 创建时间 */
+    private Date createTime;
+    /** 更新人 */
+    private String updateBy;
+    /** 所属部门 */
+    private String sysOrgCode;
+    /** 员工编号 */
+    private String staffNo;
+    /** 更新时间 */
+    private Date updateTime;
+}

+ 54 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmcTruckCheckLogVo.java

@@ -0,0 +1,54 @@
+package org.jeecg.modules.smscheck.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class SmcTruckCheckLogVo implements Serializable {
+
+    /** 客户营业执照 */
+    private Integer businessLicenseState;
+
+    /** 经办人介绍信和身份证复印件 */
+    private Integer idCardState;
+
+    /** 标准文本合同 */
+    private Integer contractState;
+
+    /** 中继线业务预审表 */
+    private Integer prequaliFicationState;
+
+    /** 风险评估表 */
+    private Integer riskState;
+
+    /** 呼叫中心/会议电话业务说明函 */
+    private Integer coverLetterState;
+
+    /** 办公现场和装机地址现场拍照(需客户经理入镜) */
+    private Integer takePhotosState;
+
+    /** 增值业务许可证 */
+    private Integer addedLicenseState;
+
+    /** 注册资金不低于50万 */
+    private Integer registeredCapitalState;
+
+    /** 屋租赁合同或房屋产权证明 */
+    private Integer ownershipCertificateState;
+
+    /** 客户信用查询截屏 */
+    private Integer creditInquiryState;
+
+    /** 企业法人身份证复印件 */
+    private Integer legalPersonalityState;
+
+}

+ 5 - 3
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsCheckCustomerInfo.java

@@ -228,11 +228,11 @@ public class SmsCheckCustomerInfo implements Serializable {
     /** 复开时间 */
     @Excel(name = "复开时间", width = 15)
     @ApiModelProperty(value = "复开时间")
-    private String reopenTime;
+    private Date reopenTime;
 
     /** 有无特审单 */
     @Excel(name = "有无特审单", width = 15)
-    @ApiModelProperty(value = "有无特审单")
+    @ApiModelProperty(value = "有无特审单/签报")
     private String materialLabel;
 
     /** 有无特审单 */
@@ -240,6 +240,8 @@ public class SmsCheckCustomerInfo implements Serializable {
     @ApiModelProperty(value = "是否自查实名制合规")
     private String nameFindCompliance;
 
-
+    /**客户信息所属类型:1:行短稽核 2:物联网业务稽核 3.复开审批 4.中继线稽核*/
+    @ApiModelProperty(value = "客户信息所属稽核")
+    private Integer type;
 }
 

+ 107 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsCheckCustomerSpeciaInfo.java

@@ -0,0 +1,107 @@
+package org.jeecg.modules.smscheck.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @description 客户信息
+ * @author jeecg-boot
+ * @date 2022-06-22
+ * @version V1.0
+ */
+@Data
+@TableName("sms_check_customer_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="sms_check_customer_info对象", description="客户信息")
+public class SmsCheckCustomerSpeciaInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /** 任务id */
+    @ApiModelProperty(value = "任务id")
+    private String taskId;
+
+	/** 主键 */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /**提交材料日期*/
+    @Excel(name = "提交材料日期", width = 15)
+    @ApiModelProperty(value = "提交材料日期")
+    private String submitSpecialDate;
+    /** 客户名称 */
+    @Excel(name = "机主姓名", width = 15)
+    @ApiModelProperty(value = "机主姓名")
+    private String customerName;
+    /** 号码) */
+    @Excel(name = "号码", width = 15)
+    @ApiModelProperty(value = "号码")
+    private String smsNumber;
+    /**关停标签*/
+    @Excel(name = "关停标签", width = 15)
+    @ApiModelProperty(value = "关停标签)")
+    private String shutdownLabel;
+    /**漫游被关停日期(ABM查询)*/
+    @Excel(name = "漫游被关停日期(ABM查询)", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "漫游被关停日期(ABM查询))")
+    private Date shutdownLabelDate;
+    /** 用户发展三级部门 */
+    @Excel(name = "三级部门", width = 15)
+    @ApiModelProperty(value = "三级部门")
+    private String staffDeptLevel3;
+    /** 复开时间 */
+    @Excel(name = "复开时间", width = 15)
+    @ApiModelProperty(value = "复开时间")
+    private Date reopenTime;
+    /** 有无特审单 */
+    @Excel(name = "有无特审单", width = 15)
+    @ApiModelProperty(value = "有无特审单")
+    private String materialLabel;
+    /** 有无特审单 */
+    @Excel(name = "是否自查实名制合规", width = 15)
+    @ApiModelProperty(value = "是否自查实名制合规")
+    private String nameFindCompliance;
+    /** 负责人 */
+    @Excel(name = "负责人", width = 15)
+    @ApiModelProperty(value = "负责人")
+    private String staffName;
+    /** 负责人工号 */
+    @Excel(name = "负责人工号", width = 15)
+    @ApiModelProperty(value = "负责人工号")
+    private String staffNo;
+    /** 导入时间 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "导入时间")
+    @Excel(name = "导入时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /** 更新时间 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    @Excel(name = "更新时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+    /** 稽核状态 0:未处理;1:未完善;2:待稽核;3:已整改;4:待整改;5:稽核通过; */
+    @Excel(name = "稽核状态", width = 15, dicCode = "sms_check_check_state")
+    @Dict(dicCode = "sms_check_check_state")
+    @ApiModelProperty(value = "稽核状态")
+    private Integer checkState;
+
+
+
+
+
+}
+

+ 72 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SmsTruckCustomerData.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.smscheck.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 中继线稽核文件
+ */
+@Data
+@TableName("sms_truck_customer_data")
+//不用带set和get前缀   user.name("aaa").age(18)
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="sms_truck_customer_data", description="中继线稽核文件")
+public class SmsTruckCustomerData implements Serializable {
+
+    /** 主键 */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /** 客户信息ID */
+    private String infoId;
+    /** 客户类型;0:一类客户 ,1:二类客户 */
+    private Integer customType;
+    /** 使用场景;0:办公自用,1:自用型呼叫中心,2:经营型呼叫中心,3:经济型会议电话 */
+    private Integer scene;
+    /** 客户营业执照 */
+    private String businessLicense;
+    /** 经办人介绍信和身份证复印件 */
+    private String idCard;
+    /** 标准文本合同 */
+    private String contract;
+    /** 中继线业务预审表 */
+    private String prequaliFication;
+    /** 风险评估表 */
+    private String risk;
+    /** 呼叫中心/会议电话业务说明函 */
+    private String coverLetter;
+    /** 办公现场和装机地址现场拍照(需客户经理入镜) */
+    private String takePhotos;
+    /** 增值业务许可证 */
+    private String addedLicense;
+    /** 注册资金不低于50万 */
+    private String registeredCapital;
+    /** 屋租赁合同或房屋产权证明 */
+    private String ownershipCertificate;
+    /** 客户信用查询截屏 */
+    private String creditInquiry;
+    /** 企业法人身份证复印件 */
+    private String legalPersonality;
+    /** 创建人 */
+    private String createBy;
+    /** 创建时间 */
+    private Date createTime;
+    /** 更新人 */
+    private String updateBy;
+    /** 所属部门 */
+    private String sysOrgCode;
+    /** 更新时间 */
+    private Date updateTime;
+    /**员工编号*/
+    private String staffNo;
+}

+ 2 - 3
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SpecialExamination.java

@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
 import java.util.Date;
 
 @Data
@@ -19,7 +20,7 @@ import java.util.Date;
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @ApiModel(value="special_examination对象", description="特审复开审批")
-public class SpecialExamination {
+public class SpecialExamination implements Serializable {
     @TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "主键")
     private String id;
@@ -117,6 +118,4 @@ public class SpecialExamination {
     @ApiModelProperty(value = "特审单")
     private String specialReviewForm;
 
-
-
 }

+ 13 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/entity/SpecialExaminationBatchVo.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.smscheck.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 特审复审批批量上传
+ */
+@Data
+public class SpecialExaminationBatchVo extends SpecialExamination{
+    private List<String> infoIds;
+}

+ 12 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmcTruckCheckLogMapper.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.smscheck.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.jeecg.modules.smscheck.entity.SmcTruckCheckLog;
+
+/**
+ * 中继线稽核结果
+ */
+@Mapper
+public interface SmcTruckCheckLogMapper extends BaseMapper<SmcTruckCheckLog> {
+
+}

+ 9 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmsCheckCustomerSpeciaInfoMapper.java

@@ -0,0 +1,9 @@
+package org.jeecg.modules.smscheck.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.jeecg.modules.smscheck.entity.SmsCheckCustomerSpeciaInfo;
+
+@Mapper
+public interface SmsCheckCustomerSpeciaInfoMapper extends BaseMapper<SmsCheckCustomerSpeciaInfo> {
+}

+ 13 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/mapper/SmsTruckCustomerDataMapper.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.smscheck.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.jeecg.modules.smscheck.entity.SmsTruckCustomerData;
+
+
+/**
+ * 中继线稽核数据文件
+ */
+@Mapper
+public interface SmsTruckCustomerDataMapper  extends BaseMapper<SmsTruckCustomerData> {
+
+}

+ 9 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmcTruckCheckLogService.java

@@ -0,0 +1,9 @@
+package org.jeecg.modules.smscheck.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.smscheck.entity.SmcTruckCheckLog;
+import org.jeecg.modules.smscheck.entity.SmcTruckCheckLogVo;
+
+public interface SmcTruckCheckLogService extends IService<SmcTruckCheckLog> {
+    Boolean checkStatus(SmcTruckCheckLogVo e) throws IllegalAccessException;
+}

+ 7 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmsCheckCustomerSpeciaInfoService.java

@@ -0,0 +1,7 @@
+package org.jeecg.modules.smscheck.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.smscheck.entity.SmsCheckCustomerSpeciaInfo;
+
+public interface SmsCheckCustomerSpeciaInfoService extends IService<SmsCheckCustomerSpeciaInfo> {
+}

+ 11 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SmsTruckCustomerDataService.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.smscheck.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.smscheck.entity.SmsTruckCustomerData;
+
+/**
+ * 中稽核线数据文件
+ */
+public interface SmsTruckCustomerDataService  extends IService<SmsTruckCustomerData> {
+
+}

+ 0 - 1
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/SpecialExaminationService.java

@@ -10,5 +10,4 @@ import java.util.Map;
 public interface SpecialExaminationService extends IService<SpecialExamination> {
 
 
-
 }

+ 36 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmcTruckCheckLogServiceImpl.java

@@ -0,0 +1,36 @@
+package org.jeecg.modules.smscheck.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.smscheck.entity.SmcTruckCheckLog;
+import org.jeecg.modules.smscheck.entity.SmcTruckCheckLogVo;
+import org.jeecg.modules.smscheck.mapper.SmcTruckCheckLogMapper;
+import org.jeecg.modules.smscheck.service.SmcTruckCheckLogService;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Field;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * 中继线稽核结果
+ */
+@Service
+public class SmcTruckCheckLogServiceImpl  extends ServiceImpl<SmcTruckCheckLogMapper, SmcTruckCheckLog> implements SmcTruckCheckLogService {
+    @Override
+    public Boolean checkStatus(SmcTruckCheckLogVo e) throws IllegalAccessException {
+        AtomicReference<Boolean> stateBoolean = new AtomicReference<>(true);
+        Class cls = e.getClass();
+        Field[] fields = cls.getDeclaredFields();
+        for (int i = 0; i < fields.length; i++) {
+            Field f = fields[i];
+            f.setAccessible(true);
+            Integer state = (Integer) f.get(e);
+            Optional.ofNullable(state).ifPresent(u->{
+                if (u == 0) {
+                    stateBoolean.set(false);
+                }
+            });
+        }
+        return stateBoolean.get();
+    }
+}

+ 11 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsCheckCustomerSpeciaInfoServiceImpl.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.smscheck.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.smscheck.entity.SmsCheckCustomerSpeciaInfo;
+import org.jeecg.modules.smscheck.mapper.SmsCheckCustomerSpeciaInfoMapper;
+import org.jeecg.modules.smscheck.service.SmsCheckCustomerSpeciaInfoService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SmsCheckCustomerSpeciaInfoServiceImpl  extends ServiceImpl<SmsCheckCustomerSpeciaInfoMapper, SmsCheckCustomerSpeciaInfo> implements SmsCheckCustomerSpeciaInfoService {
+}

+ 15 - 0
tnc-sms/src/main/java/org/jeecg/modules/smscheck/service/impl/SmsTruckCustomerDataServiceImpl.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.smscheck.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.smscheck.entity.SmsTruckCustomerData;
+import org.jeecg.modules.smscheck.mapper.SmsTruckCustomerDataMapper;
+import org.jeecg.modules.smscheck.service.SmsTruckCustomerDataService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 中继线数据文件
+ */
+@Service
+public class SmsTruckCustomerDataServiceImpl extends ServiceImpl<SmsTruckCustomerDataMapper, SmsTruckCustomerData> implements SmsTruckCustomerDataService {
+
+}

+ 3 - 3
tnc-sms/src/main/java/org/jeecg/modules/smscheck/vo/SpecialExaminationCustomerVo.java

@@ -61,11 +61,11 @@ public class SpecialExaminationCustomerVo implements Serializable {
     /** 复开时间 */
     @Excel(name = "复开时间", width = 15)
     @ApiModelProperty(value = "复开时间")
-    private String reopenTime;
+    private Date reopenTime;
 
     /** 有无特审单 */
-    @Excel(name = "有无特审单", width = 15)
-    @ApiModelProperty(value = "有无特审单")
+    @Excel(name = "有无特审单/签报", width = 15)
+    @ApiModelProperty(value = "有无特审单/签报")
     private String materialLabel;
 
     /** 有无特审单 */

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels