Commit 2be14fa2 authored by hongguangwu's avatar hongguangwu

报账薪资导出

parent 13d12c22
...@@ -447,4 +447,12 @@ public interface CommonConstants { ...@@ -447,4 +447,12 @@ public interface CommonConstants {
public static final String[] SOCIAL_HANDLE_TYPE = {"0","养老", "医疗", "失业", "工伤", "生育", "大病"}; public static final String[] SOCIAL_HANDLE_TYPE = {"0","养老", "医疗", "失业", "工伤", "生育", "大病"};
public static final int SIXTY_INT = 60; public static final int SIXTY_INT = 60;
/**
* param error
* @Author fxj
* @Date 2020-08-25
**/
public static final String PARAM_INFO_ERROR = "传参有误!";
} }
...@@ -68,12 +68,12 @@ public class TSalaryAccount extends BaseEntity { ...@@ -68,12 +68,12 @@ public class TSalaryAccount extends BaseEntity {
@ExcelProperty("工资表ID") @ExcelProperty("工资表ID")
private String salaryFormId; private String salaryFormId;
/** /**
* 工资月 * 薪酬月份
*/ */
@ExcelAttribute(name = "工资月", isNotEmpty = true, errorInfo = "工资月不能为空", maxLength = 6) @ExcelAttribute(name = "薪酬月份", isNotEmpty = true, errorInfo = "薪酬月份不能为空", maxLength = 6)
@NotBlank(message = "工资月不能为空") @NotBlank(message = "薪酬月份不能为空")
@Length(max = 6, message = "工资月不能超过6个字符") @Length(max = 6, message = "薪酬月份不能超过6个字符")
@ExcelProperty("工资月") @ExcelProperty("薪酬月份")
private String salaryMonth; private String salaryMonth;
/** /**
* 员工 ID * 员工 ID
...@@ -92,9 +92,9 @@ public class TSalaryAccount extends BaseEntity { ...@@ -92,9 +92,9 @@ public class TSalaryAccount extends BaseEntity {
/** /**
* 员工身份证号 * 员工身份证号
*/ */
@ExcelAttribute(name = "员工身份证号", maxLength = 25) @ExcelAttribute(name = "身份证号", maxLength = 25)
@Length(max = 25, message = "员工身份证号不能超过25个字符") @Length(max = 25, message = "身份证号不能超过25个字符")
@ExcelProperty("员工身份证号") @ExcelProperty("身份证号")
private String empIdcard; private String empIdcard;
/** /**
* 银行卡号 * 银行卡号
...@@ -104,11 +104,11 @@ public class TSalaryAccount extends BaseEntity { ...@@ -104,11 +104,11 @@ public class TSalaryAccount extends BaseEntity {
@ExcelProperty("银行卡号") @ExcelProperty("银行卡号")
private String bankNo; private String bankNo;
/** /**
* 开户行 * 开户行总行
*/ */
@ExcelAttribute(name = "开户行", maxLength = 50) @ExcelAttribute(name = "开户行总行", maxLength = 50)
@Length(max = 50, message = "开户行不能超过50个字符") @Length(max = 50, message = "开户行总行不能超过50个字符")
@ExcelProperty("开户行") @ExcelProperty("开户行总行")
private String bankName; private String bankName;
/** /**
* 结算部门id * 结算部门id
...@@ -172,12 +172,12 @@ public class TSalaryAccount extends BaseEntity { ...@@ -172,12 +172,12 @@ public class TSalaryAccount extends BaseEntity {
@ExcelProperty("公积金扣缴月份") @ExcelProperty("公积金扣缴月份")
private String deduProvidentMonth; private String deduProvidentMonth;
/** /**
* 表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬 * 报表类型0:薪资;1:绩效;2:其他;3:劳务费;4:稿酬
*/ */
@ExcelAttribute(name = "表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬", isNotEmpty = true, errorInfo = "表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬不能为空", maxLength = 32) @ExcelAttribute(name = "报表类型", readConverterExp = "0=薪资,1=绩效,2=其他,3=劳务费,4=稿酬")
@NotBlank(message = "表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬不能为空") @NotBlank(message = "报表类型不能为空")
@Length(max = 32, message = "表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬不能超过32个字符") @Length(max = 32, message = "报表类型不能超过32个字符")
@ExcelProperty("表单类型0:工资;1:绩效;2:其他;3:劳务费;4:稿酬") @ExcelProperty("报表类型")
private String formType; private String formType;
/** /**
* 结算月 * 结算月
...@@ -260,9 +260,9 @@ public class TSalaryAccount extends BaseEntity { ...@@ -260,9 +260,9 @@ public class TSalaryAccount extends BaseEntity {
/** /**
* 手机号 * 手机号
*/ */
@ExcelAttribute(name = "手机号", maxLength = 11) @ExcelAttribute(name = "手机号", maxLength = 11)
@Length(max = 11, message = "手机号不能超过11个字符") @Length(max = 11, message = "手机号不能超过11个字符")
@ExcelProperty("手机号") @ExcelProperty("手机号")
private String empPhone; private String empPhone;
/** /**
* 是否自有员工0:否;1:是自有员工 * 是否自有员工0:否;1:是自有员工
...@@ -270,6 +270,17 @@ public class TSalaryAccount extends BaseEntity { ...@@ -270,6 +270,17 @@ public class TSalaryAccount extends BaseEntity {
@ExcelAttribute(name = "是否自有员工0:否;1:是自有员工") @ExcelAttribute(name = "是否自有员工0:否;1:是自有员工")
@ExcelProperty("是否自有员工0:否;1:是自有员工") @ExcelProperty("是否自有员工0:否;1:是自有员工")
private Integer ownFlag; private Integer ownFlag;
@Schema(description = "劳务费、稿酬是否含有发薪0:否;1:是")
@ExcelAttribute(name = "劳务费、稿酬是否含有发薪")
@ExcelProperty("劳务费、稿酬是否含有发薪")
private Integer haveSalaryFlag;
@Schema(description = "是否含有特殊金额0:否;1:是")
@ExcelAttribute(name = "是否含有特殊金额")
@ExcelProperty("是否含有特殊金额")
private Integer haveSpecialFlag;
/** /**
* 本月是否重复金额0:否;1:是重复导入的 * 本月是否重复金额0:否;1:是重复导入的
*/ */
...@@ -286,13 +297,13 @@ public class TSalaryAccount extends BaseEntity { ...@@ -286,13 +297,13 @@ public class TSalaryAccount extends BaseEntity {
/** /**
* 开户行省 * 开户行省
*/ */
@ExcelAttribute(name = "开户行省") @ExcelAttribute(name = "开户行省", isArea = true)
@ExcelProperty("开户行省") @ExcelProperty("开户行省")
private String bankProvince; private String bankProvince;
/** /**
* 开户行市 * 开户行市
*/ */
@ExcelAttribute(name = "开户行市") @ExcelAttribute(name = "开户行市", isArea = true, parentField = "bankProvince")
@ExcelProperty("开户行市") @ExcelProperty("开户行市")
private String bankCity; private String bankCity;
/** /**
...@@ -303,10 +314,10 @@ public class TSalaryAccount extends BaseEntity { ...@@ -303,10 +314,10 @@ public class TSalaryAccount extends BaseEntity {
@ExcelProperty("是否个人承担部分税费:0否1是") @ExcelProperty("是否个人承担部分税费:0否1是")
private String isPersonTax; private String isPersonTax;
/** /**
* 应发(劳务费、稿酬) * 应发薪酬(劳务费、稿酬)
*/ */
@ExcelAttribute(name = "应发(劳务费、稿酬)") @ExcelAttribute(name = "应发薪酬")
@ExcelProperty("应发(劳务费、稿酬)") @ExcelProperty("应发薪酬")
private BigDecimal relaySalary; private BigDecimal relaySalary;
/** /**
* 实发(个人实收) * 实发(个人实收)
...@@ -315,10 +326,10 @@ public class TSalaryAccount extends BaseEntity { ...@@ -315,10 +326,10 @@ public class TSalaryAccount extends BaseEntity {
@ExcelProperty("实发(个人实收)") @ExcelProperty("实发(个人实收)")
private BigDecimal actualSalary; private BigDecimal actualSalary;
/** /**
* 个税(个人承担) * 个税金额(个人承担)
*/ */
@ExcelAttribute(name = "个税(个人承担)") @ExcelAttribute(name = "个税金额")
@ExcelProperty("个税(个人承担)") @ExcelProperty("个税金额")
private BigDecimal salaryTax; private BigDecimal salaryTax;
/** /**
* 公司应发 * 公司应发
......
...@@ -208,6 +208,25 @@ public class TSalaryStandard extends BaseEntity { ...@@ -208,6 +208,25 @@ public class TSalaryStandard extends BaseEntity {
@Length(max = 200, message = "自有员工强行提交的备注不能超过200个字符") @Length(max = 200, message = "自有员工强行提交的备注不能超过200个字符")
@ExcelProperty("自有员工强行提交的备注") @ExcelProperty("自有员工强行提交的备注")
private String ownRemark; private String ownRemark;
@Schema(description = "劳务费、稿酬是否含有发薪0:否;1:是")
@ExcelAttribute(name = "劳务费、稿酬是否含有发薪")
@ExcelProperty("劳务费、稿酬是否含有发薪")
private Integer haveSalaryFlag;
@Schema(description = "含有发薪的强行提交的备注", name = "haveSalaryRemark")
@ExcelAttribute(name = "含有发薪的强行提交的备注")
private String haveSalaryRemark;
@Schema(description = "是否含有特殊金额0:否;1:是")
@ExcelAttribute(name = "是否含有特殊金额")
@ExcelProperty("是否含有特殊金额")
private Integer haveSpecialFlag;
@Schema(description = "含有特殊金额的强行提交的备注", name = "haveSpecialRemark")
@ExcelAttribute(name = "含有特殊金额的强行提交的备注")
private String haveSpecialRemark;
/** /**
* 提交备注 * 提交备注
*/ */
......
...@@ -16,11 +16,14 @@ ...@@ -16,11 +16,14 @@
*/ */
package com.yifu.cloud.plus.v1.yifu.salary.vo; package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
/** /**
* 工资报账主表(工资条) * 工资报账主表(工资条)
...@@ -31,17 +34,12 @@ import java.time.LocalDateTime; ...@@ -31,17 +34,12 @@ import java.time.LocalDateTime;
@Data @Data
public class TSalaryAccountSearchVo extends TSalaryAccount { public class TSalaryAccountSearchVo extends TSalaryAccount {
/** @TableField(exist = false)
* 多选导出或删除等操作 private List<String> idList;
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/** @TableField(exist = false)
* 创建时间区间 [开始时间,结束时间] @Schema(description = "导出的表头的Set")
*/ private Set<String> exportFields;
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/** /**
* @Author fxj * @Author fxj
* 查询数据起 * 查询数据起
......
...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.salary.vo; ...@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TApprovalRecord; import com.yifu.cloud.plus.v1.yifu.salary.entity.TApprovalRecord;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccount;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandard; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandard;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -30,6 +31,7 @@ public class TSalaryDetailVo implements Serializable { ...@@ -30,6 +31,7 @@ public class TSalaryDetailVo implements Serializable {
private Map<String, String> accountTitle = new HashMap<>(); //报账表浮动表头Map private Map<String, String> accountTitle = new HashMap<>(); //报账表浮动表头Map
private List<String> titleSortList = new ArrayList<>(); //报账表浮动表头排序List private List<String> titleSortList = new ArrayList<>(); //报账表浮动表头排序List
//非扣税项附件 //非扣税项附件
private List<TSalaryAtta> attaList = new ArrayList<>();
/** /**
* 薪资类审核记录 fxj 2021-11-15 * 薪资类审核记录 fxj 2021-11-15
*/ */
......
...@@ -17,19 +17,20 @@ ...@@ -17,19 +17,20 @@
package com.yifu.cloud.plus.v1.yifu.salary.controller; package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog; import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAttaService; import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAttaService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAttaSearchVo; import io.swagger.v3.oas.annotations.media.Schema;
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.springframework.security.access.prepost.PreAuthorize; import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URL;
import java.util.List; import java.util.List;
...@@ -39,93 +40,113 @@ import java.util.List; ...@@ -39,93 +40,113 @@ import java.util.List;
* @author hgw * @author hgw
* @date 2022-08-05 11:40:14 * @date 2022-08-05 11:40:14
*/ */
@Log4j2
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/tsalaryatta") @RequestMapping("/tsalaryatta")
@Tag(name = "薪资结算附件表管理") @Tag(name = "薪资结算附件表")
public class TSalaryAttaController { public class TSalaryAttaController {
private final TSalaryAttaService tSalaryAttaService; private final TSalaryAttaService tSalaryAttaService;
private OSSUtil ossUtil;
/** /**
* 简单分页查询 * @param recordId 工程薪资暂停发发放记录的id
* * @Description:
* @param page 分页对象 * @Author: hgw
* @param tSalaryAtta 薪资结算附件表 * @Date: 2021/10/27 17:31
* @return * @return: com.yifu.cloud.v1.common.core.util.R<java.util.List < com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>>
*/ **/
@Operation(description = "简单分页查询") @Schema(description = "获取list(recordId 工程薪资暂停发发放记录的id)")
@GetMapping("/page") @GetMapping("/getTSalaryAttaList")
public R<IPage<TSalaryAtta>> getTSalaryAttaPage(Page<TSalaryAtta> page, TSalaryAttaSearchVo tSalaryAtta) { public R<List<TSalaryAtta>> getTSalaryAttaList(@RequestParam String recordId) {
return new R<>(tSalaryAttaService.getTSalaryAttaPage(page, tSalaryAtta)); return new R<>(tSalaryAttaService.getAttaListByRecordId(recordId));
} }
/** /**
* 不分页查询 * @param linkId id
* * @Description: 获取附件
* @param tSalaryAtta 薪资结算附件表 * @Author: hgw
* @return * @Date: 2021-12-8 15:36:58
*/ * @return: com.yifu.cloud.v1.common.core.util.R<java.util.List < com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>>
@Operation(summary = "不分页查询", description = "不分页查询") **/
@PostMapping("/noPage") @Schema(description = "获取list(linkId, linkType链接类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录6:非扣税 7发放失败 8自有员工附件 9财务回执附件 10换人换卡附件;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000))")
//@PreAuthorize("@pms.hasPermission('salary_tsalaryatta_get')" ) @GetMapping("/getTSalaryAttaListByIdType")
public R<List<TSalaryAtta>> getTSalaryAttaNoPage(@RequestBody TSalaryAttaSearchVo tSalaryAtta) { public R<List<TSalaryAtta>> getTSalaryAttaListByIdType(@RequestParam String linkId, @RequestParam Integer linkType) {
return R.ok(tSalaryAttaService.noPageDiy(tSalaryAtta)); return new R<>(tSalaryAttaService.getAttaListHaveSrc(linkId, linkType));
} }
/** /**
* 通过id查询薪资结算附件表 * 阿里云处理文件上传
* *
* @param id id * @param file 文件
* @return R * @param filePath 如: import 或 import/test/test..../test
* @return
* @throws IOException
*/ */
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('salary_tsalaryatta_get')") @SysLog("薪资附件上传")
@GetMapping("/{id}") @Schema(description = "OSS文件上传接口。linkType类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4薪资打印记录;5核准表打印记录;6:非扣税项;8自有员工附件;9:财务回执附件;10换人换卡附件;11薪资原表")
public R<TSalaryAtta> getById(@PathVariable("id") String id) { /*@ApiImplicitParams({
return R.ok(tSalaryAttaService.getById(id)); @ApiImplicitParam(name = "file", value = "Form文件上传", required = true, dataType = "__file", paramType = "form"),
@ApiImplicitParam(name = "filePath", value = "文件上传路径", dataType = "String", paramType = "form"),
@ApiImplicitParam(name = "linkId", value = "链接ID(工资主表id、工程主表id、自定义项表id等)", required = true, dataType = "String", paramType = "form"),
@ApiImplicitParam(name = "linkType", value = "类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4薪资打印记录;5核准表打印记录;6:非扣税项;8自有员工附件;9:财务回执附件;10换人换卡附件;11薪资原表", required = true, dataType = "int", paramType = "form"),
@ApiImplicitParam(name = "engineerType", value = "工程文件类型:0三方协议;1委托付款函;2劳务费;3其他", required = true, dataType = "int", paramType = "form")
})*/
@PostMapping(value = "/ossUploadFile")
public R uploadImg(@RequestBody MultipartFile file, String filePath, String linkId
, Integer linkType, Integer engineerType, String printRemark, String recordId) throws IOException {
return tSalaryAttaService.uploadAtta(file, filePath, linkId, linkType, engineerType, printRemark, recordId);
} }
/** /**
* 新增薪资结算附件表 * 获取附件下载地址
* *
* @param tSalaryAtta 薪资结算附件表 * @param id
* @return R * @return
*/ * @Author fxj
@Operation(summary = "新增薪资结算附件表", description = "新增薪资结算附件表:hasPermission('salary_tsalaryatta_add')") * @Date 2019-08-16
@SysLog("新增薪资结算附件表") **/
@PostMapping @Schema(description = "附件预览下载地址")
@PreAuthorize("@pms.hasPermission('salary_tsalaryatta_add')") @SysLog("附件预览下载地址")
public R<Boolean> save(@RequestBody TSalaryAtta tSalaryAtta) { @GetMapping("/ossFileUrl/{id}")
return R.ok(tSalaryAttaService.save(tSalaryAtta)); public R ossFileUrl(@PathVariable String id) {
TSalaryAtta salaryAtta = tSalaryAttaService.getById(id);
if (null == salaryAtta) {
return R.failed("无对应附件信息");
} }
URL url = ossUtil.getObjectUrl(null, salaryAtta.getAttaSrc());
/** salaryAtta.setAttaUrl(url.toString());
* 修改薪资结算附件表 return new R<>(salaryAtta);
*
* @param tSalaryAtta 薪资结算附件表
* @return R
*/
@Operation(summary = "修改薪资结算附件表", description = "修改薪资结算附件表:hasPermission('salary_tsalaryatta_edit')")
@SysLog("修改薪资结算附件表")
@PutMapping
@PreAuthorize("@pms.hasPermission('salary_tsalaryatta_edit')")
public R<Boolean> updateById(@RequestBody TSalaryAtta tSalaryAtta) {
return R.ok(tSalaryAttaService.updateById(tSalaryAtta));
} }
/** /**
* 通过id删除薪资结算附件表 * 删除数据库记录和OSS文件
* *
* @param id id * @param id
* @return R * @return
*/ * @Author fxj
@Operation(summary = "通过id删除薪资结算附件表", description = "通过id删除薪资结算附件表:hasPermission('salary_tsalaryatta_del')") * @Date 2019-09-09
@SysLog("通过id删除薪资结算附件表") **/
@DeleteMapping("/{id}") @Schema(description = "客户/员工表单附件删除")
@PreAuthorize("@pms.hasPermission('salary_tsalaryatta_del')") @SysLog("客户/员工表单附件删除")
public R<Boolean> removeById(@PathVariable String id) { @GetMapping("/ossFileDelete/{id}")
return R.ok(tSalaryAttaService.removeById(id)); public R ossFileDelete(@PathVariable String id) {
try {
TSalaryAtta salaryAtta = tSalaryAttaService.getById(id);
if (null == salaryAtta) {
return R.failed("无对应附件信息");
}
if (tSalaryAttaService.removeById(id)) {
ossUtil.deleteObject(null, salaryAtta.getAttaSrc());
return R.ok("删除成功!");
}
} catch (Exception e) {
log.error("附件删除异常:" + e.getMessage());
return R.failed("附件删除异常!");
}
return R.ok("删除失败!");
} }
} }
...@@ -23,6 +23,9 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -23,6 +23,9 @@ import org.apache.ibatis.annotations.Mapper;
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 org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 薪资结算附件表 * 薪资结算附件表
* *
...@@ -33,8 +36,11 @@ import org.apache.ibatis.annotations.Param; ...@@ -33,8 +36,11 @@ import org.apache.ibatis.annotations.Param;
public interface TSalaryAttaMapper extends BaseMapper<TSalaryAtta> { public interface TSalaryAttaMapper extends BaseMapper<TSalaryAtta> {
/** /**
* 薪资结算附件表简单分页查询 * 薪资结算附件表简单分页查询
* @param tSalaryAtta 薪资结算附件表 *
* @param tAtta 薪资结算附件表
* @return * @return
*/ */
IPage<TSalaryAtta> getTSalaryAttaPage(Page<TSalaryAtta> page, @Param("tSalaryAtta") TSalaryAtta tSalaryAtta); IPage<TSalaryAtta> getTAttaPage(Page page, @Param("tAtta") TSalaryAtta tAtta);
List<TSalaryAtta> getTAttaList(@Param("tAtta") TSalaryAtta tAtta);
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandard; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandard;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAccountVo; import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAccountVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryDetailVo;
import java.util.List; import java.util.List;
...@@ -34,5 +35,7 @@ public interface SalaryUploadService extends IService<TSalaryStandard> { ...@@ -34,5 +35,7 @@ public interface SalaryUploadService extends IService<TSalaryStandard> {
**/ **/
R<String> saveAndSubmit(List<TSalaryAccountVo> savList); R<String> saveAndSubmit(List<TSalaryAccountVo> savList);
R<TSalaryDetailVo> getBill(String salaryFormId);
} }
...@@ -20,9 +20,12 @@ package com.yifu.cloud.plus.v1.yifu.salary.service; ...@@ -20,9 +20,12 @@ package com.yifu.cloud.plus.v1.yifu.salary.service;
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.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.FileVo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAttaSearchVo; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List; import java.util.List;
/** /**
...@@ -34,10 +37,65 @@ import java.util.List; ...@@ -34,10 +37,65 @@ import java.util.List;
public interface TSalaryAttaService extends IService<TSalaryAtta> { public interface TSalaryAttaService extends IService<TSalaryAtta> {
/** /**
* 薪资结算附件表简单分页查询 * 薪资结算附件表简单分页查询
* @param tSalaryAtta 薪资结算附件表 *
* @param tAtta 薪资结算附件表
* @return * @return
*/ */
IPage<TSalaryAtta> getTSalaryAttaPage(Page<TSalaryAtta> page, TSalaryAttaSearchVo tSalaryAtta); IPage<TSalaryAtta> getTAttaPage(Page<TSalaryAtta> page, TSalaryAtta tAtta);
/**
* @param linkId 工程工资id
* @param recordId 暂停发发放id
* @Description: 工程薪资暂停发附件上传
* @Author: hgw
* @Date: 2021/10/27 15:43
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
R<String> uploadEngineerPauseSalaryAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType
, Integer[] engineerType, String recordId) throws IOException;
/**
* @param linkId 工资id
* @param recordId 自定义暂停发发放id
* @Description: 自定义暂停发附件上传
* @Author: hgw
* @Date: 2021-11-22 17:37:24
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
R<String> uploadPauseDiyAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType
, String recordId) throws IOException;
/**
* @param linkId 工资id
* @Description: 自定义暂停发附件上传
* @Author: hgw
* @Date: 2021-11-22 17:37:24
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
R<String> uploadLostAndFoundAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType) throws IOException;
/**
* @Description: 薪资附件上传-通用
* @Author: hgw
* @Date: 2021/10/27 15:43
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
R<FileVo> uploadAtta(MultipartFile file, String filePath, String linkId, Integer linkType, Integer engineerType
, String printRemark, String recordId) throws IOException;
/**
* @param linkId
* @param linkType
* @Description: 获取list,并且从oss服务器根据AttaSrc获取路径,塞入AttaUrl
* @Author: hgw
* @Date: 2021/11/19 16:03
* @return: java.util.List<com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>
**/
List<TSalaryAtta> getAttaListHaveSrc(String linkId, Integer linkType);
List<TSalaryAtta> getAttaListByRecordId(String recordId);
void updateAttaByLinkId(List<String> salaryAttaIds, String linkId);
List<TSalaryAtta> noPageDiy(TSalaryAttaSearchVo searchVo); void setSrc(List<TSalaryAtta> attaList);
} }
package com.yifu.cloud.plus.v1.yifu.salary.service.impl; package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TDepartSettlementInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TDepartSettlementInfo;
...@@ -49,7 +50,6 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper, ...@@ -49,7 +50,6 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
private final DaprArchivesProperties archivesProperties; private final DaprArchivesProperties archivesProperties;
private final DaprCheckProperties daprCheckProperties; private final DaprCheckProperties daprCheckProperties;
private final DaprSocialProperties socialProperties; private final DaprSocialProperties socialProperties;
private final DaprInsurancesProperties insurancesProperties;
private final TSalaryStandardService tSalaryStandardService; private final TSalaryStandardService tSalaryStandardService;
...@@ -80,6 +80,10 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper, ...@@ -80,6 +80,10 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
private final MSalaryPaymentResService salaryPaymentResService; private final MSalaryPaymentResService salaryPaymentResService;
private final TSalaryAttaService tSalaryAttaService;
private final TApprovalRecordService auditLogService;
/** /**
* @param jsonString 客户原表数据 * @param jsonString 客户原表数据
* @param repeatFlag 默认 0:不允许重复导入已存在系统内的数据;1:允许重复导入 * @param repeatFlag 默认 0:不允许重复导入已存在系统内的数据;1:允许重复导入
...@@ -1420,5 +1424,50 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper, ...@@ -1420,5 +1424,50 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
return "0"; return "0";
} }
/**
* @param salaryFormId 工资表id
* @Description: 获取结算单
* @Author: hgw
* @Date: 2019/9/9 17:49
* @return: com.yifu.cloud.v1.common.core.util.R
**/
@Override
public R<TSalaryDetailVo> getBill(String salaryFormId) {
//工资主表
TSalaryStandard salary = tSalaryStandardService.getById(salaryFormId);
TSalaryDetailVo salaryDetailVo = new TSalaryDetailVo();
if (salary != null) {
List<TSalaryAtta> attaList = null;
if (salary.getType() == null || salary.getType() != CommonConstants.ONE_INT) {
//报账表
TSalaryAccount salaryAccount = new TSalaryAccount();
salaryAccount.setSalaryFormId(salaryFormId);
QueryWrapper<TSalaryAccount> queryWrapperSa = new QueryWrapper<>();
queryWrapperSa.setEntity(salaryAccount);
List<TSalaryAccount> salaryAccountList = tSalaryAccountService.list(queryWrapperSa);
//报账表明细
if (salaryAccountList != null && salaryAccountList.size() > CommonConstants.ZERO_INT) {
TSalaryAccountItem item;
QueryWrapper<TSalaryAccountItem> queryWrapperAi;
List<TSalaryAccountItem> itemList;
for (TSalaryAccount a : salaryAccountList) {
item = new TSalaryAccountItem();
item.setSalaryAccountId(a.getId());
queryWrapperAi = new QueryWrapper<>();
queryWrapperAi.setEntity(item);
itemList = tSalaryAccountItemService.list(queryWrapperAi);
a.setSaiList(itemList);
}
}
salaryDetailVo.setSalaryAccountList(salaryAccountList);
attaList = tSalaryAttaService.getAttaListHaveSrc(salary.getId(), 230);
}
salaryDetailVo.setAttaList(attaList);
salaryDetailVo.setAuditLogList(auditLogService.list(Wrappers.<TApprovalRecord>query().lambda().eq(TApprovalRecord::getSalaryId, salary.getId())));
}
//结算单
salaryDetailVo.setSalary(salary);
return new R<>(salaryDetailVo);
}
} }
...@@ -80,7 +80,7 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper, ...@@ -80,7 +80,7 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper,
*/ */
@Override @Override
public void listExport(HttpServletResponse response, TSalaryAccountSearchVo searchVo) { public void listExport(HttpServletResponse response, TSalaryAccountSearchVo searchVo) {
String fileName = "不良记录批量导出" + DateUtil.getThisTime() + ".xlsx"; String fileName = "员工报账批量导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表 //获取要导出的列表
List<TSalaryAccount> list = new ArrayList<>(); List<TSalaryAccount> list = new ArrayList<>();
long count = noPageCountDiy(searchVo); long count = noPageCountDiy(searchVo);
...@@ -91,8 +91,7 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper, ...@@ -91,8 +91,7 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper,
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭 // 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
//EasyExcel.write(out, TEmpBadRecord.class).sheet("不良记录").doWrite(list); ExcelWriter excelWriter = EasyExcel.write(out, TSalaryAccount.class).includeColumnFiledNames(searchVo.getExportFields()).build();
ExcelWriter excelWriter = EasyExcel.write(out, TSalaryAccount.class).build();
int index = 0; int index = 0;
if (count > CommonConstants.ZERO_INT) { if (count > CommonConstants.ZERO_INT) {
for (int i = 0; i <= count; ) { for (int i = 0; i <= count; ) {
...@@ -141,9 +140,8 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper, ...@@ -141,9 +140,8 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper,
@Override @Override
public List<TSalaryAccount> noPageDiy(TSalaryAccountSearchVo searchVo) { public List<TSalaryAccount> noPageDiy(TSalaryAccountSearchVo searchVo) {
LambdaQueryWrapper<TSalaryAccount> wrapper = buildQueryWrapper(searchVo); LambdaQueryWrapper<TSalaryAccount> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds()); if (Common.isNotNull(searchVo.getIdList())) {
if (Common.isNotNull(idList)) { wrapper.in(TSalaryAccount::getId, searchVo.getIdList());
wrapper.in(TSalaryAccount::getId, idList);
} }
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) { if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd()); wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
...@@ -154,20 +152,14 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper, ...@@ -154,20 +152,14 @@ public class TSalaryAccountServiceImpl extends ServiceImpl<TSalaryAccountMapper,
private Long noPageCountDiy(TSalaryAccountSearchVo searchVo) { private Long noPageCountDiy(TSalaryAccountSearchVo searchVo) {
LambdaQueryWrapper<TSalaryAccount> wrapper = buildQueryWrapper(searchVo); LambdaQueryWrapper<TSalaryAccount> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds()); if (Common.isNotNull(searchVo.getIdList())) {
if (Common.isNotNull(idList)) { wrapper.in(TSalaryAccount::getId, searchVo.getIdList());
wrapper.in(TSalaryAccount::getId, idList);
} }
return baseMapper.selectCount(wrapper); return baseMapper.selectCount(wrapper);
} }
private LambdaQueryWrapper buildQueryWrapper(TSalaryAccountSearchVo entity) { private LambdaQueryWrapper buildQueryWrapper(TSalaryAccountSearchVo entity) {
LambdaQueryWrapper<TSalaryAccount> wrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<TSalaryAccount> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TSalaryAccount::getCreateTime, entity.getCreateTimes()[0])
.le(TSalaryAccount::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) { if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TSalaryAccount::getCreateName, entity.getCreateName()); wrapper.eq(TSalaryAccount::getCreateName, entity.getCreateName());
} }
......
...@@ -16,21 +16,30 @@ ...@@ -16,21 +16,30 @@
*/ */
package com.yifu.cloud.plus.v1.yifu.salary.service.impl; package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.FileVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta; import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryAttaMapper; import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryAttaMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAttaService; import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAttaService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAttaSearchVo; import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
...@@ -41,43 +50,225 @@ import java.util.List; ...@@ -41,43 +50,225 @@ import java.util.List;
*/ */
@Log4j2 @Log4j2
@Service @Service
@AllArgsConstructor
public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSalaryAtta> implements TSalaryAttaService { public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSalaryAtta> implements TSalaryAttaService {
private final OSSUtil ossUtil;
/** /**
* 薪资结算附件表简单分页查询 * 薪资结算附件表简单分页查询
* *
* @param tSalaryAtta 薪资结算附件表 * @param tAtta 薪资结算附件表
* @return * @return
*/ */
@Override @Override
public IPage<TSalaryAtta> getTSalaryAttaPage(Page<TSalaryAtta> page, TSalaryAttaSearchVo tSalaryAtta) { public IPage<TSalaryAtta> getTAttaPage(Page<TSalaryAtta> page, TSalaryAtta tAtta) {
return baseMapper.getTSalaryAttaPage(page, tSalaryAtta); return baseMapper.getTAttaPage(page, tAtta);
}
/**
* @Description: 工程薪资暂停发附件上传
* @Author: hgw
* @Date: 2021/10/27 15:43
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
@Override
public R<String> uploadEngineerPauseSalaryAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType
, Integer[] engineerType, String recordId) throws IOException {
if (Common.isEmpty(file) || Common.isEmpty(engineerType) || engineerType.length != file.length) {
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
for (int i = 0; i < file.length; i++) {
this.uploadAtta(file[i], filePath, linkId, linkType, engineerType[i], null, recordId);
}
return R.ok("上传成功!");
}
/**
* @Description: 自定义暂停发附件上传
* @Author: hgw
* @Date: 2021-11-22 17:37:39
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
@Override
public R<String> uploadPauseDiyAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType
, String recordId) throws IOException {
if (Common.isEmpty(file)) {
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
for (int i = 0; i < file.length; i++) {
this.uploadAtta(file[i], filePath, linkId, linkType, null, null, recordId);
}
return R.ok("上传成功!");
}
/**
* @Description: 自定义暂停发附件上传
* @Author: hgw
* @Date: 2021-11-22 17:37:39
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
@Override
public R<String> uploadLostAndFoundAtta(MultipartFile[] file, String filePath, String linkId, Integer linkType) throws IOException {
if (Common.isEmpty(file)) {
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
for (int i = 0; i < file.length; i++) {
this.uploadAtta(file[i], filePath, linkId, linkType, null, null, null);
}
return R.ok("上传成功!");
}
@Override
public R<FileVo> uploadAtta(@RequestBody MultipartFile file, String filePath, String linkId
, Integer linkType, Integer engineerType, String printRemark, String recordId) throws IOException {
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = "";
if (!Common.isNotNull(filePath)) {
key = fileName;
} else {
key = filePath + "/" + fileName;
}
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, null);
FileVo fileVo;
TSalaryAtta salaryAtta;
URL url = null;
if (flag) {
log.info("文件:" + fileName + "上传至存储空间" + ossUtil.getBucketName() + "成功!");
salaryAtta = this.saveTSalaryAtta(fileName, key, file.getSize(), linkId, linkType, engineerType, printRemark, recordId);
try {
this.save(salaryAtta);
} catch (Exception e) {
log.error("OSS文件上传接口异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("failed:" + e.getMessage());
}
url = ossUtil.getObjectUrl(null, salaryAtta.getAttaSrc());
fileVo = new FileVo(salaryAtta.getId(), salaryAtta.getAttaName(), url.toString());
return R.ok(fileVo);
} else {
return R.failed("failed:上传至存储空间失败");
}
}
/**
* @param fileName 文件名
* @param key 路径
* @param fileSize 大小
* @Description: 保存附件信息
* @Author: hgw
* @Date: 2019/10/25 15:49
* @return: com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta
**/
private TSalaryAtta saveTSalaryAtta(String fileName, String key, Long fileSize, String linkId
, Integer linkType, Integer engineerType, String printRemark, String recordId) {
TSalaryAtta salaryAtta = new TSalaryAtta();
char slash = '/';
char point = '.';
if (fileName.lastIndexOf(slash) >= 0) {
salaryAtta.setAttaName(key.substring(fileName.lastIndexOf(slash), fileName.length()));
} else {
salaryAtta.setAttaName(fileName);
}
salaryAtta.setAttaSize(fileSize);
salaryAtta.setAttaSrc(key);
if (key.lastIndexOf(point) >= 0) {
salaryAtta.setAttaType(key.substring(fileName.lastIndexOf(point), fileName.length()));
}
salaryAtta.setAttaUrl("");
salaryAtta.setCreateTime(LocalDateTime.now());
salaryAtta.setUpdateTime(LocalDateTime.now());
YifuUser user = SecurityUtils.getUser();
salaryAtta.setCreateBy(null == user ? "" : user.getId());
salaryAtta.setUpdateBy(null == user ? "" : user.getId());
salaryAtta.setLinkId(linkId);
salaryAtta.setLinkType(linkType);
salaryAtta.setEngineerType(engineerType);
salaryAtta.setPrintRemark(printRemark);
salaryAtta.setRecordId(recordId);
salaryAtta.setRecordStatus(CommonConstants.ZERO_INT);
return salaryAtta;
}
/**
* @param linkId
* @param linkType
* @Description: 获取list,并且从oss服务器根据AttaSrc获取路径,塞入AttaUrl
* @Author: hgw
* @Date: 2021/11/19 16:03
* @return: java.util.List<com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>
**/
@Override
public List<TSalaryAtta> getAttaListHaveSrc(String linkId, Integer linkType) {
// 附件
TSalaryAtta sa = new TSalaryAtta();
sa.setLinkId(linkId);
// 附件类型:0工资;1工程工资;2暂停发;3自定义项暂停发 8 自有员工校验附件
sa.setLinkType(linkType);
sa.setRecordStatus(0);
List<TSalaryAtta> attaList = baseMapper.getTAttaList(sa);
this.setSrc(attaList);
return attaList;
} }
/**
* @param recordId
* @Description: 获取list,并且从oss服务器根据AttaSrc获取路径,塞入AttaUrl
* @Author: hgw
* @Date: 2021/11/19 16:03
* @return: java.util.List<com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>
**/
@Override @Override
public List<TSalaryAtta> noPageDiy(TSalaryAttaSearchVo searchVo) { public List<TSalaryAtta> getAttaListByRecordId(String recordId) {
LambdaQueryWrapper<TSalaryAtta> wrapper = buildQueryWrapper(searchVo); // 附件
List<String> idList = Common.getList(searchVo.getIds()); TSalaryAtta sa = new TSalaryAtta();
if (Common.isNotNull(idList)) { sa.setRecordId(recordId);
wrapper.in(TSalaryAtta::getId, idList); List<TSalaryAtta> attaList = baseMapper.getTAttaList(sa);
this.setSrc(attaList);
return attaList;
}
/**
* @param salaryAttaIds
* @param linkId
* @author fxj
* @date 2021-12-03
* @description 更新附件关联id
*/
@Transactional
@Override
public void updateAttaByLinkId(List<String> salaryAttaIds, String linkId) {
if (Common.isNotNull(salaryAttaIds) && Common.isNotNull(linkId)) {
List<TSalaryAtta> attaList = baseMapper.selectList(Wrappers
.<TSalaryAtta>query().lambda().in(TSalaryAtta::getId, salaryAttaIds));
if (Common.isNotNull(attaList)) {
for (TSalaryAtta atta : attaList) {
atta.setLinkId(linkId);
baseMapper.updateById(atta);
}
} }
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
} }
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
} }
private LambdaQueryWrapper buildQueryWrapper(TSalaryAttaSearchVo entity) { /**
LambdaQueryWrapper<TSalaryAtta> wrapper = Wrappers.lambdaQuery(); * @param attaList
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) { * @Description: 塞路径
wrapper.ge(TSalaryAtta::getCreateTime, entity.getCreateTimes()[0]) * @Author: hgw
.le(TSalaryAtta::getCreateTime, * @Date: 2021/11/23 17:37
entity.getCreateTimes()[1]); * @return: void
**/
@Override
public void setSrc(List<TSalaryAtta> attaList) {
if (attaList != null && !attaList.isEmpty()) {
URL url;
for (TSalaryAtta tsa : attaList) {
if (Common.isNotNull(tsa.getAttaSrc())) {
url = ossUtil.getObjectUrl(null, tsa.getAttaSrc());
tsa.setAttaUrl(String.valueOf(url));
}
} }
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TSalaryAtta::getCreateName, entity.getCreateName());
} }
return wrapper;
} }
} }
...@@ -65,6 +65,8 @@ ...@@ -65,6 +65,8 @@
<result property="salaryTax" column="SALARY_TAX"/> <result property="salaryTax" column="SALARY_TAX"/>
<result property="relaySalaryUnit" column="RELAY_SALARY_UNIT"/> <result property="relaySalaryUnit" column="RELAY_SALARY_UNIT"/>
<result property="salaryTaxUnit" column="SALARY_TAX_UNIT"/> <result property="salaryTaxUnit" column="SALARY_TAX_UNIT"/>
<result property="haveSalaryFlag" column="HAVE_SALARY_FLAG"/>
<result property="haveSpecialFlag" column="HAVE_SPECIAL_FLAG"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
a.ID, a.ID,
...@@ -107,7 +109,9 @@ ...@@ -107,7 +109,9 @@
a.ACTUAL_SALARY, a.ACTUAL_SALARY,
a.SALARY_TAX, a.SALARY_TAX,
a.RELAY_SALARY_UNIT, a.RELAY_SALARY_UNIT,
a.SALARY_TAX_UNIT a.SALARY_TAX_UNIT,
a.HAVE_SALARY_FLAG,
a.HAVE_SPECIAL_FLAG
</sql> </sql>
<sql id="tSalaryAccount_where"> <sql id="tSalaryAccount_where">
<if test="tSalaryAccount != null"> <if test="tSalaryAccount != null">
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryAttaMapper"> <mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryAttaMapper">
<resultMap id="tSalaryAttaMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta"> <resultMap id="tAttaMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAtta">
<id property="id" column="ID"/> <id property="id" column="ID"/>
<result property="attaName" column="ATTA_NAME"/> <result property="attaName" column="ATTA_NAME"/>
<result property="attaSrc" column="ATTA_SRC"/> <result property="attaSrc" column="ATTA_SRC"/>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<result property="updateBy" column="UPDATE_BY"/> <result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/> <result property="updateTime" column="UPDATE_TIME"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="selectParams">
a.ID, a.ID,
a.ATTA_NAME, a.ATTA_NAME,
a.ATTA_SRC, a.ATTA_SRC,
...@@ -61,54 +61,75 @@ ...@@ -61,54 +61,75 @@
a.UPDATE_BY, a.UPDATE_BY,
a.UPDATE_TIME a.UPDATE_TIME
</sql> </sql>
<!-- 基础查询 -->
<sql id="tSalaryAtta_where"> <sql id="tSalaryAtta_where">
<if test="tSalaryAtta != null"> <if test="tAtta != null">
<if test="tSalaryAtta.id != null and tSalaryAtta.id.trim() != ''"> <if test="tAtta.id != null and tAtta.id.trim() != ''">
AND a.ID = #{tSalaryAtta.id} AND ID = #{tAtta.id}
</if> </if>
<if test="tSalaryAtta.attaName != null and tSalaryAtta.attaName.trim() != ''"> <if test="tAtta.attaName != null and tAtta.attaName.trim() != ''">
AND a.ATTA_NAME = #{tSalaryAtta.attaName} AND ATTA_NAME = #{tAtta.attaName}
</if> </if>
<if test="tSalaryAtta.attaSrc != null and tSalaryAtta.attaSrc.trim() != ''"> <if test="tAtta.attaSrc != null and tAtta.attaSrc.trim() != ''">
AND a.ATTA_SRC = #{tSalaryAtta.attaSrc} AND ATTA_SRC = #{tAtta.attaSrc}
</if> </if>
<if test="tSalaryAtta.attaUrl != null and tSalaryAtta.attaUrl.trim() != ''"> <if test="tAtta.attaUrl != null and tAtta.attaUrl.trim() != ''">
AND a.ATTA_URL = #{tSalaryAtta.attaUrl} AND ATTA_URL = #{tAtta.attaUrl}
</if> </if>
<if test="tSalaryAtta.attaSize != null"> <if test="tAtta.attaSize != null and tAtta.attaSize.trim() != ''">
AND a.ATTA_SIZE = #{tSalaryAtta.attaSize} AND ATTA_SIZE = #{tAtta.attaSize}
</if> </if>
<if test="tSalaryAtta.attaType != null and tSalaryAtta.attaType.trim() != ''"> <if test="tAtta.attaType != null and tAtta.attaType.trim() != ''">
AND a.ATTA_TYPE = #{tSalaryAtta.attaType} AND ATTA_TYPE = #{tAtta.attaType}
</if> </if>
<if test="tSalaryAtta.linkId != null and tSalaryAtta.linkId.trim() != ''"> <if test="tAtta.linkId != null and tAtta.linkId.trim() != ''">
AND a.LINK_ID = #{tSalaryAtta.linkId} AND LINK_ID = #{tAtta.linkId}
</if> </if>
<if test="tSalaryAtta.linkType != null"> <if test="tAtta.linkType != null">
AND a.LINK_TYPE = #{tSalaryAtta.linkType} <if test="tAtta.linkType != 230 and tAtta.linkType != 236">
AND LINK_TYPE = #{tAtta.linkType}
</if> </if>
<if test="tSalaryAtta.engineerType != null"> /* 普通工资以及暂停发以及自定义暂停发流转 */
AND a.ENGINEER_TYPE = #{tSalaryAtta.engineerType} <if test="tAtta.linkType == 230">
AND LINK_TYPE in (2,3,0,8)
</if> </if>
<if test="tSalaryAtta.printRemark != null and tSalaryAtta.printRemark.trim() != ''"> /* 非扣税以及自定义暂停发流转 */
AND a.print_remark = #{tSalaryAtta.printRemark} <if test="tAtta.linkType == 236">
AND LINK_TYPE in (2,3,6)
</if> </if>
<if test="tSalaryAtta.recordId != null and tSalaryAtta.recordId.trim() != ''">
AND a.record_id = #{tSalaryAtta.recordId}
</if> </if>
<if test="tSalaryAtta.recordStatus != null"> <if test="tAtta.engineerType != null">
AND a.record_status = #{tSalaryAtta.recordStatus} AND ENGINEER_TYPE = #{tAtta.engineerType}
</if>
<if test="tAtta.recordId != null and tAtta.recordId.trim() != ''">
AND record_id = #{tAtta.recordId}
</if>
<if test="tAtta.recordStatus != null">
AND record_status = #{tAtta.recordStatus}
</if> </if>
</if> </if>
</sql> </sql>
<!--tSalaryAtta简单分页查询--> <!--tAtta简单分页查询-->
<select id="getTSalaryAttaPage" resultMap="tSalaryAttaMap"> <select id="getTAttaPage" resultMap="tAttaMap">
SELECT
<include refid="selectParams"/>
FROM t_salary_atta
<where>
1=1
<include refid="tSalaryAtta_where"/>
</where>
order by CREATE_TIME
</select>
<!--tAtta简单分页查询-->
<select id="getTAttaList" resultMap="tAttaMap">
SELECT SELECT
<include refid="Base_Column_List"/> <include refid="selectParams"/>
FROM t_salary_atta a FROM t_salary_atta
<where> <where>
1=1 1=1
<include refid="tSalaryAtta_where"/> <include refid="tSalaryAtta_where"/>
</where> </where>
order by CREATE_TIME
</select> </select>
</mapper> </mapper>
...@@ -48,6 +48,10 @@ ...@@ -48,6 +48,10 @@
<result property="ownNums" column="OWN_NUMS"/> <result property="ownNums" column="OWN_NUMS"/>
<result property="ownMoney" column="OWN_MONEY"/> <result property="ownMoney" column="OWN_MONEY"/>
<result property="ownRemark" column="OWN_REMARK"/> <result property="ownRemark" column="OWN_REMARK"/>
<result property="haveSalaryFlag" column="HAVE_SALARY_FLAG"/>
<result property="haveSpecialFlag" column="HAVE_SPECIAL_FLAG"/>
<result property="haveSalaryRemark" column="HAVE_SALARY_REMARK"/>
<result property="haveSpecialRemark" column="HAVE_SPECIAL_REMARK"/>
<result property="submitRemark" column="SUBMIT_REMARK"/> <result property="submitRemark" column="SUBMIT_REMARK"/>
<result property="createBy" column="CREATE_BY"/> <result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/> <result property="createName" column="CREATE_NAME"/>
...@@ -85,6 +89,10 @@ ...@@ -85,6 +89,10 @@
a.OWN_NUMS, a.OWN_NUMS,
a.OWN_MONEY, a.OWN_MONEY,
a.OWN_REMARK, a.OWN_REMARK,
a.HAVE_SALARY_FLAG,
a.HAVE_SALARY_REMARK,
a.HAVE_SPECIAL_FLAG,
a.HAVE_SPECIAL_REMARK,
a.SUBMIT_REMARK, a.SUBMIT_REMARK,
a.CREATE_BY, a.CREATE_BY,
a.CREATE_NAME, a.CREATE_NAME,
......
...@@ -50,8 +50,8 @@ public class TSocialFundHistoryVo extends RowIndex implements Serializable { ...@@ -50,8 +50,8 @@ public class TSocialFundHistoryVo extends RowIndex implements Serializable {
@ExcelProperty("身份证号") @ExcelProperty("身份证号")
private String empIdcard; private String empIdcard;
@ExcelAttribute(name = "缴纳类型", readConverterExp = "0=最低,1=自定义缴纳,2=最高") @ExcelAttribute(name = "缴纳类型", readConverterExp = "0=最低,1=自定义,2=最高")
@Schema(description = "缴纳类型(0最低、1自定义缴纳、2最高)") @Schema(description = "缴纳类型(0最低、1自定义、2最高)")
@ExcelProperty("缴纳类型") @ExcelProperty("缴纳类型")
private String paymentType; private String paymentType;
......
...@@ -1460,6 +1460,7 @@ public class TForecastLibraryServiceImpl extends ServiceImpl<TForecastLibraryMap ...@@ -1460,6 +1460,7 @@ public class TForecastLibraryServiceImpl extends ServiceImpl<TForecastLibraryMap
); );
for (TSocialFundInfo socialFundInfo : socialFundInfoList) { for (TSocialFundInfo socialFundInfo : socialFundInfoList) {
this.changeFundInfoByBase(socialFundInfo, sysBaseSetInfo); this.changeFundInfoByBase(socialFundInfo, sysBaseSetInfo);
socialFundInfo.setDoMonth(sysBaseSetInfo.getDoMonth());
socialFundInfoMap.put(socialFundInfo.getId(), socialFundInfo); socialFundInfoMap.put(socialFundInfo.getId(), socialFundInfo);
} }
} }
......
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