From 1a1d630ebe569927d99aa248f69203d5054bffac Mon Sep 17 00:00:00 2001 From: ilal <lalqqhy@163.com> Date: Tue, 3 Nov 2020 13:56:33 +0800 Subject: [PATCH] 提交 --- src/main/java/cn/timer/api/bean/xcgl/XcglAssoJsgzzx.java | 3 +++ src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java | 45 ++++++++++++++++++++++++++++----------------- src/main/java/cn/timer/api/dao/xcgl/XcglAssoJsgzzxMapper.java | 2 ++ src/main/resources/mapping/xcgl/XcglAssoJsgzzxMapper.xml | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 17 deletions(-) diff --git a/src/main/java/cn/timer/api/bean/xcgl/XcglAssoJsgzzx.java b/src/main/java/cn/timer/api/bean/xcgl/XcglAssoJsgzzx.java index 7c4b9eb..98b0396 100644 --- a/src/main/java/cn/timer/api/bean/xcgl/XcglAssoJsgzzx.java +++ b/src/main/java/cn/timer/api/bean/xcgl/XcglAssoJsgzzx.java @@ -87,4 +87,7 @@ public class XcglAssoJsgzzx extends Model<XcglAssoJsgzzx> { @ApiModelProperty(value="是否自定义项(0:否;1:是)",example="0") private Integer isCustom; + + @ApiModelProperty(value="薪资档案自定义id",example="0") + private Integer xzdazdyid; } \ No newline at end of file diff --git a/src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java b/src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java index 2a10715..8507686 100644 --- a/src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java +++ b/src/main/java/cn/timer/api/controller/xcgl/SalaryManagementController.java @@ -1264,6 +1264,13 @@ public class SalaryManagementController { zzx.setGsid(0);//公式id 0:未关联规则 zzx.setGsgs("从薪资档案-"+term[a].getOptname()+"自动提取数据");//公式格式 系统提供/自定义公式 zzx.setRulestate(1);//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入] + XcglAssoXzdazdy xzd = XcglAssoXzdazdy.builder().build().selectOne(new QueryWrapper<XcglAssoXzdazdy>().lambda().eq(XcglAssoXzdazdy::getQyid, userBean.getOrgCode()) + .eq(XcglAssoXzdazdy::getZdmc, term[a].getOptname())); + int xzdazdyid = 0; + if(xzd != null) { + xzdazdyid = xzd.getId(); + } + zzx.setXzdazdyid(xzdazdyid); }else {// String xxs = "自动提取数据"; String[] strxz = {"从人事花名册-","从月度汇总-","从社保账单-"}; @@ -1286,6 +1293,8 @@ public class SalaryManagementController { zzx.setGsid(0);//公式id 0:未关联规则 zzx.setGsgs(describe);//公式格式 系统提供/自定义公式 zzx.setRulestate(rule);//规则状态[0:系统自动提取;1:系统固定值;2:固定公式计算;3:自定义公式计算;4:每月自动导入] + + zzx.setXzdazdyid(0); } } if(term[a].getOptitemid() != 0) { @@ -1312,7 +1321,7 @@ public class SalaryManagementController { } } if(gzzxlist.size() > 0) { - xcglassojsgzzxmapper.insertxcglassojsgzzxList(gzzxlist); + xcglassojsgzzxmapper.insertxcglassojsgzzxListTwo(gzzxlist); } return new ResponseResult().success("创建薪资组成功", gzzxlist); } @@ -1935,15 +1944,15 @@ public class SalaryManagementController { String formula = xzx.getGsgs();//#基本工资#/#应出勤天数#*#事假天数# if(xzx.getGsid() == 3) {//事假天数 - matter_leave = SalaryTool.formatDouble_(matter_leave/prescription);//转化天数 + matter_leave = matter_leave/prescription;//转化天数 String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#应出勤天数#", String.valueOf(attendance_days)).replace("#事假天数#", String.valueOf(matter_leave)); if(attendance_days > 0) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); } }else if(xzx.getGsid() == 4) {//事假次数 #事假次数#*200 String qaz = formula.replace("#事假次数#", String.valueOf(matter_leave_num)); if(attendance_days > 0) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); } } @@ -1953,15 +1962,15 @@ public class SalaryManagementController { String formula = xzx.getGsgs();//#基本工资#/#应出勤天数#*#病假天数#*0.4 if(xzx.getGsid() == 5) {//病假天数 - sick_leave = SalaryTool.formatDouble_(sick_leave/prescription);//转化天数 + sick_leave = sick_leave/prescription;//转化天数 String qaz = formula.replace("#基本工资#", String.valueOf(base_pay)).replace("#应出勤天数#", String.valueOf(attendance_days)).replace("#病假天数#", String.valueOf(sick_leave)); if(attendance_days > 0) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); } }else if(xzx.getGsid() == 6) {//病假次数 #病假次数#*100 String qaz = formula.replace("#病假次数#", String.valueOf(sick_leave_num)); if(attendance_days > 0) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); } } @@ -1984,7 +1993,7 @@ public class SalaryManagementController { qaz = formula.replace("#迟到时长#", String.valueOf(late_sc)).replace("#早退时长数#", String.valueOf(leave_early_sc)); } if(!("").equals(qaz)) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); } } @@ -2035,7 +2044,7 @@ public class SalaryManagementController { } if(!qaz.contains("#")) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); }else { System.err.println(xzx.getOptionid() + ":"+qaz+"有误!!!"); } @@ -2099,7 +2108,7 @@ public class SalaryManagementController { } if(!qaz.contains("#")) { - result = Double.valueOf(String.valueOf(js.eval(qaz))); + result = SalaryTool.formatDouble_(Double.valueOf(String.valueOf(js.eval(qaz)))); }else { System.err.println(xzx.getOptionid() + ":"+qaz+"有误!!!"); } @@ -2186,24 +2195,25 @@ public class SalaryManagementController { SbgjjAssoYjzd cuspde = sbgjjassoyjzdmapper.IndividualTotalsbgjj(gsus, orgcode, salary_month); gsmx.setCurrentSpecialDeduction(cuspde == null ? 0 : Double.valueOf(cuspde.getGrjltotal()));//本期专项扣除 【个人的社保公积金缴纳扣除】 gsmx.setCumSre(wages_payable+(sygs == null ? 0 : sygs.getCumSre()));//累计收入额 【本期收入+累计收入额(上月)】 - double cumjcfy = 0; - if(sygs.getCumJcfy() > 0) { + double cumjcfy = 0; + if(sygs != null && sygs.getCumJcfy() > 0) { cumjcfy = sygs.getCumJcfy() + 5000; }else { int xcy = 0; YgglMainEmp xzrz = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, gsus).eq(YgglMainEmp::getOrgCode, orgcode)); if(xzrz != null) { - String entry_date = ClockInTool.SunNovCSTYMD(xzrz.getRzTime());//yyyyMMdd +// String entry_date = ClockInTool.SunNovCSTYMD(xzrz.getRzTime());//yyyyMMdd + String entry_date = ClockInTool.SunNovCSTYM(xzrz.getRzTime());//yyyyMM if(bssz.getTaxReturnCycle().equals(1)) {//当月报税 if(entry_date.substring(0,4).equals(strY)) {//判断是否是本年 - xcy = SalaryTool.getMonthDiff(entry_date, salary_month+"-01"); + xcy = SalaryTool.getMonthDiff(entry_date+"-01", salary_month+"-01"); }else { xcy = SalaryTool.getMonthDiff(strY+"-01-01", salary_month+"-01"); } cumjcfy = xcy*5000; }else {//次月报税 if(entry_date.substring(0,4).equals(strY)) {//判断是否是本年 - xcy = SalaryTool.getMonthDiff(entry_date, salary_month+"-01")+1; + xcy = SalaryTool.getMonthDiff(entry_date+"-01", salary_month+"-01")+1; }else { xcy = SalaryTool.getMonthDiff(strY+"-01-01", salary_month+"-01")+1; } @@ -2218,7 +2228,7 @@ public class SalaryManagementController { double cumynssde = 0; cumynssde = gsmx.getCumSre() - cumjcfy - gsmx.getCumZxkc() - gsmx.getCumZxfjkc() - gsmx.getCumQtkc(); - gsmx.setCumYnssde(cumynssde);//累计应纳税所得额 【累计收入额-累计减除费用-累计专项扣除-累计专项附加扣除-累计其他扣除】 + gsmx.setCumYnssde(SalaryTool.formatDouble_(cumynssde));//累计应纳税所得额 【累计收入额-累计减除费用-累计专项扣除-累计专项附加扣除-累计其他扣除】 String[] miscalculation = getPersonalincometax(cumynssde); gsmx.setTaxRate(Double.valueOf(miscalculation[0]));//税率 @@ -2254,7 +2264,7 @@ public class SalaryManagementController { List<XcglAssoTaxFormula> taxratelist = XcglAssoTaxFormula.builder().build().selectList(new QueryWrapper<XcglAssoTaxFormula>().lambda().eq(XcglAssoTaxFormula::getQyid, 0)); double personalIncomeTax=0;//个税 double money=36000;//应交税工资最低点 - if(taxpayroll>money){//应交税 + if(taxpayroll>0){//应交税 for (XcglAssoTaxFormula tax : taxratelist) {//计算个税 if(tax.getTaxablestart()<=taxpayroll&&taxpayroll<tax.getTaxableend()){ //个人所得税=计税工资*税率-速算扣除数 @@ -2269,6 +2279,7 @@ public class SalaryManagementController { } } }else{ + perinctax[0] = "0"; perinctax[1] = "0"; perinctax[2] = "0"; diff --git a/src/main/java/cn/timer/api/dao/xcgl/XcglAssoJsgzzxMapper.java b/src/main/java/cn/timer/api/dao/xcgl/XcglAssoJsgzzxMapper.java index 8555269..9bc8795 100644 --- a/src/main/java/cn/timer/api/dao/xcgl/XcglAssoJsgzzxMapper.java +++ b/src/main/java/cn/timer/api/dao/xcgl/XcglAssoJsgzzxMapper.java @@ -31,4 +31,6 @@ public interface XcglAssoJsgzzxMapper extends BaseMapper<XcglAssoJsgzzx> { List<XcglAssoJsgzzx> selectSalarySectionList(int xzzid); List<XcglAssoJsgzzx> SalaryRuleGroupItem(int xzzid); + + int insertxcglassojsgzzxListTwo(List<XcglAssoJsgzzx> xcglassojsgzzx); } diff --git a/src/main/resources/mapping/xcgl/XcglAssoJsgzzxMapper.xml b/src/main/resources/mapping/xcgl/XcglAssoJsgzzxMapper.xml index fbb70ea..6907176 100644 --- a/src/main/resources/mapping/xcgl/XcglAssoJsgzzxMapper.xml +++ b/src/main/resources/mapping/xcgl/XcglAssoJsgzzxMapper.xml @@ -19,6 +19,7 @@ <result column="rulestate" property="rulestate" /> <result column="optionid" property="optionid" /> <result column="is_custom" property="isCustom" /> + <result column="xzdazdyid" property="xzdazdyid" /> </resultMap> @@ -151,6 +152,62 @@ ) </foreach> </insert> + + <insert id="insertxcglassojsgzzxListTwo" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" > + insert into xcgl_asso_jsgzzx (salaryitem,yhmbzd,rule,type,addtime,adduserid,jxgzid,remarks,gsid,gsgs,dygk,degk,xzzid,rulestate,optionid,xzdazdyid) + <foreach collection="list" item="item" index="index" open="values " close="" separator=","> + ( + <if test="item.salaryitem != null" > + #{item.salaryitem,jdbcType=VARCHAR}, + </if> + <if test="item.yhmbzd != null" > + #{item.yhmbzd,jdbcType=VARCHAR}, + </if> + <if test="item.rule != null" > + #{item.rule,jdbcType=VARCHAR}, + </if> + <if test="item.type != null" > + #{item.type,jdbcType=INTEGER}, + </if> + <if test="item.addtime != null" > + #{item.addtime,jdbcType=BIGINT}, + </if> + <if test="item.adduserid != null" > + #{item.adduserid,jdbcType=INTEGER}, + </if> + <if test="item.jxgzid != null" > + #{item.jxgzid,jdbcType=INTEGER}, + </if> + <if test="item.remarks != null" > + #{item.remarks,jdbcType=VARCHAR}, + </if> + <if test="item.gsid != null" > + #{item.gsid,jdbcType=INTEGER}, + </if> + <if test="item.gsgs != null" > + #{item.gsgs,jdbcType=VARCHAR}, + </if> + <if test="item.dygk != null" > + #{item.dygk,jdbcType=DOUBLE}, + </if> + <if test="item.degk != null" > + #{item.degk,jdbcType=DOUBLE}, + </if> + <if test="item.xzzid != null" > + #{item.xzzid,jdbcType=INTEGER}, + </if> + <if test="item.rulestate != null" > + #{item.rulestate,jdbcType=INTEGER}, + </if> + <if test="item.optionid != null" > + #{item.optionid,jdbcType=INTEGER}, + </if> + <if test="item.xzdazdyid != null" > + #{item.xzdazdyid,jdbcType=INTEGER} + </if> + ) + </foreach> + </insert> <insert id="jsgzzxinsert" useGeneratedKeys="true" keyProperty="id" parameterType="cn.timer.api.bean.xcgl.XcglAssoJsgzzx"> -- libgit2 0.26.0