多数据导入
This commit is contained in:
parent
537713fd0d
commit
c0a3d43311
|
|
@ -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<PmWorkerImport> util = new ExcelUtil<>(PmWorkerImport.class);
|
||||
List<PmWorkerImport> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<String,String> map = dealWithPermission();
|
||||
if(!map.isEmpty()){
|
||||
// 3. 将 map 中的值复制到 o 对象中
|
||||
org.apache.commons.beanutils.BeanUtils.populate(po, map);
|
||||
}
|
||||
List<MapBeanVo> list = service.selectPro(po);
|
||||
return new AjaxResult(200,"查询成功",list);
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -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<UploadFileVo> 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;
|
||||
|
||||
}
|
||||
|
|
@ -156,4 +156,12 @@ public interface PmWorkerMapper {
|
|||
List<MapBeanPo> getWageCardById(Integer workerId);
|
||||
|
||||
void insertWorkerWageCard(BmWorkerWageCard bmWorkerWageCard);
|
||||
|
||||
Integer getProIdByProName(String proName);
|
||||
|
||||
Integer getSubIdBySubName(String subName);
|
||||
|
||||
Integer getTeamIdByTeamName(String teamName);
|
||||
|
||||
Integer getPostIdByPostName(String postName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<PmWorker> selectEinListByWorkerId(PmWorkerDto o);
|
||||
|
||||
AjaxResult insertProEin(PmWorker o, List<WebFileDto> listFile);
|
||||
|
||||
String workerManyEinImport(List<PmWorkerImport> workerList);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<PmWorkerImport> 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<String, Object> 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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -203,9 +203,17 @@
|
|||
|
||||
<insert id="insertBasicWorkerData" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
|
||||
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
|
||||
<if test="phone != null and phone != ''">
|
||||
,phone
|
||||
</if>
|
||||
)
|
||||
values (#{name}, #{idNumber}, #{sex}, #{age},#{birthday}, #{nation}, #{issuingAuthority},
|
||||
#{startTime}, #{endTime}, #{address}, #{createUser})
|
||||
#{startTime}, #{endTime}, #{address}, #{createUser}
|
||||
<if test="phone != null and phone != ''">
|
||||
,#{phone}
|
||||
</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateBasicWorkerData">
|
||||
|
|
@ -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})
|
||||
</insert>
|
||||
|
||||
<select id="getProIdByProName" resultType="java.lang.Integer">
|
||||
select id from pm_project where pro_name = #{proName}
|
||||
</select>
|
||||
|
||||
<select id="getSubIdBySubName" resultType="java.lang.Integer">
|
||||
select id from pm_sub where sub_name = #{subName}
|
||||
</select>
|
||||
|
||||
<select id="getTeamIdByTeamName" resultType="java.lang.Integer">
|
||||
select id from pm_sub_team where team_name = #{teamName}
|
||||
</select>
|
||||
|
||||
<select id="getPostIdByPostName" resultType="java.lang.Integer">
|
||||
select id from pm_post_type where post_name = #{postName}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue