浏览代码

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

ouyang 1 年之前
父节点
当前提交
fd15e974c5
共有 20 个文件被更改,包括 226 次插入58 次删除
  1. 21 1
      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. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java
  4. 24 15
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  5. 16 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  6. 4 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java
  7. 5 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  8. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java
  9. 36 20
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  10. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java
  11. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/AppPageVo.java
  12. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java
  13. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/impl/CoreSafetyBookServiceImpl.java
  14. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  15. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/domain/SysWorkTimeSet.java
  16. 40 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  17. 37 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/CertificateWorkConverter.java
  18. 3 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/SecurityUserExport.java
  19. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml
  20. 1 1
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 21 - 1
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;
 
 
 -- 履职任务类型修正
@@ -1509,4 +1517,16 @@ WHERE
 
 -- 在权限表中删除没有菜单的数据
 DELETE from sys_role_menu WHERE menu_id not in (SELECT id from sys_menu);
--- 调整移动端菜单分组 结束
+-- 调整移动端菜单分组 结束
+
+-- 更新安全责任书类型
+delete from `sys_dict_data`  where  dict_type='safety_book_type';
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '消防安全责任书', '1', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:00', '省联社账号', '2023-11-24 09:16:39', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 2, '联防协议书', '2', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:07', '省联社账号', '2023-11-24 09:16:58', NULL);
+INSERT INTO `sys_dict_data`( `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 3, '其他', '3', 'safety_book_type', NULL, 'default', 'N', '0', '超级管理员', '2023-10-11 14:37:13', '省联社账号', '2023-11-24 09:17:05', NULL);
+
+
+-- 登记簿固化表增加非空约束
+ALTER TABLE core_register_book_pdf
+    MODIFY COLUMN `file_name` varchar(225) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件名称' AFTER `org_path`,
+    MODIFY COLUMN `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件地址' AFTER `file_name`;

+ 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;
     /**
      * 是否值班打卡

+ 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()));
 

+ 24 - 15
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -271,7 +271,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             doUpdatePlan(plan, request);
             return;
         }
-      /*  final SysOrg sysOrg = orgService.selectTopOrg(SecurityConstants.INNER);*/
+        /*  final SysOrg sysOrg = orgService.selectTopOrg(SecurityConstants.INNER);*/
         if (plan.getStandard() == 1) {
             //标准计划 且是省联社创建的
             updateStandardPlan(plan, request, range);
@@ -324,7 +324,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             } else {
                 planList = ListUtil.list(true, plan);
             }
-            if (checkOrgType(plan.getExecOrgType())){
+            if (checkOrgType(plan.getExecOrgType())) {
                 planList.add(plan);
             }
             List<CoreDrillPlan> finalPlanList = planList;
@@ -432,21 +432,21 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 
 
     private void delAllByParentPlanId(CoreDrillPlan plan) {
-        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentIdOrId(plan.getId());
+        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(plan.getId());
         if (ObjectUtil.isEmpty(planIdList)) {
             return;
         }
-        if (plan.getId().equals(plan.getParentId())){
-            ArrayList<Long> list = new ArrayList<>(planIdList);
+        if (plan.getId().equals(plan.getParentId())) {
+            List<Long> list = new ArrayList<>(planIdList);
             list.remove(plan.getId());
-            if (!list.isEmpty()){
-                coreDrillPlanMapper.deleteBatchIds(planIdList);
-                coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
-                        .in(CoreDrillPlanToRole::getPlanId, planIdList));
-                coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>()
-                        .in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
-
+            if (list.isEmpty()) {
+                return;
             }
+            coreDrillPlanMapper.deleteBatchIds(planIdList);
+            coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
+                    .in(CoreDrillPlanToRole::getPlanId, planIdList));
+            coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>()
+                    .in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
         }
         coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
                 .in(CoreDrillPlanToRole::getPlanId, planIdList));
@@ -603,7 +603,8 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             List<Long> collect = planList.stream().map(CoreDrillPlan::getId).collect(Collectors.toList());
             coreDrillPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
         }
-        if (checkOrgType(plan.getExecOrgType())){
+        //处理行社及其以上的机构类型新建计划并下发的情况, 这种情况不再生成子计划;
+        if (checkOrgType(plan.getExecOrgType())) {
             planList.add(plan);
             plan.setParentId(plan.getId());
         }
@@ -708,10 +709,18 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         final List<SysOrgVO> planExecOrgList = this.getPlanExecOrg(plan);
         //获取所有行社机构
         List<SysOrgVO> publishOrgList = this.getPlanPublishOrgList(planExecOrgList);
+        //这里考虑到行社用户新建计划指定执行机构类型为营业网点时,会再次把当前行社查询出来,
+        // 导致行社下发会再次新增一条子计划,所以这里需要喊出当前行社机构id
+        publishOrgList.removeIf(org -> ObjectUtil.equal(org.getId(), SecurityUtils.getLoginUser().getSysUser().getOrgId()));
+        if (publishOrgList.isEmpty()) {
+            //如果满足的话,需要把当前计划的parentId设置成id
+            plan.setParentId(plan.getId());
+            return new ArrayList<>();
+        }
         List<CoreDrillPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreDrillPlan> list = new ArrayList<>();
         for (SysOrgVO sysOrg : publishOrgList) {
-            if (checkOrgType(plan.getExecOrgType())){
+            if (checkOrgType(plan.getExecOrgType())) {
                 continue;
             }
             CoreDrillPlan drillPlan = new CoreDrillPlan();
@@ -777,7 +786,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             return all.stream().filter(org -> collect.contains(org.getType())).collect(Collectors.toList());*/
 
 
-            return all.stream().filter(org->ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(Collectors.toList());
+            return all.stream().filter(org -> ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(Collectors.toList());
         }
     }
 

+ 16 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -396,7 +396,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     }
 
     private void delAllByParentPlanId(CoreEduTrainingPlan plan) {
-        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentIdOrId(plan.getId());
+        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentId(plan.getId());
         if (ObjectUtil.isEmpty(planIdList)) {
             return;
         }
@@ -404,14 +404,15 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (plan.getId().equals(plan.getParentId())) {
             List<Long> list = new ArrayList<>(planIdList);
             list.remove(plan.getId());
-            if (!list.isEmpty()) {
-                coreEduTrainingPlanMapper.deleteBatchIds(list);
-
-                coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>()
-                        .in(CoreEduTrainingPlanToRole::getPlanId, list));
-                coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>()
-                        .in(CoreEduTrainingPlanToExecOrg::getPlanId, list));
+            if (list.isEmpty()) {
+                return;
             }
+            coreEduTrainingPlanMapper.deleteBatchIds(list);
+
+            coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>()
+                    .in(CoreEduTrainingPlanToRole::getPlanId, list));
+            coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>()
+                    .in(CoreEduTrainingPlanToExecOrg::getPlanId, list));
         }
 
         coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>()
@@ -691,6 +692,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         //获取计划具体执行机构
         final List<SysOrgVO> planExecOrgList = this.getPlanExecOrg(plan);
         List<SysOrgVO> planPublishOrgList = getPlanPublishOrgList(planExecOrgList);
+        //这里考虑到行社用户新建计划指定执行机构类型为营业网点时,会再次把当前行社查询出来,
+        // 导致行社下发会再次新增一条子计划,所以这里需要喊出当前行社机构id
+        planPublishOrgList.removeIf(org -> ObjectUtil.equal(org.getId(), SecurityUtils.getLoginUser().getSysUser().getOrgId()));
+        if (planPublishOrgList.isEmpty()) {
+            //如果满足的话,需要把当前计划的parentId设置成id
+            return new ArrayList<>();
+        }
         List<CoreEduTrainingPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreEduTrainingPlan> list = new ArrayList<>();
         for (SysOrgVO sysOrg : planPublishOrgList) {

+ 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);
                 }

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

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -246,7 +247,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());
             }
         }
@@ -265,6 +266,9 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
     @Async
     protected void deleteTaskByPlanId(List<Long> planIds) {
+        if(CollectionUtils.isEmpty(planIds)){
+            return;
+        }
         resumptionMapper.delete(new LambdaQueryWrapper<Resumption>().in(Resumption::getPlanId, planIds));
     }
 

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java

@@ -121,7 +121,7 @@ public class CoreSafecheckPlanController extends BaseController {
     @Log(title = "常规安全检查计划", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody CoreSafecheckPlan coreSafecheckPlan) throws Exception {
-
+        Integer hasEdit = coreSafecheckPlan.getHasEdit();
         Long planId = coreSafecheckPlan.getId();
         //处理无周期
         if (coreSafecheckPlan.getPlanCycle() == 6) {
@@ -131,11 +131,11 @@ public class CoreSafecheckPlanController extends BaseController {
         //如果编辑需要处理子计划
         if (planId != null) {
             coreSafecheckPlan = coreSafecheckPlanService.getById(planId);
+            coreSafecheckPlan.setHasEdit(hasEdit);
             coreSafecheckPlanService.childrenPlan(planId);
         }
         //判断是否是编辑并且计划所属任务不存在已完成或者逾期,需要删除所有任务重新生成
-        boolean isEditAll = coreSafecheckPlan.getHasEdit() == null && planId != null && coreSafecheckPlan.isBuildTaskNow();
-        //如果是新增计划并且勾选立即执行并且是行社或者无周期,立即生成计划
+        boolean isEditAll = hasEdit == null && planId != null ;
         if (isEditAll&&coreSafecheckPlan.getPlanStatus()==1L) {
             CoreSafecheckPlan plan = coreSafecheckPlanService.getById(returnId);
             //获取父计划下面所有父id相等并且未删除并且已启用的计划

+ 36 - 20
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -85,6 +85,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private RemoteFileService fileService;
     @Autowired
     private CoreSafecheckPlanToCheckOrgTypeMapper coreSafecheckPlanToCheckOrgTypeMapper;
+
     @Override
     public TableDataInfo<CoreSafecheckPlan> selectPage(CoreSafecheckPlan coreSafecheckPlan) {
         //未删除
@@ -192,12 +193,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 }
                 //再处理受检机构类型
                 List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, dto.getId()));
-                if(checkOrgTypes!=null){
+                if (checkOrgTypes != null) {
                     //删除当前计划的受检机构类型
                     coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
                     for (CoreSafecheckPlanToCheckOrgType type :
                             checkOrgTypes) {
-                        coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(),type.getTypeId()));
+                        coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(), type.getTypeId()));
                     }
                 }
                 //再处理检查要点关系
@@ -230,6 +231,11 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         CoreSafecheckPlan plan = baseMapper.selectById(id);
         //修改所有子计划
         List<CoreSafecheckPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
+        List<Long> planIds = appPlans.stream().map(CoreSafecheckPlan::getId).collect(Collectors.toList());
+        planIds.add(id);
+        //拿到父计划和所属子计划是否存在已完成
+        Long hasEdit = coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().in(CoreSafetyTask::getPlanId, planIds).in(CoreSafetyTask::getStatus, 3, 4));
+
         for (CoreSafecheckPlan ap :
                 appPlans) {
 //修改计划状态为停用
@@ -243,12 +249,14 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 code = CycleCommonEnum.getEnum(Math.toIntExact(plan.getPlanCycle()) + 2);
                 dateRange = DateUtils.getStartAndEnd(new Date(), code);
             }
-            //撤回需要删除本周期所有任务
+            //如果不存在已完成撤回需要删除本周期所有任务
 
             if (plan.getPlanCycle() == 6L) {
                 coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
             } else {
-                coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+                if (hasEdit == 0) {
+                    coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+                }
             }
         }
         //设置下发状态为未下发
@@ -266,8 +274,9 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         if (plan.getPlanCycle() == 6L) {
             coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
         } else {
-            coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
-
+            if (hasEdit == 0) {
+                coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+            }
         }
     }
 
@@ -413,12 +422,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
         }
         //再处理受检机构类型
-        if(coreSafecheckPlan.getCheckOrgTypes()!=null){
+        if (coreSafecheckPlan.getCheckOrgTypes() != null) {
             //删除当前计划的受检机构类型
             coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
             for (Integer type :
                     coreSafecheckPlan.getCheckOrgTypes()) {
-                coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(),type));
+                coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(), type));
             }
         }
 
@@ -428,10 +437,15 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
     @Async
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public void childrenPlan(Long id) {
         //处理子计划
         //拿到所有子计划
         List<CoreSafecheckPlan> children = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
+        List<Long> planIds = children.stream().map(CoreSafecheckPlan::getId).collect(Collectors.toList());
+        planIds.add(id);
+        Long hasEdit = coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().in(CoreSafetyTask::getPlanId, planIds).in(CoreSafetyTask::getStatus, 3, 4));
+
         CoreSafecheckPlan coreSafecheckPlan = baseMapper.selectById(id);
         for (CoreSafecheckPlan p :
                 children) {
@@ -485,12 +499,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
             //再处理受检机构类型
             List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
-            if(checkOrgTypes!=null){
+            if (checkOrgTypes != null) {
                 //删除当前计划的受检机构类型
                 coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, p.getId()));
                 for (CoreSafecheckPlanToCheckOrgType type :
                         checkOrgTypes) {
-                    coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(),type.getTypeId()));
+                    coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(), type.getTypeId()));
                 }
             }
             //再处理子计划检查要点关系
@@ -504,25 +518,27 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
                 }
             }
+
             //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
-            if (coreSafecheckPlan.getHasEdit() == null && coreSafecheckPlan.isBuildTaskNow() && coreSafecheckPlan.getPlanStatus() == 1) {
+            if (hasEdit == 0 && p.getPlanStatus() == 1) {
                 coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
             } else {
                 //否则代表编辑名称,需要同步未进行的任务名称
-                CoreSafetyTask temp = new CoreSafetyTask();
-                temp.setTitle(coreSafecheckPlan.getPlanName());
-                coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
+//                CoreSafetyTask temp = new CoreSafetyTask();
+//                temp.setTitle(coreSafecheckPlan.getPlanName());
+//                coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
 
             }
         }
+
         //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
-        if (coreSafecheckPlan.getHasEdit() == null && coreSafecheckPlan.isBuildTaskNow() && coreSafecheckPlan.getPlanStatus() == 1) {
+        if (hasEdit == 0 && coreSafecheckPlan.getPlanStatus() == 1) {
             coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
         } else {
             //否则代表编辑名称,需要同步未进行的任务名称
-            CoreSafetyTask temp = new CoreSafetyTask();
-            temp.setTitle(coreSafecheckPlan.getPlanName());
-            coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
+//            CoreSafetyTask temp = new CoreSafetyTask();
+//            temp.setTitle(coreSafecheckPlan.getPlanName());
+//            coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
 
         }
     }
@@ -625,7 +641,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         //registerBookPdf.setFileName(StringUtils.substringAfterLast(url, "\\"));
         registerBookPdf.setFileName(StringUtils.substringAfterLast(url, "/"));
         registerBookPdf.setOrgName(registerBookVo.getOrgName());
-        if(StringUtils.isEmpty(url)||StringUtils.isEmpty(registerBookPdf.getFileName())){
+        if (StringUtils.isEmpty(url) || StringUtils.isEmpty(registerBookPdf.getFileName())) {
             throw new SystemException(ErrorMsgConstants.GENERATE_PDF_ERROR);
         }
         registerBookPdfService.save(registerBookPdf);
@@ -659,7 +675,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private String buildSafeCheckPdfData(SafeCheckTaskRegisterBookVo data) {
 
         String fileOrgName = registerBookPdfService.getFileOrgName(data.getOrgId());
-        String fileName = fileOrgName + "_" + RegisterBookType.SAFE_CHECK_REPORT.getText()+ "_" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".pdf";
+        String fileName = fileOrgName + "_" + RegisterBookType.SAFE_CHECK_REPORT.getText() + "_" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".pdf";
 
         data.setDest(fileName);
         //新方式生成pdf

+ 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;
     }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/impl/CoreSafetyBookServiceImpl.java

@@ -72,6 +72,10 @@ public class CoreSafetyBookServiceImpl extends ServiceImpl<CoreSafetyBookMapper,
             coreSafetyBook.setUpdateBy(SecurityUtils.getUserId().toString());
             baseMapper.updateById(coreSafetyBook);
         } else {
+            Long count = baseMapper.selectCount(new LambdaQueryWrapper<CoreSafetyBook>().eq(CoreSafetyBook::getOrgId, coreSafetyBook.getOrgId()).eq(CoreSafetyBook::getType, coreSafetyBook.getType()).eq(CoreSafetyBook::getYear, coreSafetyBook.getYear()));
+            if (count>0){
+                throw new RuntimeException("指定机构已存在当前年度相同类型责任书!");
+            }
             //新增
             coreSafetyBook.setCreateTime(new Date());
             coreSafetyBook.setCreateBy(String.valueOf(SecurityUtils.getUserId()));

+ 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,