Forráskód Böngészése

Merge remote-tracking branch 'origin/V0.0.4' into V0.0.4

jingyuanchao 1 éve
szülő
commit
f0f5a21efe
18 módosított fájl, 184 hozzáadás és 21 törlés
  1. 8 0
      project_data/sql/0.0.3/soc/soc.sql
  2. 5 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java
  3. 27 4
      soc-common/soc-common-security/src/main/java/com/xunmei/common/security/utils/SaltHelper.java
  4. 30 6
      soc-common/soc-common-security/src/main/java/com/xunmei/common/security/utils/SecurityUtils.java
  5. 1 0
      soc-common/soc-common-security/src/main/resources/key/privatekey.pri
  6. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java
  7. 4 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java
  8. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  9. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java
  10. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/AppPageVo.java
  11. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java
  12. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  13. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/domain/SysWorkTimeSet.java
  14. 40 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  15. 37 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/CertificateWorkConverter.java
  16. 3 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityUserExport.java
  17. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml
  18. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 8 - 0
project_data/sql/0.0.3/soc/soc.sql

@@ -1210,6 +1210,14 @@ INSERT INTO `sys_role_menu` (`role_id`, `menu_id`) VALUES (120, 0172687555032455
 UPDATE sys_menu set menu_name='履职内容库' WHERE menu_name='履职内容库定义';
 UPDATE sys_menu set menu_name='检查内容库' WHERE menu_name='检查内容库定义';
 
+-- 更新菜单名称
+update sys_menu set menu_name='隐患管理' WHERE menu_name='问题处理管理' and menu_type='M';
+update sys_menu set menu_name='综合考核' WHERE menu_name='安全综合管理评价' and menu_type='M';
+update sys_menu set menu_name='外包考核评价',order_num=4,parent_id=01712277074707779586 WHERE menu_name='评价计划管理' and menu_type='C';
+update sys_menu set menu_name='外包考核结果',order_num=5,parent_id=01712277074707779586 WHERE menu_name='外包评价' and menu_type='C';
+update sys_menu set menu_name='高管工作部署' WHERE menu_name='行社高管部署登记' and menu_type='C';
+update sys_menu set menu_name='年度工作计划' WHERE menu_name='安全保卫部年度计划' and menu_type='C';
+DELETE from sys_menu WHERE id=1720259442805620738;
 
 
 -- 履职任务类型修正

+ 5 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java

@@ -3,6 +3,7 @@ package com.xunmei.common.core.domain.worktime.domain;
 import java.util.Date;
 import java.util.Objects;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -85,6 +86,7 @@ public class SysWorkTime extends BaseEntity {
      * 营业终了
      */
     @ApiModelProperty(value = "营业终了")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String closeTime;
 
     @ApiModelProperty(value = "月份")
@@ -108,6 +110,7 @@ public class SysWorkTime extends BaseEntity {
      * 营业时间
      */
     @ApiModelProperty(value = "营业时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String openTime;
 
     /**
@@ -133,12 +136,14 @@ public class SysWorkTime extends BaseEntity {
      * 下班时间
      */
     @ApiModelProperty(value = "下班时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String workOffTime;
 
     /**
      * 上班时间
      */
     @ApiModelProperty(value = "上班时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String workTime;
     /**
      * 是否值班打卡

+ 27 - 4
soc-common/soc-common-security/src/main/java/com/xunmei/common/security/utils/SaltHelper.java

@@ -2,11 +2,16 @@ package com.xunmei.common.security.utils;
 
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.io.resource.ClassPathResource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.util.UUID;
 
@@ -16,11 +21,12 @@ import java.util.UUID;
 @Slf4j
 public class SaltHelper {
 
-    private static final String KEY = "rDWBHusbFTlOURS4";
-
+   // private static final String KEY = "rDWBHusbFTlOURS4";
+    private static ClassPathResource resource = new ClassPathResource("key/privatekey.pri");
     public static String decryptAES(final String content) {
         try {
-            final SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");
+            String Key =loadKeyFromFile(resource.getStream());
+            final SecretKeySpec skeySpec = new SecretKeySpec(Key.getBytes("UTF-8"), "AES");
             final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding","CCM"); // "算法/模式/补码方式"
             cipher.init(Cipher.DECRYPT_MODE, skeySpec);
             return new String(cipher.doFinal(Base64.decode(content)));
@@ -32,7 +38,8 @@ public class SaltHelper {
 
     public static String encryptAES(final String content) {
         try {
-            final SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");
+            String Key =loadKeyFromFile(resource.getStream());
+            final SecretKeySpec skeySpec = new SecretKeySpec(Key.getBytes("UTF-8"), "AES");
             final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding","CCM"); // "算法/模式/补码方式"
             cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
             return Base64.encode(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)));
@@ -42,6 +49,22 @@ public class SaltHelper {
         }
     }
 
+    private static String loadKeyFromFile(InputStream inputStream) {
+        //将InputStream读入Reader中
+        Reader reader = new InputStreamReader(inputStream);
+        //实例化一个StringBuilder以保存结果
+        StringBuilder result = new StringBuilder();
+        //读取每个字节并转换为char,添加到StringBuilder
+        try {
+            for (int data = reader.read(); data != -1; data = reader.read()) {
+                result.append((char) data);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        // 将文件内容转为字符串
+        return result.toString();
+    }
     /**
      * 比较相等
      *

+ 30 - 6
soc-common/soc-common-security/src/main/java/com/xunmei/common/security/utils/SecurityUtils.java

@@ -1,6 +1,7 @@
 package com.xunmei.common.security.utils;
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.io.resource.ClassPathResource;
 import cn.hutool.extra.spring.SpringUtil;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.TokenConstants;
@@ -14,6 +15,10 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
 import java.util.UUID;
@@ -26,8 +31,8 @@ import java.util.UUID;
 public class SecurityUtils {
     private static final String[] deviceArray = new String[]{"iphone", "android", "ios", "harmonyos", "deviceInfo", "phone", "mobile", "wap", "netfront", "java", "opera mobi", "opera mini", "ucweb", "windows ce", "symbian", "series", "webos", "sony", "blackberry", "dopod", "nokia", "samsung", "palmsource", "xda", "pieplus", "meizu", "midp", "cldc", "motorola", "foma", "docomo", "up.browser", "up.link", "blazer", "helio", "hosin", "huawei", "novarra", "coolpad", "webos", "techfaith", "palmsource", "alcatel", "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem", "wellcom", "bunjalloo", "maui", "smartphone", "iemobile", "spice", "bird", "zte-", "longcos", "pantech", "gionee", "portalmmm", "jig browser", "hiptop", "benq", "haier", "^lct", "320x320", "240x320", "176x220", "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-"/*, "tosh"*/, "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc", "winw", "winw", "xda", "xda-", "Googlebot-Mobile", "dart", "flutter", "xunmeiapp"};
 
-    private static final String KEY = "rDWBHusbFTlOURS4";
-
+    //private static final String KEY = "rDWBHusbFTlOURS4";
+    private static ClassPathResource resource = new ClassPathResource("key/privatekey.pri");
     /**
      * 获取用户ID
      */
@@ -118,9 +123,10 @@ public class SecurityUtils {
 
     public static String decryptAES(final String content) {
         try {
-            final SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");
+            String Key =loadKeyFromFile(resource.getStream());
+            final SecretKeySpec skeySpec = new SecretKeySpec(Key.getBytes("UTF-8"), "AES");
             // "算法/模式/补码方式"
-            final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding","CCM");
+            final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding","CCM");
             cipher.init(Cipher.DECRYPT_MODE, skeySpec);
             return new String(cipher.doFinal(Base64.decode(content)));
         } catch (final Exception e) {
@@ -128,11 +134,29 @@ public class SecurityUtils {
         }
     }
 
+    private static String loadKeyFromFile(InputStream inputStream) {
+        //将InputStream读入Reader中
+        Reader reader = new InputStreamReader(inputStream);
+        //实例化一个StringBuilder以保存结果
+        StringBuilder result = new StringBuilder();
+        //读取每个字节并转换为char,添加到StringBuilder
+        try {
+            for (int data = reader.read(); data != -1; data = reader.read()) {
+                result.append((char) data);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        // 将文件内容转为字符串
+        return result.toString();
+    }
+
     public static String encryptAES(final String content) {
         try {
-            final SecretKeySpec skeySpec = new SecretKeySpec(KEY.getBytes("UTF-8"), "AES");
+            String Key =loadKeyFromFile(resource.getStream());
+            final SecretKeySpec skeySpec = new SecretKeySpec(Key.getBytes("UTF-8"), "AES");
             // "算法/模式/补码方式"
-            final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding","CCM");
+            final Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding","CCM");
             cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
             return Base64.encode(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)));
         } catch (final Exception e) {

+ 1 - 0
soc-common/soc-common-security/src/main/resources/key/privatekey.pri

@@ -0,0 +1 @@
+rDWBHusbFTlOURS4

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java

@@ -40,6 +40,9 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
         List<SysOrg> orgs = remoteOrgService.selectOrgByIdList(timeChangeEvent.getOrgIds(), SecurityConstants.INNER);
         Set<Long> bankingIds = orgs.stream().filter(o -> ObjectUtil.equal(o.getType(), OrgTypeEnum.YINGYE_WANGDIAN.getCode())).map(SysOrg::getId)
                 .collect(Collectors.toSet());
+        if(CollectionUtil.isEmpty(bankingIds)){
+            return;
+        }
         timeChangeEvent.setDataList(timeChangeEvent.getDataList().stream().filter(d -> bankingIds.contains(d.getOrgId())).collect(Collectors.toList()));
         timeChangeEvent.setOrgIds(bankingIds.stream().collect(Collectors.toList()));
 

+ 4 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java

@@ -148,7 +148,10 @@ public class ApiPlanController {
                             .eq(AppPlan::getParentId, plan.getId())
                             .eq(AppPlan::getDeleted, 0)
                             .eq(AppPlan::getPlanStatus,1));
-                    list.add(plan);
+                    if(ObjectUtil.equal(plan.getPlanStatus(),1)){
+                        list.add(plan);
+                    }
+
                     List<Object> newlist = new ArrayList<>(list);
                     resumptionTaskBusiness.rebuildCurrentCycleTask(newlist);
                 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -248,7 +248,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             ap.setPlanStatus(2);
             baseMapper.updateById(ap);
 
-            if (ObjectUtil.notEqual(ap.getTaskHasCompleted(), 1)) {
+            if (ObjectUtil.notEqual(plan.getTaskHasCompleted(), 1)) {
                 deleteByPlanIds.add(ap.getId());
             }
         }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java

@@ -134,6 +134,11 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
                 vo.setCompleted(convertToAppItemVo(v, i -> ObjectUtil.equal(i.getStatus(), SafetyCheckTaskStatus.Completed.getValue())));
                 vo.setUncompleted(convertToAppItemVo(v, i -> !ObjectUtil.equal(i.getStatus(), SafetyCheckTaskStatus.Completed.getValue())));
             }
+
+            Date date=DateUtil.beginOfDay(new Date());
+            Date planStartDate=DateUtil.beginOfDay(vo.getPlanStartTime());
+            Date planEndDate=DateUtil.beginOfDay(vo.getPlanEndTime());
+            vo.setInRegisterTime((planStartDate.before(date) && planEndDate.after(date) || date.getTime()==planStartDate.getTime())?1:0);
         });
 
         return TableDataInfo.success(page);

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/AppPageVo.java

@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.xunmei.common.core.json.LongListSerializer;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -36,6 +37,9 @@ public class AppPageVo {
      */
     private Date planEndTime;
 
+    @ApiModelProperty(value = "为1时,表示可登记,其它值均表示不能登记")
+    private  Integer inRegisterTime;
+
 //    @JsonIgnore
 //    private Long batchId;
 

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java

@@ -3,9 +3,11 @@ package com.xunmei.core.safetyCheck.vo.regsiter;
 import java.util.Date;
 import java.util.List;
 
+import cn.hutool.core.date.DateUtil;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import io.swagger.annotations.ApiModelProperty;
@@ -84,6 +86,9 @@ public class TaskRegisterVo<T> {
     @ApiModelProperty
     private String submitBy;
 
+    @ApiModelProperty(value = "为1时,表示可登记,其它值均表示不能登记")
+    private  Integer inRegisterTime;
+
     @ApiModelProperty(value = "检查列表")
     private List<T> checkList;
 
@@ -107,6 +112,12 @@ public class TaskRegisterVo<T> {
         vo.setGrantUserId(task.getGrantUserId());
         vo.setExceptionCount(task.getExceptionCount().intValue());
         vo.setSubmitBy(task.getSubmitBy());
+
+        Date date=DateUtil.beginOfDay(new Date());
+        Date planStartDate=DateUtil.beginOfDay(task.getPlanStartTime());
+        Date planEndDate=DateUtil.beginOfDay(task.getPlanEndTime());
+        vo.setInRegisterTime((planStartDate.before(date) && planEndDate.after(date) || date.getTime()==planStartDate.getTime())?1:0);
+
         return vo;
     }
 }

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -7,6 +7,7 @@ import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
 import com.xunmei.common.core.utils.DateUtils;
@@ -543,7 +544,6 @@ public class SysUserController extends BaseController {
         AtomicInteger xh = new AtomicInteger();
         xh.getAndIncrement();
         securityUserExports.forEach(e -> {
-
             e.setXh(String.valueOf(xh.getAndIncrement()));
         });
         if (securityUserExports.size() > 10000) {

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/domain/SysWorkTimeSet.java

@@ -3,6 +3,7 @@ package com.xunmei.system.domain;
 import java.util.Date;
 import java.util.List;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -143,6 +144,7 @@ public class SysWorkTimeSet extends BaseEntity {
      * 下班时间
      */
     @ApiModelProperty(value = "下班时间")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String workOffTime;
 
     /**

+ 40 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.UserConstants;
 import com.xunmei.common.core.domain.OrgTreeReq;
 import com.xunmei.common.core.domain.OrgTreeResp;
@@ -28,6 +29,7 @@ import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysPlanOrgDTO;
 import com.xunmei.system.mapper.*;
 import com.xunmei.system.service.ISysConfigService;
+import com.xunmei.system.service.ISysDictDataService;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysUserService;
 import com.xunmei.system.util.SecurityUserExport;
@@ -80,6 +82,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     protected Validator validator;
     @Autowired
     private SysOrgMapper sysOrgMapper;
+    @Autowired
+    private ISysDictDataService iSysDictDataService;
 
     /**
      * 根据条件分页查询用户列表
@@ -695,8 +699,42 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Override
     public List<SecurityUserExport> downSecurityUser() {
-        SysOrg sysOrg = sysOrgMapper.selectById(SecurityUtils.getLoginUser().getOrgId());
-        return userMapper.selectSecurityUser();
+        List<SecurityUserExport> securityUserExports = userMapper.selectSecurityUser();
+        securityUserExports.forEach(s -> {
+            s.setCity("福建");
+            SysOrg sysOrg = sysOrgMapper.selectById(s.getOrgId());
+            SysOrg sysOrg1 = new SysOrg();
+            if (sysOrg.getShortName().endsWith("地区行社")) {
+                s.setCity(sysOrg.getShortName().substring(0, 2));
+            } else if (sysOrg.getType() < 3 || sysOrg.getType() == 9) {
+                sysOrg1 = sysOrgMapper.selectSysOrgById(sysOrg.getParentId());
+            } else {
+                sysOrg1 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrg.getParentId()).getParentId());
+                if (-1 == sysOrg1.getShortName().indexOf("地区行社")) {
+                    sysOrg1 = sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrgMapper.selectSysOrgById(sysOrg.getParentId()).getParentId()).getParentId());
+                }
+            }
+            if (null != sysOrg1) {
+                s.setCity(sysOrg1.getShortName().indexOf("地区行社") == -1 ? sysOrg1.getShortName().substring(0, 2) : sysOrg1.getShortName().split("地区行社")[0]);
+            }
+            //部门名称
+            String departmentName = iSysDictDataService.selectDictLabel("department_name", s.getDepartmentName());
+            s.setDepartmentName(departmentName);
+            //现任职务
+            String nowDuties = iSysDictDataService.selectDictLabel("current_position", s.getNowDuties());
+            s.setNowDuties(nowDuties);
+            //用工形式
+            String workType = iSysDictDataService.selectDictLabel("sys_work_type", s.getWorkType());
+            s.setWorkType(workType);
+            //最高学历
+            String sysHighestEducation = iSysDictDataService.selectDictLabel("sys_highest_education", s.getHighestEducation());
+            s.setHighestEducation(sysHighestEducation);
+            //取得方式
+            String sysEducationType = iSysDictDataService.selectDictLabel("sys_education_type", s.getEducationType());
+            s.setEducationType(sysEducationType);
+            String sysDuties = iSysDictDataService.selectDictLabel("sys_duties", s.getResponsibilitiesLeaderDuties());s.setResponsibilitiesLeaderDuties(sysDuties);
+        });
+        return securityUserExports;
     }
 
     @Override

+ 37 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/CertificateWorkConverter.java

@@ -0,0 +1,37 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/11/24
+ */
+public class CertificateWorkConverter implements Converter<String> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+      if (s.equals("1")){
+          return new CellData("通过");
+      }else {
+          return new CellData("未通过");
+      }
+    }
+}

+ 3 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityUserExport.java

@@ -7,7 +7,6 @@ import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import java.util.Date;
 
@@ -43,7 +42,7 @@ public class SecurityUserExport {
     private String departmentName;
     @ExcelProperty(value = "现任职务", index = 8)
     private String nowDuties;
-    @ExcelProperty(value = "是否专职(专职是指专职做安全保卫部门相应岗位工作,不再兼任其他岗位或部门工作)", index = 9)
+    @ExcelProperty(value = "是否专职(专职是指专职做安全保卫部门相应岗位工作,不再兼任其他岗位或部门工作)", index = 9,converter = UserManagerConverter.class)
     private String isFullTime;
     @ExcelProperty(value = "用工形式", index = 10)
     private String workType;
@@ -57,9 +56,9 @@ public class SecurityUserExport {
     private String educationType;
     @ExcelProperty(value = "初级以上(含初级)相关专业技术职业资格", index = 15)
     private String professionalQualifications;
-    @ExcelProperty(value = "持证上岗考试通过情况", index = 16)
+    @ExcelProperty(value = "持证上岗考试通过情况", index = 16,converter = CertificateWorkConverter.class)
     private String certificateWork;
-    @ExcelProperty(value = "持证上岗考试通过情况", index = 17)
+    @ExcelProperty(value = "持证上岗考试未通过原因(按照下拉选项填列)", index = 17)
     private String certificateFailReason;
     @ExcelProperty(value = "分管领导姓名", index = 18)
     private String responsibilitiesLeaderName;

+ 1 - 1
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml

@@ -123,7 +123,7 @@
         order by a.org_id,a.area_id,code
     </select>
     <select id="selectSysNfcBindByCode" resultType="com.xunmei.system.domain.SysNfcBind">
-        SELECT * FROM sys_nfc_bind WHERE code=#{code}
+        SELECT * FROM sys_nfc_bind WHERE del_flag=0 AND code=#{code}
     </select>
 
     <insert id="insertSysNfcBind" parameterType="com.xunmei.system.domain.SysNfcBind">

+ 1 - 1
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -711,7 +711,7 @@
             c.id AS orgId,
             c.short_name AS orgName,
             b.`name` AS name,
-            b.gender AS gender,
+            IFNULL( b.gender, 2 ) AS gender,
             b.card AS card,
             TIMESTAMPDIFF( YEAR, a.born_time, NOW() ) AS age,
             a.dept_id AS departmentName,