diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java index f21edac..b9e054b 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmWorkerController.java @@ -3,6 +3,7 @@ package com.bonus.bmw.controller; import com.bonus.bmw.domain.dto.PmWorkerDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.PmWorker; +import com.bonus.bmw.domain.vo.PmWorkerImport; import com.bonus.bmw.service.PmWorkerService; import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.core.utils.face.ArcFaceHelper; @@ -321,6 +322,28 @@ public class PmWorkerController extends BaseController { logger.error(e.toString(), e); return error(e.getMessage()); } + } + + /** + * 导入数据 + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:ein:admin")) + @PostMapping("/workerManyEinImport") + @SysLog(title = "人员多信息导入", businessType = OperaType.IMPORT, logType = 0, module = "施工人员->红绿灯管理->入场管理", details = "人员多信息导入") + public AjaxResult workerManyEinImport(@RequestParam(value = "file") MultipartFile file){ + try { + ExcelUtil util = new ExcelUtil<>(PmWorkerImport.class); + List workerList = util.importExcel(file.getInputStream(),3); + boolean allNull = workerList.stream().allMatch(Objects::isNull); + if (allNull) { + return error("导入文件为空或字段不匹配"); + } + String message = service.workerManyEinImport(workerList); + return success(message); + } catch (Exception e) { + logger.error(e.toString(), e); + return error(e.getMessage()); + } } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/SelectController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/SelectController.java index 383683c..17249ea 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/SelectController.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/SelectController.java @@ -16,6 +16,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; +import java.util.Map; + +import static com.bonus.bmw.utils.OwnPermissionUtil.dealWithPermission; /** * 下拉选公用类 @@ -37,6 +40,11 @@ public class SelectController extends BaseController { @SysLog(title = "工程查询", businessType = OperaType.UPDATE, logType = 0, module = "下拉选公用类->工程") public AjaxResult selectPro(@Validated @RequestBody MapBeanPo po) { try { + Map map = dealWithPermission(); + if(!map.isEmpty()){ + // 3. 将 map 中的值复制到 o 对象中 + org.apache.commons.beanutils.BeanUtils.populate(po, map); + } List list = service.selectPro(po); return new AjaxResult(200,"查询成功",list); } catch (Exception e) { diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerImport.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerImport.java new file mode 100644 index 0000000..f81866f --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/PmWorkerImport.java @@ -0,0 +1,228 @@ +package com.bonus.bmw.domain.vo; + +import com.bonus.common.core.annotation.Excel; +import com.bonus.system.api.model.UploadFileVo; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 人员基础信息表 + */ +@Data +public class PmWorkerImport { + + //用于excel导出的序号一列,不需要业务逻辑处理 + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT,sort = 1) + int sequence; + + /** + * 编号 + */ + private Integer id; + + /** + * 姓名 + */ + @Excel(name = "*姓名", sort = 2) + private String name; + + /** + * 身份证 + */ + @Excel(name = "*身份证号", sort = 3) + private String idNumber; + + /** + * 性别 + */ + private String sex; + + /** + * 年龄 + */ + private Integer age; + + /** + * 手机号 + */ + @Excel(name = "手机号码", type = Excel.Type.IMPORT) + private String phone; + + /** + * 出生日期 生日 + */ + private String birthday; + + /** + * 民族 + */ + @Excel(name = "*民族", type = Excel.Type.IMPORT) + private String nation; + + /** + * 签发机关 + */ + @Excel(name = "*签发机关", type = Excel.Type.IMPORT) + private String issuingAuthority; + + /** + * 有效期开始时间 + */ + @Excel(name = "*生效日期", type = Excel.Type.IMPORT) + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + + /** + * 有效期结束时间 + */ + @Excel(name = "*失效日期", type = Excel.Type.IMPORT) + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endTime; + + /** + * 家庭住址 + */ + @Excel(name = "*身份证住址", type = Excel.Type.IMPORT) + private String address; + + /** + * 人脸照片 + */ + private String facePhoto; + + /** + * 入场状态 0未入场 1 已入场 + */ + @Excel(name = "入场状态", type = Excel.Type.EXPORT, sort = 8,readConverterExp = "1=入场,0=出场,2=出场") + private Integer einStatus; + + /** + * 0 默认 1 黄灯 2 绿灯 3 失信人员 + */ + private Integer lightStatus; + + /** + * 创建人 + */ + private String createUser; + + /** + * 修改人 + */ + private String updateUser; + /** + * 项目名称 + */ + @Excel(name = "工程名称", sort = 5) + private String proName; + /** + * 分包名称 + */ + @Excel(name = "分包名称", sort = 6) + private String subName; + /** + * 班组名称 + */ + @Excel(name = "班组名称", sort = 7) + private String teamName; + + /** + * 岗位名称 + */ + @Excel(name = "工种", sort = 4) + private String postName; + + /** + * 项目名称 + */ + private Integer proId; + /** + * 分包名称 + */ + private Integer subId; + /** + * 班组名称 + */ + private Integer teamId; + + /** + * 岗位名称 + */ + private Integer postId; + + /** + * 入场时间 + */ + private String einTime; + + /** + * 创建时间 + */ + private Integer contractId; + + + /** + * 合同信息 + */ + private BmWorkerContract bmWorkerContract; + + /** + * 工资卡信息 + */ + private BmWorkerWageCard bmWorkerWageCard; + + private String workerId; + + private String exitTime; + + /** + * 是否上传离职文件 0未上传 1已上传 + */ + private String isUploadFile; + /** + * 离职时间间隔 + */ + private String daysSinceExit; + + /** + * 人脸照片 + */ + private List files; + + private String photoIds; + + private String isShanghai; + + private String facePhotoBase64; + + private String type; + + //导入字段 + /** + * 银行卡号 + */ + @Excel(name = "银行卡号", type = Excel.Type.IMPORT) + private String bankCardCode; + + /** + * 银行名称 + */ + @Excel(name = "银行名称", type = Excel.Type.IMPORT) + private String bankName; + + /** + * 银行支行名称 + */ + @Excel(name = "银行支行名称", type = Excel.Type.IMPORT) + private String bankBranchName; + + /** + * 银行联号 + */ + @Excel(name = "银行联号", type = Excel.Type.IMPORT) + private String bankIdentifierCode; + +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerMapper.java index 1bfea65..0025f38 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerMapper.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/PmWorkerMapper.java @@ -156,4 +156,12 @@ public interface PmWorkerMapper { List getWageCardById(Integer workerId); void insertWorkerWageCard(BmWorkerWageCard bmWorkerWageCard); + + Integer getProIdByProName(String proName); + + Integer getSubIdBySubName(String subName); + + Integer getTeamIdByTeamName(String teamName); + + Integer getPostIdByPostName(String postName); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerService.java index 750e0b1..1e6e362 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerService.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmWorkerService.java @@ -3,6 +3,7 @@ package com.bonus.bmw.service; import com.bonus.bmw.domain.dto.PmWorkerDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.vo.PmWorker; +import com.bonus.bmw.domain.vo.PmWorkerImport; import com.bonus.common.core.web.domain.AjaxResult; import java.util.List; @@ -44,4 +45,6 @@ public interface PmWorkerService{ List selectEinListByWorkerId(PmWorkerDto o); AjaxResult insertProEin(PmWorker o, List listFile); + + String workerManyEinImport(List workerList); } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java index c79bcf0..eb98adf 100644 --- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmWorkerServiceImpl.java @@ -5,10 +5,7 @@ import com.bonus.bmw.domain.dto.PmWorkerDto; import com.bonus.bmw.domain.dto.WebFileDto; import com.bonus.bmw.domain.po.FaceRecognitionBean; import com.bonus.bmw.domain.po.MapBeanPo; -import com.bonus.bmw.domain.vo.BmWorkerContract; -import com.bonus.bmw.domain.vo.BmWorkerWageCard; -import com.bonus.bmw.domain.vo.MapBeanVo; -import com.bonus.bmw.domain.vo.PmWorker; +import com.bonus.bmw.domain.vo.*; import com.bonus.bmw.mapper.PmWorkerMapper; import com.bonus.bmw.service.*; import com.bonus.common.core.constant.Constants; @@ -21,6 +18,7 @@ import com.bonus.system.api.model.UploadFileVo; import com.github.pagehelper.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -299,6 +297,89 @@ public class PmWorkerServiceImpl implements PmWorkerService{ } } + @Override + public String workerManyEinImport(List workerList) { + if (StringUtils.isNull(workerList) || workerList.isEmpty()) { + throw new ServiceException("导入数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (PmWorkerImport worker : workerList) { + try { + // 验证是否存在这个用户 + // 添加员工时,判断员工编号是否已存在 + if(StringUtils.isEmpty(worker.getIdNumber())){ + failureMsg.insert(0, "导入失败!第 " + (workerList.indexOf(worker) + 1) + " 行数据缺少关键信息!"); + continue; + } + PmWorker w = mapper.getWorkerByNumber(worker.getIdNumber(),1); + Map idCardInfo = getIdCardInfo(worker.getIdNumber()); + if (idCardInfo == null) { + failureMsg.insert(0, "导入失败!第 " + (workerList.indexOf(worker) + 1) + " 行数据身份证号码格式不正确!"); + continue; + }else { + worker.setSex(idCardInfo.get("sex").toString()); + worker.setAge(Integer.parseInt(idCardInfo.get("age").toString())); + worker.setBirthday(idCardInfo.get("birthday").toString()); + } + PmWorker export = new PmWorker(); + if (StringUtils.isNull(w)) { + worker.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName()); + BeanUtils.copyProperties(worker, export); + mapper.insertBasicWorkerData(export); + successNum++; + successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 导入成功"); + } else { + worker.setId(w.getId()); + worker.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getUserName()); + BeanUtils.copyProperties(worker, export); + mapper.updateBasicWorkerData(export); + successNum++; + successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 更新成功"); + } + //合同 + BmWorkerWageCard bmWorkerWageCard = new BmWorkerWageCard(); + bmWorkerWageCard.setWorkerId(worker.getId()); + bmWorkerWageCard.setBankCardCode(worker.getBankCardCode()); + bmWorkerWageCard.setBankName(worker.getBankName()); + bmWorkerWageCard.setBankBranchName(worker.getBankBranchName()); + bmWorkerWageCard.setBankIdentifierCode(worker.getBankIdentifierCode()); + insertWorkerWageCard(bmWorkerWageCard); + //入场 + importEinData(export); + } catch (Exception e) { + failureNum++; + String msg = "|" + failureNum + "、施工人员信息 " + worker.getName() + " 导入失败:"; + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + private void importEinData(PmWorker worker) { + Integer a = mapper.getProIdByProName(worker.getProName()); + Integer b = mapper.getSubIdBySubName(worker.getSubName()); + Integer c = mapper.getTeamIdByTeamName(worker.getTeamName()); + Integer d = mapper.getPostIdByPostName(worker.getPostName()); + if(a !=null && a > 0 && b !=null && b > 0 && c !=null && c > 0 && d !=null && d > 0){ + //入场关联数据新增 + worker.setProId(a); + worker.setSubId(b); + worker.setTeamId(c); + worker.setPostId(d); + addEinRecord(worker); + } + + } + /** * 修改入场数据 * @param record diff --git a/bonus-modules/bonus-bmw/src/main/resources/bootstrap-local.yml b/bonus-modules/bonus-bmw/src/main/resources/bootstrap-local.yml index 8932389..554a7ca 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/bootstrap-local.yml +++ b/bonus-modules/bonus-bmw/src/main/resources/bootstrap-local.yml @@ -11,11 +11,11 @@ spring: discovery: # 服务注册地址 server-addr: 192.168.0.14:8848 - namespace: fangliang_test + namespace: huadong_realname_local config: # 配置中心地址 server-addr: 192.168.0.14:8848 - namespace: fangliang_test + namespace: huadong_realname_local # 配置文件格式 file-extension: yml # 共享配置 @@ -26,3 +26,6 @@ spring: jasypt: encryptor: password: Encrypt + +face: + path: http://112.29.103.165:1616/faceIdentification diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerMapper.xml index 9a0a367..0ece0f6 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmWorkerMapper.xml @@ -203,9 +203,17 @@ insert into pm_worker (`name`, id_number, sex, age, birthday, nation, issuing_authority, - start_time, end_time, address, create_user) + start_time, end_time, address, create_user + + ,phone + + ) values (#{name}, #{idNumber}, #{sex}, #{age},#{birthday}, #{nation}, #{issuingAuthority}, - #{startTime}, #{endTime}, #{address}, #{createUser}) + #{startTime}, #{endTime}, #{address}, #{createUser} + + ,#{phone} + + ) @@ -360,4 +368,20 @@ insert into bm_worker_wage_card (worker_id,bank_card_code,bank_name,bank_branch_name,bank_identifier_code) values (#{workerId},#{bankCardCode},#{bankName},#{bankBranchName},#{bankIdentifierCode}) + + + + + + + +