TRX 1 жил өмнө
parent
commit
5788369b23
15 өөрчлөгдсөн 232 нэмэгдсэн , 80 устгасан
  1. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolBind2OrgUserParam.java
  2. 4 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolImportParam.java
  3. 2 2
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolQueryParam.java
  4. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolSearch.java
  5. 3 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolSimpleModel.java
  6. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoSearch.java
  7. 3 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardLossParam.java
  8. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java
  9. 28 5
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/CardController.java
  10. 5 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/CardInfoPoolController.java
  11. 0 9
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/OpenAppManagerService.java
  12. 57 7
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java
  13. 9 14
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoPoolService.java
  14. 110 38
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java
  15. 7 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/DictInfoServiceImpl.java

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolBind2OrgUserParam.java

@@ -23,4 +23,5 @@ public class CardInfoPoolBind2OrgUserParam {
     @NotEmpty(message = "id不能为空")
     private String id;
 
+    private String remark;
 }

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolImportParam.java

@@ -30,4 +30,8 @@ public class CardInfoPoolImportParam {
     @Excel(name = "uid")
     @Schema(description = "uid是什么")
     private String uid;
+
+    @Excel(name = "备注")
+    @Schema(description = "备注")
+    private String remark;
 }

+ 2 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolQueryParam.java

@@ -18,8 +18,8 @@ import lombok.NoArgsConstructor;
 public class CardInfoPoolQueryParam {
 
     @Schema(description = "项目oid")
-    @NotEmpty(message = "oid不能为空")
-    private String oid;
+    @NotEmpty(message = "projectOid不能为空")
+    private String projectOid;
 
     @Schema(description = "搜索的卡号")
     private String code;

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolSearch.java

@@ -15,6 +15,7 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 public class CardInfoPoolSearch extends SuperSearch {
+
     @Schema(description = "卡片名称")
     private String name;
 

+ 3 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolSimpleModel.java

@@ -28,7 +28,7 @@ public class CardInfoPoolSimpleModel {
     private String cardTypeStr;
 
     public String getCardTypeStr() {
-        if (cardType == null) {
+        if (cardType != null) {
             return cardType.getRemark();
         }
         return "";
@@ -40,4 +40,6 @@ public class CardInfoPoolSimpleModel {
     @Schema(description = "是否已使用")
     private Boolean isUsed = Boolean.FALSE;
 
+    @Schema(description = "备注")
+    private String remark;
 }

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoSearch.java

@@ -30,7 +30,7 @@ public class CardInfoSearch extends SuperSearch {
     private CardState cardState;
 
     @Schema(description = "是否作废")
-    private Boolean isCanceled = Boolean.FALSE;
+    private Boolean isCanceled;
 
     @Schema(description = "所属用户UserId")
     private String userId;

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardLossParam.java

@@ -33,4 +33,7 @@ public class CardLossParam {
 
     @Schema(description = "密码")
     private String passWord;
+
+    @Schema(description = "是否验证密码", hidden = true)
+    private Boolean verifyPassword = Boolean.TRUE;
 }

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java

@@ -24,7 +24,7 @@ public interface CardInfoService {
     ResultContent bindCardFromPool(String poolId, String userId);
 
     // 绑定
-    ResultContent bindCardFromPoolByOrgId(String poolId, String id);
+    ResultContent bindCardFromPoolByOrgId(String poolId, String id, String remark);
 
     // 解绑用户卡片
     ResultContent unBindCard(String id);

+ 28 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/CardController.java

@@ -1,10 +1,11 @@
-package com.zhongshu.card.server.core.controller.orgManager;
+package com.zhongshu.card.server.core.controller.projectAbout;
 
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.helper.AuthHelper;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.OidModel;
+import com.zhongshu.card.client.model.base.ProjectOidParam;
 import com.zhongshu.card.client.model.org.OrgUserDetailParam;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
@@ -89,6 +90,7 @@ public class CardController {
         return cardInfoService.deleteCardInfo(param.getId());
     }
 
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "挂失卡片(通过数据ID挂失自己的)", description = "挂失卡片(通过数据ID挂失自己的)")
     @RequestMapping(value = {"cardLossById"}, method = {RequestMethod.POST})
@@ -100,6 +102,15 @@ public class CardController {
     @Operation(summary = "挂失卡片(通过卡片code挂失别人的)", description = "挂失卡片(通过卡片code挂失别人的)")
     @RequestMapping(value = {"cardLossByCode"}, method = {RequestMethod.POST})
     public ResultContent cardLossByCode(@RequestBody CardLossParam param) {
+        param.setVerifyPassword(Boolean.TRUE);
+        return cardInfoService.cardLossByIccId(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "挂失卡片(管理员操作挂失卡片)", description = "挂失卡片(管理员操作挂失卡片)")
+    @RequestMapping(value = {"managerCardLossByCode"}, method = {RequestMethod.POST})
+    public ResultContent managerCardLossByCode(@RequestBody CardLossParam param) {
+        param.setVerifyPassword(Boolean.FALSE);
         return cardInfoService.cardLossByIccId(param);
     }
 
@@ -114,6 +125,15 @@ public class CardController {
     @Operation(summary = "卡片启用(帮别人启用)", description = "卡片启用")
     @RequestMapping(value = {"cardEnableByCode"}, method = {RequestMethod.POST})
     public ResultContent cardEnableByCode(@RequestBody CardLossParam param) {
+        param.setVerifyPassword(Boolean.TRUE);
+        return cardInfoService.cardEnableByIccId(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "卡片启用(管理员操作启用)", description = "卡片启用")
+    @RequestMapping(value = {"managerCardEnableByCode"}, method = {RequestMethod.POST})
+    public ResultContent managerCardEnableByCode(@RequestBody CardLossParam param) {
+        param.setVerifyPassword(Boolean.FALSE);
         return cardInfoService.cardEnableByIccId(param);
     }
 
@@ -182,7 +202,7 @@ public class CardController {
     @Operation(summary = "从卡池选择卡片绑定机构用户", description = "从卡池选择卡片绑定机构用户")
     @RequestMapping(value = {"bindCardFromPoolByOrgId"}, method = {RequestMethod.POST})
     public ResultContent bindCardFromPoolByOrgId(@RequestBody @Valid CardInfoPoolBind2OrgUserParam param) {
-        return cardInfoService.bindCardFromPoolByOrgId(param.getPoolId(), param.getId());
+        return cardInfoService.bindCardFromPoolByOrgId(param.getPoolId(), param.getId(), "");
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
@@ -201,18 +221,21 @@ public class CardController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "importCard", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, method = RequestMethod.POST)
     @Operation(summary = "导入用户和卡片的关系", description = "导入用户和卡片的关系")
-    public ResultContent<ImportResultModel> importCard(HttpServletRequest request, HttpServletResponse response, @RequestPart("file") MultipartFile file, OidModel param) throws IOException {
+    public ResultContent<ImportResultModel> importCard(HttpServletRequest request, HttpServletResponse response, @RequestPart("file") MultipartFile file,
+            ProjectOidParam param1) throws IOException {
         if (file == null || file.isEmpty()) {
             return ResultContent.buildFail("文件不能为空");
         }
+        OidModel param = new OidModel();
+        param.setOid(param1.getProjectOid());
         return cardInfoService.importCard(request, response, file, param);
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "exportProjectCard", method = RequestMethod.POST)
     @Operation(summary = "导出项目卡片", description = "导出项目卡片")
-    public void exportProjectCard(
-            HttpServletRequest request, HttpServletResponse response, CardInfoSearch param) throws IOException {
+    public void exportProjectCard(HttpServletRequest request, HttpServletResponse response,
+            CardInfoSearch param) throws IOException {
         cardInfoService.exportProjectCard(request, response, param);
     }
 

+ 5 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/CardInfoPoolController.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/CardInfoPoolController.java

@@ -1,10 +1,11 @@
-package com.zhongshu.card.server.core.controller.orgManager;
+package com.zhongshu.card.server.core.controller.projectAbout;
 
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.IDParam;
 import com.zhongshu.card.client.model.base.IDsParam;
 import com.zhongshu.card.client.model.base.OidModel;
+import com.zhongshu.card.client.model.base.ProjectOidParam;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.type.CardCancelState;
@@ -111,10 +112,12 @@ public class CardInfoPoolController {
     public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request,
             HttpServletResponse response,
             @RequestPart("file") MultipartFile file,
-            OidModel param) throws IOException {
+            ProjectOidParam param1) throws IOException {
         if (file == null || file.isEmpty()) {
             return ResultContent.buildFail("文件不能为空");
         }
+        OidModel param = new OidModel();
+        param.setOid(param1.getProjectOid());
         return cardInfoPoolService.importCardPool(request, response, file, param);
     }
 

+ 0 - 9
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/OpenAppManagerService.java

@@ -1,7 +1,6 @@
 package com.zhongshu.card.server.core.service.openAPI;
 
 import com.github.microservice.auth.security.helper.AuthHelper;
-import com.github.microservice.net.ResultContent;
 import com.zhongshu.opengateway.client.model.param.SignParam;
 import com.zhongshu.opengateway.client.service.OpenApiService;
 import com.zhongshu.opengateway.client.service.SignService;
@@ -9,17 +8,9 @@ import com.zhongshu.opengateway.client.type.AppState;
 import com.zhongshu.opengateway.client.type.AppType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.web.PageableDefault;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.RestTemplate;
 
-import javax.annotation.Resource;
-import java.net.URI;
-
 @Service
 public class OpenAppManagerService {
 

+ 57 - 7
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -14,10 +14,8 @@ import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.school.ExcelUserParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
 import com.zhongshu.card.client.model.school.RegisterBindSchoolParam;
-import com.zhongshu.card.client.type.DataOperationType;
-import com.zhongshu.card.client.type.DictInfoType;
-import com.zhongshu.card.client.type.OrganizationUserType;
-import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.card.client.type.*;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.org.*;
 import com.zhongshu.card.server.core.dao.school.DictInfoDao;
 import com.zhongshu.card.server.core.dataConfig.CardSystemDefault;
@@ -107,6 +105,9 @@ public class OrganizationUserServiceImpl extends SuperService {
     @Autowired
     private DictInfoServiceImpl dictInfoService;
 
+    @Autowired
+    private OrganizationRelationDao organizationRelationDao;
+
     /**
      * 添加编辑用户 添加机构用户 (包括角色 部门 职位等信息)
      * 用户可能不存在
@@ -231,7 +232,6 @@ public class OrganizationUserServiceImpl extends SuperService {
                 return ResultContent.buildFail(String.format("code已存在:%s", param.getCode()));
             }
             organizationUser = new OrganizationUser();
-            organizationUser.setOid(organization.getOid());
             initEntity(organizationUser);
             BeanUtils.copyProperties(param, organizationUser);
             // 在机构中的用户类型
@@ -257,6 +257,7 @@ public class OrganizationUserServiceImpl extends SuperService {
             }
         }
 
+        organizationUser.setOid(organization.getOid());
         organizationUser.setOrganization(organization);
         organizationUser.setUser(userAccount);
         organizationUser.setUserId(userAccount.getUserId());
@@ -512,6 +513,7 @@ public class OrganizationUserServiceImpl extends SuperService {
             HashMap<String, String> name2Id = new HashMap<>();
             HashMap<String, List<String>> role2Id = new HashMap<>();
             HashMap<String, String> pos2Id = new HashMap<>();
+            Organization projectInfo = organizationDao.findTopByOid(projectOid);
 
             if (ObjectUtils.isNotEmpty(list)) {
                 for (ExcelUserParam excelUserParam : list) {
@@ -550,14 +552,23 @@ public class OrganizationUserServiceImpl extends SuperService {
                         failDetails.add(String.format("第%d行机构信息不能为空", startRow));
                         continue;
                     }
+                    orgName = orgName.trim();
                     if (name2Id.containsKey(orgName)) {
                         beLongOid = name2Id.get(orgName);
                     } else {
-                        Organization organization = organizationDao.findTopByProjectOidAndName(projectOid, orgName);
+                        Organization organization = organizationDao.findTopByName(orgName);
                         if (ObjectUtils.isEmpty(organization)) {
                             failDetails.add(String.format("%s 机构信息不存在", orgName));
                             continue;
                         }
+                        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(
+                                projectInfo, organization, OrganizationRelationType.ProjectBindOrg
+                        );
+                        if (ObjectUtils.isEmpty(relation)) {
+                            failDetails.add(String.format("%s 机构信息未加入到项目中", orgName));
+                            continue;
+                        }
+                        beLongOid = organization.getOid();
                         name2Id.put(orgName, organization.getOid());
                     }
 
@@ -654,10 +665,41 @@ public class OrganizationUserServiceImpl extends SuperService {
             maps = list.stream().map(it -> {
                 Map<String, Object> map = BeanUtil.bean2Map(it);
                 String sex = "";
-                if (it.getUser() != null && it.getUser().getSex() != null) {
+                UserAccount userAccount = it.getUser();
+                if (userAccount != null && it.getUser().getSex() != null) {
                     sex = it.getUser().getSex().getRemark();
                 }
                 map.put("sexStr", sex);
+
+                Organization organization1 = it.getOrganization();
+                if (ObjectUtils.isNotEmpty(organization1)) {
+                    map.put("orgName", organization1.getName());
+                }
+
+                String departmentName = "";
+                if (it.getDepartment() != null) {
+                    departmentName = it.getDepartment().getName();
+                }
+                map.put("departmentName", departmentName);
+                String roleNames = "";
+                if (ObjectUtils.isNotEmpty(it.getRoles())) {
+                    roleNames = it.getRoles().stream().map(it1 -> it1.getName()).collect(Collectors.joining("、"));
+                }
+                map.put("roleNames", roleNames);
+
+                String positionName = "";
+                if (ObjectUtils.isNotEmpty(it.getPosition())) {
+                    DictInfo dictInfo = dictInfoService.getEntity(it.getPosition().getId());
+                    if (ObjectUtils.isNotEmpty(dictInfo)) {
+                        positionName = dictInfo.getName();
+                    }
+                }
+                map.put("positionName", positionName);
+
+                if (it.getState() != null) {
+                    map.put("stateStr", it.getState().getRemark());
+                }
+                map.put("createTime", DateUtils.paresTime(it.getCreateTime(), DateUtils.FORMAT_LONG));
                 return map;
             }).collect(Collectors.toList());
         }
@@ -672,6 +714,14 @@ public class OrganizationUserServiceImpl extends SuperService {
         tds.add(CommonExeclTd.build("性别", "sexStr"));
         tds.add(CommonExeclTd.build("手机号", "phone"));
         tds.add(CommonExeclTd.build("身份证号", "cardNumber"));
+
+        tds.add(CommonExeclTd.build("机构", "orgName"));
+        tds.add(CommonExeclTd.build("部门", "departmentName"));
+        tds.add(CommonExeclTd.build("人员类型", "roleNames"));
+        tds.add(CommonExeclTd.build("职位", "positionName"));
+        tds.add(CommonExeclTd.build("状态", "stateStr"));
+        tds.add(CommonExeclTd.build("创建时间", "createTime"));
+
         tds.add(CommonExeclTd.build("备注", "remark"));
 
         execlParam.setTds(tds);

+ 9 - 14
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoPoolService.java

@@ -208,11 +208,7 @@ public class CardInfoPoolService extends SuperService {
      * @param file
      * @return
      */
-    public ResultContent<ImportResultModel> importCardPool(
-            HttpServletRequest request,
-            HttpServletResponse response,
-            MultipartFile file,
-            OidModel param) {
+    public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request, HttpServletResponse response, MultipartFile file, OidModel param) {
         String oid = param.getOid();
         Assert.hasText(oid, "oid不能为空");
 
@@ -255,6 +251,7 @@ public class CardInfoPoolService extends SuperService {
                         // 检查是否已存在 code
                         boolean exit = cardInfoPoolDao.existsByCode(param1.getCode());
                         if (exit) {
+                            failDetails.add(String.format("第%d行卡号%s已存在", startRow, param1.getCode()));
                             b = false;
                         }
                     }
@@ -297,11 +294,10 @@ public class CardInfoPoolService extends SuperService {
      * @param response
      * @param param
      */
-    public void exportProjectCard(HttpServletRequest request, HttpServletResponse response,
-            CardInfoPoolSearch param) {
-        Assert.hasText(param.getOid(), "oid不能为空");
+    public void exportProjectCard(HttpServletRequest request, HttpServletResponse response, CardInfoPoolSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
 
-        Organization organization = organizationDao.findTopByOid(param.getOid());
+        Organization organization = organizationDao.findTopByOid(param.getProjectOid());
         Pageable pageable = PageRequest.of(0, Integer.MAX_VALUE);
         Page<CardInfoPool> page = cardInfoPoolDao.page(pageable, param);
 
@@ -328,7 +324,7 @@ public class CardInfoPoolService extends SuperService {
         }
 
         CommonExeclParam execlParam = new CommonExeclParam();
-        execlParam.setTitle(String.format("%s卡片数据", organization.getName()));
+        execlParam.setTitle(String.format("%s卡片资源库", organization.getName()));
         execlParam.setStartRow(2);
         execlParam.setDatas(maps);
 
@@ -337,6 +333,7 @@ public class CardInfoPoolService extends SuperService {
         tds.add(CommonExeclTd.build("卡片类型", "cardStr"));
         tds.add(CommonExeclTd.build("使用状态", "useStr"));
         tds.add(CommonExeclTd.build("作废状态", "cancelStr"));
+        tds.add(CommonExeclTd.build("备注", "remark"));
         execlParam.setTds(tds);
         ExcelUtils.commonExecuteExcel(request, response, execlParam);
     }
@@ -344,8 +341,7 @@ public class CardInfoPoolService extends SuperService {
     public CardInfoPool getProjectCard(String projectOid, String code) {
         CardInfoPool cardInfoPool = null;
         if (StringUtils.isNotEmpty(projectOid) && StringUtils.isNotEmpty(code)) {
-            cardInfoPool = cardInfoPoolDao.findTopByProjectOidAndCodeAndIsUsedAndCardCancelState(
-                    projectOid, code, Boolean.FALSE, CardCancelState.Common);
+            cardInfoPool = cardInfoPoolDao.findTopByProjectOidAndCodeAndIsUsedAndCardCancelState(projectOid, code, Boolean.FALSE, CardCancelState.Common);
         }
         return cardInfoPool;
     }
@@ -362,8 +358,7 @@ public class CardInfoPoolService extends SuperService {
         }
 
         // 查询前十的卡片数据
-        List<CardInfoPool> list = cardInfoPoolDao.findTop10ByProjectOidAndCodeLikeAndIsUsedAndCardCancelState(
-                param.getOid(), param.getCode(), Boolean.FALSE, CardCancelState.Common);
+        List<CardInfoPool> list = cardInfoPoolDao.findTop10ByProjectOidAndCodeLikeAndIsUsedAndCardCancelState(param.getProjectOid(), param.getCode(), Boolean.FALSE, CardCancelState.Common);
         List<CardInfoPoolSimpleModel> models = new ArrayList<>();
         if (ObjectUtils.isNotEmpty(list)) {
             models = list.stream().map(this::toSimpleModel).collect(Collectors.toList());

+ 110 - 38
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/CardInfoServiceImpl.java

@@ -16,6 +16,7 @@ import com.zhongshu.card.client.service.school.CardInfoService;
 import com.zhongshu.card.client.type.CardCancelState;
 import com.zhongshu.card.client.type.CardOperationType;
 import com.zhongshu.card.client.type.school.CardState;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
 import com.zhongshu.card.server.core.dao.org.UserCountDao;
@@ -182,7 +183,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         if (ObjectUtils.isEmpty(list)) {
             return ResultContent.buildFail("用户未加入结构,不能绑定卡片");
         }
-        return bindCardFromPoolByOrgId(poolId, list.get(0).getId());
+        return bindCardFromPoolByOrgId(poolId, list.get(0).getId(), "");
     }
 
     /**
@@ -192,7 +193,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
      */
     @Transactional
     @Override
-    public ResultContent bindCardFromPoolByOrgId(String poolId, String id) {
+    public ResultContent bindCardFromPoolByOrgId(String poolId, String id, String remark) {
         if (StringUtils.isEmpty(id)) {
             return ResultContent.buildFail("id不能为空");
         }
@@ -252,6 +253,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         cardInfo.setUserId(userId);
         cardInfo.setUserName(account.getName());
         cardInfo.setPhone(account.getPhone());
+        cardInfo.setRemark(remark);
         cardInfoDao.save(cardInfo);
 
         // 标记卡池这张卡已使用
@@ -281,6 +283,8 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         CardInfoPool cardInfoPool = cardInfoPoolDao.findTopByCode(cardInfo.getCode());
         if (ObjectUtils.isNotEmpty(cardInfoPool)) {
             cardInfoPool.setIsUsed(Boolean.FALSE);
+            cardInfoPool.setUseUserId(null);
+            cardInfoPool.setUseTime(null);
             cardInfoPoolDao.save(cardInfoPool);
         }
         return ResultContent.buildSuccess();
@@ -400,28 +404,36 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
      */
     @Override
     public ResultContent cardLossByIccId(CardLossParam param) {
-        Assert.hasText(param.getPassWord(), "密码不能为空");
         Assert.hasText(param.getCode(), "code不能为空");
-        Assert.hasText(param.getPhone(), "phone不能为空");
-
         String userId = getCurrentUserId();
         UserAccount userAccount = userCountDao.findTopByUserId(userId);
 
-        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
-        if (resultContent.getState() != ResultState.Success) {
-            return ResultContent.buildFail("密码错误");
+        boolean isVerify = false;
+        // 是否验证密码
+        if (param.getVerifyPassword() != null && param.getVerifyPassword()) {
+            isVerify = true;
+        }
+
+        if (isVerify) {
+            Assert.hasText(param.getPhone(), "phone不能为空");
+            Assert.hasText(param.getPassWord(), "密码不能为空");
+            com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
+            if (resultContent.getState() != ResultState.Success) {
+                return ResultContent.buildFail("密码错误");
+            }
         }
 
         CardInfo cardInfo = cardInfoDao.findByCode(param.getCode());
         if (ObjectUtils.isEmpty(cardInfo)) {
             return ResultContent.buildFail(String.format("卡片不存在:%s", param.getCode()));
         }
-
         // 判断卡片人的信息
         String cardUserId = cardInfo.getUserId();
         UserAccount cardUserAccount = userCountDao.findTopByUserId(cardUserId);
-        if (!cardUserAccount.getPhone().equals(param.getPhone())) {
-            return ResultContent.buildFail("持卡人信息和卡号不一致");
+        if (isVerify) {
+            if (!cardUserAccount.getPhone().equals(param.getPhone())) {
+                return ResultContent.buildFail("持卡人信息和卡号不一致");
+            }
         }
 
         if (cardInfo.getCardState() == CardState.Loss) {
@@ -440,7 +452,6 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         cardInfoLossRecord.setCardUserAccount(cardUserAccount);
         cardInfoLossRecord.setOperationType(CardOperationType.Loss);
         cardInfoLossRecordDao.save(cardInfoLossRecord);
-
         return ResultContent.buildSuccess();
     }
 
@@ -487,17 +498,24 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
      */
     @Override
     public ResultContent cardEnableByIccId(CardLossParam param) {
-        Assert.hasText(param.getPassWord(), "密码不能为空");
         Assert.hasText(param.getCode(), "code不能为空");
-        Assert.hasText(param.getPhone(), "phone不能为空");
-
         String userId = getCurrentUserId();
         UserAccount userAccount = userCountDao.findTopByUserId(userId);
 
-        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
-        if (resultContent.getState() != ResultState.Success) {
-            return ResultContent.buildFail("密码错误");
+        boolean isVerify = false;
+        if (param.getVerifyPassword() != null && param.getVerifyPassword()) {
+            isVerify = true;
         }
+
+        if (isVerify) {
+            Assert.hasText(param.getPhone(), "phone不能为空");
+            Assert.hasText(param.getPassWord(), "密码不能为空");
+            com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
+            if (resultContent.getState() != ResultState.Success) {
+                return ResultContent.buildFail("密码错误");
+            }
+        }
+
         CardInfo cardInfo = cardInfoDao.findByCode(param.getCode());
         if (ObjectUtils.isEmpty(cardInfo)) {
             return ResultContent.buildFail(String.format("code不存在:%s", param.getCode()));
@@ -506,8 +524,11 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         // 判断卡片人的信息
         String cardUserId = cardInfo.getUserId();
         UserAccount cardUserAccount = userCountDao.findTopByUserId(cardUserId);
-        if (!cardUserAccount.getPhone().equals(param.getPhone())) {
-            return ResultContent.buildFail("持卡人信息和卡号不一致");
+
+        if (isVerify) {
+            if (!cardUserAccount.getPhone().equals(param.getPhone())) {
+                return ResultContent.buildFail("持卡人信息和卡号不一致");
+            }
         }
 
         if (cardInfo.getCardState() == CardState.Enable) {
@@ -701,7 +722,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             ImportParams params = new ImportParams();
             params.setHeadRows(1);
             params.setTitleRows(1);
-            List<CardInfoBindImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(), CardInfoPoolImportParam.class, params);
+            List<CardInfoBindImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(), CardInfoBindImportParam.class, params);
             model.setTotal(list.size());
 
             HashMap<String, String> codeMap = new HashMap<>();
@@ -768,7 +789,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
                 }
                 if (ObjectUtils.isNotEmpty(cardInfoPools)) {
                     for (CardInfoPoolBind2OrgUserParam bind2OrgUserParam : cardInfoPools) {
-                        bindCardFromPoolByOrgId(bind2OrgUserParam.getPoolId(), bind2OrgUserParam.getId());
+                        bindCardFromPoolByOrgId(bind2OrgUserParam.getPoolId(), bind2OrgUserParam.getId(), bind2OrgUserParam.getRemark());
                     }
                 }
                 model.setSuccess(cardInfoPools.size());
@@ -810,6 +831,51 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
                         orgUser = tempList.get(0);
                     }
                 }
+
+                if (ObjectUtils.isNotEmpty(orgUser)) {
+                    String userCode = "";
+                    String userName = "";
+                    String userSex = "";
+                    userCode = orgUser.getCode();
+                    UserAccount userAccount = orgUser.getUser();
+                    if (userAccount != null) {
+                        map.put("phone", userAccount.getPhone());
+                        if (userAccount.getSex() != null) {
+                            userSex = userAccount.getSex().getRemark();
+                        }
+                        userName = userAccount.getName();
+                    }
+                    map.put("userCode", userCode);
+                    map.put("userName", userName);
+                    map.put("userSex", userSex);
+
+                    String orgName = "";
+                    Organization organization1 = it.getOrganization();
+                    if (ObjectUtils.isNotEmpty(organization1)) {
+                        orgName = organization1.getName();
+                    }
+                    map.put("orgName", orgName);
+                    String departmentName = "";
+                    if (orgUser.getDepartment() != null) {
+                        departmentName = orgUser.getDepartment().getName();
+                    }
+                    map.put("departmentName", departmentName);
+                    String roleNames = "";
+                    if (ObjectUtils.isNotEmpty(orgUser.getRoles())) {
+                        roleNames = orgUser.getRoles().stream().map(it1 -> it1.getName()).collect(Collectors.joining("、"));
+                    }
+                    map.put("roleNames", roleNames);
+                }
+                String cancelStr = "未作废";
+                if (it.getIsCanceled() != null && it.getIsCanceled()) {
+                    cancelStr = "已作废";
+                }
+                map.put("cancelStr", cancelStr);
+                String cardState = it.getCardState().getRemark();
+                map.put("cardState", cardState);
+
+                map.put("createTime", DateUtils.paresTime(it.getCreateTime(), DateUtils.FORMAT_LONG));
+                map.put("updateTime", DateUtils.paresTime(it.getUpdateTime(), DateUtils.FORMAT_LONG));
                 return map;
             }).collect(Collectors.toList());
         }
@@ -822,19 +888,19 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         List<CommonExeclTd> tds = new ArrayList<>();
         tds.add(CommonExeclTd.build("卡片ID", "code"));
         tds.add(CommonExeclTd.build("卡片类型", "cardStr"));
-        tds.add(CommonExeclTd.build("人员编号", "useStr"));
-        tds.add(CommonExeclTd.build("姓名", "cancelStr"));
-        tds.add(CommonExeclTd.build("性别", "cancelStr"));
-        tds.add(CommonExeclTd.build("机构", "cancelStr"));
-        tds.add(CommonExeclTd.build("部门", "cancelStr"));
-        tds.add(CommonExeclTd.build("人员类型", "cancelStr"));
-        tds.add(CommonExeclTd.build("手机号", "cancelStr"));
+        tds.add(CommonExeclTd.build("人员编号", "userCode"));
+        tds.add(CommonExeclTd.build("姓名", "userName"));
+        tds.add(CommonExeclTd.build("性别", "userSex"));
+        tds.add(CommonExeclTd.build("机构", "orgName"));
+        tds.add(CommonExeclTd.build("部门", "departmentName"));
+        tds.add(CommonExeclTd.build("人员类型", "roleNames"));
+        tds.add(CommonExeclTd.build("手机号", "phone"));
         tds.add(CommonExeclTd.build("作废状态", "cancelStr"));
-        tds.add(CommonExeclTd.build("挂失状态", "cancelStr"));
-        tds.add(CommonExeclTd.build("创建人员", "cancelStr"));
-        tds.add(CommonExeclTd.build("创建时间", "cancelStr"));
-        tds.add(CommonExeclTd.build("更新人员", "cancelStr"));
-        tds.add(CommonExeclTd.build("更新时间", "cancelStr"));
+        tds.add(CommonExeclTd.build("挂失状态", "cardState"));
+        tds.add(CommonExeclTd.build("创建人员", "createUserName"));
+        tds.add(CommonExeclTd.build("创建时间", "createTime"));
+        tds.add(CommonExeclTd.build("更新人员", "updateUserName"));
+        tds.add(CommonExeclTd.build("更新时间", "updateTime"));
 
         execlParam.setTds(tds);
         ExcelUtils.commonExecuteExcel(request, response, execlParam);
@@ -858,11 +924,17 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             model = new CardInfoModel();
             BeanUtils.copyProperties(entity, model);
 
-            // 机构用户信息
-            List<OrganizationUser> list = organizationUserService.getUserOrgList(entity.getUserId(), entity.getProjectOid());
             OrganizationUserModel orgUserInfo = null;
-            if (ObjectUtils.isEmpty(list)) {
-                orgUserInfo = userAccountService.toOrgUserModel(list.get(0));
+            OrganizationUser organizationUser = entity.getOrganizationUser();
+            if (ObjectUtils.isEmpty(organizationUser)) {
+                // 机构用户信息
+                List<OrganizationUser> list = organizationUserService.getUserOrgList(entity.getUserId(), entity.getProjectOid());
+                if (ObjectUtils.isNotEmpty(list)) {
+                    organizationUser = list.get(0);
+                }
+            }
+            if (ObjectUtils.isNotEmpty(organizationUser)) {
+                orgUserInfo = userAccountService.toOrgUserModel(organizationUser);
             }
             model.setOrganizationUser(orgUserInfo);
         }

+ 7 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/DictInfoServiceImpl.java

@@ -116,6 +116,13 @@ public class DictInfoServiceImpl extends SuperService implements DictInfoService
         return ResultContent.buildSuccess(model);
     }
 
+    public DictInfo getEntity(String id) {
+        if (StringUtils.isEmpty(id)) {
+            return null;
+        }
+        return dictInfoDao.findTopById(id);
+    }
+
     /**
      * 分页查询
      *