Commit 12a9c38a authored by huyuchen's avatar huyuchen

Merge remote-tracking branch 'origin/MVP1.4' into MVP1.4

parents f8ecc209 b398e021
#!/bin/bash
#k8s升级所有版本,滚动更新
cd ../
thisPath=`pwd`
#鉴权
cd $thisPath"/yifu-auth"
sh build-test.sh
#登录基础服务
cd $thisPath"/yifu-upms/yifu-upms-biz"
sh build-test.sh
#档案服务
cd $thisPath"/yifu-archives/yifu-archives-biz"
sh build-test.sh
#校验身份证、银行卡、手机号服务
cd $thisPath"/yifu-check/yifu-check-biz"
sh build-test.sh
#商险服务
cd $thisPath"/yifu-insurances/yifu-insurances-biz"
sh build-test.sh
#定时任务服务
cd $thisPath"/yifu-job/yifu-job-biz"
sh build-test.sh
#订单服务
cd $thisPath"/yifu-order/yifu-order-biz"
sh build-test.sh
#薪资服务
cd $thisPath"/yifu-salary/yifu-salary-biz"
sh build-test.sh
#社保服务
cd $thisPath"/yifu-social/yifu-social-biz"
sh build-test.sh
#!/bin/bash
#k8s升级所有版本,滚动更新
cd ../
thisPath=`pwd`
#档案服务
cd $thisPath"/yifu-archives/yifu-archives-biz"
sh build-test.sh
#校验身份证、银行卡、手机号服务
cd $thisPath"/yifu-check/yifu-check-biz"
sh build-test.sh
#商险服务
cd $thisPath"/yifu-insurances/yifu-insurances-biz"
sh build-test.sh
#定时任务服务
cd $thisPath"/yifu-job/yifu-job-biz"
sh build-test.sh
#订单服务
cd $thisPath"/yifu-order/yifu-order-biz"
sh build-test.sh
#薪资服务
cd $thisPath"/yifu-salary/yifu-salary-biz"
sh build-test.sh
#社保服务
cd $thisPath"/yifu-social/yifu-social-biz"
sh build-test.sh
#B端服务
#cd $thisPath"/yifu-business/yifu-business-biz"
#sh build-test.sh
......@@ -1394,7 +1394,7 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
// 不是待提交,记录审核记录
this.setAuditInfo(tEmployeeContractInfo);
this.updateById(tEmployeeContractInfo);
errorMessages.add(new ErrorMessage(i,"审核成功!",CommonConstants.GREEN));
errorMessages.add(new ErrorMessage(i,"审核成功!",CommonConstants.GREEN,contract.getApplyNo()));
}
if (errorCount == CommonConstants.ZERO_INT){
return R.ok();
......
......@@ -399,21 +399,15 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
TEmployeeProject tEmployeeProjectOld = this.getById(tEmployeeProject.getId());
String code = "";
StringBuilder errorTemp = new StringBuilder();
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[1]) {
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[1]
||tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[2]
||tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("社保未派减、");
}
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[2]) {
errorTemp.append("社保部分购买、");
}
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("社保正常缴纳、");
}
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[1]) {
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[1]
||tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[2]) {
errorTemp.append("公积金未派减、");
}
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("公积金正常缴纳、");
}
// 未作废,在用 或 审核中
long contractCount = contractInfoMapper.selectCount(Wrappers.<TEmployeeContractInfo>query().lambda()
.eq(TEmployeeContractInfo::getEmpIdcard,tEmployeeProject.getEmpIdcard())
......@@ -601,21 +595,15 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
}
if (Common.isNotNull(tEmployeeProject)) {
errorTemp = new StringBuilder();
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[1]) {
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[1]
||tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[2]
||tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("社保未派减、");
}
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[2]) {
errorTemp.append("社保部分购买、");
}
if (tEmployeeProject.getSocialStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("社保正常缴纳、");
}
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[1]) {
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[1]
||tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[2]) {
errorTemp.append("公积金未派减、");
}
if (tEmployeeProject.getFundStatus() == CommonConstants.dingleDigitIntArray[3]) {
errorTemp.append("公积金正常缴纳、");
}
// 未作废,在用 或 审核中
contractCount = contractInfoMapper.selectCount(Wrappers.<TEmployeeContractInfo>query().lambda()
.eq(TEmployeeContractInfo::getEmpIdcard,tEmployeeProject.getEmpIdcard())
......@@ -1538,14 +1526,13 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
public EmployeeBusinessDetailVo getEmployeeBusinessInfoById(String empId, String settleDomain) {
EmployeeBusinessDetailVo businessDetailVo = new EmployeeBusinessDetailVo();
TEmployeeProject employeeInfo = baseMapper.selectById(empId);
TEmployeeInfo employee = null;
EmployeeBusinessVo businessVo = new EmployeeBusinessVo();
// 有档案数据封装数据 无数据直接返回
if (null == employeeInfo){
return businessDetailVo;
}else {
TBusinessEmployeeExtendInfo tBusinessEmployeeExtendInfo = this.businessEmployeeExtendInfoService.getByEmpIdCard(employeeInfo.getEmpIdcard());
employee = tEmployeeInfoMapper.selectById(employeeInfo.getEmpId());
TEmployeeInfo employee = tEmployeeInfoMapper.selectById(employeeInfo.getEmpId());
initEmpBusinessInfo(employeeInfo, employee, businessVo, tBusinessEmployeeExtendInfo);
}
......@@ -1582,12 +1569,6 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
businessVo.setEducationName(empEducation.getEducationName());
}
}
// 处理人员离职信息 和社保公积金派减信息
if (employee != null) {
businessVo.setLeaveDate(employee.getLeaveTime());
businessVo.setLeaveReason(employee.getLeaveReason());
businessVo.setLeaveRemark(employee.getLeaveRemark());
}
// 获取社保和公积金派减信息
SocialAndFundReduceVo vo = new SocialAndFundReduceVo();
vo.setEmpId(empId);
......
......@@ -886,13 +886,13 @@
a.DEPT_ID SETTLE_DOMAIN,
b.DEPART_NAME,
b.DEPART_ID,
b.BUSINESS_POST,
if(b.BUSINESS_POST is not null, b.BUSINESS_POST, a.POST) as BUSINESS_POST,
b.BUSINESS_TELECOM_NUMBER,
b.EMPLOYEE_TAGS,
if(b.BUSINESS_WORKING_STATUS is not null, b.BUSINESS_WORKING_STATUS, a.PROJECT_STATUS) as BUSINESS_WORKING_STATUS,
a.PROJECT_STATUS WORK_FLAG,
a.STATUS WORKING_STATUS_SUB,
if(b.BUSINESS_LEAVE_DATE is not null, b.BUSINESS_LEAVE_DATE, a.LEAVE_TIME) as BUSINESS_LEAVE_DATE,
b.BUSINESS_LEAVE_DATE,
b.DOCUMENT_TYPE,
c.DEPART_NAME as SETTLE_DOMAIN_NAME
FROM t_employee_project a
......
......@@ -121,4 +121,18 @@ public class TCheckBankNoController {
public CheckBankNoVo checkBankNoInner(@RequestBody TCheckBankNo checkBankNo) {
return tCheckBankNoService.checkBankNoTwo(checkBankNo.getName(),checkBankNo.getBankNo());
}
/**
* @Description: 代发户调用银行卡校验--如果其他接口也要调用,加上信息
* @Author: hgw
* @Date: 2023/1/13 9:41
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.check.entity.TCheckBankNo>
**/
@Operation(description = "调用银行卡校验")
@SysLog("调用银行卡校验" )
@PostMapping("/checkBankNo" )
public R<TCheckBankNo> checkBankNo(@RequestParam String name, @RequestParam String bankNo) {
return tCheckBankNoService.checkBankNo(name, bankNo);
}
}
......@@ -20,6 +20,7 @@ package com.yifu.cloud.plus.v1.check.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.check.entity.TCheckBankNo;
import com.yifu.cloud.plus.v1.check.vo.CheckBankNoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
/**
* 银行卡卡号 校验
......@@ -29,5 +30,13 @@ import com.yifu.cloud.plus.v1.check.vo.CheckBankNoVo;
*/
public interface TCheckBankNoService extends IService<TCheckBankNo> {
/**
* @Description: 代发户调用银行卡校验
* @Author: hgw
* @Date: 2023/1/13 9:39
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.check.entity.TCheckBankNo>
**/
R<TCheckBankNo> checkBankNo(String name, String cardNo);
CheckBankNoVo checkBankNoTwo(String name, String cardNo);
}
......@@ -44,6 +44,28 @@ public class TCheckBankNoServiceImpl extends ServiceImpl<TCheckBankNoMapper, TCh
private final TCanCheckService canCheckService;
@Override
public R<TCheckBankNo> checkBankNo(String name, String cardNo) {
synchronized (this){
TCheckBankNo checkBankNo = baseMapper.selectOne(Wrappers.<TCheckBankNo>query().lambda()
.eq(TCheckBankNo::getBankNo, cardNo)
.eq(TCheckBankNo::getName, name)
.last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(checkBankNo)){
if ("01".equals(checkBankNo.getResult())) {
return R.ok(checkBankNo);
} else {
return R.failed(checkBankNo);
}
}
R<TCheckBankNo> resR = ChecksUtil.checkBankNoTwo(name,cardNo,canCheckService.getCanCheck());
if (Common.isNotNull(resR) && Common.isNotNull(resR.getData())){
baseMapper.insert(resR.getData());
}
return resR;
}
}
@Override
public CheckBankNoVo checkBankNoTwo(String name, String cardNo) {
CheckBankNoVo vo = new CheckBankNoVo();
......
......@@ -5,7 +5,6 @@ import com.yifu.cloud.plus.v1.yifu.ekp.config.EkpSalaryProperties;
import com.yifu.cloud.plus.v1.yifu.ekp.constant.EkpConstants;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryBackParam;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryParam;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpSalaryStandardParam;
import io.micrometer.core.instrument.util.StringUtils;
import lombok.extern.log4j.Log4j2;
import org.codehaus.jackson.map.ObjectMapper;
......@@ -67,18 +66,18 @@ public class EkpSalaryUtil {
}
// 推送主表到ekp
public String sendStandardToEKP(String loginName, EkpSalaryStandardParam param){
public String sendStandardToEKP(String loginName, String param){
log.info("推送EKP开始--薪资主表数据");
RestTemplate yourRestTemplate = new RestTemplate();
try{
//指向EKP的接口url
//把ModelingAppModelParameterAddForm转换成MultiValueMap
String formValues = new ObjectMapper().writeValueAsString(param);
//String formValues = new ObjectMapper().writeValueAsString(param)
MultiValueMap<String,Object> wholeForm = new LinkedMultiValueMap<>();
wholeForm.add("docSubject",ekpProperties.getDocSubject());
wholeForm.add("docCreator", "{\"LoginName\":\"" + loginName+ "\"}");
wholeForm.add("docStatus", ekpProperties.getDocStatus());
wholeForm.add("formValues", formValues);
wholeForm.add("formValues", param);
wholeForm.add("fdModelId", ekpProperties.getStandardFdModelId());
wholeForm.add("fdFlowId", ekpProperties.getStandardFdFlowId());
HttpHeaders headers = new HttpHeaders();
......
......@@ -57,6 +57,11 @@ public class EkpSalaryParam implements Serializable {
* 开户行
**/
private String fd_3adfedfc453cc4;
/**
* 开户行支行
* 2023-1-12 11:40:13 hgw
**/
private String fd_3b73de2809465a;
/**
* 工资月份
**/
......
package com.yifu.cloud.plus.v1.yifu.ekp.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author hgw
* @Date 2022-11-3 15:20:35
* @Description 薪资主表对应参数
* @Version 1.0
*/
@Data
public class EkpSalaryStandardParam implements Serializable {
/**
* 项目名称
**/
private String fd_3b3bf2c3b1a6cc;
/**
* 项目编码
**/
private String fd_3b3bf2c426cfc8;
/**
* 薪酬申请编号
**/
private String fd_3b3bf2c4975776;
/**
* 工资薪酬申请id
**/
private String fd_3b3bf2c58d2b46;
/**
* 薪酬原表下载地址
**/
private String fd_3b3cbe1d05f0d6;
/**
* 项目金额
**/
private String fd_3b3d3ec95b68fc;
/**
* 薪酬月份
**/
private String fd_3b3d3ec85bfeb0;
}
......@@ -29,6 +29,7 @@ import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
......@@ -41,7 +42,7 @@ import java.util.Date;
@TableName("t_approval_record")
@EqualsAndHashCode()
@Schema(description = "审批记录表")
public class TApprovalRecord {
public class TApprovalRecord implements Serializable {
/**
* 主键
......
......@@ -191,4 +191,13 @@ public class TSalaryEmployee extends BaseEntity {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("在职状态")
private String fileStatus;
/**
* 代发户状态(0正常;1代发户进的数据,下次要验证银行卡)
*/
@ExcelAttribute(name = "代发户状态(0正常;1代发户进的数据,下次要验证银行卡)" )
@ExcelProperty("代发户状态(0正常;1代发户进的数据,下次要验证银行卡)")
@Schema(description ="代发户状态(0正常;1代发户进的数据,下次要验证银行卡)")
private Integer issueStatus;
}
......@@ -431,6 +431,14 @@ public class TSalaryStandard extends BaseEntity {
@ExcelProperty("生成、推送收入的完成时间")
private Date incomeEndTime;
/**
* 代发户状态(0正常;1代发户)
*/
@ExcelAttribute(name = "代发户状态(0正常;1代发户)" )
@ExcelProperty("代发户状态(0正常;1代发户)")
@Schema(description ="代发户状态(0正常;1代发户)")
private Integer issueStatus;
/**
* 工资月份-起
*/
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Data
@TableName("t_salary_standard_issue")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "薪资代发户配置")
public class TSalaryStandardIssue extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 部门ID
*/
@ExcelAttribute(name = "部门ID", isNotEmpty = true, errorInfo = "部门ID不能为空", maxLength = 32)
@NotBlank(message = "部门ID不能为空")
@Length(max = 32, message = "部门ID不能超过32个字符")
@ExcelProperty("部门ID")
@Schema(description = "部门ID")
private String deptId;
/**
* 部门名称
*/
@ExcelAttribute(name = "部门名称", isNotEmpty = true, errorInfo = "部门名称不能为空", maxLength = 50)
@NotBlank(message = "部门名称不能为空")
@Length(max = 50, message = "部门名称不能超过50个字符")
@ExcelProperty("部门名称")
@Schema(description = "部门名称")
private String deptName;
/**
* 部门编码
*/
@ExcelAttribute(name = "部门编码", maxLength = 32)
@Length(max = 32, message = "部门编码不能超过32个字符")
@ExcelProperty("部门编码")
@Schema(description = "部门编码")
private String deptNo;
/**
* 户名
*/
@ExcelAttribute(name = "户名", maxLength = 50)
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelProperty("户名")
@Schema(description = "户名")
private String orgName;
/**
* 开户行总行
*/
@ExcelAttribute(name = "开户行总行", maxLength = 50)
@Length(max = 50, message = "开户行总行不能超过50个字符")
@ExcelProperty("开户行总行")
@Schema(description = "开户行总行")
private String bankName;
/**
* 开户行支行
*/
@ExcelAttribute(name = "开户行支行", maxLength = 50)
@Length(max = 50, message = "开户行支行不能超过50个字符")
@ExcelProperty("开户行支行")
@Schema(description = "开户行支行")
private String bankSubName;
/**
* 银行卡号
*/
@ExcelAttribute(name = "银行卡号", maxLength = 50)
@Length(max = 50, message = "银行卡号不能超过50个字符")
@ExcelProperty("银行卡号")
@Schema(description = "银行卡号")
private String bankNo;
/**
* 开户行省
*/
@ExcelAttribute(name = "开户行省")
@ExcelProperty("开户行省")
@Schema(description = "开户行省")
private Integer bankProvince;
/**
* 开户行市
*/
@ExcelAttribute(name = "开户行市")
@ExcelProperty("开户行市")
@Schema(description = "开户行市")
private Integer bankCity;
/**
* 开户行省名称
*/
@ExcelAttribute(name = "开户行省名称")
@ExcelProperty("开户行省名称")
@Schema(description = "开户行省名称")
private String bankProvinceName;
/**
* 开户行市
*/
@ExcelAttribute(name = "开户行市名称")
@ExcelProperty("开户行市名称")
@Schema(description = "开户行市名称")
private String bankCityName;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 薪资表与代发户表关联表
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Data
@TableName("t_salary_standard_issue_res")
@Schema(description = "薪资表与代发户表关联表")
public class TSalaryStandardIssueRes implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 代发户配置id
*/
@ExcelAttribute(name = "代发户配置id", isNotEmpty = true, errorInfo = "代发户配置id不能为空", maxLength = 32)
@NotBlank(message = "代发户配置id不能为空")
@Length(max = 32, message = "代发户配置id不能超过32个字符")
@ExcelProperty("代发户配置id")
@Schema(description = "代发户配置id")
private String issueId;
/**
* 薪资主表id
*/
@ExcelAttribute(name = "薪资主表id", isNotEmpty = true, errorInfo = "薪资主表id不能为空", maxLength = 32)
@NotBlank(message = "薪资主表id不能为空")
@Length(max = 32, message = "薪资主表id不能超过32个字符")
@ExcelProperty("薪资主表id")
@Schema(description = "薪资主表id")
private String salaryId;
/**
* money
*/
@ExcelAttribute(name = "money", isNotEmpty = true, errorInfo = "money不能为空")
@NotBlank(message = "money不能为空")
@ExcelProperty("money")
@Schema(description = "money")
private BigDecimal money;
/**
* 户名
*/
@ExcelAttribute(name = "户名", maxLength = 50)
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelProperty("户名")
@Schema(description = "户名")
private String orgName;
/**
* 开户行总行
*/
@ExcelAttribute(name = "开户行总行", maxLength = 50)
@Length(max = 50, message = "开户行总行不能超过50个字符")
@ExcelProperty("开户行总行")
@Schema(description = "开户行总行")
private String bankName;
/**
* 开户行支行
*/
@ExcelAttribute(name = "开户行支行", maxLength = 50)
@Length(max = 50, message = "开户行支行不能超过50个字符")
@ExcelProperty("开户行支行")
@Schema(description = "开户行支行")
private String bankSubName;
/**
* 银行卡号
*/
@ExcelAttribute(name = "银行卡号", maxLength = 50)
@Length(max = 50, message = "银行卡号不能超过50个字符")
@ExcelProperty("银行卡号")
@Schema(description = "银行卡号")
private String bankNo;
/**
* 开户行省
*/
@ExcelAttribute(name = "开户行省")
@ExcelProperty("开户行省")
@Schema(description = "开户行省")
private Integer bankProvince;
/**
* 开户行市
*/
@ExcelAttribute(name = "开户行市")
@ExcelProperty("开户行市")
@Schema(description = "开户行市")
private Integer bankCity;
/**
* 开户行省名称
*/
@ExcelAttribute(name = "开户行省名称")
@ExcelProperty("开户行省名称")
@Schema(description = "开户行省名称")
private String bankProvinceName;
/**
* 开户行市
*/
@ExcelAttribute(name = "开户行市名称")
@ExcelProperty("开户行市名称")
@Schema(description = "开户行市名称")
private String bankCityName;
}
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author hgw2
* @description 薪资上传vo
* @date 2023/1/10
*/
@Getter
@Setter
public class SalaryUploadParamVo {
// 表格json
String jsonString;
// 结算主体id;必填
String settleDepart;
// 工资配置结算月等信息的id
String configId;
// 工资类型。必填
String salaryType;
// 订单id
String orderId;
// 是否代发户,默认为空或0:非代发户,1是代发户
Integer isIssue;
// 代发户的配置list
List<TSalaryStandardIssueRes> resList;
}
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.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.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -36,5 +33,9 @@ public class TSalaryDetailVo implements Serializable {
* 薪资类审核记录 fxj 2021-11-15
*/
private List<TApprovalRecord> auditLogList = new ArrayList<>();
/**
* 代发户列表 hgw 2023-1-13 14:36:34
*/
private List<TSalaryStandardIssueRes> resList = new ArrayList<>();
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 薪资表与代发户表关联表
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Data
public class TSalaryStandardIssueResSearchVo extends TSalaryStandardIssueRes {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Data
public class TSalaryStandardIssueSearchVo extends TSalaryStandardIssue {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
......@@ -4,6 +4,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
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.salary.service.SalaryUploadService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryUploadParamVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryDetailVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -40,9 +41,8 @@ public class SalaryUploadController {
@Operation(description = "上传:jsonString:表格json;settleDepart:结算主体id;configId:工资配置结算月等信息的id;salaryType:工资类型")
@SysLog("上传薪资表")
@PostMapping("/upload")
public R<List<ErrorMessage>> upload(@RequestBody String jsonString, @RequestParam String settleDepart, @RequestParam(required = false) String configId
, @RequestParam String salaryType, @RequestParam(required = false) String orderId) {
return salaryUploadService.salaryUpload(jsonString, settleDepart, configId, salaryType, orderId);
public R<List<ErrorMessage>> upload(@RequestBody SalaryUploadParamVo vo) {
return salaryUploadService.salaryUpload(vo);
}
@Operation(description = "打开结算单")
......
......@@ -239,4 +239,13 @@ public class TSalaryStandardController {
public R<String> salaryDoIncome(@RequestParam String id) {
return tSalaryStandardService.salaryDoIncome(id);
}
@Operation(description = "测试推送EKP主表含代发户list")
@SysLog("测试推送EKP主表含代发户list")
@PostMapping("/testSendEkpList")
public String testSendEkpList(@RequestParam String id) {
return tSalaryStandardService.testSendEkpList(id);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryStandardIssueService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardIssueSearchVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tsalarystandardissue" )
@Tag(name = "薪资代发户配置管理")
public class TSalaryStandardIssueController {
private final TSalaryStandardIssueService tSalaryStandardIssueService;
/**
* 简单分页查询
* @param page 分页对象
* @param tSalaryStandardIssue 薪资代发户配置
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TSalaryStandardIssue>> getTSalaryStandardIssuePage(Page<TSalaryStandardIssue> page, TSalaryStandardIssueSearchVo tSalaryStandardIssue) {
return new R<>(tSalaryStandardIssueService.getTSalaryStandardIssuePage(page,tSalaryStandardIssue));
}
/**
* 不分页查询
* @param tSalaryStandardIssue 薪资代发户配置
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage" )
//@PreAuthorize("@pms.hasPermission('tsalarystandardissue_get')" )
public R<List<TSalaryStandardIssue>> getTSalaryStandardIssueNoPage(@RequestBody TSalaryStandardIssueSearchVo tSalaryStandardIssue) {
return R.ok(tSalaryStandardIssueService.noPageDiy(tSalaryStandardIssue));
}
/**
* 通过id查询薪资代发户配置
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('tsalarystandardissue_get')")
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('tsalarystandardissue_get')" )
public R<TSalaryStandardIssue> getById(@PathVariable("id" ) String id) {
return R.ok(tSalaryStandardIssueService.getById(id));
}
/**
* 新增薪资代发户配置
* @param tSalaryStandardIssue 薪资代发户配置
* @return R
*/
@Operation(summary = "新增薪资代发户配置", description = "新增薪资代发户配置:hasPermission('tsalarystandardissue_add')")
@SysLog("新增薪资代发户配置" )
@PostMapping
@PreAuthorize("@pms.hasPermission('tsalarystandardissue_add')" )
public R<Boolean> save(@RequestBody TSalaryStandardIssue tSalaryStandardIssue) {
return R.ok(tSalaryStandardIssueService.save(tSalaryStandardIssue));
}
/**
* 修改薪资代发户配置
* @param tSalaryStandardIssue 薪资代发户配置
* @return R
*/
@Operation(summary = "修改薪资代发户配置", description = "修改薪资代发户配置:hasPermission('tsalarystandardissue_edit')")
@SysLog("修改薪资代发户配置" )
@PutMapping
@PreAuthorize("@pms.hasPermission('tsalarystandardissue_edit')" )
public R<Boolean> updateById(@RequestBody TSalaryStandardIssue tSalaryStandardIssue) {
return R.ok(tSalaryStandardIssueService.updateById(tSalaryStandardIssue));
}
/**
* 通过id删除薪资代发户配置
* @param id id
* @return R
*/
@Operation(summary = "通过id删除薪资代发户配置", description = "通过id删除薪资代发户配置:hasPermission('tsalarystandardissue_del')")
@SysLog("通过id删除薪资代发户配置" )
@DeleteMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('tsalarystandardissue_del')" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tSalaryStandardIssueService.removeById(id));
}
/**
* 薪资代发户配置 批量导出
* @author hgw
* @date 2023-01-10 11:34:27
**/
@Operation(description = "导出薪资代发户配置 hasPermission('tsalarystandardissue-export')")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('tsalarystandardissue-export')")
public void export(HttpServletResponse response, @RequestBody TSalaryStandardIssueSearchVo searchVo) {
tSalaryStandardIssueService.listExport(response,searchVo);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Mapper
public interface TSalaryStandardIssueMapper extends BaseMapper<TSalaryStandardIssue> {
/**
* 薪资代发户配置简单分页查询
* @param tSalaryStandardIssue 薪资代发户配置
* @return
*/
IPage<TSalaryStandardIssue> getTSalaryStandardIssuePage(Page<TSalaryStandardIssue> page, @Param("tSalaryStandardIssue") TSalaryStandardIssue tSalaryStandardIssue);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import org.apache.ibatis.annotations.Mapper;
/**
* 薪资表与代发户表关联表
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Mapper
public interface TSalaryStandardIssueResMapper extends BaseMapper<TSalaryStandardIssueRes> {
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
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.vo.SalaryUploadParamVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryDetailVo;
import java.util.List;
......@@ -17,15 +18,13 @@ import java.util.List;
public interface SalaryUploadService extends IService<TSalaryStandard> {
/**
* @param jsonString
*repeatFlag 默认 0:不允许重复导入已存在系统内的数据;1:允许重复导入
* @param orderId
* @Description: 普通工资上传
* @Author: hgw
* @Date: 2019/9/4 15:58
* @return: com.yifu.cloud.v1.common.core.util.R
**/
R<List<ErrorMessage>> salaryUpload(String jsonString, String settleDepart, String configId, String formType, String orderId);
R<List<ErrorMessage>> salaryUpload(SalaryUploadParamVo vo);
R<TSalaryDetailVo> getBill(String salaryFormId);
......
......@@ -71,4 +71,13 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> {
TSalaryEmployee getByEmpIdCard(String empIdCard);
/**
* @param employee
* @Description: 代发户的,下次校验银行卡,同时变更校验flag
* @Author: hgw
* @Date: 2023/1/10 18:09
* @return: boolean
**/
boolean checkBankInfo(TSalaryEmployee employee);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardIssueResSearchVo;
import java.util.List;
/**
* 薪资表与代发户表关联表
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
public interface TSalaryStandardIssueResService extends IService<TSalaryStandardIssueRes> {
/**
* @Description: 薪资表与代发户表关联表简单不分页查询
* @Author: hgw
* @Date: 2023/1/10 14:34
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes>
**/
List<TSalaryStandardIssueRes> noPageDiy(TSalaryStandardIssueResSearchVo searchVo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardIssueSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
public interface TSalaryStandardIssueService extends IService<TSalaryStandardIssue> {
/**
* 薪资代发户配置简单分页查询
*
* @param tSalaryStandardIssue 薪资代发户配置
* @return
*/
IPage<TSalaryStandardIssue> getTSalaryStandardIssuePage(Page<TSalaryStandardIssue> page, TSalaryStandardIssueSearchVo tSalaryStandardIssue);
void listExport(HttpServletResponse response, TSalaryStandardIssueSearchVo searchVo);
List<TSalaryStandardIssue> noPageDiy(TSalaryStandardIssueSearchVo searchVo);
}
......@@ -113,4 +113,6 @@ public interface TSalaryStandardService extends IService<TSalaryStandard> {
**/
R<String> backSalaryByApplyNo(String applyNo);
String testSendEkpList(String id);
}
......@@ -82,20 +82,27 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
private final TApprovalRecordService auditLogService;
private final TSalaryStandardIssueResService tSalaryStandardIssueResService;
// 缓存信息
private final CacheManager cacheManager;
/**
* @param jsonString 客户原表数据
* repeatFlag 默认 0:不允许重复导入已存在系统内的数据;1:允许重复导入
* @param orderId
* vo.jsonString 客户原表数据
* repeatFlag 默认 0:不允许重复导入已存在系统内的数据;1:允许重复导入
* @Description: 普通工资上传
* @Author: hgw
* @Date: 2019/9/4 15:58
* @return: com.yifu.cloud.v1.common.core.util.R
**/
@Override
public R<List<ErrorMessage>> salaryUpload(String jsonString, String settleDepart, String configId, String salaryType, String orderId) {
public R<List<ErrorMessage>> salaryUpload(SalaryUploadParamVo vo) {
// R<List<ErrorMessage>> salaryUpload(String jsonString, String settleDepart, String configId, String salaryType, String orderId)
String jsonString = vo.getJsonString();
String settleDepart = vo.getSettleDepart();
String configId = vo.getConfigId();
String salaryType = vo.getSalaryType();
String orderId = vo.getOrderId();
if (Common.isNotNull(jsonString) && Common.isNotNull(settleDepart) && Common.isNotNull(salaryType)) {
R<TSettleDomainSelectVo> sdr = HttpDaprUtil.invokeMethodPost(archivesProperties.getAppUrl(), archivesProperties.getAppId()
......@@ -144,6 +151,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
}
try {
jsonString = URLDecoder.decode(jsonString, "UTF-8").replace("=", "");
vo.setJsonString(jsonString);
SalaryAccountUtil util1 = new SalaryAccountUtil();
TSalaryEmployee empSearch = new TSalaryEmployee();
......@@ -184,8 +192,28 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
checkListY = tSalaryAccountService.getAccountYearCheckMap();
}
util1.getJsonStringToList(user, jsonString, dept, configSalary, salaryConfigMap, isMustMap,
empIdCardMap, empNameMap, isDuplicateName, salaryType, checkListY, invoiceTitle,
if (Common.isNotNull(vo.getIsIssue()) && vo.getIsIssue() == 1 && vo.getResList() != null && !vo.getResList().isEmpty()) {
for (TSalaryStandardIssueRes res : vo.getResList()) {
if (Common.isEmpty(res.getIssueId())) {
return R.failed("代发户配置id不可为空");
}
if (Common.isEmpty(res.getMoney())) {
return R.failed("代发户金额不可为空");
}
if (Common.isEmpty(res.getBankName())) {
return R.failed("代发户开户行不可为空");
}
if (Common.isEmpty(res.getBankNo())) {
return R.failed("代发户卡号不可为空");
}
if (Common.isEmpty(res.getBankProvince()) || Common.isEmpty(res.getBankProvinceName())
|| Common.isEmpty(res.getBankCity()) || Common.isEmpty(res.getBankCityName())) {
return R.failed("代发户开户行省、市不可为空");
}
}
}
util1.getJsonStringToList(user, vo, dept, configSalary, salaryConfigMap, isMustMap,
empIdCardMap, empNameMap, isDuplicateName, checkListY, invoiceTitle,
employeeService, checkMap, specialMap, ownEmployeeMap, ownDeptMap, tSalaryAccountService);
List<TSalaryAccountVo> saList = util1.getEntityList();
......@@ -196,7 +224,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
// return R.ok(saList)
//薪资导入
if (CommonConstants.ZERO_STRING.equals(salaryType)) {
return this.saveAndSubmit(saList, orderId);
return this.saveAndSubmit(saList, vo);
}
//劳务费和稿酬导入
if (CommonConstants.THREE_STRING.equals(salaryType) || CommonConstants.FOUR_STRING.equals(salaryType)) {
......@@ -289,14 +317,18 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
/**
* @param savList 报账表Vo
* @param orderId
* @Description: 保存并提交
* @Author: hgw
* @Date: 2019/9/20 17:05
* @return: com.yifu.cloud.v1.common.core.util.R
**/
private R saveAndSubmit(List<TSalaryAccountVo> savList, String orderId) {
private R saveAndSubmit(List<TSalaryAccountVo> savList, SalaryUploadParamVo vo) {
if (Common.isNotNull(savList) && !savList.isEmpty()) {
String orderId = vo.getOrderId();
// 代发户
Integer isIssue = vo.getIsIssue();
// 代发户与薪资关联表
List<TSalaryStandardIssueRes> resList = vo.getResList();
TSalaryAccountVo salaryAccountVo = savList.get(0);
List<TSalaryAccountItem> saiList = null; //报账明细List
R<TSettleDomainSelectVo> sdr = HttpDaprUtil.invokeMethodPost(archivesProperties.getAppUrl(), archivesProperties.getAppId()
......@@ -357,7 +389,8 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
//设置订单号 20220831
salary.setOrderId(orderId);
// 薪资核心导入代码
return this.doCoreSalary(savList, salaryAccountVo, saiList, dept, invoiceTitle, user, nowTime, salary, isActual);
return this.doCoreSalary(savList, salaryAccountVo, saiList, dept, invoiceTitle, user, nowTime
, salary, isActual, isIssue, resList);
} catch (Exception e) {
lockUpdate = new TSalaryLock();
lockUpdate.setId(lock.getId());
......@@ -391,7 +424,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
public R doCoreSalary(List<TSalaryAccountVo> savList, TSalaryAccountVo salaryAccountVo
, List<TSalaryAccountItem> saiList, TSettleDomainSelectVo dept
, String invoiceTitle, YifuUser user, LocalDateTime nowTime, TSalaryStandard salary
, boolean isActual) {
, boolean isActual, Integer isIssue, List<TSalaryStandardIssueRes> resList) {
// 社保类型0:缴费库;1:预估库
String socialType = CommonConstants.ZERO_STRING;
if (Common.isNotNull(dept.getSocialType())) {
......@@ -826,8 +859,16 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
if (Common.isEmpty(salary.getApplyNo())) {
salary.setApplyNo(this.getCode());
}
salary.setIssueStatus(isIssue);
//保存工资表
tSalaryStandardService.save(salary);
// 是代发户且选了代发户卡号,要保存关联表
if (Common.isNotNull(isIssue) && isIssue == 1 && resList != null && !resList.isEmpty()) {
for (TSalaryStandardIssueRes res : resList) {
res.setSalaryId(salary.getId());
}
tSalaryStandardIssueResService.saveBatch(resList);
}
TApprovalRecord tApprovalRecord = new TApprovalRecord();
tApprovalRecord.setApprovalResult(CommonConstants.TWO_STRING);
tApprovalRecord.setApprovalOpinion("新建表单");
......@@ -1418,6 +1459,10 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
}
salaryDetailVo.setSalaryAccountList(salaryAccountList);
attaList = tSalaryAttaService.getAttaListHaveSrc(salary.getId(), 230);
List<TSalaryStandardIssueRes> resList = tSalaryStandardIssueResService.list(
Wrappers.<TSalaryStandardIssueRes>query().lambda().eq(TSalaryStandardIssueRes::getSalaryId, salary.getId()));
salaryDetailVo.setResList(resList);
}
salaryDetailVo.setAttaList(attaList);
salaryDetailVo.setAuditLogList(auditLogService.list(Wrappers.<TApprovalRecord>query().lambda().eq(TApprovalRecord::getSalaryId, salary.getId())));
......
......@@ -285,7 +285,8 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
public String saveNewSalaryEmployee(boolean notLabour,TSalaryEmployee employee) {
if (Common.isNotNull(employee.getEmpName()) && Common.isNotNull(employee.getEmpIdcard())) {
// 银行卡
if (Common.isNotNull(employee.getBankNo())) {
// 代发户的,不校验卡号,下次使用的时候校验卡号
if (Common.isNotNull(employee.getBankNo()) && (Common.isEmpty(employee.getIssueStatus()) || employee.getIssueStatus().equals(CommonConstants.ZERO_INT))) {
// 调用校验服务
TCheckBankNo checkIdCard = new TCheckBankNo();
checkIdCard.setName(employee.getEmpName());
......@@ -504,4 +505,34 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
return baseMapper.getByEmpIdCard(empIdCard);
}
/**
* @param employee
* @Description: 代发户的,下次校验银行卡,同时变更校验flag
* @Author: hgw
* @Date: 2023/1/10 18:10
* @return: boolean : true:已验证通过;false:银行卡校验失败
**/
@Override
public boolean checkBankInfo(TSalaryEmployee employee) {
// 调用校验服务
TCheckBankNo checkIdCard = new TCheckBankNo();
checkIdCard.setName(employee.getEmpName());
checkIdCard.setBankNo(employee.getBankNo());
R<CheckBankNoVo> checkListR = HttpDaprUtil.invokeMethodPost(checkProperties.getAppUrl(), checkProperties.getAppId()
, "/tcheckbankno/inner/checkBankNo", checkIdCard, CheckBankNoVo.class, SecurityConstants.FROM_IN);
if (checkListR != null && checkListR.getData() != null) {
CheckBankNoVo vo = checkListR.getData();
TCheckBankNo check = (null == vo.getRes()) ? null : vo.getRes().getData();
if (check != null && check.getResult().equals(CommonConstants.ZERO_ONE)) {
employee.setIssueStatus(CommonConstants.ZERO_INT);
this.updateById(employee);
return true;
} else {
return false;
}
} else {
return false;
}
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardIssueResMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryStandardIssueResService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardIssueResSearchVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 薪资表与代发户表关联表
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Log4j2
@Service
public class TSalaryStandardIssueResServiceImpl extends ServiceImpl<TSalaryStandardIssueResMapper, TSalaryStandardIssueRes> implements TSalaryStandardIssueResService {
@Override
public List<TSalaryStandardIssueRes> noPageDiy(TSalaryStandardIssueResSearchVo searchVo) {
LambdaQueryWrapper<TSalaryStandardIssueRes> wrapper = Wrappers.lambdaQuery();
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TSalaryStandardIssueRes::getId, idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
wrapper.orderByDesc(TSalaryStandardIssueRes::getSalaryId);
return baseMapper.selectList(wrapper);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardIssueMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryStandardIssueService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardIssueSearchVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* 薪资代发户配置
*
* @author hgw
* @date 2023-01-10 11:34:27
*/
@Log4j2
@Service
public class TSalaryStandardIssueServiceImpl extends ServiceImpl<TSalaryStandardIssueMapper, TSalaryStandardIssue> implements TSalaryStandardIssueService {
/**
* 薪资代发户配置简单分页查询
*
* @param tSalaryStandardIssue 薪资代发户配置
* @return
*/
@Override
public IPage<TSalaryStandardIssue> getTSalaryStandardIssuePage(Page<TSalaryStandardIssue> page, TSalaryStandardIssueSearchVo tSalaryStandardIssue) {
return baseMapper.getTSalaryStandardIssuePage(page, tSalaryStandardIssue);
}
/**
* 薪资代发户配置批量导出
*
* @param searchVo 薪资代发户配置
* @return
*/
@Override
public void listExport(HttpServletResponse response, TSalaryStandardIssueSearchVo searchVo) {
String fileName = "薪资代发户配置批量导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TSalaryStandardIssue> list = new ArrayList<>();
long count = noPageCountDiy(searchVo);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
response.setContentType(CommonConstants.MULTIPART_FORM_DATA);
response.setCharacterEncoding("utf-8");
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, CommonConstants.UTF8));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
ExcelWriter excelWriter = EasyExcel.write(out, TSalaryStandardIssue.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
for (int i = 0; i <= count; ) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = noPageDiy(searchVo);
if (Common.isNotNull(list)) {
ExcelUtil<TSalaryStandardIssue> util = new ExcelUtil<>(TSalaryStandardIssue.class);
for (TSalaryStandardIssue vo : list) {
util.convertEntity(vo, null, null, null);
}
}
if (Common.isNotNull(list)) {
WriteSheet writeSheet = EasyExcel.writerSheet("薪资代发户配置" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
i = i + CommonConstants.EXCEL_EXPORT_LIMIT;
if (Common.isNotNull(list)) {
list.clear();
}
}
} else {
WriteSheet writeSheet = EasyExcel.writerSheet("薪资代发户配置" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
list.clear();
}
out.flush();
excelWriter.finish();
} catch (Exception e) {
log.error("执行异常", e);
} finally {
try {
if (null != out) {
out.close();
}
} catch (IOException e) {
log.error("执行异常", e);
}
}
}
@Override
public List<TSalaryStandardIssue> noPageDiy(TSalaryStandardIssueSearchVo searchVo) {
LambdaQueryWrapper<TSalaryStandardIssue> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TSalaryStandardIssue::getId, idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
private Long noPageCountDiy(TSalaryStandardIssueSearchVo searchVo) {
LambdaQueryWrapper<TSalaryStandardIssue> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TSalaryStandardIssue::getId, idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TSalaryStandardIssueSearchVo entity) {
LambdaQueryWrapper<TSalaryStandardIssue> wrapper = Wrappers.lambdaQuery(entity);
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TSalaryStandardIssue::getCreateTime, entity.getCreateTimes()[0])
.le(TSalaryStandardIssue::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TSalaryStandardIssue::getCreateName, entity.getCreateName());
}
return wrapper;
}
}
......@@ -44,15 +44,9 @@ import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpFundUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSalaryUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSocialUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.*;
import com.yifu.cloud.plus.v1.yifu.salary.entity.MSalaryEstimate;
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.TSalaryStandard;
import com.yifu.cloud.plus.v1.yifu.salary.entity.*;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.MSalaryEstimateService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TApprovalRecordService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAccountService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryStandardService;
import com.yifu.cloud.plus.v1.yifu.salary.service.*;
import com.yifu.cloud.plus.v1.yifu.salary.util.DoJointSalaryAsyncTask;
import com.yifu.cloud.plus.v1.yifu.salary.util.SalaryConstants;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardExportVo;
......@@ -72,6 +66,7 @@ import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
......@@ -95,6 +90,7 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
private final EkpSocialUtil ekpSocialUtil;
private final EkpFundUtil ekpFundUtil;
private final TApprovalRecordService auditLogService;
private final TSalaryStandardIssueResService issueResService;
@Lazy
private final DoJointSalaryAsyncTask doSalaryAsync;
......@@ -452,20 +448,12 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
}
if (sendStatus) {
EkpSalaryStandardParam standardParam = new EkpSalaryStandardParam();
standardParam.setFd_3b3bf2c3b1a6cc(s.getDeptName());
standardParam.setFd_3b3bf2c426cfc8(s.getDeptNo());
standardParam.setFd_3b3bf2c4975776(s.getApplyNo() == null ? "" : s.getApplyNo());
standardParam.setFd_3b3bf2c58d2b46(s.getId());
standardParam.setFd_3b3cbe1d05f0d6("");
standardParam.setFd_3b3d3ec95b68fc(String.valueOf(s.getSettlementAmount()));
standardParam.setFd_3b3d3ec85bfeb0(s.getSalaryMonth().substring(0,4)
+ CommonConstants.CENTER_SPLIT_LINE_STRING + s.getSalaryMonth().substring(4,6));
HashMap<String, Object> sendMap = this.setSendEkpStandardParam(s);
// 推送主表信息
String loginName = user.getUsername();
sendBack = ekpSalaryUtil.sendStandardToEKP(loginName, standardParam);
sendBack = ekpSalaryUtil.sendStandardToEKP(loginName, JSON.toJSONString(sendMap));
if (Common.isEmpty(sendBack) || sendBack.length() != 32) {
sendBack = ekpSalaryUtil.sendStandardToEKP(loginName, standardParam);
sendBack = ekpSalaryUtil.sendStandardToEKP(loginName, JSON.toJSONString(sendMap));
}
s.setSendTime(new Date());
s.setSendMonth(nowMonth);
......@@ -506,6 +494,68 @@ public class TSalaryStandardServiceImpl extends ServiceImpl<TSalaryStandardMappe
}
}
@Override
public String testSendEkpList(String id) {
TSalaryStandard s = this.getById(id);
HashMap<String, Object> sendMap = this.setSendEkpStandardParam(s);
YifuUser user = SecurityUtils.getUser();
// 推送主表信息
String loginName = user.getUsername();
return ekpSalaryUtil.sendStandardToEKP(loginName, JSON.toJSONString(sendMap));
}
/**
* @param s
* @Description: 组建发送EKP的主表信息
* @Author: hgw
* @Date: 2023/1/12 15:07
* @return: java.util.HashMap<java.lang.String, java.lang.Object>
**/
private HashMap<String, Object> setSendEkpStandardParam(TSalaryStandard s) {
HashMap<String, Object> sendMap = new HashMap<>();
sendMap.put("fd_3b3bf2c3b1a6cc", s.getDeptName());
sendMap.put("fd_3b3bf2c426cfc8", s.getDeptNo());
sendMap.put("fd_3b3bf2c4975776", s.getApplyNo() == null ? "" : s.getApplyNo());
sendMap.put("fd_3b3bf2c58d2b46", s.getId());
sendMap.put("fd_3b3cbe1d05f0d6", "");
sendMap.put("fd_3b3d3ec95b68fc", String.valueOf(s.getSettlementAmount()));
sendMap.put("fd_3b3d3ec85bfeb0", s.getSalaryMonth().substring(0,4)
+ CommonConstants.CENTER_SPLIT_LINE_STRING + s.getSalaryMonth().substring(4,6));
sendMap.put("fd_3b73e18ad34090", "否");
if (Common.isNotNull(s.getIssueStatus()) && s.getIssueStatus() == 1) {
sendMap.put("fd_3b73e18ad34090", "是");
List<TSalaryStandardIssueRes> resList = issueResService.list(
Wrappers.<TSalaryStandardIssueRes>query().lambda().eq(
TSalaryStandardIssueRes::getSalaryId, s.getId()));
if (resList != null && !resList.isEmpty()) {
// 代发户银行账户
List<String> fd_3b71f207c0cfd0 = new ArrayList<>();
// 代发户银行账户
List<String> fd_3b71f20883301a = new ArrayList<>();
// 代发户开户行
List<String> fd_3b71f20933e0d2 = new ArrayList<>();
// 代发户支行
List<String> fd_3b745c35ff27a8 = new ArrayList<>();
// 代发金额
List<String> fd_3b73a736cc9cc8 = new ArrayList<>();
for (TSalaryStandardIssueRes res : resList) {
fd_3b71f207c0cfd0.add(res.getOrgName());
fd_3b71f20883301a.add(res.getBankNo());
fd_3b71f20933e0d2.add(res.getBankName());
fd_3b745c35ff27a8.add(res.getBankSubName());
fd_3b73a736cc9cc8.add(String.valueOf(res.getMoney()));
}
sendMap.put("fd_3b71f1f4fd40ac.fd_3b71f207c0cfd0", fd_3b71f207c0cfd0);
sendMap.put("fd_3b71f1f4fd40ac.fd_3b71f20883301a", fd_3b71f20883301a);
sendMap.put("fd_3b71f1f4fd40ac.fd_3b71f20933e0d2", fd_3b71f20933e0d2);
sendMap.put("fd_3b71f1f4fd40ac.fd_3b745c35ff27a8", fd_3b745c35ff27a8);
sendMap.put("fd_3b71f1f4fd40ac.fd_3b73a736cc9cc8", fd_3b73a736cc9cc8);
}
}
return sendMap;
}
/**
* @Description: 添加流程进展明细
* @Author: hgw
......
......@@ -13,8 +13,10 @@ import com.yifu.cloud.plus.v1.yifu.insurances.util.ValidityUtil;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TConfigSalary;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryConfigStandard;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmployee;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryAccountService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryEmployeeService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.SalaryUploadParamVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAccountItemVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryAccountVo;
import lombok.Data;
......@@ -48,7 +50,7 @@ public class SalaryAccountUtil implements Serializable {
private List<ErrorMessage> errorInfo;
/**
* @param jsonStr 客户原表json内容
* vo.jsonStr 客户原表json内容
* @param dept 项目
* @param configSalary 当前项目下的配置(结算月等
* @param salaryConfigMap 客户原表-工资模板配置Map
......@@ -62,12 +64,18 @@ public class SalaryAccountUtil implements Serializable {
* @Date: 2019/9/16 17:26
* @return: void
**/
public void getJsonStringToList(YifuUser user, String jsonStr, TSettleDomainSelectVo dept
public void getJsonStringToList(YifuUser user, SalaryUploadParamVo vo, TSettleDomainSelectVo dept
, TConfigSalary configSalary, Map<String, TSalaryConfigStandard> salaryConfigMap, Map<String, Boolean> isMustMap
, Map<String, TSalaryEmployee> empIdCardMap, Map<String, TSalaryEmployee> empNameMap, boolean isDuplicateName
, String salaryType, List<String> checkListY, String invoiceTitle, TSalaryEmployeeService tSalaryEmployeeService
, List<String> checkListY, String invoiceTitle, TSalaryEmployeeService tSalaryEmployeeService
, Map<String, Integer> checkMap, Map<String, BigDecimal> specialMap, Map<String, Integer> ownEmployeeMap
, Map<String, Integer> ownDeptMap, TSalaryAccountService tSalaryAccountService) {
String jsonStr = vo.getJsonString();
String salaryType = vo.getSalaryType();
Integer isIssue = vo.getIsIssue();
if (Common.isEmpty(isIssue)) {
isIssue = 0;
}
List<TSalaryAccountVo> tList = new ArrayList<>();
List<HashMap> list = JSONObject.parseArray(jsonStr, HashMap.class);
List<ErrorMessage> errorList = new ArrayList<>();
......@@ -474,6 +482,18 @@ public class SalaryAccountUtil implements Serializable {
entity.setCity(dept.getCity());
entity.setTown(dept.getTown());
// 本次不为代发户,并且薪资人员里的代发户标记没去掉,要校验银行卡
if (isIssue == 0 && Common.isNotNull(emp.getBankNo())
&& Common.isNotNull(emp.getIssueStatus())
&& CommonConstants.ONE_INT == emp.getIssueStatus()) {
boolean bankNoIsTrue = tSalaryEmployeeService.checkBankInfo(emp);
if (!bankNoIsTrue) {
error = "第" + (i + 2) + SalaryConstants.LINE_EMP + emp.getEmpIdcard()
+ "-上次代发户未校验【姓名与卡号】,本次校验结果:不匹配。请去薪酬人员查询处更新卡号信息!";
errorList.add(new ErrorMessage((i + 2), error));
continue;
}
}
entity.setEmpId(emp.getId());
entity.setEmpIdcard(emp.getEmpIdcard());
entity.setEmpName(emp.getEmpName());
......
......@@ -141,6 +141,7 @@
<result property="fd_3adfedfbd23ab8" column="fd_3adfedfbd23ab8"/>
<result property="fd_3adfedfcb17f1e" column="fd_3adfedfcb17f1e"/>
<result property="fd_3adfedfc453cc4" column="fd_3adfedfc453cc4"/>
<result property="fd_3b73de2809465a" column="fd_3b73de2809465a"/>
<result property="fd_3adfee063acff0" column="fd_3adfee063acff0"/>
<result property="fd_3adfee0690737c" column="fd_3adfee0690737c"/>
<result property="fd_3adfee01668666" column="fd_3adfee01668666"/>
......@@ -577,6 +578,7 @@
,ifnull(a.EMP_PHONE,'') fd_3adfedfbd23ab8
,ifnull(a.BANK_NO,'') fd_3adfedfcb17f1e
,ifnull(a.BANK_NAME,'') fd_3adfedfc453cc4
,ifnull(a.BANK_SUB_NAME,'') fd_3b73de2809465a
,concat(left(ifnull(a.SALARY_MONTH,'1970'),4),'-',right(ifnull(a.SALARY_MONTH,'02'),2)) fd_3adfee063acff0
,concat(left(ifnull(a.SETTLEMENT_MONTH,'1970'),4),'-',right(ifnull(a.SETTLEMENT_MONTH,'02'),2)) fd_3adfee0690737c
,'是' fd_3adfee01668666
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardIssueMapper">
<resultMap id="tSalaryStandardIssueMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssue">
<id property="id" column="ID"/>
<result property="deptId" column="DEPT_ID"/>
<result property="deptName" column="DEPT_NAME"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="orgName" column="ORG_NAME"/>
<result property="bankName" column="BANK_NAME"/>
<result property="bankSubName" column="BANK_SUB_NAME"/>
<result property="bankNo" column="BANK_NO"/>
<result property="bankProvince" column="BANK_PROVINCE"/>
<result property="bankCity" column="BANK_CITY"/>
<result property="bankProvinceName" column="BANK_PROVINCE_NAME"/>
<result property="bankCityName" column="BANK_CITY_NAME"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.DEPT_ID,
a.DEPT_NAME,
a.DEPT_NO,
a.ORG_NAME,
a.BANK_NAME,
a.BANK_SUB_NAME,
a.BANK_NO,
a.BANK_PROVINCE,
a.BANK_PROVINCE_NAME,
a.BANK_CITY,
a.BANK_CITY_NAME,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tSalaryStandardIssue_where">
<if test="tSalaryStandardIssue != null">
<if test="tSalaryStandardIssue.id != null and tSalaryStandardIssue.id.trim() != ''">
AND a.ID = #{tSalaryStandardIssue.id}
</if>
<if test="tSalaryStandardIssue.deptId != null and tSalaryStandardIssue.deptId.trim() != ''">
AND a.DEPT_ID = #{tSalaryStandardIssue.deptId}
</if>
<if test="tSalaryStandardIssue.deptName != null and tSalaryStandardIssue.deptName.trim() != ''">
AND a.DEPT_NAME = #{tSalaryStandardIssue.deptName}
</if>
<if test="tSalaryStandardIssue.deptNo != null and tSalaryStandardIssue.deptNo.trim() != ''">
AND a.DEPT_NO = #{tSalaryStandardIssue.deptNo}
</if>
<if test="tSalaryStandardIssue.orgName != null and tSalaryStandardIssue.orgName.trim() != ''">
AND a.ORG_NAME = #{tSalaryStandardIssue.orgName}
</if>
<if test="tSalaryStandardIssue.bankName != null and tSalaryStandardIssue.bankName.trim() != ''">
AND a.BANK_NAME = #{tSalaryStandardIssue.bankName}
</if>
<if test="tSalaryStandardIssue.bankSubName != null and tSalaryStandardIssue.bankSubName.trim() != ''">
AND a.BANK_SUB_NAME = #{tSalaryStandardIssue.bankSubName}
</if>
<if test="tSalaryStandardIssue.bankNo != null and tSalaryStandardIssue.bankNo.trim() != ''">
AND a.BANK_NO = #{tSalaryStandardIssue.bankNo}
</if>
<if test="tSalaryStandardIssue.bankProvince != null">
AND a.BANK_PROVINCE = #{tSalaryStandardIssue.bankProvince}
</if>
<if test="tSalaryStandardIssue.bankCity != null">
AND a.BANK_CITY = #{tSalaryStandardIssue.bankCity}
</if>
<if test="tSalaryStandardIssue.createBy != null and tSalaryStandardIssue.createBy.trim() != ''">
AND a.CREATE_BY = #{tSalaryStandardIssue.createBy}
</if>
<if test="tSalaryStandardIssue.createName != null and tSalaryStandardIssue.createName.trim() != ''">
AND a.CREATE_NAME = #{tSalaryStandardIssue.createName}
</if>
<if test="tSalaryStandardIssue.createTime != null">
AND a.CREATE_TIME = #{tSalaryStandardIssue.createTime}
</if>
<if test="tSalaryStandardIssue.updateBy != null and tSalaryStandardIssue.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tSalaryStandardIssue.updateBy}
</if>
<if test="tSalaryStandardIssue.updateTime != null">
AND a.UPDATE_TIME = #{tSalaryStandardIssue.updateTime}
</if>
</if>
</sql>
<!--tSalaryStandardIssue简单分页查询-->
<select id="getTSalaryStandardIssuePage" resultMap="tSalaryStandardIssueMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_salary_standard_issue a
<where>
1=1
<include refid="tSalaryStandardIssue_where"/>
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryStandardIssueResMapper">
<resultMap id="tSalaryStandardIssueResMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryStandardIssueRes">
<id property="id" column="ID"/>
<result property="issueId" column="ISSUE_ID"/>
<result property="salaryId" column="SALARY_ID"/>
<result property="money" column="MONEY"/>
<result property="orgName" column="ORG_NAME"/>
<result property="bankName" column="BANK_NAME"/>
<result property="bankSubName" column="BANK_SUB_NAME"/>
<result property="bankNo" column="BANK_NO"/>
<result property="bankProvince" column="BANK_PROVINCE"/>
<result property="bankCity" column="BANK_CITY"/>
<result property="bankProvinceName" column="BANK_PROVINCE_NAME"/>
<result property="bankCityName" column="BANK_CITY_NAME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.ISSUE_ID,
a.SALARY_ID,
a.ORG_NAME,
a.BANK_NAME,
a.BANK_SUB_NAME,
a.BANK_NO,
a.BANK_PROVINCE,
a.BANK_PROVINCE_NAME,
a.BANK_CITY,
a.BANK_CITY_NAME,
a.MONEY
</sql>
<sql id="tSalaryStandardIssueRes_where">
<if test="tSalaryStandardIssueRes != null">
<if test="tSalaryStandardIssueRes.id != null and tSalaryStandardIssueRes.id.trim() != ''">
AND a.ID = #{tSalaryStandardIssueRes.id}
</if>
<if test="tSalaryStandardIssueRes.issueId != null and tSalaryStandardIssueRes.issueId.trim() != ''">
AND a.ISSUE_ID = #{tSalaryStandardIssueRes.issueId}
</if>
<if test="tSalaryStandardIssueRes.salaryId != null and tSalaryStandardIssueRes.salaryId.trim() != ''">
AND a.SALARY_ID = #{tSalaryStandardIssueRes.salaryId}
</if>
<if test="tSalaryStandardIssueRes.money != null">
AND a.MONEY = #{tSalaryStandardIssueRes.money}
</if>
</if>
</sql>
</mapper>
......@@ -77,6 +77,7 @@
<result property="applyNo" column="APPLY_NO"/>
<result property="incomeStartTime" column="INCOME_START_TIME"/>
<result property="incomeEndTime" column="INCOME_END_TIME"/>
<result property="issueStatus" column="ISSUE_STATUS"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -132,7 +133,8 @@
a.BPO_FLAG,
a.APPLY_NO,
a.INCOME_START_TIME,
a.INCOME_END_TIME
a.INCOME_END_TIME,
a.ISSUE_STATUS
</sql>
<sql id="tSalaryStandard_where">
<if test="tSalaryStandard != null">
......
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