|
|
@@ -0,0 +1,176 @@
|
|
|
+package com.zhongshu.card.server.core.service.school;
|
|
|
+
|
|
|
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
|
|
+import cn.afterturn.easypoi.excel.entity.ImportParams;
|
|
|
+import com.github.microservice.core.util.bean.BeanUtil;
|
|
|
+import com.zhongshu.card.client.model.org.OrganizationUserSearch;
|
|
|
+import com.zhongshu.card.client.model.org.UserCountAddParam;
|
|
|
+import com.zhongshu.card.client.model.school.ExcelUserParam;
|
|
|
+import com.zhongshu.card.client.model.school.ImportUserModel;
|
|
|
+import com.zhongshu.card.client.ret.ResultContent;
|
|
|
+import com.zhongshu.card.client.service.org.UserAccountService;
|
|
|
+import com.zhongshu.card.client.service.school.SchoolUserService;
|
|
|
+import com.zhongshu.card.client.utils.type.Sex;
|
|
|
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
|
|
|
+import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
|
|
|
+import com.zhongshu.card.server.core.domain.org.Organization;
|
|
|
+import com.zhongshu.card.server.core.domain.org.OrganizationUser;
|
|
|
+import com.zhongshu.card.server.core.service.base.SuperService;
|
|
|
+import com.zhongshu.card.server.core.util.BeanUtils;
|
|
|
+import com.zhongshu.card.server.core.util.CommonUtil;
|
|
|
+import com.zhongshu.card.server.core.util.ExcelUtils;
|
|
|
+import com.zhongshu.card.server.core.util.excel.CommonExeclParam;
|
|
|
+import com.zhongshu.card.server.core.util.excel.CommonExeclTd;
|
|
|
+import jakarta.servlet.http.HttpServletRequest;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.Assert;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author TRX
|
|
|
+ * @date 2024/6/12
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class SchoolUserServiceImpl extends SuperService implements SchoolUserService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ UserAccountService userAccountService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OrganizationUserDao organizationUserDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OrganizationDao organizationDao;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入 学校用户excel
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param file
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResultContent<ImportUserModel> importSchoolUsers(HttpServletRequest request,
|
|
|
+ HttpServletResponse response, MultipartFile file) {
|
|
|
+ String oid = getCurrentOid();
|
|
|
+ Assert.hasText(oid, "oid不能为空");
|
|
|
+
|
|
|
+ ImportUserModel model = new ImportUserModel();
|
|
|
+ try {
|
|
|
+ int startRow = 1;
|
|
|
+ ImportParams params = new ImportParams();
|
|
|
+ List<ExcelUserParam> list = ExcelImportUtil.importExcel(file.getInputStream(),
|
|
|
+ ExcelUserParam.class, params);
|
|
|
+ model.setTotal(list.size());
|
|
|
+
|
|
|
+ List<String> failDetails = new ArrayList<>();
|
|
|
+ List<UserCountAddParam> userList = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ for (ExcelUserParam param1 : list) {
|
|
|
+ // 验证数据合法性
|
|
|
+ boolean b = true;
|
|
|
+ if (b && StringUtils.isEmpty(param1.getName())) {
|
|
|
+ b = false;
|
|
|
+ failDetails.add(String.format("第%d行名称不能为空", startRow));
|
|
|
+ }
|
|
|
+ if (b && StringUtils.isEmpty(param1.getCode())) {
|
|
|
+ b = false;
|
|
|
+ failDetails.add(String.format("第%d行编码不能为空", startRow));
|
|
|
+ }
|
|
|
+ if (b && StringUtils.isEmpty(param1.getPhone())) {
|
|
|
+ b = false;
|
|
|
+ failDetails.add(String.format("第%d行电话不能为空", startRow));
|
|
|
+ }
|
|
|
+ if (b) {
|
|
|
+ if (StringUtils.isEmpty(param1.getCardNumber())) {
|
|
|
+ b = false;
|
|
|
+ failDetails.add(String.format("第%d行身份证号不能为空", startRow));
|
|
|
+ } else if (param1.getCardNumber().length() != 18) {
|
|
|
+ b = false;
|
|
|
+ failDetails.add(String.format("第%d行身份证号格式不正确", startRow));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (b) {
|
|
|
+ // 验证通过
|
|
|
+ UserCountAddParam addParam = new UserCountAddParam();
|
|
|
+ initDefaultUserAndOid(addParam);
|
|
|
+ BeanUtils.copyProperties(param1, addParam);
|
|
|
+ if (StringUtils.isNotBlank(param1.getSexStr())) {
|
|
|
+ addParam.setSex(CommonUtil.getSexByStr(param1.getSexStr()));
|
|
|
+ }
|
|
|
+ userList.add(addParam);
|
|
|
+ }
|
|
|
+ startRow++;
|
|
|
+ }
|
|
|
+
|
|
|
+ model.setSuccess(userList.size());
|
|
|
+ model.setFailDetails(failDetails);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ return ResultContent.buildFail(String.format("导入出错:%s", e.getMessage()));
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(model);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出学校用户
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param param
|
|
|
+ */
|
|
|
+ public void exportSchoolUser(HttpServletRequest request, HttpServletResponse response,
|
|
|
+ OrganizationUserSearch param) {
|
|
|
+ initOidSearchParam(param);
|
|
|
+ Organization organization = organizationDao.findTopByOid(param.getOid());
|
|
|
+ Pageable pageable = PageRequest.of(0, Integer.MAX_VALUE);
|
|
|
+ Page<OrganizationUser> page = organizationUserDao.page(pageable, param);
|
|
|
+
|
|
|
+ List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
+ if (page.getContent() != null) {
|
|
|
+ List<OrganizationUser> list = page.getContent();
|
|
|
+ maps = list.stream().map(it -> {
|
|
|
+ Map<String, Object> map = BeanUtil.bean2Map(it);
|
|
|
+ String sex = "";
|
|
|
+ if (it.getUser() != null && it.getUser().getSex() != null) {
|
|
|
+ sex = it.getUser().getSex().getRemark();
|
|
|
+ }
|
|
|
+ map.put("sexStr", sex);
|
|
|
+ return map;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ CommonExeclParam execlParam = new CommonExeclParam();
|
|
|
+ execlParam.setTitle(String.format("%s用户列表", organization.getName()));
|
|
|
+ execlParam.setStartRow(2);
|
|
|
+ execlParam.setDatas(maps);
|
|
|
+
|
|
|
+ List<CommonExeclTd> tds = new ArrayList<>();
|
|
|
+ tds.add(CommonExeclTd.build("人员编号", "code"));
|
|
|
+ tds.add(CommonExeclTd.build("姓名", "name"));
|
|
|
+ tds.add(CommonExeclTd.build("性别", "sexStr"));
|
|
|
+ tds.add(CommonExeclTd.build("手机号", "phone"));
|
|
|
+ tds.add(CommonExeclTd.build("身份证号", "cardNumber"));
|
|
|
+ tds.add(CommonExeclTd.build("备注", "remark"));
|
|
|
+
|
|
|
+ execlParam.setTds(tds);
|
|
|
+ ExcelUtils.commonExecuteExcel(request, response, execlParam);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|