Browse Source

薪资代码及员工档案增加毕业院校

yuansh 6 months ago
parent
commit
73b5897762

+ 249 - 24
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/controller/SalaryManagementController.java

@@ -4,6 +4,8 @@ import java.io.*;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.net.*;
+import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -20,6 +22,7 @@ import org.jeecg.common.util.SqlInjectionUtil;
 import org.jeecg.common.util.encryption.AesEncryptUtil;
 import org.jeecg.modules.salary.entity.*;
 import org.jeecg.modules.salary.mapper.SalaryManagementDetailMapper;
+import org.jeecg.modules.salary.mapper.SalaryManagementExtraMapper;
 import org.jeecg.modules.salary.service.*;
 import org.jeecg.modules.salary.vo.ExcelDemo;
 import org.jeecg.modules.salary.vo.ExcelTemp;
@@ -75,7 +78,8 @@ public class SalaryManagementController {
     private SysUserMapper sysUserMapper;
     @Autowired
     private SalaryManagementDetailMapper salaryManagementDetailMapper;
-
+    @Autowired
+    private SalaryManagementExtraMapper salaryManagementExtraMapper;
     @ModelAttribute
     public void get() {
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@@ -493,6 +497,7 @@ public class SalaryManagementController {
 
         BigDecimal totalDeduction = new BigDecimal("0");//合计应扣
         BigDecimal actualOccurrence = new BigDecimal("0");//实发合计String
+        BigDecimal declaredAmount = new BigDecimal("0");//申报金额
 
         for(SalaryManagementDetail d: exportList){
 
@@ -533,6 +538,12 @@ public class SalaryManagementController {
             BigDecimal hiswagesNew = new BigDecimal(hiswages);
             wages = wages.add(hiswagesNew);
 
+//            BigDecimal declaredAmountNew = hisTotalPayableNew.subtract(d.getLatenessCost() == null ? BigDecimal.ZERO : d.getLatenessCost())
+//                    .subtract(d.getPersonalCost() == null ? BigDecimal.ZERO : d.getPersonalCost()).subtract(d.getSickCost() == null ? BigDecimal.ZERO : d.getSickCost());
+//            declaredAmount = declaredAmount.add(declaredAmountNew);
+
+            declaredAmount = declaredAmount.add(d.getDeclaredAmount() == null ? BigDecimal.ZERO : d.getDeclaredAmount());
+
         }
         userParams.setEndowmentInsurance(endowmentInsurance);
         userParams.setUnemploymentInsurance(unemploymentInsurance);
@@ -558,6 +569,7 @@ public class SalaryManagementController {
         userParams.setTotalDeduction(totalDeduction);
         userParams.setActualOccurrence(actualOccurrence.toString());
         userParams.setWages(wages.toString());
+        userParams.setDeclaredAmount(declaredAmount);
 
         return userParams;
     }
@@ -581,26 +593,60 @@ public class SalaryManagementController {
                 List<SalaryManagementDetail> exportList = salaryManagementDetailService.selectByMainId(object.getId(), null);
                 exportList.removeIf(item -> item.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") || item.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg=="));
 
+                List<SalaryManagementExtra> salaryManagementExtraList = salaryManagementExtraMapper.selectByDate("0", exportList.get(0).getYearWithMonth());
+
+                salaryManagementExtraList.removeIf(item -> item.getBeforeTaxAmount().equals("nghotxDTNyeHgH0mlfbJig==") || item.getAfterTaxAmount().equals("HV3ndEx8HV9kd1WNbxLgwg=="));
+
+                Map<String,BigDecimal> bigMap = new HashMap<>();
+                for(SalaryManagementExtra o:salaryManagementExtraList){
+
+                    String beforeTaxAmount = o.getBeforeTaxAmount();
+                    String userId = o.getUserId();
+                    if(StringUtils.isBlank(beforeTaxAmount) || StringUtils.isBlank(userId)){
+                        continue;
+                    }
+                    try {
+                        beforeTaxAmount = AesEncryptUtil.desEncrypt(beforeTaxAmount).trim();
+                        BigDecimal bigPayTaxes = new BigDecimal(beforeTaxAmount);
+
+                        bigMap.put(userId,bigPayTaxes);
+                    }catch (Exception e){
+                        System.out.println(userId+"福利金获取异常"+beforeTaxAmount);
+                    }
+
+                }
+
+
                 SalaryManagementDetail userParams = new SalaryManagementDetail();
 
                 String orgName = null;
                 String yearName = null;
                 for (SalaryManagementDetail o : exportList) {
+                    String userId = o.getUserId();
                     orgName = o.getOrgName();
                     yearName = o.getYearWithMonth();
 
                     String actualOccurrence = o.getActualOccurrence();
                     String wages = o.getWages();
                     String totalPayable = o.getTotalPayable();
+                    String totalPayableHis = AesEncryptUtil.desEncrypt(totalPayable).trim();
                     if (StringUtils.isNotBlank(actualOccurrence)) {
                         o.setActualOccurrence(AesEncryptUtil.desEncrypt(actualOccurrence).trim());
                     }
                     if (StringUtils.isNotBlank(totalPayable)) {
-                        o.setTotalPayable(AesEncryptUtil.desEncrypt(totalPayable).trim());
+                        o.setTotalPayable(totalPayableHis);
                     }
                     if (StringUtils.isNotBlank(wages)) {
                         o.setWages(AesEncryptUtil.desEncrypt(wages).trim());
                     }
+
+                    //申报金额
+                    BigDecimal declaredAmount = new BigDecimal(totalPayableHis).subtract(o.getLatenessCost()).subtract(o.getPersonalCost()).subtract(o.getSickCost());
+                    if(bigMap.containsKey(userId)){
+                        declaredAmount = declaredAmount.add(bigMap.get(userId));
+                    }
+
+                    o.setDeclaredAmount(declaredAmount);
                 }
 
                 userParams = changePar(exportList);
@@ -614,7 +660,7 @@ public class SalaryManagementController {
                 map.put("list", exportList);
                 TemplateExportParams params = new TemplateExportParams();
                 params.setTemplateUrl("D:\\service\\oa\\工资单下载模板.xls");
-//                params.setTemplateUrl("D:\\工资单下载模板.xls");
+//                params.setTemplateUrl("D:\\Excel模板\\工资单下载模板.xls");
 
                 mv1.addObject(TemplateExcelConstants.PARAMS, params);
                 mv1.addObject(TemplateExcelConstants.MAP_DATA, map);
@@ -1374,30 +1420,35 @@ public class SalaryManagementController {
     }
 
     public static void main(String[] args) throws Exception {
-        ImportParams params = new ImportParams();
-        params.setTitleRows(0);
-        params.setHeadRows(0);
-        //params.setSheetNum(9);
-        params.setNeedSave(false);
-        long start = new Date().getTime();
-        List<ExcelTemp> list = ExcelImportUtil.importExcel(new File(
-                "e:/一月考勤 - 正织.xlsx"), ExcelTemp.class, params);
-//        AesEncryptUtil.desEncrypt(Salary).trim()
-
-        for(ExcelTemp o:list){
-            String name = o.getName();
-            BigDecimal deduction = o.getDeduction();
-
-            System.out.println(name);
-            System.out.println(deduction);
-
-
-//            String wages = AesEncryptUtil.encrypt(personalTax.toString()).trim();
-//            System.out.println("update sys_user set adjustment = '"+wages+"' where realname='" +name+"';");
-        }
+//        ImportParams params = new ImportParams();
+//        params.setTitleRows(0);
+//        params.setHeadRows(0);
+//        //params.setSheetNum(9);
+//        params.setNeedSave(false);
+//        long start = new Date().getTime();
+//        List<ExcelTemp> list = ExcelImportUtil.importExcel(new File(
+//                "e:/一月考勤 - 正织.xlsx"), ExcelTemp.class, params);
+////        AesEncryptUtil.desEncrypt(Salary).trim()
+//
+//        for(ExcelTemp o:list){
+//            String name = o.getName();
+//            BigDecimal deduction = o.getDeduction();
+//
+//            System.out.println(name);
+//            System.out.println(deduction);
+//
+//
+////            String wages = AesEncryptUtil.encrypt(personalTax.toString()).trim();
+////            System.out.println("update sys_user set adjustment = '"+wages+"' where realname='" +name+"';");
+//        }
+        LocalDate rq1 = LocalDate.parse("2024-12-01");
+        LocalDate rq2 = LocalDate.parse("2024-12-12");
 
+        long daysBetween = ChronoUnit.DAYS.between(rq1, rq2);
+        System.out.println(daysBetween);
     }
 
+    //工资单
     @RequestMapping(value = "/tempChange")
     public void tempChange(@RequestParam(name = "excelName", required = true)String excelName,
                            @RequestParam(name = "month", required = true)String month) throws Exception {
@@ -1532,4 +1583,178 @@ public class SalaryManagementController {
 
     }
 
+    //年休
+    @RequestMapping(value = "/tempChange2")
+    public void tempChange2() throws Exception {
+
+        ImportParams params = new ImportParams();
+        params.setTitleRows(0);
+        params.setHeadRows(0);
+        params.setNeedSave(false);
+        List<ExcelTemp> list = ExcelImportUtil.importExcel(new File(
+                "e:/123.xlsx"), ExcelTemp.class, params);
+
+        //发放薪资合计(用于主表统计)
+        BigDecimal salary = new BigDecimal("0");
+        //个税合计(用于主表统计)
+        BigDecimal personalTax = new BigDecimal("0");
+
+        List<SalaryManagementHoliday> salaryAttendanceDetailList = new ArrayList<>();//子表
+        String org = "";
+        for(ExcelTemp o:list){
+
+            String orgName = o.getOrgName();//组织
+            if(StringUtils.isBlank(org)){
+                org = orgName;
+            }
+
+            String name = o.getName();//员工姓名
+            BigDecimal wages = o.getWages().setScale(2, BigDecimal.ROUND_HALF_UP);//基本工资
+
+            List<SysUser> listUser = sysUserMapper.getUserByRealName(name);
+            if(listUser.size() == 0){
+                continue;
+            }
+            String userId = listUser.get(0).getId();
+            String cardNo = listUser.get(0).getNCardNo();
+            String code = listUser.get(0).getWorkNo();
+
+            salary = salary.add(wages);
+
+            SalaryManagementHoliday detail = new SalaryManagementHoliday();
+            detail.setUserId(userId);
+            detail.setCardNo(cardNo);
+            detail.setYearWithMonth("2024");
+            detail.setVersion("1");
+
+            detail.setCode(code);
+            detail.setName(name);
+            detail.setOrgName(orgName);
+
+            String wagesHis = AesEncryptUtil.encrypt(wages.toString()).trim();
+            detail.setWages(wagesHis);//基本薪资
+            detail.setPayTaxes(wagesHis);//应纳税所得额
+            detail.setCumulative(wagesHis);//累计所得额
+
+            detail.setPersonalTax(BigDecimal.ZERO);//个税
+
+            detail.setActualOccurrence(wagesHis);//实发合计
+            salaryAttendanceDetailList.add(detail);
+
+        }
+
+        SalaryManagement salaryManagement = new SalaryManagement(); //主表
+        String salaryHis = AesEncryptUtil.encrypt(salary.toString()).trim();
+        String personalTaxHis = AesEncryptUtil.encrypt(personalTax.toString()).trim();
+        salaryManagement.setSalary(salaryHis);
+        salaryManagement.setPersonalTax(personalTaxHis);
+        salaryManagement.setType("年休工资单");
+        salaryManagement.setYearWithMonth("2024");
+        salaryManagement.setOrgName(org);
+        salaryManagement.setVersion("1");
+        salaryManagement.setNumberPeople(salaryAttendanceDetailList.size());
+        salaryManagement.setGenerationTime(new Date());
+        salaryManagementService.save(salaryManagement);
+
+        for(SalaryManagementHoliday o:salaryAttendanceDetailList){
+            o.setHeadId(salaryManagement.getId());
+            o.setActionLog("薪资初始化");
+            salaryManagementHolidayService.save(o);
+        }
+
+        System.out.println("==============================================");
+        System.out.println("========执行结束==========:"+salaryAttendanceDetailList.size());
+        System.out.println("==============================================");
+
+    }
+
+    //加班费
+    @RequestMapping(value = "/tempChange3")
+    public void tempChange3() throws Exception {
+
+        ImportParams params = new ImportParams();
+        params.setTitleRows(0);
+        params.setHeadRows(0);
+        params.setNeedSave(false);
+        List<ExcelTemp> list = ExcelImportUtil.importExcel(new File(
+                "e:/123456.xlsx"), ExcelTemp.class, params);
+
+        //发放薪资合计(用于主表统计)
+        BigDecimal salary = new BigDecimal("0");
+        //个税合计(用于主表统计)
+        BigDecimal personalTax = new BigDecimal("0");
+
+        List<SalaryManagementWorkOvertime> salaryAttendanceDetailList = new ArrayList<>();//子表
+        String org = "";
+        for(ExcelTemp o:list){
+
+            String orgName = o.getOrgName();//组织
+            if(StringUtils.isBlank(org)){
+                org = orgName;
+            }
+
+            String name = o.getName();//员工姓名
+            BigDecimal wages = o.getWages().setScale(2, BigDecimal.ROUND_HALF_UP);//基本工资
+
+            List<SysUser> listUser = sysUserMapper.getUserByRealName(name);
+            if(listUser.size() == 0){
+                continue;
+            }
+            String userId = listUser.get(0).getId();
+            String cardNo = listUser.get(0).getNCardNo();
+            String code = listUser.get(0).getWorkNo();
+
+            salary = salary.add(wages);
+
+            SalaryManagementWorkOvertime detail = new SalaryManagementWorkOvertime();
+            detail.setUserId(userId);
+            detail.setCardNo(cardNo);
+            detail.setYearWithMonth("2024");
+            detail.setVersion("1");
+
+            detail.setCode(code);
+            detail.setName(name);
+            detail.setOrgName(orgName);
+
+            String wagesHis = AesEncryptUtil.encrypt(wages.toString()).trim();
+            detail.setWorkOvertimeCost(wages);//基本薪资
+            detail.setActualOccurrence(wagesHis);//实发合计
+
+            detail.setPayTaxes(wagesHis);//应纳税所得额
+            detail.setCumulative(wagesHis);//累计所得额
+
+            detail.setPersonalTax(BigDecimal.ZERO);//个税
+            detail.setBeginMonth("2023-01");
+            detail.setEndMonth("2023-12");
+
+            salaryAttendanceDetailList.add(detail);
+
+        }
+
+        SalaryManagement salaryManagement = new SalaryManagement(); //主表
+        String salaryHis = AesEncryptUtil.encrypt(salary.toString()).trim();
+        String personalTaxHis = AesEncryptUtil.encrypt(personalTax.toString()).trim();
+        salaryManagement.setSalary(salaryHis);
+        salaryManagement.setPersonalTax(personalTaxHis);
+        salaryManagement.setType("加班工资单");
+        salaryManagement.setYearWithMonth("2024");
+        salaryManagement.setOrgName(org);
+        salaryManagement.setVersion("1");
+        salaryManagement.setNumberPeople(salaryAttendanceDetailList.size());
+        salaryManagement.setGenerationTime(new Date());
+        salaryManagementService.save(salaryManagement);
+
+        for(SalaryManagementWorkOvertime o:salaryAttendanceDetailList){
+            o.setHeadId(salaryManagement.getId());
+            o.setActionLog("薪资初始化");
+            salaryManagementWorkOvertimeService.save(o);
+        }
+
+        System.out.println("==============================================");
+        System.out.println("========执行结束==========:"+salaryAttendanceDetailList.size());
+        System.out.println("==============================================");
+
+    }
+
+
 }

+ 2 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/entity/SalaryManagementDetail.java

@@ -132,4 +132,6 @@ public class SalaryManagementDetail implements Serializable {
 	private BigDecimal unemploymentInsurance;//失业保险
 	@TableField(exist = false)
 	private BigDecimal medicalInsurance;//医疗保险
+	@TableField(exist = false)
+	private BigDecimal declaredAmount;//申报金额
 }

+ 3 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/mapper/SalaryManagementExtraMapper.java

@@ -16,9 +16,12 @@ public interface SalaryManagementExtraMapper extends BaseMapper<SalaryManagement
 
 	public boolean deleteByMainId(String mainId);
     
+	public List<SalaryManagementExtra> selectByDate(@Param("type")String type,@Param("yearWithMonth")String yearWithMonth);
+
 	public List<SalaryManagementExtra> selectByMainId(@Param("id")String mainId,@Param("name")String name,@Param("type")String type);
 
 	public List<SalaryManagementExtra> selectByUser(@Param("userId")String userId, @Param("yearWithMonth")String yearWithMonth, @Param("yearWithMonthNow")String yearWithMonthNow,@Param("type")String type);
+	public List<SalaryManagementExtra> selectByUserCalculate(@Param("userId")String userId, @Param("yearWithMonth")String yearWithMonth, @Param("yearWithMonthNow")String yearWithMonthNow,@Param("type")String type);
 
 	public List<SalaryManagementExtra> selectByUserTotal(@Param("userId")String userId, @Param("beginDate")String beginDate, @Param("endDate")String endDate,@Param("type")String type);
 

+ 2 - 1
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/mapper/xml/SalaryManagementDetailMapper.xml

@@ -15,13 +15,14 @@
 
 		left join salary_attendance_detail b on a.user_id = b.user_id and a.year_with_month = b.year_with_month and b.del_flag = 0
 
+		left join sys_user u on a.user_id = u.id
 		WHERE
 			a.head_id = #{id} and a.del_flag=0
 		<if test="name != null and name != ''">
 			AND a.name LIKE '%${name}%'
 		</if>
 
-		order by substring_index(a.code, '-', 1) + 0 ASC,a.code
+		order by IFNULL(u.sort_num,9999), substring_index(a.code, '-', 1) + 0 ASC,a.code
 	</select>
 
 	<select id="selectByUser" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementDetail">

+ 22 - 7
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/mapper/xml/SalaryManagementExtraMapper.xml

@@ -10,23 +10,38 @@
 	</delete>
 	
 	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementExtra">
-		SELECT * 
-		FROM  salary_management_extra
+		SELECT a.*
+		FROM  salary_management_extra a
+		left join sys_user u on a.user_id = u.id
 		WHERE
-			 head_id = #{id} and type = #{type}
+		a.head_id = #{id} and a.type = #{type}
 		<if test="name != null and name != ''">
-			AND name LIKE '%${name}%'
+			AND a.name LIKE '%${name}%'
 		</if>
-		order by substring_index(code, '-', 1) + 0 ASC,code
+		order by IFNULL(u.sort_num,9999), substring_index(a.code, '-', 1) + 0 ASC,a.code
 	</select>
 
 	<select id="selectByUser" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementExtra">
 		select * from salary_management_extra where del_flag = 0 and type = #{type}
-		and (calculate = 0
+		<!--and (calculate = 0
 			<if test="yearWithMonthNow != null and yearWithMonthNow != ''">
 				OR (calculate_date = #{yearWithMonthNow} and calculate = 1)
 			</if>
-			)
+			) -->
+		and user_id = #{userId} and year_with_month like '${yearWithMonth}%'
+
+
+	</select>
+
+
+	<select id="selectByDate" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementExtra">
+		select * from salary_management_extra where del_flag = 0 and type = #{type} and
+		year_with_month like '${yearWithMonth}%'
+
+	</select>
+
+	<select id="selectByUserCalculate" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementExtra">
+		select * from salary_management_extra where del_flag = 0 and type = #{type} and calculate = 1
 		and user_id = #{userId} and year_with_month like '${yearWithMonth}%'
 
 

+ 6 - 5
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/mapper/xml/SalaryManagementHolidayMapper.xml

@@ -10,14 +10,15 @@
 	</delete>
 	
 	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementHoliday">
-		SELECT * 
-		FROM  salary_management_holiday
+		SELECT a.*
+		FROM  salary_management_holiday a
+		left join sys_user u on a.user_id = u.id
 		WHERE
-			 head_id = #{id} and del_flag=0
+		a.head_id = #{id} and a.del_flag=0
 		<if test="name != null and name != ''">
-			AND name LIKE '%${name}%'
+			AND a.name LIKE '%${name}%'
 		</if>
-		order by substring_index(code, '-', 1) + 0 ASC,code
+		order by IFNULL(u.sort_num,9999), substring_index(a.code, '-', 1) + 0 ASC,a.code
 	</select>
 
 	<select id="selectByUser" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementHoliday">

+ 7 - 5
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/mapper/xml/SalaryManagementWorkOvertimeMapper.xml

@@ -10,14 +10,16 @@
 	</delete>
 	
 	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.salary.entity.SalaryManagementWorkOvertime">
-		SELECT * 
-		FROM  salary_management_work_overtime
+		SELECT a.*
+		FROM  salary_management_work_overtime a
+
+		left join sys_user u on a.user_id = u.id
 		WHERE
-			 head_id = #{id} and del_flag=0
+		a.head_id = #{id} and a.del_flag=0
 		<if test="name != null and name != ''">
-			AND name LIKE '%${name}%'
+			AND a.name LIKE '%${name}%'
 		</if>
-		order by substring_index(code, '-', 1) + 0 ASC,code
+		order by IFNULL(u.sort_num,9999), substring_index(a.code, '-', 1) + 0 ASC,a.code
 	</select>
 
 

+ 150 - 31
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/salary/service/impl/SalaryManagementServiceImpl.java

@@ -651,8 +651,8 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
                     StringBuffer sb = new StringBuffer("本次执行(月度工资单):");//记录执行信息
 
-                    String name = o.getName();//用户主键
-//                    if(name.equals("鲍莉莉")){
+//                    String name = o.getName();//用户主键
+//                    if(name.equals("崔崇杰") || name.equals("崔崇杰") || name.equals("崔崇杰")){
 //                        System.out.println("11111111");
 //                    }else{
 //                        continue;
@@ -674,7 +674,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 				附加薪资
 				 */
                     BigDecimal phoneBill = o.getPhoneBill() == null ? BigDecimal.ZERO : o.getPhoneBill();//话费补贴
-                    BigDecimal lunch = o.getLunch() == null ? BigDecimal.ZERO : o.getLunch();
+                    BigDecimal lunch = o.getLunch() == null ? BigDecimal.ZERO : o.getLunch(); //午餐补贴
                     //午餐补贴
                     BigDecimal housingSubsidies = o.getHousingSubsidies() == null ? BigDecimal.ZERO : o.getHousingSubsidies();//住房补贴
                     BigDecimal transportation = o.getTransportation() == null ? BigDecimal.ZERO : o.getTransportation();//交通补贴
@@ -758,6 +758,9 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                             .subtract(personalCost).subtract(sickCost).subtract(latenessCost).setScale(2, BigDecimal.ROUND_HALF_UP);
 
 
+                    String payTaxesText = AesEncryptUtil.encrypt(payTaxes.toString());
+                    salaryManagementDetail.setPayTaxes(payTaxesText);//应纳税所得额
+
                     //累计个税 = 本年度当前人员所有已缴纳个税
                     BigDecimal cumulativeTax = new BigDecimal("0");
                     //累计所得额 = 本年度当前人员所有应纳税所得之和
@@ -789,15 +792,13 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                     }
 
                     sb.append(withMonth + "年度,此时之前(" + yearWithMonth + ")有效福利现金" + extra.size() + "条,共计金额"+extraTax+"已计入应纳税所得额与累计所得额中;");
-                    payTaxes = payTaxes.add(extraTax);
+                    cumulative = cumulative.add(extraTax);
 
 //                    if(payTaxes.compareTo(BigDecimal.ZERO) < 0){
 //                        sb.append("实际应纳税所得额为"+payTaxes+"故默认为0!!");
 //                        payTaxes = new BigDecimal("0");
 //                    }
 
-                    String payTaxesText = AesEncryptUtil.encrypt(payTaxes.toString());
-                    salaryManagementDetail.setPayTaxes(payTaxesText);//应纳税所得额
 
                     if (cumulativeList.size() > 0) {
                         for (SalaryManagementDetail detail : cumulativeList) {
@@ -1036,9 +1037,11 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                     String orgName = o.getOrgName();//组织
                     BigDecimal workingHours = o.getWorkingHours() == null ? new BigDecimal("22") : o.getWorkingHours();//每日工时
                     BigDecimal surplus = o.getSurplus() == null ? BigDecimal.ZERO : o.getSurplus();//剩余天数
-                    String name = o.getName();//用户主键
-//                    if(name.equals("屠嘉琪")){
+//                    String name = o.getName();//用户主键
+//                    if(name.equals("周蒙蒙")){
 //                        System.out.println("11111111");
+//                    }else{
+//                        continue;
 //                    }
                     SalaryManagementHoliday salaryManagementHoliday = new SalaryManagementHoliday();
 
@@ -1072,6 +1075,8 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
                         List<SalaryManagementDetail> cumulativeList = salaryManagementDetailMapper.selectByUser(userId, newYear, null);
                         List<SalaryManagementWorkOvertime> cumulativeOvertimeList = salaryManagementWorkOvertimeMapper.selectByUser(userId, newYear, null);
+                        //0福利现金 1年终奖 福利现金需计算工资、加班费、年休累计纳税额,且参与入其他薪资累计
+                        List<SalaryManagementExtra> extra = salaryManagementExtraMapper.selectByUserCalculate(userId,withMonth,yearWithMonth,"0");
 
                         if (cumulativeList.size() > 0) {
 
@@ -1132,6 +1137,28 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                             }
                         }
                         sb.append(withMonth + "年度,此时之前(" + newYear + ")有效加班工资单" + cumulativeOvertimeList.size() + "条,已累计入累计所得额中;");
+
+                        //福利金
+                        BigDecimal extraTax = new BigDecimal("0");
+                        if (extra.size() > 0) {
+                            for (SalaryManagementExtra detail : extra) {
+
+                                BigDecimal personalTax = detail.getPersonalTax() == null ? BigDecimal.ZERO : detail.getPersonalTax();
+                                cumulativeTax = cumulativeTax.add(personalTax);//个税
+
+                                String hisPayTaxes = detail.getPayTaxes();//应纳税所得额
+                                hisPayTaxes = AesEncryptUtil.desEncrypt(hisPayTaxes).trim();
+                                BigDecimal bigPayTaxes = new BigDecimal(hisPayTaxes);
+                                extraTax = extraTax.add(bigPayTaxes);
+
+                            }
+
+                        }
+
+                        sb.append(withMonth + "年度,此时之前(" + yearWithMonth + ")有效福利现金" + extra.size() + "条,共计金额"+extraTax+"已计入应纳税所得额与累计所得额中;");
+                        cumulative = cumulative.add(extraTax);
+
+
                         cumulative = cumulative.add(wages).setScale(2, BigDecimal.ROUND_HALF_UP);;
                     } else {
                         sb.append("本次应发薪资年休工资为0,不计入累计所得额中");
@@ -1287,10 +1314,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
                     String userId = o.getUserId();//用户主键
                     String orgName = o.getOrgName();//组织
-//                    String getName = o.getName();//姓名
+                    String getName = o.getName();//姓名
 //
-//                    if(getName.equals("王能")|| getName.equals("童园")){
+//                    if(getName.equals("许双婷")){
 //                        System.out.println(111);
+//                    }else{
+//                        continue;
 //                    }
 
 //                    BigDecimal workingHours = o.getWorkingHours() == null ? BigDecimal.ZERO : o.getWorkingHours();//每日工时
@@ -1325,6 +1354,8 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                         List<SalaryManagementDetail> cumulativeList = salaryManagementDetailMapper.selectByUser(userId, withMonth, null);
                         List<SalaryManagementWorkOvertime> cumulativeOvertimeList = salaryManagementWorkOvertimeMapper.selectByUser(userId, withMonth, yearWithMonth);
                         List<SalaryManagementHoliday> holidayList = salaryManagementHolidayMapper.selectByUser(userId,withMonth);
+                        //0福利现金 1年终奖 福利现金需计算工资、加班费、年休累计纳税额,且参与入其他薪资累计
+                        List<SalaryManagementExtra> extra = salaryManagementExtraMapper.selectByUserCalculate(userId,withMonth,yearWithMonth,"0");
 
                         if (cumulativeList.size() > 0) {
 
@@ -1353,8 +1384,6 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                                 BigDecimal personalTax = detail.getPersonalTax() == null ? BigDecimal.ZERO : detail.getPersonalTax();
                                 cumulativeTax = cumulativeTax.add(personalTax);//个税
 
-                                cumulativeTax = cumulativeTax.add(personalTax);//个税
-
                                 String hisGetTotalPayable = detail.getTotalPayable();//应发
                                 hisGetTotalPayable = AesEncryptUtil.desEncrypt(hisGetTotalPayable).trim();
 
@@ -1403,6 +1432,27 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
                         }
                         sb.append(withMonth+"年度,此时之前("+yearWithMonth+")有效年休工资单"+holidayList.size()+"条,已累计入累计所得额中;");
 
+                        //福利金
+                        BigDecimal extraTax = new BigDecimal("0");
+                        if (extra.size() > 0) {
+                            for (SalaryManagementExtra detail : extra) {
+
+                                BigDecimal personalTax = detail.getPersonalTax() == null ? BigDecimal.ZERO : detail.getPersonalTax();
+                                cumulativeTax = cumulativeTax.add(personalTax);//个税
+
+                                String hisPayTaxes = detail.getPayTaxes();//应纳税所得额
+                                hisPayTaxes = AesEncryptUtil.desEncrypt(hisPayTaxes).trim();
+                                BigDecimal bigPayTaxes = new BigDecimal(hisPayTaxes);
+                                extraTax = extraTax.add(bigPayTaxes);
+
+                            }
+
+                        }
+
+                        sb.append(withMonth + "年度,此时之前(" + yearWithMonth + ")有效福利现金" + extra.size() + "条,共计金额"+extraTax+"已计入应纳税所得额与累计所得额中;");
+                        cumulative = cumulative.add(extraTax);
+
+
                         cumulative = cumulative.add(workOverTotal).setScale(2, BigDecimal.ROUND_HALF_UP);;
                     } else {
                         sb.append("本次应发加班工资为0,不计入累计所得额中");
@@ -1593,7 +1643,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
 
         if (holidayListMFY != null && holidayListMFY.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementHoliday o : holidayListMFY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementMFY.setId(IdUtil.simpleUUID());
             salaryManagementMFY.setCreateBy(sysUser.getUsername());
             salaryManagementMFY.setCreateTime(date);
@@ -1601,7 +1656,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementMFY.setOrgName("马菲羊");
             salaryManagementMFY.setType("年休工资单");
             salaryManagementMFY.setVersion(String.valueOf(ver));
-            salaryManagementMFY.setNumberPeople(holidayListMFY.size());
+            salaryManagementMFY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementMFY);
 
@@ -1617,7 +1672,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (holidayListNBSY != null && holidayListNBSY.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementHoliday o : holidayListNBSY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementNBSY.setId(IdUtil.simpleUUID());
             salaryManagementNBSY.setCreateBy(sysUser.getUsername());
             salaryManagementNBSY.setCreateTime(date);
@@ -1625,7 +1685,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementNBSY.setOrgName("森语");
             salaryManagementNBSY.setType("年休工资单");
             salaryManagementNBSY.setVersion(String.valueOf(ver));
-            salaryManagementNBSY.setNumberPeople(holidayListNBSY.size());
+            salaryManagementNBSY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementNBSY);
 
@@ -1641,7 +1701,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (holidayListZZ != null && holidayListZZ.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementHoliday o : holidayListZZ) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementZZ.setId(IdUtil.simpleUUID());
             salaryManagementZZ.setCreateBy(sysUser.getUsername());
             salaryManagementZZ.setCreateTime(date);
@@ -1649,7 +1714,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementZZ.setOrgName("正织");
             salaryManagementZZ.setType("年休工资单");
             salaryManagementZZ.setVersion(String.valueOf(ver));
-            salaryManagementZZ.setNumberPeople(holidayListZZ.size());
+            salaryManagementZZ.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementZZ);
 
@@ -1705,6 +1770,14 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
         if (workOvertimeListMFY != null && workOvertimeListMFY.size() > 0) {
 
+            int num = 0;
+            for (SalaryManagementWorkOvertime o : workOvertimeListMFY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
+
+
             salaryManagementMFY.setId(IdUtil.simpleUUID());
             salaryManagementMFY.setCreateBy(sysUser.getUsername());
             salaryManagementMFY.setCreateTime(date);
@@ -1712,7 +1785,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementMFY.setOrgName("马菲羊");
             salaryManagementMFY.setType("加班工资单");
             salaryManagementMFY.setVersion(String.valueOf(ver));
-            salaryManagementMFY.setNumberPeople(workOvertimeListMFY.size());
+            salaryManagementMFY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementMFY);
 
@@ -1729,6 +1802,13 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
         if (workOvertimeListNBSY != null && workOvertimeListNBSY.size() > 0) {
 
+            int num = 0;
+            for (SalaryManagementWorkOvertime o : workOvertimeListNBSY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
+
             salaryManagementNBSY.setId(IdUtil.simpleUUID());
             salaryManagementNBSY.setCreateBy(sysUser.getUsername());
             salaryManagementNBSY.setCreateTime(date);
@@ -1736,7 +1816,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementNBSY.setOrgName("森语");
             salaryManagementNBSY.setType("加班工资单");
             salaryManagementNBSY.setVersion(String.valueOf(ver));
-            salaryManagementNBSY.setNumberPeople(workOvertimeListNBSY.size());
+            salaryManagementNBSY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementNBSY);
 
@@ -1752,7 +1832,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (workOvertimeListZZ != null && workOvertimeListZZ.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementWorkOvertime o : workOvertimeListZZ) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementZZ.setId(IdUtil.simpleUUID());
             salaryManagementZZ.setCreateBy(sysUser.getUsername());
             salaryManagementZZ.setCreateTime(date);
@@ -1760,7 +1845,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementZZ.setOrgName("正织");
             salaryManagementZZ.setType("加班工资单");
             salaryManagementZZ.setVersion(String.valueOf(ver));
-            salaryManagementZZ.setNumberPeople(workOvertimeListZZ.size());
+            salaryManagementZZ.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementZZ);
 
@@ -1811,6 +1896,13 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
         if (salaryAttendanceDetailListMFY != null && salaryAttendanceDetailListMFY.size() > 0) {
 
+            int num = 0;
+            for (SalaryManagementDetail o : salaryAttendanceDetailListMFY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
+
             salaryManagementMFY.setId(IdUtil.simpleUUID());
             salaryManagementMFY.setCreateBy(sysUser.getUsername());
             salaryManagementMFY.setCreateTime(date);
@@ -1818,7 +1910,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementMFY.setOrgName("马菲羊");
             salaryManagementMFY.setType("月度工资单");
             salaryManagementMFY.setVersion(String.valueOf(ver));
-            salaryManagementMFY.setNumberPeople(salaryAttendanceDetailListMFY.size());
+            salaryManagementMFY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementMFY);
 
@@ -1834,6 +1926,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
         if (salaryAttendanceDetailListNBSY != null && salaryAttendanceDetailListNBSY.size() > 0) {
 
+            int num = 0;
+            for (SalaryManagementDetail o : salaryAttendanceDetailListNBSY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementNBSY.setId(IdUtil.simpleUUID());
             salaryManagementNBSY.setCreateBy(sysUser.getUsername());
             salaryManagementNBSY.setCreateTime(date);
@@ -1841,7 +1939,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementNBSY.setOrgName("森语");
             salaryManagementNBSY.setType("月度工资单");
             salaryManagementNBSY.setVersion(String.valueOf(ver));
-            salaryManagementNBSY.setNumberPeople(salaryAttendanceDetailListNBSY.size());
+            salaryManagementNBSY.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementNBSY);
 
@@ -1858,6 +1956,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
 
         if (salaryAttendanceDetailListZZ != null && salaryAttendanceDetailListZZ.size() > 0) {
 
+            int num = 0;
+            for (SalaryManagementDetail o : salaryAttendanceDetailListNBSY) {
+                if(!o.getActualOccurrence().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getActualOccurrence().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementZZ.setId(IdUtil.simpleUUID());
             salaryManagementZZ.setCreateBy(sysUser.getUsername());
             salaryManagementZZ.setCreateTime(date);
@@ -1865,7 +1969,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementZZ.setOrgName("正织");
             salaryManagementZZ.setType("月度工资单");
             salaryManagementZZ.setVersion(String.valueOf(ver));
-            salaryManagementZZ.setNumberPeople(salaryAttendanceDetailListZZ.size());
+            salaryManagementZZ.setNumberPeople(num);
 
             salaryManagementMapper.insert(salaryManagementZZ);
 
@@ -1915,7 +2019,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (salaryAttendanceDetailListMFY != null && salaryAttendanceDetailListMFY.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementExtra o : salaryAttendanceDetailListMFY) {
+                if(!o.getBeforeTaxAmount().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getBeforeTaxAmount().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementMFY.setId(IdUtil.simpleUUID());
             salaryManagementMFY.setCreateBy(sysUser.getUsername());
             salaryManagementMFY.setCreateTime(date);
@@ -1923,7 +2032,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementMFY.setOrgName("马菲羊");
             salaryManagementMFY.setType(type);
             salaryManagementMFY.setVersion(String.valueOf(ver));
-            salaryManagementMFY.setNumberPeople(salaryAttendanceDetailListMFY.size());
+            salaryManagementMFY.setNumberPeople(num);
             salaryManagementMFY.setYearWithMonth(yearWithMonth);
             salaryManagementMapper.insert(salaryManagementMFY);
 
@@ -1938,7 +2047,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (salaryAttendanceDetailListNBSY != null && salaryAttendanceDetailListNBSY.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementExtra o : salaryAttendanceDetailListNBSY) {
+                if(!o.getBeforeTaxAmount().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getBeforeTaxAmount().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementNBSY.setId(IdUtil.simpleUUID());
             salaryManagementNBSY.setCreateBy(sysUser.getUsername());
             salaryManagementNBSY.setCreateTime(date);
@@ -1946,7 +2060,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementNBSY.setOrgName("森语");
             salaryManagementNBSY.setType(type);
             salaryManagementNBSY.setVersion(String.valueOf(ver));
-            salaryManagementNBSY.setNumberPeople(salaryAttendanceDetailListNBSY.size());
+            salaryManagementNBSY.setNumberPeople(num);
             salaryManagementNBSY.setYearWithMonth(yearWithMonth);
             salaryManagementMapper.insert(salaryManagementNBSY);
 
@@ -1962,7 +2076,12 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
         }
 
         if (salaryAttendanceDetailListZZ != null && salaryAttendanceDetailListZZ.size() > 0) {
-
+            int num = 0;
+            for (SalaryManagementExtra o : salaryAttendanceDetailListZZ) {
+                if(!o.getBeforeTaxAmount().equals("nghotxDTNyeHgH0mlfbJig==") && !o.getBeforeTaxAmount().equals("HV3ndEx8HV9kd1WNbxLgwg==")){
+                    num ++;
+                }
+            }
             salaryManagementZZ.setId(IdUtil.simpleUUID());
             salaryManagementZZ.setCreateBy(sysUser.getUsername());
             salaryManagementZZ.setCreateTime(date);
@@ -1970,7 +2089,7 @@ public class SalaryManagementServiceImpl extends ServiceImpl<SalaryManagementMap
             salaryManagementZZ.setOrgName("正织");
             salaryManagementZZ.setType(type);
             salaryManagementZZ.setVersion(String.valueOf(ver));
-            salaryManagementZZ.setNumberPeople(salaryAttendanceDetailListZZ.size());
+            salaryManagementZZ.setNumberPeople(num);
             salaryManagementZZ.setYearWithMonth(yearWithMonth);
             salaryManagementMapper.insert(salaryManagementZZ);
 

+ 5 - 0
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -207,6 +207,10 @@ public class SysUser implements Serializable {
     @Excel(name = "政治面貌", width = 15)
     @ApiModelProperty(value = "政治面貌")
     private java.lang.String nOutlook;
+
+    //毕业学校
+    @Excel(name = "毕业院校", width = 15)
+    private java.lang.String graduationSchool;
     /**专业*/
     @Excel(name = "专业", width = 15)
     @ApiModelProperty(value = "专业")
@@ -406,6 +410,7 @@ public class SysUser implements Serializable {
 
     private java.lang.String communication;
 
+
     /**
      * 附件
      */