Commit 769325dc authored by fangxinjiang's avatar fangxinjiang

有工资无社保 & 最低工资提醒 & 代码优化

parent 6f9bf12e
......@@ -46,8 +46,6 @@ public interface SysMessageSalaryService extends IService<SysMessageSalary> {
**/
void deleteAllBySettleMonth(String settleMonth);
void createSysMessageSalaryTemp(String settleMonth);
void listExport(HttpServletResponse response, SysMessageSalarySearchVo searchVo);
R<String> feedback(Integer reasonType, String id, String feedBack);
......
......@@ -96,6 +96,12 @@ public class SysMessageSalaryServiceImpl extends ServiceImpl<SysMessageSalaryMap
/**
* @Author fxj
* @Description 新增-普通工资
* 最低工资提醒(和档案属性在职状态和员工类型无关):
* 1.执行时间:每月1号上午六点 salaryTask createSysMessageSalary
* 2.判断逻辑:先上传上月(发送EKP时间对应的月份)数据,然后取值薪资合计-(薪资单状态发送成功)实发小于配置的最低工资
* 3.数据消失逻辑:当月不消失;次月定时任务执行的时候删除,重新计算生成
* 4.反馈:只能反馈创建人为自己的数据
* 5.导出:可选择/按查询条件/全量导出,导出字段为列表字段
* @Date 18:19 2022/8/17
**/
@Transactional
......@@ -137,54 +143,6 @@ public class SysMessageSalaryServiceImpl extends ServiceImpl<SysMessageSalaryMap
baseMapper.deleteAllBySettleMonth(settleMonth);
}
@Override
public void createSysMessageSalaryTemp(String month) {
//删除之前的数据
sysMessageSalaryTempService.remove(Wrappers.<SysMessageSalaryTemp>query().lambda().eq(SysMessageSalaryTemp::getSettleMonth, month));
//获取当月的所有最低工资,并且是临时人员
// 获取他上次发工资是不是在最低工资表里面 次数+1
//继续循环上次,如果发现上次没有在最低工资表里面,则循环下一个人员
List<SysMessageSalary> list = this.list(Wrappers.<SysMessageSalary>query().lambda().eq(SysMessageSalary::getSettleMonth, month));
R<List<TEmployeeInfo>> employeeInfoListR = null;//remoteBasicArchivesService.getEmployeeListForImportCheckByIds(Common.listObjectToStr(list, "employeeId", CommonConstants.COMMA_STRING), SecurityConstants.FROM_IN);
HashMap<String, TEmployeeInfo> employeeInfoMap = Maps.newHashMap();
List<TEmployeeInfo> employeeInfoList = employeeInfoListR.getData();
for (TEmployeeInfo employeeInfo : employeeInfoList) {
employeeInfoMap.put(employeeInfo.getId(), employeeInfo);
}
//获取当月的所有最低工资,并且是临时人员
List<SysMessageSalary> tempSysMessageSalary = Lists.newArrayList();
for (SysMessageSalary salary : list) {
TEmployeeInfo employeeInfo = employeeInfoMap.get(salary.getEmployeeId());
tempSysMessageSalary.add(salary);
}
for (SysMessageSalary messageSalary : tempSysMessageSalary) {
//获取他上次发工资是不是在最低工资表里面 次数+1
List<TSalaryAccount> accountList = salaryAccountService.list(Wrappers.<TSalaryAccount>query().lambda().eq(TSalaryAccount::getEmpIdcard, messageSalary.getEmployeeIdnum())
.lt(TSalaryAccount::getSalaryGiveTime, messageSalary.getSalaryMonth()).groupBy(TSalaryAccount::getSalaryGiveTime).orderByDesc(TSalaryAccount::getSalaryGiveTime));
int lowerConut = 1;
for (TSalaryAccount salaryAccount : accountList) {
long count = this.count(Wrappers.<SysMessageSalary>query().lambda().eq(SysMessageSalary::getEmployeeId, salaryAccount.getEmpId()).eq(SysMessageSalary::getSalaryMonth, salaryAccount.getSalaryGiveTime()));
if (count > 0) {
//如果大于0 则上次也是最低工资。
lowerConut++;
} else {
break;
}
}
//判断最低次数
if (lowerConut > 1) {
SysMessageSalaryTemp messageSalaryTemp = new SysMessageSalaryTemp();
messageSalaryTemp.setRelateId(messageSalary.getId());
messageSalaryTemp.setTimes(lowerConut);
messageSalaryTemp.setSettleMonth(month);
sysMessageSalaryTempService.save(messageSalaryTemp);
}
}
}
/**
* @Author fxj
* @Description 最低工资提醒导出
......
......@@ -100,6 +100,12 @@ public class THaveSalaryNosocialServiceImpl extends ServiceImpl<THaveSalaryNosoc
/**
* @Author fxj
* @Description 每月生成有工资没有社保(首页提醒定时任务 )
*有工资无社保提醒 ( 和档案属性在职状态和员工类型无关 ) :
*1.执行时间 : 每月1号上午六点 salaryTask createHaveSalaryNoSocial
*2.判断逻辑 : 先删除上月 ( 发送EKP时间对应的月份 ) 提醒数据 , 然后查找连续三个月 ( 不包含当月 ) 有发薪记录 - ( 薪资单状态发送成功 ) , 但是对应三个月均无社保缴费记录 ( 无个人社保数据 ) 并生成
*3.数据消失逻辑 : 当月不消失 ; 次月定时任务执行的时候删除 , 重新计算生成
*4.反馈 : 只能反馈创建人为自己的数据
*5.导出 : 可选择 / 按查询条件 / 全量导出 , 导出字段为列表字段
* @Date 18:30 2022/8/16
* @Param
* @return
......
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