Commit a4b7790d authored by hongguangwu's avatar hongguangwu

MVP1.6.2-工资原表识别-主逻辑提交

parent cac9e50a
...@@ -17,7 +17,10 @@ public class SalaryOriginalVo { ...@@ -17,7 +17,10 @@ public class SalaryOriginalVo {
/** /**
* 附件 * 附件
*/ */
//private MultipartFile file;
private MultipartFile file; private MultipartFile file;
private String filename;
private String contentType;
/** /**
* 配置关系(含配置list) * 配置关系(含配置list)
*/ */
......
package com.yifu.cloud.plus.v1.yifu.salary.vo; package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardOriginal;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
...@@ -16,11 +14,8 @@ import java.util.List; ...@@ -16,11 +14,8 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
public class SalaryUploadOriginalParamVo { public class SalaryUploadOriginalParamVo {
// 表格file
MultipartFile file;
// 配置 // 配置
TSalaryStandardOriginal original; String originalId;
// sheetName;必填 // sheetName;必填
String sheetName; String sheetName;
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
package com.yifu.cloud.plus.v1.yifu.salary.controller; package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
...@@ -38,13 +39,20 @@ import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryUploadOriginalParamVo; ...@@ -38,13 +39,20 @@ import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryUploadOriginalParamVo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -162,7 +170,8 @@ public class TSalaryStandardOriginalController { ...@@ -162,7 +170,8 @@ public class TSalaryStandardOriginalController {
} }
/** /**
* @param vo * @param file
* @param tSalaryStandardOriginal
* @Description: 原表识别配置保存 * @Description: 原表识别配置保存
* @Author: hgw * @Author: hgw
* @Date: 2024/4/2 18:02 * @Date: 2024/4/2 18:02
...@@ -171,19 +180,24 @@ public class TSalaryStandardOriginalController { ...@@ -171,19 +180,24 @@ public class TSalaryStandardOriginalController {
@SysLog("原表识别配置新增") @SysLog("原表识别配置新增")
@Operation(description = "新增") @Operation(description = "新增")
@PostMapping("/doSave") @PostMapping("/doSave")
public R<String> doSave(@RequestBody SalaryOriginalVo vo) throws IOException { public R<String> doSave(MultipartFile file, TSalaryStandardOriginal tSalaryStandardOriginal) throws Exception {
TSalaryStandardOriginal tSalaryStandardOriginal = vo.getSalaryOriginal();
MultipartFile file = vo.getFile(); if (tSalaryStandardOriginal != null && Common.isNotNull(tSalaryStandardOriginal.getDeptId())
if (tSalaryStandardOriginal != null && Common.isNotNull(tSalaryStandardOriginal.getDeptId()) && file != null) { && Common.isNotNull(tSalaryStandardOriginal.getSetName()) && file != null) {
List<TSalaryStandardOriginalDetail> detailList = tSalaryStandardOriginal.getDetailList(); List<TSalaryStandardOriginalDetail> detailList = tSalaryStandardOriginal.getDetailList();
if (detailList == null || detailList.isEmpty()) { if (detailList == null || detailList.isEmpty()) {
return R.failed("请传配置表头list"); return R.failed("请传配置表头list");
} }
tSalaryStandardOriginalService.save(tSalaryStandardOriginal);
for (TSalaryStandardOriginalDetail detail : detailList) { // 判重
detail.setOriginalId(tSalaryStandardOriginal.getId()); TSalaryStandardOriginal isCur = new TSalaryStandardOriginal();
isCur.setDeptId(tSalaryStandardOriginal.getDeptId());
isCur.setSetName(tSalaryStandardOriginal.getSetName());
List<TSalaryStandardOriginal> curList = tSalaryStandardOriginalService.getTSalaryStandardOriginalList(isCur);
if (curList != null && !curList.isEmpty()) {
return R.failed("该项目下已存在此原表类型,请修改!");
} }
tSalaryStandardOriginalDetailService.saveBatch(detailList);
// 上传附件 // 上传附件
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
//filePath不传默认存储空间的根目录 //filePath不传默认存储空间的根目录
...@@ -203,16 +217,31 @@ public class TSalaryStandardOriginalController { ...@@ -203,16 +217,31 @@ public class TSalaryStandardOriginalController {
if (key.lastIndexOf(point) >= 0) { if (key.lastIndexOf(point) >= 0) {
tSalaryStandardOriginal.setAttaType(key.substring(fileName.lastIndexOf(point), fileName.length())); tSalaryStandardOriginal.setAttaType(key.substring(fileName.lastIndexOf(point), fileName.length()));
} }
tSalaryStandardOriginalService.updateById(tSalaryStandardOriginal);
} else { } else {
return R.failed("failed:上传至存储空间失败"); return R.failed("failed:上传至存储空间失败");
} }
tSalaryStandardOriginalService.save(tSalaryStandardOriginal);
for (TSalaryStandardOriginalDetail detail : detailList) {
detail.setOriginalId(tSalaryStandardOriginal.getId());
}
tSalaryStandardOriginalDetailService.saveBatch(detailList);
return R.ok("保存成功!"); return R.ok("保存成功!");
} else { } else {
return R.failed("请传参!"); return R.failed("请传参!");
} }
} }
public static MultipartFile convert(String data, String filename, String contentType) throws Exception {
byte[] bytes = data.getBytes();
InputStream inputStream = new ByteArrayInputStream(bytes);
FileItem fileItem = new DiskFileItem("file", contentType, false, filename, bytes.length, new File("/originalTmp"));
fileItem.getOutputStream().write(bytes);
return new CommonsMultipartFile(fileItem);
}
/** /**
* @Description: 获取表头等信息 * @Description: 获取表头等信息
* @Author: hgw * @Author: hgw
...@@ -235,8 +264,8 @@ public class TSalaryStandardOriginalController { ...@@ -235,8 +264,8 @@ public class TSalaryStandardOriginalController {
@SysLog("新版原表识别导入") @SysLog("新版原表识别导入")
@Operation(description = "新版原表识别导入") @Operation(description = "新版原表识别导入")
@PostMapping("/salaryUploadByOriginal") @PostMapping("/salaryUploadByOriginal")
public R<List<ErrorMessage>> salaryUploadByOriginal(@RequestBody SalaryUploadOriginalParamVo vo) { public R<List<ErrorMessage>> salaryUploadByOriginal(MultipartFile file, SalaryUploadOriginalParamVo vo) {
return tSalaryStandardOriginalService.salaryUploadByOriginal(vo); return tSalaryStandardOriginalService.salaryUploadByOriginal(file, vo);
} }
} }
...@@ -62,6 +62,6 @@ public interface TSalaryStandardOriginalService extends IService<TSalaryStandard ...@@ -62,6 +62,6 @@ public interface TSalaryStandardOriginalService extends IService<TSalaryStandard
* @Date: 2024/4/8 18:05 * @Date: 2024/4/8 18:05
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage>> * @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage>>
**/ **/
R<List<ErrorMessage>> salaryUploadByOriginal(SalaryUploadOriginalParamVo excelVo); R<List<ErrorMessage>> salaryUploadByOriginal(MultipartFile file, SalaryUploadOriginalParamVo excelVo);
} }
...@@ -426,8 +426,8 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -426,8 +426,8 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage>> * @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage>>
**/ **/
@Override @Override
public R<List<ErrorMessage>> salaryUploadByOriginal(SalaryUploadOriginalParamVo excelVo) { public R<List<ErrorMessage>> salaryUploadByOriginal(MultipartFile file, SalaryUploadOriginalParamVo excelVo) {
R<String> contR = this.getExcelContent(excelVo); R<String> contR = this.getExcelContent(file, excelVo);
if (contR != null) { if (contR != null) {
if (CommonConstants.SUCCESS.equals(contR.getCode())) { if (CommonConstants.SUCCESS.equals(contR.getCode())) {
SalaryUploadParamVo vo = new SalaryUploadParamVo(); SalaryUploadParamVo vo = new SalaryUploadParamVo();
...@@ -454,19 +454,19 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -454,19 +454,19 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
* @Date: 2024-4-8 18:20:22 * @Date: 2024-4-8 18:20:22
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.yifu.salary.vo.ExcelVo> * @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.yifu.salary.vo.ExcelVo>
**/ **/
private R<String> getExcelContent(SalaryUploadOriginalParamVo excelVo) { private R<String> getExcelContent(MultipartFile file, SalaryUploadOriginalParamVo excelVo) {
MultipartFile file = excelVo.getFile();
String sheetName = excelVo.getSheetName(); String sheetName = excelVo.getSheetName();
// 配置 // 配置
TSalaryStandardOriginal original = excelVo.getOriginal(); String originalId = excelVo.getOriginalId();
// 特殊身份证允许识别为数据行 // 特殊身份证允许识别为数据行
List<String> specialIdCardList = baseMapper.getSpecialIdCardList(); List<String> specialIdCardList = baseMapper.getSpecialIdCardList();
try { try {
//对前端传递的文件进行校验 //对前端传递的文件进行校验
if (original == null || Common.isEmpty(original.getId())) { if (Common.isEmpty(originalId)) {
return R.failed("识别配置为空,请选择识别配置!"); return R.failed("识别配置为空,请选择识别配置!");
} }
List<TSalaryStandardOriginalDetail> detailList = tSalaryStandardOriginalDetailService.getTSalaryStandardOriginalDetailByOrgId(original.getId()); List<TSalaryStandardOriginalDetail> detailList = tSalaryStandardOriginalDetailService.getTSalaryStandardOriginalDetailByOrgId(originalId);
Map<String, TSalaryStandardOriginalDetail> detailMap = new HashMap<>(); Map<String, TSalaryStandardOriginalDetail> detailMap = new HashMap<>();
for (TSalaryStandardOriginalDetail detail : detailList) { for (TSalaryStandardOriginalDetail detail : detailList) {
detailMap.put(String.valueOf(detail.getColumnNo()), detail); detailMap.put(String.valueOf(detail.getColumnNo()), detail);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment