照片下发取消验证公共打开机是否在线
This commit is contained in:
parent
9bd8d9e8a2
commit
b184bf878b
@ -204,7 +204,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
||||
long remainingDays = days;
|
||||
while (remainingDays >= 365) {
|
||||
int year = cal1.get(Calendar.YEAR) + yearsDiff;
|
||||
int daysInYear = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 366 : 365;
|
||||
//int daysInYear = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 366 : 365;
|
||||
int daysInYear = 365;
|
||||
if (remainingDays >= daysInYear) {
|
||||
remainingDays -= daysInYear;
|
||||
yearsDiff++;
|
||||
|
||||
@ -167,10 +167,17 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
List<EqSnDetail> loseDeviceList = Collections.emptyList();
|
||||
for (EqSnDetail device : deviceList){
|
||||
//公共打卡机不需要检查
|
||||
if(!WebSocketUsers.getUsers().containsKey(device.getSessionId())){
|
||||
errorMsg.append("设备"+device.getSn()+"已经失去连接;");
|
||||
device.setType("连接已断开");
|
||||
loseDeviceList.add(device);
|
||||
//如果不是公共打开机, 返回信息
|
||||
if(!com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE.equals(device.getSn())){
|
||||
errorMsg.append("设备"+device.getSn()+"已经失去连接;");
|
||||
device.setType("连接已断开");
|
||||
loseDeviceList.add(device);
|
||||
}else{
|
||||
//如果是公共打开机, snList清除公共打开机的数据
|
||||
snList.remove(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE);
|
||||
}
|
||||
}
|
||||
sessionMap.put(device.getSn(), WebSocketUsers.getUsers().get(device.getSessionId()));
|
||||
}
|
||||
|
||||
@ -86,8 +86,7 @@ public interface SalaryCalculationStrategyExchangeProcessor {
|
||||
* @param detail
|
||||
* @param rzSalaryDetail
|
||||
*/
|
||||
default void buildRzSalaryDetail(SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){
|
||||
|
||||
default void buildRzSalaryDetail(Boolean isMonth, SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){
|
||||
Date limitDate = DateUtils.addMonths(sysStaff.getEmploymentDate(), Integer.valueOf(String.valueOf(sysStaff.getWorkerTerm())));
|
||||
Date limitMonth = null;
|
||||
Date month = null;
|
||||
@ -106,7 +105,7 @@ public interface SalaryCalculationStrategyExchangeProcessor {
|
||||
|
||||
////计算应发工资 合算月工资+加班工资+学历补助+合同补助+社保补助+工龄工资+全勤奖+加班工资+夜班补助+夜餐补助+其他补助+销售提成-餐费扣款-补助扣款-其他扣款 (无需再-缺勤扣款 因为计算工资的时候, 是按照实际出勤计算的)
|
||||
//计算应发工资 合算月工资+加班工资+学历补助+合同补助+社保补助+工龄工资+全勤奖+加班工资+夜班补助+夜餐补助+其他补助+销售提成-餐费扣款-补助扣款-其他扣款
|
||||
rzSalaryDetail.setSalary(rzSalaryDetail.getMonthSalary().add(rzSalaryDetail.getNightSubsidies()).add(rzSalaryDetail.getDinnerSubsidies())
|
||||
rzSalaryDetail.setSalary(rzSalaryDetail.getMonthSalary().add(isMonth ? rzSalaryDetail.getOvertimeSalary() : DataUtils.DEFAULT_VALUE).add(rzSalaryDetail.getNightSubsidies()).add(rzSalaryDetail.getDinnerSubsidies())
|
||||
.add(DataUtils.findDefaultValue(rzSalaryDetail.getFullSubsidies(), DataUtils.DEFAULT_VALUE)).add(rzSalaryDetail.getLevelSubsidies()).add(rzSalaryDetail.getContractSubsidies()).add(rzSalaryDetail.getSocialSubsidies())
|
||||
.add(rzSalaryDetail.getSenioritySalary()).add(rzSalaryDetail.getSubsidyOrBonus()).add(rzSalaryDetail.getSalesCommission())
|
||||
.subtract(rzSalaryDetail.getMealFee()).subtract(rzSalaryDetail.getAbsenteeismSubsidies()).subtract(rzSalaryDetail.getDeductions()).subtract(rzSalaryDetail.getAbsenteeismSalary()));
|
||||
@ -182,7 +181,6 @@ public interface SalaryCalculationStrategyExchangeProcessor {
|
||||
* 计算扣款
|
||||
*/
|
||||
default void deduction(Boolean isDk, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, BigDecimal ycHours , BigDecimal cqHours){
|
||||
System.out.println(detail.getStaffId());
|
||||
//其他扣款
|
||||
rzSalaryDetail.setDeductions(detail.getDeductions());
|
||||
//餐饮扣款
|
||||
@ -255,10 +253,6 @@ public interface SalaryCalculationStrategyExchangeProcessor {
|
||||
rzSalaryDetail.setTaxableIncome(new BigDecimal("0"));
|
||||
}
|
||||
|
||||
if(sysStaff.getName().equals("杜惠斌")){
|
||||
System.out.println(111);
|
||||
}
|
||||
|
||||
//判断是否外包,外包公司员工不做税(月薪50000不上税)
|
||||
if("WB".equals(sysStaff.getCompanyName())){
|
||||
// 实发工资 = 税前工资
|
||||
|
||||
@ -41,7 +41,6 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra
|
||||
@Override
|
||||
public boolean accept(SysStaffDetail detail) {
|
||||
//日薪不为空, 并且大于0
|
||||
System.out.println(JSON.toJSONString(detail));
|
||||
return detail.getDailyWage() != null && detail.getDailyWage().compareTo(new BigDecimal(0)) > 0;
|
||||
}
|
||||
|
||||
@ -49,7 +48,7 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra
|
||||
public void exchangeSalaryCalculation(SysStaff sysStaff, SysStaffDetail sysStaffDetail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical, Map<Long, Boolean> overTimeMap) {
|
||||
|
||||
//组件基础数据
|
||||
buildRzSalaryDetail(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
buildRzSalaryDetail(false, sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
// //计算基本工资
|
||||
// monthSalary(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
|
||||
@ -96,10 +95,8 @@ public class DailyWageStrategyExchangeProcessor implements SalaryCalculationStra
|
||||
//计算补助
|
||||
subsidy(limitMonth, month, limitDate, sysStaff, detail, rzSalaryDetail, attendanceStatistical);
|
||||
//计算扣减
|
||||
|
||||
|
||||
;
|
||||
deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(DateUtils.getMonthDays(rzSalaryDetail.getMonth())).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper<RzAttendance>().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum());
|
||||
deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(ParamUtils.getMonthWorkDayNum(DateUtils.getYear(rzSalaryDetail.getMonth()), DateUtils.getMonth(rzSalaryDetail.getMonth()))).multiply(Constants.DAY_WORK_HOUR), attendanceStatistical.getRealAttendance());
|
||||
//deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(DateUtils.getMonthDays(rzSalaryDetail.getMonth())).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper<RzAttendance>().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum());
|
||||
//deduction(detail, rzSalaryDetail, String.valueOf(DateUtils.getMonthDays(rzSalaryDetail.getMonth())), rzAttendanceMapper.selectCount(new LambdaQueryWrapper<RzAttendance>().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth()).select(RzAttendance::getId)));
|
||||
//日薪没有缺勤扣款, 上一天就一天
|
||||
rzSalaryDetail.setAbsenteeismSalary(new BigDecimal(0));
|
||||
|
||||
@ -61,7 +61,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation
|
||||
// //计算基本工资
|
||||
// monthSalary(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
//组件基础数据
|
||||
buildRzSalaryDetail(sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
buildRzSalaryDetail(true, sysStaff, sysStaffDetail,rzSalaryDetail, attendanceStatistical);
|
||||
//计算薪资
|
||||
calculation(sysStaff, sysStaffDetail,rzSalaryDetail);
|
||||
}
|
||||
@ -69,7 +69,6 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation
|
||||
@Override
|
||||
public void monthSalary(Date limitMonth, Date month, Date limitDate ,SysStaff sysStaff, SysStaffDetail detail, RzSalaryDetail rzSalaryDetail, RzAttendanceStatistical attendanceStatistical){
|
||||
//如果计算薪资的月份 小于转正的月份, 则按照全额薪资的80%发放
|
||||
System.out.println(JSON.toJSONString(sysStaff));
|
||||
BigDecimal workHourPrice = rzSalaryDetail.getBasicSalary().add(rzSalaryDetail.getJobSalary()).divide(attendanceStatistical.getShouldAttendance(),2, RoundingMode.HALF_UP);
|
||||
if(limitMonth.compareTo(month) > 0){
|
||||
rzSalaryDetail.setMonthSalary(rzSalaryDetail.getBasicSalary().add(rzSalaryDetail.getJobSalary()).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD)));
|
||||
@ -99,7 +98,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation
|
||||
//计算补助
|
||||
subsidy(limitMonth, month, limitDate, sysStaff, detail, rzSalaryDetail, attendanceStatistical);
|
||||
//计算扣减
|
||||
deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(workNum).multiply(Constants.DAY_WORK_HOUR), rzAttendanceMapper.selectOne(new QueryWrapper<RzAttendance>().select( " ifnull(sum(work_sum),0) as workSum ").lambda().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth())).getWorkSum());
|
||||
deduction("是".equals(sysStaff.getClockIn()), detail, rzSalaryDetail, new BigDecimal(workNum).multiply(Constants.DAY_WORK_HOUR), attendanceStatistical.getRealAttendance());
|
||||
//deduction(detail, rzSalaryDetail,workNum, rzAttendanceMapper.selectCount(new LambdaQueryWrapper<RzAttendance>().isNotNull(RzAttendance::getWorkSum).gt(RzAttendance::getWorkSum, 0).eq(RzAttendance::getDelFlag, Constants.DELETE_FLAG_0).eq(RzAttendance::getStaffId, sysStaff.getUserId()).apply(" DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT({0} , '%Y%m' )", rzSalaryDetail.getMonth()).select(RzAttendance::getId)));
|
||||
//计算社保
|
||||
socialSecurity(sysStaff, detail, attendanceStatistical);
|
||||
@ -128,10 +127,10 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation
|
||||
totalAllHour = totalAllHour+hour;
|
||||
}
|
||||
}
|
||||
if(totalAllHour.compareTo(0l)> 0){
|
||||
//存在工伤假, 需要计算
|
||||
rzSalaryDetail.setMonthSalary(rzSalaryDetail.getMonthSalary().add(workHourPrice.multiply(new BigDecimal(totalAllHour))));
|
||||
}
|
||||
// if(totalAllHour.compareTo(0l)> 0){
|
||||
// //存在工伤假, 需要计算
|
||||
// rzSalaryDetail.setMonthSalary(rzSalaryDetail.getMonthSalary().add(workHourPrice.multiply(new BigDecimal(totalAllHour))));
|
||||
// }
|
||||
|
||||
//如果是不打卡人员, 只计算请假时长, 如果不是未打卡人员, 需要检查应出去和实际出勤的值
|
||||
if("是".equals(sysStaff.getClockIn())){
|
||||
|
||||
@ -668,9 +668,6 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
|
||||
List<String> sheetDeptNames = deptDataList.keySet().stream().sorted((x,y) -> x.compareTo(y)).collect(Collectors.toList());
|
||||
allSheetNames.addAll(sheetDeptNames);
|
||||
for (String sheetDeptName : sheetDeptNames){
|
||||
if(Collections.asList("生技部","装配车间","设备工段").contains(sheetDeptName)){
|
||||
System.out.println(123213);
|
||||
}
|
||||
List<SalaryVo> depts = deptDataList.get(sheetDeptName);
|
||||
SalaryVo result = sumSalaryVo(depts);
|
||||
result.setDeptName(sheetDeptName);
|
||||
|
||||
@ -145,14 +145,6 @@ public class RzLeaveDetailServiceImpl extends ServiceImpl<RzLeaveDetailMapper, R
|
||||
return new BigDecimal(baseNum).add(new BigDecimal(addNum)).intValue();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
YearMonth yearMonth = YearMonth.of(2025, 5);
|
||||
LocalDate firsDay = yearMonth.atDay(1);
|
||||
System.out.println(firsDay);
|
||||
LocalDate endDay = yearMonth.atEndOfMonth();
|
||||
System.out.println(endDay);
|
||||
}
|
||||
|
||||
public void buildExtension(RzLeaveDetail rzLeaveDetail){
|
||||
SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd");
|
||||
SimpleDateFormat ym = new SimpleDateFormat("yyyy-MM");
|
||||
|
||||
@ -6,15 +6,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evo.attendance.service.IRzAttendanceStatisticalService;
|
||||
import com.evo.attendance.domain.vo.RzSalaryVo;
|
||||
import com.evo.common.annotation.DataScope;
|
||||
import com.evo.common.annotation.Excel;
|
||||
import com.evo.common.constant.Constants;
|
||||
import com.evo.common.core.domain.AjaxResult;
|
||||
import com.evo.common.core.domain.entity.RzUpload;
|
||||
import com.evo.common.core.domain.entity.SysDept;
|
||||
import com.evo.common.core.domain.entity.SysDictData;
|
||||
import com.evo.common.utils.Collections;
|
||||
import com.evo.common.utils.DateUtils;
|
||||
import com.evo.common.utils.SecurityUtils;
|
||||
import com.evo.common.utils.StringUtils;
|
||||
import com.evo.common.utils.*;
|
||||
import com.evo.common.utils.bean.BeanUtils;
|
||||
import com.evo.equipment.service.IEqSnDetailService;
|
||||
import com.evo.restaurant.domain.RzRestaurantStatistics;
|
||||
@ -272,17 +270,16 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
||||
sysStaff.setSex("0");
|
||||
}
|
||||
//根据员工ID查询原来的数据信息
|
||||
// SysStaff old_staff = getBaseMapper().selectSysStaffByUserId(sysStaff.getUserId());
|
||||
SysStaff old_staff = getBaseMapper().selectSysStaffByUserId(sysStaff.getUserId());
|
||||
//判断员工更换公司
|
||||
// if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())){
|
||||
// //保存旧公司数据存档
|
||||
// old_staff.setDelFlag(Constants.DELETE_FLAG_1);
|
||||
// old_staff.setUpdateBy(SecurityUtils.getUsername());
|
||||
// old_staff.setUpdateTime(DateUtils.getNowDate());
|
||||
// int i = getBaseMapper().updateSysStaff(old_staff);
|
||||
// if(i < 1){
|
||||
// return AjaxResult.error();
|
||||
// }
|
||||
if(!old_staff.getCompanyName().equals(sysStaff.getCompanyName())) {
|
||||
SysStaffDetail sysStaffDetail = sysStaffDetailMapper.selectSysStaffDetailByStaffId(sysStaff.getUserId());
|
||||
sysStaffDetail.setSpecialDeduction(DataUtils.DEFAULT_VALUE);
|
||||
sysStaffDetail.setTotalWages(DataUtils.DEFAULT_VALUE);
|
||||
sysStaffDetail.setAggregatePersonalIncomeTax(DataUtils.DEFAULT_VALUE);
|
||||
sysStaffDetailMapper.updateById(sysStaffDetail);
|
||||
}
|
||||
|
||||
// //处理新公司数据
|
||||
//// createNewStaff(sysStaff);
|
||||
// }else {
|
||||
@ -307,7 +304,7 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
||||
return AjaxResult.error();
|
||||
}
|
||||
//修改员工详情
|
||||
// createStaffDetail(sysStaff);
|
||||
// createStaffDetail(sysStaff);
|
||||
//修改考勤统计
|
||||
rzAttendanceStatisticalService.createRzAttendance(sysStaff, Collections.emptyList(), null);
|
||||
//餐饮统计
|
||||
|
||||
@ -17,6 +17,8 @@ import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -39,8 +41,6 @@ public class SubsidyCalculationUtils {
|
||||
public static final String xnh = "13";
|
||||
public static final String yc = "11";
|
||||
|
||||
|
||||
|
||||
public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List<RzSubsidyInfo> subsidyInfoList){
|
||||
//正式员工并且有补助信息
|
||||
if(Constants.JOB_STATIS_1.equals(staff.getStatus())){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user