e9f7680a6d63e91cbfc14824f61ff43c66b1e4b0.svn-base 83 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916
  1. /**
  2. *
  3. */
  4. package com.kingdee.shr.customer.gtiit.rpt;
  5. import java.math.BigDecimal;
  6. import java.math.RoundingMode;
  7. import java.sql.SQLException;
  8. import java.sql.Timestamp;
  9. import java.text.ParseException;
  10. import java.text.SimpleDateFormat;
  11. import java.time.LocalDate;
  12. import java.time.Month;
  13. import java.time.YearMonth;
  14. import java.time.format.TextStyle;
  15. import java.util.ArrayList;
  16. import java.util.Calendar;
  17. import java.util.Date;
  18. import java.util.GregorianCalendar;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Locale;
  22. import java.util.Map;
  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import org.apache.commons.collections4.CollectionUtils;
  26. import org.apache.commons.lang3.StringUtils;
  27. import org.json.JSONObject;
  28. import com.cloudera.impala.jdbc4.internal.apache.log4j.Logger;
  29. import com.kingdee.bos.BOSException;
  30. import com.kingdee.bos.Context;
  31. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  32. import com.kingdee.bos.metadata.entity.EntityViewInfo;
  33. import com.kingdee.bos.metadata.entity.FilterInfo;
  34. import com.kingdee.bos.metadata.entity.FilterItemInfo;
  35. import com.kingdee.bos.metadata.query.util.CompareType;
  36. import com.kingdee.bos.util.BOSUuid;
  37. import com.kingdee.eas.base.permission.UserInfo;
  38. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  39. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  40. import com.kingdee.eas.basedata.org.HROrgUnitFactory;
  41. import com.kingdee.eas.basedata.org.HROrgUnitInfo;
  42. import com.kingdee.eas.common.EASBizException;
  43. import com.kingdee.eas.custom.salarytemplate.WagesChromatographyFactory;
  44. import com.kingdee.eas.custom.salarytemplate.WagesChromatographyInfo;
  45. import com.kingdee.eas.framework.CoreBaseCollection;
  46. import com.kingdee.eas.util.app.ContextUtil;
  47. import com.kingdee.eas.util.app.DbUtil;
  48. import com.kingdee.jdbc.rowset.IRowSet;
  49. import com.kingdee.shr.base.syssetting.context.SHRContext;
  50. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  51. import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
  52. import com.kingdee.shr.customer.gtiit.entity.PayAddInfo;
  53. import com.kingdee.shr.customer.gtiit.util.DateTimeUtils;
  54. import com.kingdee.util.LocaleUtils;
  55. import bsh.StringUtil;
  56. /**
  57. * @author ISSUSER 兼职全职工资单套打zsys
  58. */
  59. public class ChromatographyListHandler extends ListHandler {
  60. Context ctx = SHRContext.getInstance().getContext();
  61. private static Logger logger = Logger.getLogger("com.kingdee.shr.customer.gtiit.rpt.ChromatographyListHandler");
  62. // map存储薪酬编码 key工资单薪酬项目存储实体类
  63. private static Map<String, PayAddInfo> payMap = new HashMap<>();
  64. // mapkey是薪酬项目编码 value是薪酬项目序号
  65. private static Map<String, String> serialMap = new HashMap<>();
  66. // 存储薪酬核算表的最后修改时间和 动态添加薪酬项目字段的数量
  67. private static Map<String, List<String>> countFiledMap = new HashMap<>();
  68. SimpleDateFormat tosdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  69. private static Date nowDate = new Date();
  70. @Override
  71. protected EntityViewInfo getDefaultEntityViewInfo(HttpServletRequest request, HttpServletResponse response)
  72. throws SHRWebException {
  73. // 获取当前登录用户
  74. UserInfo currentUserInfo = ContextUtil.getCurrentUserInfo(ctx);
  75. BOSUuid uid = currentUserInfo.getId();
  76. // String userid = uid.toString();
  77. BOSUuid pid = currentUserInfo.getPerson().getId();
  78. String personid = pid.toString();
  79. // 获取当前日期
  80. Date nowdate = new Date();
  81. try {
  82. // // 先删除套打表里有的数据
  83. // DbUtil.execute(this.ctx, this.deleteSql(personid));
  84. // // 获取工资单薪酬项目新增数据
  85. // getPaydata();
  86. // // 查询薪酬项目
  87. // IRowSet rs = DbUtil.executeQuery(this.ctx, this.getSql(null, personid));
  88. // getSaveData(rs, currentUserInfo, nowdate);
  89. // 先查询薪酬表和套打单据里面的数据看是否一样 一样就不需要删除,不一样就要删除重新添加
  90. // 查询薪酬项目
  91. IRowSet rs = DbUtil.executeQuery(this.ctx, this.getSql(null, personid));
  92. // 查询工资单套打表里的数据
  93. getPrinting(personid);
  94. // 获取薪酬核算表的最后修改时间
  95. List<String> updateTimeList = getUpdateTime(rs,nowdate);
  96. List<String> lastTimeList = countFiledMap.get("CFLasttime");
  97. // 获取套打表里新增字段的数量
  98. List<String> filedList = countFiledMap.get("CFAddFiled");
  99. // 动态新增薪酬项目的统计数
  100. String countFiled = countFiled();
  101. System.out.println("countFiled" + countFiled);
  102. // 判断两个list里面的元素是否一样 不一样就要更新数据
  103. boolean isEqual = CollectionUtils.isEqualCollection(updateTimeList, lastTimeList);
  104. System.out.println("updateTimeList" + updateTimeList.size() + "、" + lastTimeList.size());
  105. if (!isEqual) {
  106. System.out.println("进来了判断两个list里面的元素是否一样");
  107. // 先删除套打表里有的数据
  108. DbUtil.execute(this.ctx, this.deleteSql(personid));
  109. // 获取动态添加薪酬项目单据新增数据
  110. getPaydata();
  111. getSaveData(rs, currentUserInfo, nowdate);
  112. updateFiled(countFiled);
  113. }
  114. // 判断薪酬项目的数量的值是否在list里面 不在就要修改数据
  115. else if (!filedList.contains(countFiled)) {
  116. System.out.println("判断薪酬项目的数量的值是否在list里面");
  117. // 先删除套打表里有的数据
  118. DbUtil.execute(this.ctx, this.deleteSql(personid));
  119. // 获取动态添加薪酬项目单据新增数据
  120. getPaydata();
  121. getSaveData(rs, currentUserInfo, nowdate);
  122. updateFiled(countFiled);
  123. }
  124. } catch (BOSException e1) {
  125. e1.printStackTrace();
  126. }
  127. EntityViewInfo defaultViewInfo = new EntityViewInfo();
  128. FilterInfo botpFilterInfo = this.getBotpFilter(request);
  129. if (botpFilterInfo != null) {
  130. defaultViewInfo.setFilter(botpFilterInfo);
  131. return defaultViewInfo;
  132. } else {
  133. FilterInfo fastFilter = this.getFastFilter(request);
  134. if (logger.isDebugEnabled()) {
  135. String msg = fastFilter != null ? fastFilter.toSql() : "";
  136. logger.debug("fastFilter:" + msg);
  137. }
  138. FilterInfo filterInfo = new FilterInfo();
  139. try {
  140. filterInfo.mergeFilter(fastFilter, "AND");
  141. } catch (BOSException var14) {
  142. throw new SHRWebException(var14.getMessage(), var14);
  143. }
  144. // 清空过滤条件
  145. filterInfo = new FilterInfo();
  146. // 获取调整后的日期statisticalmonth
  147. Date adjustedDate = getAdjustedDate();
  148. boolean maintenanceDate = maintenanceDate(adjustedDate);
  149. String dateFormat = DateTimeUtils.dateFormat(adjustedDate, "M");
  150. // 添加新的过滤条件
  151. filterInfo.getFilterItems().add(new FilterItemInfo("peronid", personid, CompareType.EQUALS));
  152. filterInfo.getFilterItems().add(new FilterItemInfo("accountingstatus", "12,20", CompareType.INNER));
  153. // 过滤计算规则编码gt003
  154. filterInfo.getFilterItems().add(new FilterItemInfo("calculationNumber", "GT003", CompareType.NOTEQUALS));
  155. if(maintenanceDate) {
  156. filterInfo.getFilterItems().add(new FilterItemInfo("statisticalmonth", dateFormat, CompareType.NOTEQUALS));
  157. }
  158. defaultViewInfo.setFilter(filterInfo);
  159. if (logger.isDebugEnabled()) {
  160. String msg = defaultViewInfo != null ? defaultViewInfo.toString() : "";
  161. logger.debug("defaultViewInfo:" + msg);
  162. }
  163. return defaultViewInfo;
  164. }
  165. }
  166. /**
  167. * 存储薪酬核算表里面的最后修改时间
  168. *
  169. */
  170. public List<String> getUpdateTime(IRowSet rs,Date nowdate) {
  171. List<String> updateTimeList = new ArrayList<>();
  172. try {
  173. while (rs.next()) {
  174. String formatDate = tosdf.format(nowdate);
  175. String flastupdatetime = rs.getString("flastupdatetime");
  176. // 如果为空默认当天
  177. if(StringUtils.isBlank(flastupdatetime)) {
  178. flastupdatetime=formatDate;
  179. }
  180. // 包含.的字符串中去掉.及其后面的部分
  181. String replaceAll = flastupdatetime.replaceAll("\\..*", "");
  182. updateTimeList.add(replaceAll);
  183. }
  184. } catch (SQLException e) {
  185. // TODO 自动生成的 catch 块
  186. e.printStackTrace();
  187. }
  188. return updateTimeList;
  189. }
  190. /**
  191. * 查询套打单据里面的数据 存储薪酬核算表的最后修改时间 和新增薪酬项目字段的数量
  192. */
  193. public void getPrinting(String peronid) {
  194. List<String> lastTimeList = new ArrayList<>();
  195. List<String> filedList = new ArrayList<>();
  196. String sql = "SELECT * FROM CT_SAL_WagesChromatography where cfperonid =" + "'" + peronid + "'";
  197. System.out.println("查询最后修改时间和字段统计数sql"+sql);
  198. IRowSet rs = null;
  199. try {
  200. rs = DbUtil.executeQuery(this.ctx, sql);
  201. while (rs.next()) {
  202. String lasttime = rs.getString("CFLasttime") == null ? "2023-01-01" : rs.getString("CFLasttime");
  203. lastTimeList.add(lasttime);
  204. String countFiled = rs.getString("CFAddFiled") == null ? "0" : rs.getString("CFAddFiled");
  205. filedList.add(countFiled);
  206. }
  207. // 薪酬核算表的最后修改时间
  208. countFiledMap.put("CFLasttime", lastTimeList);
  209. // 动态新增薪酬项目的统计数
  210. countFiledMap.put("CFAddFiled", filedList);
  211. } catch (BOSException | SQLException e) {
  212. // TODO 自动生成的 catch 块
  213. e.printStackTrace();
  214. }
  215. }
  216. // 处理查询薪酬的语句
  217. public String getSql(String date, String peronid) {
  218. StringBuffer sql = new StringBuffer();
  219. String attendancenumber = "GT004";
  220. String curreynumber = "GT003";
  221. String monthnumber = "GT001";
  222. String grossnumber = "GT092";
  223. String beforeTaxnumber = "GT023";
  224. String servicenumber = "GT096";
  225. String hoursnumber = "GT090";
  226. String workernumber = "GT091";
  227. String incomebeforenumber = "GT213";
  228. String ytdtaxnumber = "GT217";
  229. String netpaymentnumber = "GT219";
  230. String allowanceIdnumber = "GT009";
  231. String workdayOTPaymentnumber = "GT005";
  232. String weekendOTPaymentnumber = "GT006";
  233. String subsidynumber = "GT016";
  234. String socialinsurancenumber = "GT039";
  235. String sedicalinsurancenumber = "GT040";
  236. String housingfundnumber = "GT041";
  237. String individualIncomeTaxnumber = "GT054";
  238. String insuranceplannumber = "GT215";
  239. // RMB
  240. String zfcurreyCode = "GT173";
  241. String positionAllowanceRMBCode = "GT109";
  242. String subsidyRMBCode = "GT115";
  243. String socialinsuranceRMBCode = "GT183";
  244. String medicalinsuranceRMBCode = "GT128";
  245. String housingfundRMBCode = "GT129";
  246. String netPaymentCode = "GT057";
  247. // 新加字段
  248. // GT002 Tax Exemption是否免税
  249. String taxExemption = "GT002";
  250. // GT007 Holiday OT Payment法定假加班费
  251. String holidayOTPayment = "GT007";
  252. // GT008 OT Payment总加班费
  253. String oTPayment = "GT008";
  254. // GT010 Communication Allowance通讯补贴
  255. String communicationAllowance = "GT010";
  256. // GT011 House Allowance 住房补贴
  257. String houseAllowance = "GT011";
  258. // GT012 Pension Allowance养老金补贴
  259. String pensionAllowance = "GT012";
  260. // GT035 Taxable Item计税不计薪
  261. String taxableItem = "GT035";
  262. // GT042 Special expense deductionsfor tax个税专项扣除
  263. String specialexpense = "GT042";
  264. // GT045 Annual Bonus1年终奖(按全年一次性所得计税)
  265. String annualBonus1 = "GT045";
  266. // GT048 Foreigner Annual Bonus 外籍年终奖(按一次性所得计税)
  267. String foreignerAnnual = "GT048";
  268. // GT051 Annual Bonus2年终奖(与当月薪资合并计税)
  269. String annualBonuss = "GT051";
  270. // GT052 Bonus Tax1全年一次性所得税
  271. String bonusTax = "GT052";
  272. // GT053 Bonus Tax for Non-Resident(外籍全年一次性所得税)
  273. String nonResident = "GT053";
  274. // GT055 Severance Tax经济补偿金税
  275. String severanceTax = "GT055";
  276. // GT056 Total Tax个税总计
  277. String totalTax = "GT056";
  278. // GT061 ER Social ins.单位社保
  279. String eRSocialins = "GT061";
  280. // GT062 ER Medical ins.单位综合医保险
  281. String eRMedicalins = "GT062";
  282. // GT063 ER Housing单位公积金
  283. String eRHousing = "GT063";
  284. // GT076 Payment in lieu of annual leave 年休假补偿费
  285. String annualleave = "GT076";
  286. // GT077 One-off severance pay一次性经济补偿
  287. String severancepay = "GT077";
  288. // GT222 Personal leave allowance事假补款
  289. String leaveallowance = "GT222";
  290. // GS020 Department 部门
  291. String department = "GS020";
  292. // GS021 Staff No. 工号
  293. String staff = "GS021";
  294. // GS022 Name 姓名
  295. String name = "GS022";
  296. // GS025 Nationality 国籍
  297. String nationality = "GS025";
  298. // GT191 ID No. /Passport No. 身份证号码/护照号码
  299. String iDno = "GT191";
  300. // GT094 Daily Wage日薪
  301. String dailyWage = "GT094";
  302. // GT095 Gross Wage2总日薪
  303. String grossWage2 = "GT095";
  304. // GT013 Tutoring Allowance辅导津贴
  305. String tutoringAllowance = "GT013";
  306. // GT014 Tutoring Allowance-2分摊辅导津贴
  307. String tutoringAllowances = "GT014";
  308. // GT017 Teachers Day Allowance 教师节慰问金
  309. String teachersDayAllowance = "GT017";
  310. // GT020 Total Allowance津贴总计
  311. String totalAllowance = "GT020";
  312. // GT027 Deduction Before Tax(-)税前扣款项
  313. String deductionBeforeTax = "GT027";
  314. // GT028 Total Deduction Before Tax税前扣款项合计
  315. String totalDeductionBeforeTax = "GT028";
  316. // GT031 Taxable Commercial Insurance 计税商业保险
  317. String taxableCommercial = "GT031";
  318. // GT034 Taxable Other Benefit计税其它福利
  319. String taxableOtherBenefit = "GT034";
  320. // GT018 Admission Subsidy招生津贴
  321. String admissionSubsidy = "GT018";
  322. // GT176 UG SubsidyUG补贴
  323. String uGSubsidyUG = "GT176";
  324. // GT024 Unpaid Leave Deduction 事假扣款
  325. String unpaidLeaveDeduction = "GT024";
  326. // GT066 OPT-Other Refund 其他退款
  327. String otherRefund = "GT066";
  328. // GT067 OPT-Other Deduction(-)其他扣款
  329. String otherDeduction = "GT067";
  330. // GT068 Total Rental and Utility fee房租水电费总计
  331. String utilityfee = "GT068";
  332. // GT097 Refund for rent or utility房租或水电费退款
  333. String rentorutility = "GT097";
  334. // GT036 Gross Salary 应发工资合计
  335. String grossSalary = "GT036";
  336. // GT064 Rent(-)房租
  337. String rent = "GT064";
  338. // GT065 Utility Cost(-)水电气费用
  339. String utilityCost = "GT065";
  340. // GT069 Salary Advance预支工资还款
  341. String salaryAdvance = "GT069";
  342. // GT072 Payment after Tax 税后补款项
  343. String paymentafterTax = "GT072";
  344. // GT075 Deduction after Tax(-)税后扣款项
  345. String deductionafterTax = "GT075";
  346. // GT078 Note 备注
  347. String note = "GT078";
  348. // GT042 个税专项扣除
  349. String deductionsfortax = "GT042";
  350. // GT130 个税专项扣除RMB
  351. // String deductionsfortaxRMB = "GT130";
  352. // 获取序号
  353. Map<String, String> fieldsnMap = getFieldsn();
  354. String toattendancenumber = fieldsnMap.get(attendancenumber);
  355. // curreynumber
  356. String totoattendancenumber = fieldsnMap.get(curreynumber);
  357. String tomonthnumber = fieldsnMap.get(monthnumber);
  358. String togrossnumber = fieldsnMap.get(grossnumber);
  359. String tobeforeTaxnumber = fieldsnMap.get(beforeTaxnumber);
  360. String toservicenumber = fieldsnMap.get(servicenumber);
  361. String tohoursnumber = fieldsnMap.get(hoursnumber);
  362. String toworkernumber = fieldsnMap.get(workernumber);
  363. String toincomebeforenumber = fieldsnMap.get(incomebeforenumber);
  364. String toytdtaxnumber = fieldsnMap.get(ytdtaxnumber);
  365. String tonetpaymentnumber = fieldsnMap.get(netpaymentnumber);
  366. String toallowanceIdnumber = fieldsnMap.get(allowanceIdnumber);
  367. String toworkdayOTPaymentnumber = fieldsnMap.get(workdayOTPaymentnumber);
  368. String toweekendOTPaymentnumber = fieldsnMap.get(weekendOTPaymentnumber);
  369. String tosubsidynumber = fieldsnMap.get(subsidynumber);
  370. String tosocialinsurancenumber = fieldsnMap.get(socialinsurancenumber);
  371. String tosedicalinsurancenumber = fieldsnMap.get(sedicalinsurancenumber);
  372. String tohousingfundnumber = fieldsnMap.get(housingfundnumber);
  373. String toindividualIncomeTaxnumber = fieldsnMap.get(individualIncomeTaxnumber);
  374. String toinsuranceplannumber = fieldsnMap.get(insuranceplannumber);
  375. // RMB
  376. String tozfcurreyCode = fieldsnMap.get(zfcurreyCode);
  377. String topositionAllowanceRMBCode = fieldsnMap.get(positionAllowanceRMBCode);
  378. String tosubsidyRMBCode = fieldsnMap.get(subsidyRMBCode);
  379. String tosocialinsuranceRMBCode = fieldsnMap.get(socialinsuranceRMBCode);
  380. String tomedicalinsuranceRMBCode = fieldsnMap.get(medicalinsuranceRMBCode);
  381. String tohousingfundRMBCode = fieldsnMap.get(housingfundRMBCode);
  382. String tonetPaymentCode = fieldsnMap.get(netPaymentCode);
  383. // 新加的薪酬项目
  384. String totaxExemption = fieldsnMap.get(taxExemption);
  385. String toholidayOTPayment = fieldsnMap.get(holidayOTPayment);
  386. String tooTPayment = fieldsnMap.get(oTPayment);
  387. String tocommunicationAllowance = fieldsnMap.get(communicationAllowance);
  388. String tohouseAllowance = fieldsnMap.get(houseAllowance);
  389. String topensionAllowance = fieldsnMap.get(pensionAllowance);
  390. String totaxableItem = fieldsnMap.get(taxableItem);
  391. String tospecialexpense = fieldsnMap.get(specialexpense);
  392. String toannualBonus1 = fieldsnMap.get(annualBonus1);
  393. String toforeignerAnnual = fieldsnMap.get(foreignerAnnual);
  394. String toannualBonuss = fieldsnMap.get(annualBonuss);
  395. String tobonusTax = fieldsnMap.get(bonusTax);
  396. String tononResident = fieldsnMap.get(nonResident);
  397. String toseveranceTax = fieldsnMap.get(severanceTax);
  398. String tototalTax = fieldsnMap.get(totalTax);
  399. String toeRSocialins = fieldsnMap.get(eRSocialins);
  400. String toeRMedicalins = fieldsnMap.get(eRMedicalins);
  401. String toeRHousing = fieldsnMap.get(eRHousing);
  402. String toannualleave = fieldsnMap.get(annualleave);
  403. String toseverancepay = fieldsnMap.get(severancepay);
  404. String toleaveallowance = fieldsnMap.get(leaveallowance);
  405. String todepartment = fieldsnMap.get(department);
  406. String tostaff = fieldsnMap.get(staff);
  407. String toname = fieldsnMap.get(name);
  408. String tonationality = fieldsnMap.get(nationality);
  409. String toiDno = fieldsnMap.get(iDno);
  410. String todailyWage = fieldsnMap.get(dailyWage);
  411. String togrossWage2 = fieldsnMap.get(grossWage2);
  412. String totutoringAllowance = fieldsnMap.get(tutoringAllowance);
  413. String totutoringAllowances = fieldsnMap.get(tutoringAllowances);
  414. String toteachersDayAllowance = fieldsnMap.get(teachersDayAllowance);
  415. String tototalAllowance = fieldsnMap.get(totalAllowance);
  416. // 税前扣款项
  417. String todeductionBeforeTax = fieldsnMap.get(deductionBeforeTax);
  418. String tototalDeductionBeforeTax = fieldsnMap.get(totalDeductionBeforeTax);
  419. String totaxableCommercial = fieldsnMap.get(taxableCommercial);
  420. String totaxableOtherBenefit = fieldsnMap.get(taxableOtherBenefit);
  421. String toadmissionSubsidy = fieldsnMap.get(admissionSubsidy);
  422. String touGSubsidyUG = fieldsnMap.get(uGSubsidyUG);
  423. String tounpaidLeaveDeduction = fieldsnMap.get(unpaidLeaveDeduction);
  424. String tootherRefund = fieldsnMap.get(otherRefund);
  425. String tootherDeduction = fieldsnMap.get(otherDeduction);
  426. String toutilityfee = fieldsnMap.get(utilityfee);
  427. String torentorutility = fieldsnMap.get(rentorutility);
  428. String togrossSalary = fieldsnMap.get(grossSalary);
  429. String torent = fieldsnMap.get(rent);
  430. String toutilityCost = fieldsnMap.get(utilityCost);
  431. String tosalaryAdvance = fieldsnMap.get(salaryAdvance);
  432. String topaymentafterTax = fieldsnMap.get(paymentafterTax);
  433. String todeductionafterTax = fieldsnMap.get(deductionafterTax);
  434. String tonote = fieldsnMap.get(note);
  435. String todeductionsfortax = fieldsnMap.get(deductionsfortax);
  436. // String todeductionsfortaxRMB = fieldsnMap.get(deductionsfortaxRMB);
  437. // 获取新加的薪酬项目
  438. getSerial();
  439. sql.append("SELECT a.fid as personid,b." + toname + " as personName, b." + tostaff
  440. + " as personNumber, b.FCalTime,b.FCalState as calstatus, b.FPeriodYear as countyear,b.FPeriodMonth as countmonth,b.FBeginDate as starttime,b.FEndDate as endtime,b.FCmpPeriodType as cmpertype,b.FIsLockOtherSysData as locke,\r\n"
  441. + "c.FNumber as gznumber,c.FName_l2 as gzname,d.FNumber as nsNumber ,d.FTaxNumber,d.FName_l2 as nsName,d.FState as nsstatus,b."
  442. + tonationality + " as guoji,b." + todepartment + " as bumenName,b." + toattendancenumber
  443. + " as Attendancedays,b." + totoattendancenumber + " as ffPaymentcurrency,\r\n" + "b." + tomonthnumber
  444. + " as Monthlysalary,b." + togrossnumber + " as GrossWage,b." + tobeforeTaxnumber
  445. + " as PaymentbeforeTax,\r\n" + "b." + toservicenumber + " as ServiceTax,b." + tohoursnumber
  446. + " as HourlyRate,b." + toworkernumber
  447. + " as WorkingHours,b.fhrorgunitid as hrid,b.fadminorgunitid as orgid,b." + toincomebeforenumber
  448. + " as incomebeforetax,b." + toytdtaxnumber + " as ytdtax ,b." + tonetpaymentnumber
  449. + " as netpayment,b." + toallowanceIdnumber + " as allowance,b." + toworkdayOTPaymentnumber
  450. + " as workdayOTPayment,\r\n" + "b." + toweekendOTPaymentnumber + " as weekendOTPayment,b."
  451. + tosubsidynumber + " as subsidy ,b." + tosocialinsurancenumber + " as socialinsurance,b."
  452. + tosedicalinsurancenumber + " as sedicalinsurance ,b." + tohousingfundnumber + " as housingfund , b."
  453. + toindividualIncomeTaxnumber + " as individualIncomeTax ,b." + toinsuranceplannumber
  454. + " as insuranceplan,b." + toiDno + " as idno,\r\n" + "b." + tozfcurreyCode + " as zfCurrency," + "\r\n"
  455. + "b." + topositionAllowanceRMBCode + " as PositionAllowanceRMB," + "b." + tosubsidyRMBCode
  456. + " as SubsidyRMB, b." + tosocialinsuranceRMBCode + " as SocialinsuranceRMB,b."
  457. + tomedicalinsuranceRMBCode + " as MedicalinsuranceRMB,b." + tohousingfundRMBCode
  458. + " as HousingfundRMB,\r\n" + "b." + tonetPaymentCode + " as tonetPayments,"
  459. // 新加字段
  460. + "b." + totaxExemption + " as TaxExemption,b." + toholidayOTPayment + " as HolidayOTPayment,b."
  461. + tooTPayment + " as OTPayment,b." + tocommunicationAllowance + " as CommunicationAllowance," + "b."
  462. + tohouseAllowance + " as HouseAllowance,b." + topensionAllowance + " as PensionAllowance,b."
  463. + totaxableItem + " as TaxableItem,b." + tospecialexpense + " as Specialexpense," + "b."
  464. + toannualBonus1 + " as AnnualBonus1,b." + toforeignerAnnual + " as ForeignerAnnual,b." + toannualBonuss
  465. + " as AnnualBonus2,b." + tobonusTax + " as BonusTax1,b." + tononResident + " as NonResident," + "b."
  466. + toseveranceTax + " as SeveranceTax,b." + tototalTax + " as TotalTax,b." + toeRSocialins
  467. + " as ERSocialins,b." + toeRMedicalins + " as ERMedicalins,b." + toeRHousing + " as ERHousing,b."
  468. + toannualleave + " as annualleave," + "b." + toseverancepay + " as severancepay,b." + toleaveallowance
  469. + " as leaveallowance,b." + todailyWage + " as DailyWage,b." + togrossWage2 + " as GrossWage2,b."
  470. + totutoringAllowance + " as TutoringAllowance," + "b." + totutoringAllowances
  471. + " as TutoringAllowance2,b." + toteachersDayAllowance + " as TeachersDayAllowance,b."
  472. + tototalAllowance + " as TotalAllowance,b." + todeductionBeforeTax + " as DeductionBeforeTax," + "b."
  473. + tototalDeductionBeforeTax + " as TotalDeductionBeforeTax,b." + totaxableCommercial
  474. + " as TaxableCommercial,b." + totaxableOtherBenefit + " as TaxableOtherBenefit," + "b."
  475. + toadmissionSubsidy + " as AdmissionSubsidy,b." + touGSubsidyUG + " as UGSubsidyUG,b."
  476. + tounpaidLeaveDeduction + " as UnpaidLeaveDeduction,b." + tootherRefund + " as OtherRefund," + "b."
  477. + tootherDeduction + " as OtherDeduction,b." + toutilityfee + " as Utilityfee,b." + torentorutility
  478. + " as rentorutility,b." + togrossSalary + " as GrossSalary," + "b." + torent + " as Rent,b."
  479. + toutilityCost + " as UtilityCost,b." + tosalaryAdvance + " as SalaryAdvance,b." + topaymentafterTax
  480. + " as PaymentafterTax," + "b." + todeductionafterTax + " as DeductionafterTax,b." + tonote
  481. + " as Note," + "b." + todeductionsfortax + " as deductionsfortax,b.flastupdatetime");
  482. // 遍历serialMap 拼接
  483. if (!serialMap.isEmpty()) {
  484. sql.append(",");
  485. for (Map.Entry<String, String> entry : serialMap.entrySet()) {
  486. String value = entry.getValue();
  487. sql.append("b.");
  488. sql.append(value);
  489. sql.append(",");
  490. }
  491. // 删除最后一个逗号
  492. sql.deleteCharAt(sql.length() - 1);
  493. }
  494. sql.append(
  495. " FROM t_bd_person a right join T_HR_SCMPCALTABLE b on a.fid=b.fpersonid left join T_HR_SCalScheme c on b.FCalSchemeID=c.fid left join T_HR_TaxUnit d on c.FTaxUnitID =d.fid\r\n"
  496. + "left join T_BD_Nationality e on a.FNationalityID=e.fid left join T_ORG_BaseUnit g on b.FAdminOrgUnitID=g.fid\r\n"
  497. // + "left join T_BD_Currency h on h.fid=c.FCurrencyID"
  498. );
  499. sql.append(" where 1=1 ");
  500. sql.append(" and b.FCalState in('12','20')");
  501. sql.append(" and b.fpersonid=" + "'" + peronid + "'");
  502. System.out.print("薪酬查询语句是" + sql.toString());
  503. return sql.toString();
  504. }
  505. // 删除套打里面的有的数据sql
  506. public String deleteSql(String personid) {
  507. StringBuffer sql = new StringBuffer();
  508. sql.append("DELETE FROM CT_SAL_WagesChromatography where CFPeronid=" + "'" + personid + "'");
  509. // sql.append(" and CFStatisticalmonth=" + "'" + tomonthDate + "'");
  510. // sql.append(" and CFStatisticalyear=" + "'" + fourDate + "'");
  511. System.out.print("删除语句是" + sql.toString());
  512. return sql.toString();
  513. }
  514. // 通过编码查询薪酬字段序号的方法
  515. public Map<String, String> getFieldsn() {
  516. Map<String, String> filedMap = new HashMap<>();
  517. StringBuffer xincSql = new StringBuffer();
  518. xincSql.append("SELECT * FROM T_HR_SCmpItem where FNumber in");
  519. xincSql.append("('GT004','GT003','GT173','GT001','GT092','GT023','GT096','GT090',");
  520. xincSql.append(
  521. "'GT091','GT213','GT217','GT219','GT009','GT005','GT006','GT016','GT039','GT040','GT041','GT054',");
  522. xincSql.append("'GT215','GT193','GT205','GT118','GT208','GT204','GT109',");
  523. xincSql.append("'GT105','GT106','GT115','GT183','GT128','GT129','GT135','GT057',");
  524. // 新加薪酬项目
  525. xincSql.append("'GT002','GT007','GT008','GT010','GT011','GT012','GT035','GT042','GT045','GT048',");
  526. xincSql.append("'GT051','GT052','GT053','GT055','GT056','GT061','GT062','GT063','GT076','GT077',");
  527. xincSql.append("'GT222','GS020','GS021','GS022','GS025','GT191','GT094','GT095','GT013','GT014',");
  528. xincSql.append("'GT017','GT020','GT027','GT028','GT031','GT034','GT018','GT176','GT024','GT066',");
  529. xincSql.append("'GT067','GT068','GT097','GT036','GT064','GT065','GT069','GT072','GT075','GT078',");
  530. xincSql.append("'GT042','GT130'");
  531. xincSql.append(")");
  532. System.out.println("薪酬编码的sql是" + xincSql.toString());
  533. try {
  534. IRowSet xinrs = DbUtil.executeQuery(this.ctx, xincSql.toString());
  535. while (xinrs.next()) {
  536. filedMap.put(xinrs.getString("FNumber"), "s" + xinrs.getString("FieldSn"));
  537. }
  538. } catch (BOSException | SQLException e) {
  539. e.printStackTrace();
  540. }
  541. return filedMap;
  542. }
  543. /***
  544. * 获取月份的英文简写名称
  545. */
  546. public String getMonth(String month) {
  547. int intMonth = Integer.parseInt(month);
  548. Month monthEnum = Month.of(intMonth);
  549. String monthName = monthEnum.getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
  550. ;
  551. return monthName;
  552. }
  553. /***
  554. * 保存数据到工资单表里
  555. */
  556. public void getSaveData(IRowSet rs, UserInfo currentUserInfo, Date nowdate) {
  557. try {
  558. StringBuffer xincSql = new StringBuffer();
  559. xincSql.append("SELECT * FROM T_HR_SCmpItem where FNumber in");
  560. xincSql.append("('GT004','GT003','GT173','GT001','GT092','GT023','GT096','GT090',");
  561. xincSql.append(
  562. "'GT091','GT213','GT217','GT219','GT009','GT005','GT006','GT016','GT039',' GT040','GT041','GT054',");
  563. xincSql.append("'GT215','GT193','GT205','GT118','GT208','GT204','GT109',");
  564. xincSql.append("'GT105','GT106','GT115','GT183','GT128','GT129','GT135','GT057')");
  565. IRowSet xinrs = DbUtil.executeQuery(this.ctx, xincSql.toString());
  566. String attendanceID = null;
  567. String curreyId = null;
  568. String monthId = null;
  569. String grossid = null;
  570. String beforeTaxId = null;
  571. String serviceID = null;
  572. String hoursId = null;
  573. String workerID = null;
  574. String incomebeforeId = null;
  575. String ytdtaxId = null;
  576. String netpaymentId = null;
  577. String allowanceId = null;
  578. String workdayOTPaymentId = null;
  579. String weekendOTPaymentId = null;
  580. String subsidyId = null;
  581. String socialinsuranceId = null;
  582. String sedicalinsuranceId = null;
  583. String housingfundId = null;
  584. String individualIncomeTaxId = null;
  585. String insuranceplanId = null;
  586. String attendancenumber = "GT004";
  587. String curreynumber = "GT003";
  588. String monthnumber = "GT001";
  589. String grossnumber = "GT092";
  590. String beforeTaxnumber = "GT023";
  591. String servicenumber = "GT096";
  592. String hoursnumber = "GT090";
  593. String workernumber = "GT091";
  594. String incomebeforenumber = "GT213";
  595. String ytdtaxnumber = "GT217";
  596. String netpaymentnumber = "GT219";
  597. String allowanceIdnumber = "GT009";
  598. String workdayOTPaymentnumber = "GT005";
  599. String weekendOTPaymentnumber = "GT006";
  600. String subsidynumber = "GT016";
  601. String socialinsurancenumber = "GT039";
  602. String sedicalinsurancenumber = "GT040";
  603. String housingfundnumber = "GT041";
  604. String individualIncomeTaxnumber = "GT054";
  605. String insuranceplannumber = "GT215";
  606. // RMB
  607. String zfcurreyCode = "GT173";
  608. String monthRMBCode = "GT193";
  609. String grossWageRMBCode = "GT205";
  610. String paymentbeforeRMBCode = "GT118";
  611. String serviceTaxRMBCode = "GT208";
  612. String hourlyRateRMBCode = "GT204";
  613. String positionAllowanceRMBCode = "GT109";
  614. String WorkdayOTPaymentRMBCode = "GT105";
  615. String weekendOTPaymentRMBCode = "GT106";
  616. String subsidyRMBCode = "GT115";
  617. String socialinsuranceRMBCode = "GT183";
  618. String medicalinsuranceRMBCode = "GT128";
  619. String housingfundRMBCode = "GT129";
  620. // String individualIncomeTaxRMBCode = "GT135";
  621. String socialinsuranceplanRMBCode = "GT214";
  622. // 实发工资 GT057
  623. String netPaymentCode = "GT057";
  624. while (xinrs.next()) {
  625. String number = xinrs.getString("FNumber");
  626. // 发放币种
  627. if (number.equals("GT003")) {
  628. curreyId = xinrs.getString("fid");
  629. }
  630. // 出勤天数
  631. if (number.equals("GT004")) {
  632. attendanceID = xinrs.getString("fid");
  633. attendancenumber = number;
  634. }
  635. // 月薪
  636. if (number.equals("GT001")) {
  637. monthId = xinrs.getString("fid");
  638. monthnumber = number;
  639. }
  640. // 总时薪
  641. if (number.equals("GT092")) {
  642. grossid = xinrs.getString("fid");
  643. grossnumber = number;
  644. }
  645. // 税前补款项
  646. if (number.equals("GT023")) {
  647. beforeTaxId = xinrs.getString("fid");
  648. beforeTaxnumber = number;
  649. }
  650. // 劳务税
  651. if (number.equals("GT096")) {
  652. serviceID = xinrs.getString("fid");
  653. servicenumber = number;
  654. }
  655. // 时薪
  656. if (number.equals("GT090")) {
  657. hoursId = xinrs.getString("fid");
  658. hoursnumber = number;
  659. }
  660. // 工作小时数
  661. if (number.equals("GT091")) {
  662. workerID = xinrs.getString("fid");
  663. workernumber = number;
  664. }
  665. // 年至今税前总工资
  666. if (number.equals("GT213")) {
  667. incomebeforeId = xinrs.getString("fid");
  668. incomebeforenumber = number;
  669. }
  670. // 年至今个人所得税
  671. if (number.equals("GT217")) {
  672. ytdtaxId = xinrs.getString("fid");
  673. ytdtaxnumber = number;
  674. }
  675. // 年至今实发工资
  676. if (number.equals("GT219")) {
  677. netpaymentId = xinrs.getString("fid");
  678. netpaymentnumber = number;
  679. }
  680. // 岗位津贴
  681. if (number.equals("GT009")) {
  682. allowanceId = xinrs.getString("fid");
  683. allowanceIdnumber = number;
  684. }
  685. // 平日加班费
  686. if (number.equals("GT005")) {
  687. workdayOTPaymentId = xinrs.getString("fid");
  688. workdayOTPaymentnumber = number;
  689. }
  690. // 休息日加班费
  691. if (number.equals("GT006")) {
  692. weekendOTPaymentId = xinrs.getString("fid");
  693. weekendOTPaymentnumber = number;
  694. }
  695. // 高温补贴
  696. if (number.equals("GT016")) {
  697. subsidyId = xinrs.getString("fid");
  698. subsidynumber = number;
  699. }
  700. // 社保
  701. if (number.equals("GT039")) {
  702. socialinsuranceId = xinrs.getString("fid");
  703. socialinsurancenumber = number;
  704. }
  705. // 医保
  706. if (number.equals("GT040")) {
  707. sedicalinsuranceId = xinrs.getString("fid");
  708. sedicalinsurancenumber = number;
  709. }
  710. // 公积金
  711. if (number.equals("GT041")) {
  712. housingfundId = xinrs.getString("fid");
  713. housingfundnumber = number;
  714. }
  715. // 个人所得税
  716. if (number.equals("GT054")) {
  717. individualIncomeTaxId = xinrs.getString("fid");
  718. individualIncomeTaxnumber = number;
  719. }
  720. // 年至今社医保公积金
  721. if (number.equals("GT215")) {
  722. insuranceplanId = xinrs.getString("fid");
  723. insuranceplannumber = number;
  724. }
  725. }
  726. CoreBaseCollection collection = new CoreBaseCollection();
  727. rs.beforeFirst();
  728. while (rs.next()) {
  729. // StringBuffer inertSql = new StringBuffer();
  730. // 部门id
  731. String drementid = rs.getString("orgid");
  732. // hr组织id
  733. String hrID = rs.getString("hrid");
  734. // 人员id
  735. String topersonid = rs.getString("personid") == null ? "" : rs.getString("personid");
  736. // 姓名
  737. String personName = rs.getString("personName") == null ? "" : rs.getString("personName");
  738. // 工号
  739. String personNumber = rs.getString("personNumber") == null ? "" : rs.getString("personNumber");
  740. // 核算次
  741. String fCalTime = rs.getString("FCalTime") == null ? "" : rs.getString("FCalTime");
  742. // 核算状态
  743. String calstatus = rs.getString("calstatus") == null ? "" : rs.getString("calstatus");
  744. // 统计年
  745. String countyear = rs.getString("countyear") == null ? "" : rs.getString("countyear");
  746. // 统计月
  747. String countmonth = rs.getString("countmonth") == null ? "" : rs.getString("countmonth");
  748. // 起始时间
  749. String tostarttime = rs.getString("starttime") == null ? "" : rs.getString("starttime");
  750. // 结束时间
  751. String endtime = rs.getString("endtime") == null ? "" : rs.getString("endtime");
  752. // // 结账周期
  753. // String cmpertype = rs.getString("cmpertype") == null ? "" :
  754. // rs.getString("cmpertype");
  755. // 是否锁
  756. String locke = rs.getString("locke") == null ? "" : rs.getString("locke");
  757. // 计算规则编码
  758. String gznumber = rs.getString("gznumber") == null ? "" : rs.getString("gznumber");
  759. // 计算规则名称
  760. String gzname = rs.getString("gzname") == null ? "" : rs.getString("gzname");
  761. // 纳税单位编码
  762. // String nsNumber = rs.getString("nsNumber") == null ? "" :
  763. // rs.getString("nsNumber");
  764. // // 扣缴单位纳税人识别号
  765. // String fTaxNumber = rs.getString("FTaxNumber") == null ? "" :
  766. // rs.getString("FTaxNumber");
  767. // // 纳税单位名称
  768. // String nsName = rs.getString("nsName") == null ? "" : rs.getString("nsName");
  769. // // 状态
  770. // String nsstatus = rs.getString("nsstatus") == null ? "" :
  771. // rs.getString("nsstatus");
  772. // 国籍
  773. String guoji = rs.getString("guoji") == null ? "" : rs.getString("guoji");
  774. // 部门
  775. String bumenName = rs.getString("bumenName") == null ? "" : rs.getString("bumenName");
  776. // 出勤天数
  777. BigDecimal bigAttendancedays = new BigDecimal("0.00");
  778. if (!("0E-10").equals(rs.getString("Attendancedays"))
  779. && StringUtils.isNotBlank(rs.getString("Attendancedays"))) {
  780. bigAttendancedays = rs.getBigDecimal("Attendancedays").setScale(2, RoundingMode.HALF_UP);
  781. }
  782. String Attendancedays = bigAttendancedays.toString();
  783. // 发放币别
  784. String ffPaymentcurrency = rs.getString("ffPaymentcurrency") == null ? ""
  785. : rs.getString("ffPaymentcurrency");
  786. // 月薪
  787. BigDecimal bigmonth = new BigDecimal("0.00");
  788. if (!("0E-10").equals(rs.getString("Monthlysalary"))
  789. && StringUtils.isNotBlank(rs.getString("Monthlysalary"))) {
  790. bigmonth = rs.getBigDecimal("Monthlysalary").setScale(2, RoundingMode.HALF_UP);
  791. }
  792. String monthlysalary = bigmonth.toString();
  793. // 总时薪 40.00000
  794. BigDecimal bigGrossWage = new BigDecimal("0.00");
  795. if (!("0E-10").equals(rs.getString("GrossWage")) && StringUtils.isNotBlank(rs.getString("GrossWage"))) {
  796. bigGrossWage = rs.getBigDecimal("GrossWage").setScale(2, RoundingMode.HALF_UP);
  797. }
  798. String grossWage = bigGrossWage.toString();
  799. // 税前补款项
  800. BigDecimal bigPaymentbeforeTax = new BigDecimal("0.00");
  801. if (!("0E-10").equals(rs.getString("PaymentbeforeTax"))
  802. && StringUtils.isNotBlank(rs.getString("PaymentbeforeTax"))) {
  803. bigPaymentbeforeTax = rs.getBigDecimal("PaymentbeforeTax").setScale(2, RoundingMode.HALF_UP);
  804. }
  805. String paymentbeforeTax = bigPaymentbeforeTax.toString();
  806. // 劳务税
  807. BigDecimal bigServiceTax = new BigDecimal("0.00");
  808. if (!("0E-10").equals(rs.getString("ServiceTax"))
  809. && StringUtils.isNotBlank(rs.getString("ServiceTax"))) {
  810. bigServiceTax = rs.getBigDecimal("ServiceTax").setScale(2, RoundingMode.HALF_UP);
  811. }
  812. String serviceTax = bigServiceTax.toString();
  813. // 时薪
  814. BigDecimal bigHourlyRate = new BigDecimal("0.00");
  815. if (!("0E-10").equals(rs.getString("HourlyRate"))
  816. && StringUtils.isNotBlank(rs.getString("HourlyRate"))) {
  817. bigHourlyRate = rs.getBigDecimal("HourlyRate").setScale(2, RoundingMode.HALF_UP);
  818. }
  819. String hourlyRate = bigHourlyRate.toString();
  820. // 工作小时数
  821. BigDecimal bigworkingHours = new BigDecimal("0.00");
  822. // String workingHours =
  823. // rs.getString("WorkingHours")==null?"":rs.getString("WorkingHours");
  824. if (!("0E-10").equals(rs.getString("WorkingHours"))
  825. && StringUtils.isNotBlank(rs.getString("WorkingHours"))) {
  826. bigworkingHours = rs.getBigDecimal("WorkingHours").setScale(2, RoundingMode.HALF_UP);
  827. }
  828. String workingHours = bigworkingHours.toString();
  829. // 年至今税前总工资
  830. BigDecimal bigincomebeforetax = new BigDecimal("0.00");
  831. if (!("0E-10").equals(rs.getString("incomebeforetax"))
  832. && StringUtils.isNotBlank(rs.getString("incomebeforetax"))) {
  833. bigincomebeforetax = rs.getBigDecimal("incomebeforetax").setScale(2, RoundingMode.HALF_UP);
  834. }
  835. String incomebeforetax = bigincomebeforetax.toString();
  836. // 年至今个人所得税
  837. BigDecimal bigytdtax = new BigDecimal("0.00");
  838. if (!("0E-10").equals(rs.getString("ytdtax")) && StringUtils.isNotBlank(rs.getString("ytdtax"))) {
  839. bigytdtax = rs.getBigDecimal("ytdtax").setScale(2, RoundingMode.HALF_UP);
  840. }
  841. String ytdtax = bigytdtax.toString();
  842. // 年至今实发工资
  843. BigDecimal bignetpayment = new BigDecimal("0.00");
  844. if (!("0E-10").equals(rs.getString("netpayment"))
  845. && StringUtils.isNotBlank(rs.getString("netpayment"))) {
  846. bignetpayment = rs.getBigDecimal("netpayment").setScale(2, RoundingMode.HALF_UP);
  847. }
  848. String netpayment = bignetpayment.toString();
  849. // 岗位津贴
  850. BigDecimal bigallowance = new BigDecimal("0.00");
  851. if (!("0E-10").equals(rs.getString("allowance")) && StringUtils.isNotBlank(rs.getString("allowance"))) {
  852. bigallowance = rs.getBigDecimal("allowance").setScale(2, RoundingMode.HALF_UP);
  853. }
  854. String allowance = bigallowance.toString();
  855. // 平日加班费
  856. BigDecimal bigworkdayOTPayment = new BigDecimal("0.00");
  857. if (!("0E-10").equals(rs.getString("workdayOTPayment"))
  858. && StringUtils.isNotBlank(rs.getString("workdayOTPayment"))) {
  859. bigworkdayOTPayment = rs.getBigDecimal("workdayOTPayment").setScale(2, RoundingMode.HALF_UP);
  860. }
  861. String workdayOTPayment = bigworkdayOTPayment.toString();
  862. // 休息日加班费
  863. BigDecimal bigweekendOTPayment = new BigDecimal("0.00");
  864. if (!("0E-10").equals(rs.getString("weekendOTPayment"))
  865. && StringUtils.isNotBlank(rs.getString("weekendOTPayment"))) {
  866. bigweekendOTPayment = rs.getBigDecimal("weekendOTPayment").setScale(2, RoundingMode.HALF_UP);
  867. }
  868. String weekendOTPayment = bigweekendOTPayment.toString();
  869. // 高温补贴
  870. BigDecimal bigsubsidy = new BigDecimal("0.00");
  871. if (!("0E-10").equals(rs.getString("subsidy")) && StringUtils.isNotBlank(rs.getString("subsidy"))) {
  872. bigsubsidy = rs.getBigDecimal("subsidy").setScale(2, RoundingMode.HALF_UP);
  873. }
  874. String subsidy = bigsubsidy.toString();
  875. // 社保
  876. BigDecimal bigsocialinsurance = new BigDecimal("0.00");
  877. if (!("0E-10").equals(rs.getString("socialinsurance"))
  878. && StringUtils.isNotBlank(rs.getString("socialinsurance"))) {
  879. bigsocialinsurance = rs.getBigDecimal("socialinsurance").setScale(2, RoundingMode.HALF_UP);
  880. }
  881. String socialinsurance = bigsocialinsurance.toString();
  882. // 医保
  883. BigDecimal bigsedicalinsurance = new BigDecimal("0.00");
  884. if (!("0E-10").equals(rs.getString("sedicalinsurance"))
  885. && StringUtils.isNotBlank(rs.getString("sedicalinsurance"))) {
  886. bigsedicalinsurance = rs.getBigDecimal("sedicalinsurance").setScale(2, RoundingMode.HALF_UP);
  887. }
  888. String sedicalinsurance = bigsedicalinsurance.toString();
  889. // 公积金
  890. BigDecimal bighousingfund = new BigDecimal("0.00");
  891. if (!("0E-10").equals(rs.getString("housingfund"))
  892. && StringUtils.isNotBlank(rs.getString("housingfund"))) {
  893. bighousingfund = rs.getBigDecimal("housingfund").setScale(2, RoundingMode.HALF_UP);
  894. }
  895. String housingfund = bighousingfund.toString();
  896. // 个人所得税
  897. BigDecimal bigindividualIncomeTax = new BigDecimal("0.00");
  898. if (!("0E-10").equals(rs.getString("individualIncomeTax"))
  899. && StringUtils.isNotBlank(rs.getString("individualIncomeTax"))) {
  900. bigindividualIncomeTax = rs.getBigDecimal("individualIncomeTax").setScale(2, RoundingMode.HALF_UP);
  901. }
  902. String individualIncomeTax = bigindividualIncomeTax.toString();
  903. // 年至今社医保公积金
  904. BigDecimal biginsuranceplan = new BigDecimal("0.00");
  905. if (!("0E-10").equals(rs.getString("insuranceplan"))
  906. && StringUtils.isNotBlank(rs.getString("insuranceplan"))) {
  907. biginsuranceplan = rs.getBigDecimal("insuranceplan").setScale(2, RoundingMode.HALF_UP);
  908. }
  909. String insuranceplan = biginsuranceplan.toString();
  910. // 身份证
  911. String idno = rs.getString("idno") == null ? "" : rs.getString("idno");
  912. // 支付币别
  913. String zfCurrency = rs.getString("zfCurrency");
  914. // RMB
  915. // 岗位津贴RMB
  916. BigDecimal bigallowanceRMB = new BigDecimal("0.00");
  917. if (!("0E-10").equals(rs.getString("PositionAllowanceRMB"))
  918. && StringUtils.isNotBlank(rs.getString("PositionAllowanceRMB"))) {
  919. bigallowanceRMB = rs.getBigDecimal("PositionAllowanceRMB").setScale(2, RoundingMode.HALF_UP);
  920. }
  921. String allowanceRMB = bigallowanceRMB.toString();
  922. // 高温补贴RMB
  923. BigDecimal bigsubsidyRMB = new BigDecimal("0.00");
  924. if (!("0E-10").equals(rs.getString("SubsidyRMB"))
  925. && StringUtils.isNotBlank(rs.getString("SubsidyRMB"))) {
  926. bigsubsidyRMB = rs.getBigDecimal("SubsidyRMB").setScale(2, RoundingMode.HALF_UP);
  927. }
  928. String subsidyRMB = bigsubsidyRMB.toString();
  929. // 社保RMB
  930. BigDecimal bigsocialinsuranceRMB = new BigDecimal("0.00");
  931. if (!("0E-10").equals(rs.getString("SocialinsuranceRMB"))
  932. && StringUtils.isNotBlank(rs.getString("SocialinsuranceRMB"))) {
  933. bigsocialinsuranceRMB = rs.getBigDecimal("SocialinsuranceRMB").setScale(2, RoundingMode.HALF_UP);
  934. }
  935. String socialinsuranceRMB = bigsocialinsuranceRMB.toString();
  936. // 医保RMB
  937. BigDecimal bigsedicalinsuranceRMB = new BigDecimal("0.00");
  938. if (!("0E-10").equals(rs.getString("MedicalinsuranceRMB"))
  939. && StringUtils.isNotBlank(rs.getString("MedicalinsuranceRMB"))) {
  940. bigsedicalinsuranceRMB = rs.getBigDecimal("MedicalinsuranceRMB").setScale(2, RoundingMode.HALF_UP);
  941. }
  942. String sedicalinsuranceRMB = bigsedicalinsuranceRMB.toString();
  943. // 公积金RMB
  944. BigDecimal bighousingfundRMB = new BigDecimal("0.00");
  945. if (!("0E-10").equals(rs.getString("HousingfundRMB"))
  946. && StringUtils.isNotBlank(rs.getString("HousingfundRMB"))) {
  947. bighousingfundRMB = rs.getBigDecimal("HousingfundRMB").setScale(2, RoundingMode.HALF_UP);
  948. }
  949. String housingfundRMB = bighousingfundRMB.toString();
  950. // 实发工资 tonetPaymentCode
  951. BigDecimal bigtonetPayments = new BigDecimal("0.00");
  952. if (!("0E-10").equals(rs.getString("tonetPayments"))
  953. && StringUtils.isNotBlank(rs.getString("tonetPayments"))) {
  954. bigtonetPayments = rs.getBigDecimal("tonetPayments").setScale(2, RoundingMode.HALF_UP);
  955. }
  956. String tonetPayments = bigtonetPayments.toString();
  957. // 新建的薪酬项目
  958. // Note 备注
  959. String note = rs.getString("Note") == null ? "" : rs.getString("Note");
  960. // DeductionafterTax 税后扣款项
  961. BigDecimal bigdeductionafterTax = new BigDecimal("0.00");
  962. if (!("0E-10").equals(rs.getString("DeductionafterTax"))
  963. && StringUtils.isNotBlank(rs.getString("DeductionafterTax"))) {
  964. bigdeductionafterTax = rs.getBigDecimal("DeductionafterTax").setScale(2, RoundingMode.HALF_UP);
  965. }
  966. String deductionafterTax = bigdeductionafterTax.toString();
  967. // PaymentafterTax 税后补款项
  968. BigDecimal bigPaymentafterTax = new BigDecimal("0.00");
  969. if (!("0E-10").equals(rs.getString("PaymentafterTax"))
  970. && StringUtils.isNotBlank(rs.getString("PaymentafterTax"))) {
  971. bigPaymentafterTax = rs.getBigDecimal("PaymentafterTax").setScale(2, RoundingMode.HALF_UP);
  972. }
  973. String paymentafterTax = bigPaymentafterTax.toString();
  974. // SalaryAdvance 预支工资还款
  975. BigDecimal bigSalaryAdvance = new BigDecimal("0.00");
  976. if (!("0E-10").equals(rs.getString("SalaryAdvance"))
  977. && StringUtils.isNotBlank(rs.getString("SalaryAdvance"))) {
  978. bigSalaryAdvance = rs.getBigDecimal("SalaryAdvance").setScale(2, RoundingMode.HALF_UP);
  979. }
  980. String salaryAdvance = bigSalaryAdvance.toString();
  981. // UtilityCost 水电气费用
  982. BigDecimal bigUtilityCost = new BigDecimal("0.00");
  983. if (!("0E-10").equals(rs.getString("UtilityCost"))
  984. && StringUtils.isNotBlank(rs.getString("UtilityCost"))) {
  985. bigUtilityCost = rs.getBigDecimal("UtilityCost").setScale(2, RoundingMode.HALF_UP);
  986. }
  987. String utilityCost = bigUtilityCost.toString();
  988. // Rent 房租
  989. BigDecimal bigRent = new BigDecimal("0.00");
  990. if (!("0E-10").equals(rs.getString("Rent")) && StringUtils.isNotBlank(rs.getString("Rent"))) {
  991. bigRent = rs.getBigDecimal("Rent").setScale(2, RoundingMode.HALF_UP);
  992. }
  993. String rent = bigRent.toString();
  994. // GrossSalary 应发工资合计
  995. BigDecimal bigGrossSalary = new BigDecimal("0.00");
  996. if (!("0E-10").equals(rs.getString("GrossSalary"))
  997. && StringUtils.isNotBlank(rs.getString("GrossSalary"))) {
  998. bigGrossSalary = rs.getBigDecimal("GrossSalary").setScale(2, RoundingMode.HALF_UP);
  999. }
  1000. String grossSalary = bigGrossSalary.toString();
  1001. // rentorutility 房租或水电费退款
  1002. BigDecimal bigrentorutility = new BigDecimal("0.00");
  1003. if (!("0E-10").equals(rs.getString("rentorutility"))
  1004. && StringUtils.isNotBlank(rs.getString("rentorutility"))) {
  1005. bigrentorutility = rs.getBigDecimal("rentorutility").setScale(2, RoundingMode.HALF_UP);
  1006. }
  1007. String rentorutility = bigrentorutility.toString();
  1008. // Utilityfee 房租水电费总计
  1009. BigDecimal bigUtilityfee = new BigDecimal("0.00");
  1010. if (!("0E-10").equals(rs.getString("Utilityfee"))
  1011. && StringUtils.isNotBlank(rs.getString("Utilityfee"))) {
  1012. bigUtilityfee = rs.getBigDecimal("Utilityfee").setScale(2, RoundingMode.HALF_UP);
  1013. }
  1014. String utilityfee = bigUtilityfee.toString();
  1015. // OtherDeduction 其他扣款
  1016. BigDecimal bigOtherDeduction = new BigDecimal("0.00");
  1017. if (!("0E-10").equals(rs.getString("OtherDeduction"))
  1018. && StringUtils.isNotBlank(rs.getString("OtherDeduction"))) {
  1019. bigOtherDeduction = rs.getBigDecimal("OtherDeduction").setScale(2, RoundingMode.HALF_UP);
  1020. }
  1021. String otherDeduction = bigOtherDeduction.toString();
  1022. // OtherRefund 其他退款
  1023. BigDecimal bigOtherRefund = new BigDecimal("0.00");
  1024. if (!("0E-10").equals(rs.getString("OtherRefund"))
  1025. && StringUtils.isNotBlank(rs.getString("OtherRefund"))) {
  1026. bigOtherRefund = rs.getBigDecimal("OtherRefund").setScale(2, RoundingMode.HALF_UP);
  1027. }
  1028. String otherRefund = bigOtherRefund.toString();
  1029. // UnpaidLeaveDeduction 事假扣款
  1030. BigDecimal bigUnpaidLeaveDeduction = new BigDecimal("0.00");
  1031. if (!("0E-10").equals(rs.getString("UnpaidLeaveDeduction"))
  1032. && StringUtils.isNotBlank(rs.getString("UnpaidLeaveDeduction"))) {
  1033. bigUnpaidLeaveDeduction = rs.getBigDecimal("UnpaidLeaveDeduction").setScale(2,
  1034. RoundingMode.HALF_UP);
  1035. }
  1036. String unpaidLeaveDeduction = bigUnpaidLeaveDeduction.toString();
  1037. // UGSubsidyUG 补贴
  1038. BigDecimal bigUGSubsidyUG = new BigDecimal("0.00");
  1039. if (!("0E-10").equals(rs.getString("UGSubsidyUG"))
  1040. && StringUtils.isNotBlank(rs.getString("UGSubsidyUG"))) {
  1041. bigUGSubsidyUG = rs.getBigDecimal("UGSubsidyUG").setScale(2, RoundingMode.HALF_UP);
  1042. }
  1043. String uGSubsidyUG = bigUGSubsidyUG.toString();
  1044. // AdmissionSubsidy 招生津贴
  1045. BigDecimal bigAdmissionSubsidy = new BigDecimal("0.00");
  1046. if (!("0E-10").equals(rs.getString("AdmissionSubsidy"))
  1047. && StringUtils.isNotBlank(rs.getString("AdmissionSubsidy"))) {
  1048. bigAdmissionSubsidy = rs.getBigDecimal("AdmissionSubsidy").setScale(2, RoundingMode.HALF_UP);
  1049. }
  1050. String admissionSubsidy = bigAdmissionSubsidy.toString();
  1051. // TaxableOtherBenefit 计税其它福利
  1052. BigDecimal bigTaxableOtherBenefit = new BigDecimal("0.00");
  1053. if (!("0E-10").equals(rs.getString("TaxableOtherBenefit"))
  1054. && StringUtils.isNotBlank(rs.getString("TaxableOtherBenefit"))) {
  1055. bigTaxableOtherBenefit = rs.getBigDecimal("TaxableOtherBenefit").setScale(2, RoundingMode.HALF_UP);
  1056. }
  1057. String taxableOtherBenefit = bigTaxableOtherBenefit.toString();
  1058. // TaxableCommercial 计税商业保险
  1059. BigDecimal bigTaxableCommercial = new BigDecimal("0.00");
  1060. if (!("0E-10").equals(rs.getString("TaxableCommercial"))
  1061. && StringUtils.isNotBlank(rs.getString("TaxableCommercial"))) {
  1062. bigTaxableCommercial = rs.getBigDecimal("TaxableCommercial").setScale(2, RoundingMode.HALF_UP);
  1063. }
  1064. String taxableCommercial = bigTaxableCommercial.toString();
  1065. // TotalDeductionBeforeTax 税前扣款项合计
  1066. BigDecimal bigTotalDeductionBeforeTax = new BigDecimal("0.00");
  1067. if (!("0E-10").equals(rs.getString("TotalDeductionBeforeTax"))
  1068. && StringUtils.isNotBlank(rs.getString("TotalDeductionBeforeTax"))) {
  1069. bigTotalDeductionBeforeTax = rs.getBigDecimal("TotalDeductionBeforeTax").setScale(2,
  1070. RoundingMode.HALF_UP);
  1071. }
  1072. String totalDeductionBeforeTax = bigTotalDeductionBeforeTax.toString();
  1073. // DeductionBeforeTax 税前扣款项
  1074. BigDecimal bigDeductionBeforeTax = new BigDecimal("0.00");
  1075. if (!("0E-10").equals(rs.getString("DeductionBeforeTax"))
  1076. && StringUtils.isNotBlank(rs.getString("DeductionBeforeTax"))) {
  1077. bigDeductionBeforeTax = rs.getBigDecimal("DeductionBeforeTax").setScale(2, RoundingMode.HALF_UP);
  1078. }
  1079. String deductionBeforeTax = bigDeductionBeforeTax.toString();
  1080. // TotalAllowance 津贴总计
  1081. BigDecimal bigTotalAllowance = new BigDecimal("0.00");
  1082. if (!("0E-10").equals(rs.getString("TotalAllowance"))
  1083. && StringUtils.isNotBlank(rs.getString("TotalAllowance"))) {
  1084. bigTotalAllowance = rs.getBigDecimal("TotalAllowance").setScale(2, RoundingMode.HALF_UP);
  1085. }
  1086. String totalAllowance = bigTotalAllowance.toString();
  1087. // TeachersDayAllowance 教师节慰问金
  1088. BigDecimal bigTeachersDayAllowance = new BigDecimal("0.00");
  1089. if (!("0E-10").equals(rs.getString("TeachersDayAllowance"))
  1090. && StringUtils.isNotBlank(rs.getString("TeachersDayAllowance"))) {
  1091. bigTeachersDayAllowance = rs.getBigDecimal("TeachersDayAllowance").setScale(2,
  1092. RoundingMode.HALF_UP);
  1093. }
  1094. String teachersDayAllowance = bigTeachersDayAllowance.toString();
  1095. // TutoringAllowance2 分摊辅导津贴
  1096. BigDecimal bigTutoringAllowance = new BigDecimal("0.00");
  1097. if (!("0E-10").equals(rs.getString("TutoringAllowance2"))
  1098. && StringUtils.isNotBlank(rs.getString("TutoringAllowance2"))) {
  1099. bigTutoringAllowance = rs.getBigDecimal("TutoringAllowance2").setScale(2, RoundingMode.HALF_UP);
  1100. }
  1101. String tutoringAllowance = bigTutoringAllowance.toString();
  1102. // TutoringAllowance 辅导津贴
  1103. BigDecimal bigTutoringAllowances = new BigDecimal("0.00");
  1104. if (!("0E-10").equals(rs.getString("TutoringAllowance"))
  1105. && StringUtils.isNotBlank(rs.getString("TutoringAllowance"))) {
  1106. bigTutoringAllowances = rs.getBigDecimal("TutoringAllowance").setScale(2, RoundingMode.HALF_UP);
  1107. }
  1108. String tutoringAllowances = bigTutoringAllowances.toString();
  1109. // GrossWage2 总日薪
  1110. BigDecimal bigGrossWages = new BigDecimal("0.00");
  1111. if (!("0E-10").equals(rs.getString("GrossWage2"))
  1112. && StringUtils.isNotBlank(rs.getString("GrossWage2"))) {
  1113. bigGrossWages = rs.getBigDecimal("GrossWage2").setScale(2, RoundingMode.HALF_UP);
  1114. }
  1115. String grossWages = bigGrossWages.toString();
  1116. // DailyWage 日薪
  1117. BigDecimal bigDailyWage = new BigDecimal("0.00");
  1118. if (!("0E-10").equals(rs.getString("DailyWage")) && StringUtils.isNotBlank(rs.getString("DailyWage"))) {
  1119. bigDailyWage = rs.getBigDecimal("DailyWage").setScale(2, RoundingMode.HALF_UP);
  1120. }
  1121. String dailyWage = bigDailyWage.toString();
  1122. // leaveallowance 事假补款
  1123. BigDecimal bigleaveallowance = new BigDecimal("0.00");
  1124. if (!("0E-10").equals(rs.getString("leaveallowance"))
  1125. && StringUtils.isNotBlank(rs.getString("leaveallowance"))) {
  1126. bigleaveallowance = rs.getBigDecimal("leaveallowance").setScale(2, RoundingMode.HALF_UP);
  1127. }
  1128. String leaveallowance = bigleaveallowance.toString();
  1129. // severancepay 一次性经济补偿
  1130. BigDecimal bigseverancepay = new BigDecimal("0.00");
  1131. if (!("0E-10").equals(rs.getString("severancepay"))
  1132. && StringUtils.isNotBlank(rs.getString("severancepay"))) {
  1133. bigseverancepay = rs.getBigDecimal("severancepay").setScale(2, RoundingMode.HALF_UP);
  1134. }
  1135. String severancepay = bigseverancepay.toString();
  1136. // annualleave 年休假补偿费
  1137. BigDecimal bigannualleave = new BigDecimal("0.00");
  1138. if (!("0E-10").equals(rs.getString("annualleave"))
  1139. && StringUtils.isNotBlank(rs.getString("annualleave"))) {
  1140. bigannualleave = rs.getBigDecimal("annualleave").setScale(2, RoundingMode.HALF_UP);
  1141. }
  1142. String annualleave = bigannualleave.toString();
  1143. // ERHousing 单位公积金
  1144. BigDecimal bigERHousing = new BigDecimal("0.00");
  1145. if (!("0E-10").equals(rs.getString("ERHousing")) && StringUtils.isNotBlank(rs.getString("ERHousing"))) {
  1146. bigERHousing = rs.getBigDecimal("ERHousing").setScale(2, RoundingMode.HALF_UP);
  1147. }
  1148. String eRHousing = bigERHousing.toString();
  1149. // ERMedicalins 单位综合医保险
  1150. BigDecimal bigERMedicalins = new BigDecimal("0.00");
  1151. if (!("0E-10").equals(rs.getString("ERMedicalins"))
  1152. && StringUtils.isNotBlank(rs.getString("ERMedicalins"))) {
  1153. bigERMedicalins = rs.getBigDecimal("ERMedicalins").setScale(2, RoundingMode.HALF_UP);
  1154. }
  1155. String eRMedicalins = bigERMedicalins.toString();
  1156. // ERSocialins 单位社保
  1157. BigDecimal bigERSocialins = new BigDecimal("0.00");
  1158. if (!("0E-10").equals(rs.getString("ERSocialins"))
  1159. && StringUtils.isNotBlank(rs.getString("ERSocialins"))) {
  1160. bigERSocialins = rs.getBigDecimal("ERSocialins").setScale(2, RoundingMode.HALF_UP);
  1161. }
  1162. String eRSocialins = bigERSocialins.toString();
  1163. // TotalTax 个税总计
  1164. BigDecimal bigTotalTax = new BigDecimal("0.00");
  1165. if (!("0E-10").equals(rs.getString("TotalTax")) && StringUtils.isNotBlank(rs.getString("TotalTax"))) {
  1166. bigTotalTax = rs.getBigDecimal("TotalTax").setScale(2, RoundingMode.HALF_UP);
  1167. }
  1168. String totalTax = bigTotalTax.toString();
  1169. // SeveranceTax 经济补偿金税
  1170. BigDecimal bigSeveranceTax = new BigDecimal("0.00");
  1171. if (!("0E-10").equals(rs.getString("SeveranceTax"))
  1172. && StringUtils.isNotBlank(rs.getString("SeveranceTax"))) {
  1173. bigSeveranceTax = rs.getBigDecimal("SeveranceTax").setScale(2, RoundingMode.HALF_UP);
  1174. }
  1175. String severanceTax = bigSeveranceTax.toString();
  1176. // NonResident 外籍全年一次性所得税
  1177. BigDecimal bigNonResident = new BigDecimal("0.00");
  1178. if (!("0E-10").equals(rs.getString("NonResident"))
  1179. && StringUtils.isNotBlank(rs.getString("NonResident"))) {
  1180. bigNonResident = rs.getBigDecimal("NonResident").setScale(2, RoundingMode.HALF_UP);
  1181. }
  1182. String nonResident = bigNonResident.toString();
  1183. // BonusTax1 全年一次性所得税
  1184. BigDecimal bigBonusTax = new BigDecimal("0.00");
  1185. if (!("0E-10").equals(rs.getString("BonusTax1")) && StringUtils.isNotBlank(rs.getString("BonusTax1"))) {
  1186. bigBonusTax = rs.getBigDecimal("BonusTax1").setScale(2, RoundingMode.HALF_UP);
  1187. }
  1188. String bonusTax = bigBonusTax.toString();
  1189. // AnnualBonus2 年终奖(与当月薪资合并计税)
  1190. BigDecimal bigAnnualBonuss = new BigDecimal("0.00");
  1191. if (!("0E-10").equals(rs.getString("AnnualBonus2"))
  1192. && StringUtils.isNotBlank(rs.getString("AnnualBonus2"))) {
  1193. bigAnnualBonuss = rs.getBigDecimal("AnnualBonus2").setScale(2, RoundingMode.HALF_UP);
  1194. }
  1195. String annualBonuss = bigAnnualBonuss.toString();
  1196. // ForeignerAnnual 外籍年终奖(按一次性所得计税
  1197. BigDecimal bigForeignerAnnual = new BigDecimal("0.00");
  1198. if (!("0E-10").equals(rs.getString("ForeignerAnnual"))
  1199. && StringUtils.isNotBlank(rs.getString("ForeignerAnnual"))) {
  1200. bigForeignerAnnual = rs.getBigDecimal("ForeignerAnnual").setScale(2, RoundingMode.HALF_UP);
  1201. }
  1202. String foreignerAnnual = bigForeignerAnnual.toString();
  1203. // AnnualBonus1 年终奖(按全年一次性所得计税)
  1204. BigDecimal bigdAnnualBonus = new BigDecimal("0.00");
  1205. if (!("0E-10").equals(rs.getString("AnnualBonus1"))
  1206. && StringUtils.isNotBlank(rs.getString("AnnualBonus1"))) {
  1207. bigdAnnualBonus = rs.getBigDecimal("AnnualBonus1").setScale(2, RoundingMode.HALF_UP);
  1208. }
  1209. String annualBonus = bigdAnnualBonus.toString();
  1210. // Specialexpense 个税专项扣除
  1211. BigDecimal bigSpecialexpense = new BigDecimal("0.00");
  1212. if (!("0E-10").equals(rs.getString("Specialexpense"))
  1213. && StringUtils.isNotBlank(rs.getString("Specialexpense"))) {
  1214. bigSpecialexpense = rs.getBigDecimal("Specialexpense").setScale(2, RoundingMode.HALF_UP);
  1215. }
  1216. String specialexpense = bigSpecialexpense.toString();
  1217. // TaxableItem 计税不计薪
  1218. BigDecimal bigTaxableItem = new BigDecimal("0.00");
  1219. if (!("0E-10").equals(rs.getString("TaxableItem"))
  1220. && StringUtils.isNotBlank(rs.getString("TaxableItem"))) {
  1221. bigTaxableItem = rs.getBigDecimal("TaxableItem").setScale(2, RoundingMode.HALF_UP);
  1222. }
  1223. String taxableItem = bigTaxableItem.toString();
  1224. // PensionAllowance 养老金补贴
  1225. BigDecimal bigPensionAllowance = new BigDecimal("0.00");
  1226. if (!("0E-10").equals(rs.getString("PensionAllowance"))
  1227. && StringUtils.isNotBlank(rs.getString("PensionAllowance"))) {
  1228. bigPensionAllowance = rs.getBigDecimal("PensionAllowance").setScale(2, RoundingMode.HALF_UP);
  1229. }
  1230. String pensionAllowance = bigPensionAllowance.toString();
  1231. // HouseAllowance 住房补贴
  1232. BigDecimal bigHouseAllowance = new BigDecimal("0.00");
  1233. if (!("0E-10").equals(rs.getString("HouseAllowance"))
  1234. && StringUtils.isNotBlank(rs.getString("HouseAllowance"))) {
  1235. bigHouseAllowance = rs.getBigDecimal("HouseAllowance").setScale(2, RoundingMode.HALF_UP);
  1236. }
  1237. String houseAllowance = bigHouseAllowance.toString();
  1238. // CommunicationAllowance 通讯补贴
  1239. BigDecimal bigCommunicationAllowance = new BigDecimal("0.00");
  1240. if (!("0E-10").equals(rs.getString("CommunicationAllowance"))
  1241. && StringUtils.isNotBlank(rs.getString("CommunicationAllowance"))) {
  1242. bigCommunicationAllowance = rs.getBigDecimal("CommunicationAllowance").setScale(2,
  1243. RoundingMode.HALF_UP);
  1244. }
  1245. String communicationAllowance = bigCommunicationAllowance.toString();
  1246. // OTPayment 总加班费
  1247. BigDecimal bigOTPayment = new BigDecimal("0.00");
  1248. if (!("0E-10").equals(rs.getString("OTPayment")) && StringUtils.isNotBlank(rs.getString("OTPayment"))) {
  1249. bigOTPayment = rs.getBigDecimal("OTPayment").setScale(2, RoundingMode.HALF_UP);
  1250. }
  1251. String oTPayment = bigOTPayment.toString();
  1252. // HolidayOTPayment 法定假加班费
  1253. BigDecimal bigHolidayOTPayment = new BigDecimal("0.00");
  1254. if (!("0E-10").equals(rs.getString("HolidayOTPayment"))
  1255. && StringUtils.isNotBlank(rs.getString("HolidayOTPayment"))) {
  1256. bigHolidayOTPayment = rs.getBigDecimal("HolidayOTPayment").setScale(2, RoundingMode.HALF_UP);
  1257. }
  1258. String holidayOTPayment = bigHolidayOTPayment.toString();
  1259. // TaxExemption 是否免税
  1260. String taxExemption = rs.getString("TaxExemption") == null ? "" : rs.getString("TaxExemption");
  1261. // 个税专项扣除
  1262. BigDecimal bigdeductionsfortax = new BigDecimal("0.00");
  1263. if (!("0E-10").equals(rs.getString("deductionsfortax"))
  1264. && StringUtils.isNotBlank(rs.getString("deductionsfortax"))) {
  1265. bigdeductionsfortax = rs.getBigDecimal("deductionsfortax").setScale(2, RoundingMode.HALF_UP);
  1266. }
  1267. String deductionsfortax = bigdeductionsfortax.toString();
  1268. // 获取月份的第一天和最后一天 拼接工资周期字段
  1269. int intyeardate = Integer.parseInt(countyear);
  1270. int intmonth = Integer.parseInt(countmonth);
  1271. YearMonth yearMonth = YearMonth.of(intyeardate, intmonth);
  1272. LocalDate firstDayOfMonth = yearMonth.atDay(1);
  1273. String fitstday = Integer.toString(firstDayOfMonth.getDayOfMonth());
  1274. LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
  1275. String lastday = Integer.toString(lastDayOfMonth.getDayOfMonth());
  1276. // 获取月份的英文
  1277. String month = getMonth(countmonth);
  1278. // 工资周期的英文
  1279. String wagsenglist = "From " + fitstday + "-" + month + "-" + countyear + " to " + lastday + "-" + month
  1280. + "-" + countyear;
  1281. // 最后薪酬核算表修改的时间 如果时间试试空就默认今天
  1282. Date flastupdatetime = rs.getDate("flastupdatetime")==null ? nowdate :rs.getDate("flastupdatetime");
  1283. // 获取新加薪酬项目的值
  1284. Map<String, String> payVlueMap = getPayVlue(rs);
  1285. WagesChromatographyInfo wagesInfo = new WagesChromatographyInfo();
  1286. // socialinsuranceplanRMBCode 年至今社医保公积金RMB编码
  1287. wagesInfo.put("socialinsuranceplanRMBCode", socialinsuranceplanRMBCode);
  1288. // IndividualIncomeTaxRMB 个人所得税RMB金额
  1289. // wagesInfo.put("IndividualIncomeTaxRMB", individualIncomeTaxRMB);
  1290. // HousingfundRMB 公积金 RMB金额
  1291. wagesInfo.put("HousingfundRMB", housingfundRMB);
  1292. // HousingfundRMBCode 公积金RMB编码
  1293. wagesInfo.put("HousingfundRMBCode", housingfundRMBCode);
  1294. // MedicalinsuranceRMB 医保RMB金额
  1295. wagesInfo.put("MedicalinsuranceRMB", sedicalinsuranceRMB);
  1296. // MedicalinsuranceRMBCode 医保RMB编码
  1297. wagesInfo.put("MedicalinsuranceRMBCode", medicalinsuranceRMBCode);
  1298. // SocialinsuranceRMB 社保RMB金额
  1299. wagesInfo.put("SocialinsuranceRMB", socialinsuranceRMB);
  1300. // SocialinsuranceRMBCode 社保RMB编码
  1301. wagesInfo.put("SocialinsuranceRMBCode", socialinsuranceRMBCode);
  1302. // SubsidyRMB 高温补贴RMB金额
  1303. wagesInfo.put("SubsidyRMB", subsidyRMB);
  1304. // SubsidyRMBCode 高温补贴RMB编码
  1305. wagesInfo.put("SubsidyRMBCode", subsidyRMBCode);
  1306. // WeekendOTPaymentRMB 休息日加班费RMB金额
  1307. // wagesInfo.put("WeekendOTPaymentRMB", weekendOTPaymentRMB);
  1308. // WeekendOTPaymentRMBCode 休息日加班费RMB编码
  1309. wagesInfo.put("WeekendOTPaymentRMBCode", weekendOTPaymentRMBCode);
  1310. // WorkdayOTPaymentRMB 平日加班费RMB金额
  1311. // wagesInfo.put("WorkdayOTPaymentRMB", workdayOTPaymentRMB);
  1312. // WorkdayOTPaymentRMBCode 平日加班费RMB编码
  1313. wagesInfo.put("WorkdayOTPaymentRMBCode", WorkdayOTPaymentRMBCode);
  1314. // PositionAllowanceRMB 岗位津贴RMB金额
  1315. wagesInfo.put("PositionAllowanceRMB", allowanceRMB);
  1316. // PositionAllowanceRMBCode 岗位津贴RMB编码
  1317. wagesInfo.put("PositionAllowanceRMBCode", positionAllowanceRMBCode);
  1318. // HourlyRateRMB 时薪RMB金额
  1319. // wagesInfo.put("HourlyRateRMB", hourlyRateRMB);
  1320. // HourlyRateRMBCode 时薪RMB编码
  1321. wagesInfo.put("HourlyRateRMBCode", hourlyRateRMBCode);
  1322. // ServiceTaxRMB 劳务税RMB金额
  1323. // wagesInfo.put("ServiceTaxRMB", serviceTaxRMB);
  1324. // ServiceTaxRMBCode 劳务税RMB编码
  1325. wagesInfo.put("ServiceTaxRMBCode", serviceTaxRMBCode);
  1326. // PaymentbeforeRMB 税前补款项RMB金额
  1327. // wagesInfo.put("PaymentbeforeRMB", paymentbeforeTaxRMB);
  1328. // PaymentbeforeRMBCode 税前补款项RMB编码
  1329. wagesInfo.put("PaymentbeforeRMBCode", paymentbeforeRMBCode);
  1330. // GrossWageRMB 总时薪RMB金额
  1331. // wagesInfo.put("GrossWageRMB", grossWageRMB);
  1332. // GrossWageRMBCode 总时薪RMB编码
  1333. wagesInfo.put("GrossWageRMBCode", grossWageRMBCode);
  1334. // MonthRMB 月薪RMB金额
  1335. // wagesInfo.put("MonthRMB", monthlysalaryRMB);
  1336. // MonthRMBCode 月薪RMB编码
  1337. wagesInfo.put("MonthRMBCode", monthRMBCode);
  1338. // paymentcurrency 支付币种
  1339. wagesInfo.put("paymentcurrency", zfCurrency);
  1340. // insuranceplanCode 年至今社医保公积金编码
  1341. wagesInfo.put("insuranceplanCode", insuranceplannumber);
  1342. // insuranceplan 年至今社医保公积金金额
  1343. wagesInfo.put("insuranceplan", insuranceplan);
  1344. // insuranceplanId 年至今社医保公积金id
  1345. wagesInfo.put("insuranceplanId", insuranceplanId);
  1346. // individualIncomeTax 个人所得税金额
  1347. wagesInfo.put("individualIncomeTax", individualIncomeTax);
  1348. // individualIncomeTaxCode 个人所得税编码
  1349. wagesInfo.put("individualIncomeTaxCode", individualIncomeTaxnumber);
  1350. // individualIncomeTaxId 个人所得税id
  1351. wagesInfo.put("individualIncomeTaxId", individualIncomeTaxId);
  1352. // housingfund 公积金金额
  1353. wagesInfo.put("housingfund", housingfund);
  1354. // housingfundCode 公积金编码
  1355. wagesInfo.put("housingfundCode", housingfundnumber);
  1356. // housingfundId 公积金id
  1357. wagesInfo.put("housingfundId", housingfundId);
  1358. // medicalCode 医保编码
  1359. wagesInfo.put("medicalCode", sedicalinsurancenumber);
  1360. // medicalId 医保id
  1361. wagesInfo.put("medicalId", sedicalinsuranceId);
  1362. // medical 医保金额
  1363. wagesInfo.put("medical", sedicalinsurance);
  1364. // socialinsurance 社保金额
  1365. wagesInfo.put("socialinsurance", socialinsurance);
  1366. // socialinsuranceCode 社保编码
  1367. wagesInfo.put("socialinsuranceCode", socialinsurancenumber);
  1368. // socialinsuranceId 社保id
  1369. wagesInfo.put("socialinsuranceId", socialinsuranceId);
  1370. // subsidyId 高温补贴id
  1371. wagesInfo.put("subsidyId", subsidyId);
  1372. // subsidyCode 高温补贴编码
  1373. wagesInfo.put("subsidyCode", subsidynumber);
  1374. // subsidyamount 高温补贴金额
  1375. wagesInfo.put("subsidyamount", subsidy);
  1376. // weekendOTPaymentId 休息日加班费id
  1377. wagesInfo.put("weekendOTPaymentId", weekendOTPaymentId);
  1378. // weekendOTPaymentCode 休息日加班费编码
  1379. wagesInfo.put("weekendOTPaymentCode", weekendOTPaymentnumber);
  1380. // weekendOTPayment 休息日加班费金额
  1381. wagesInfo.put("weekendOTPayment", weekendOTPayment);
  1382. // workdayOTPaymentCode 平日加班费编码
  1383. wagesInfo.put("workdayOTPaymentCode", workdayOTPaymentnumber);
  1384. // workdayOTPaymentId 平日加班费Id
  1385. wagesInfo.put("workdayOTPaymentId", workdayOTPaymentId);
  1386. // workdayOTPayment 平日加班费
  1387. wagesInfo.put("workdayOTPayment", workdayOTPayment);
  1388. // allowanceCode 岗位津贴编码
  1389. wagesInfo.put("allowanceCode", allowanceIdnumber);
  1390. // allowanceId 岗位津贴id
  1391. wagesInfo.put("allowanceId", allowanceId);
  1392. // allowancecmount 岗位津贴金额
  1393. wagesInfo.put("allowancecmount", allowance);
  1394. // settlementcyle 工资结算周期
  1395. wagesInfo.put("settlementcyle", wagsenglist);
  1396. // Nationalits 国籍(新)
  1397. wagesInfo.put("Nationalits", guoji);
  1398. wagesInfo.put("Nationalits", guoji, LocaleUtils.locale_l2);
  1399. wagesInfo.put("Nationalits", guoji, LocaleUtils.locale_l1);
  1400. // cuueryName 发放币别
  1401. wagesInfo.put("cuueryName", ffPaymentcurrency);
  1402. // currencyId 发放币别id
  1403. wagesInfo.put("currencyId", curreyId);
  1404. // MonthlysalaryCode 月薪编码
  1405. wagesInfo.put("MonthlysalaryCode", monthnumber);
  1406. // GrossWageCode 总时薪编码
  1407. wagesInfo.put("GrossWageCode", grossnumber);
  1408. // PaymentbeforeCode 税前不款项编码
  1409. wagesInfo.put("PaymentbeforeCode", beforeTaxnumber);
  1410. // grossincomeCode 年至今税前总工资金额编码
  1411. wagesInfo.put("grossincomeCode", incomebeforenumber);
  1412. // ServiceTaxCode 劳务税金额编码
  1413. wagesInfo.put("ServiceTaxCode", servicenumber);
  1414. // YTDtaxCode 年至今个人所得税编码
  1415. wagesInfo.put("YTDtaxCode", ytdtaxnumber);
  1416. // netpaymentCode 年至今实发工资金额编码
  1417. wagesInfo.put("netpaymentCode", netpaymentnumber);
  1418. // HourlyRateCode 时薪编码
  1419. wagesInfo.put("HourlyRateCode", hoursnumber);
  1420. // WorkingHoursCode 工作小时数编码
  1421. wagesInfo.put("WorkingHoursCode", workernumber);
  1422. // AttendanceCode 出勤天数编码
  1423. wagesInfo.put("AttendanceCode", attendancenumber);
  1424. // department 部门
  1425. wagesInfo.put("department", bumenName, LocaleUtils.locale_l1);
  1426. wagesInfo.put("department", bumenName, LocaleUtils.locale_l2);
  1427. wagesInfo.put("department", bumenName);
  1428. // peronid 员工id
  1429. wagesInfo.put("peronid", topersonid);
  1430. // Attendancecount 出勤天数数量
  1431. wagesInfo.put("Attendancecount", Attendancedays);
  1432. // WorkingHourscount 工作小时数数量
  1433. wagesInfo.put("WorkingHourscount", workingHours);
  1434. // WorkingHours 工作小时数id
  1435. wagesInfo.put("WorkingHours", workerID);
  1436. // HourlyRateamount 时薪金额
  1437. wagesInfo.put("HourlyRateamount", hourlyRate);
  1438. // HourlyRate 时薪id
  1439. wagesInfo.put("HourlyRate", hoursId);
  1440. // netpaymentamount 年至今实发工资金额
  1441. wagesInfo.put("netpaymentamount", netpayment);
  1442. // YTDnetpayment 年至今实发工资id
  1443. wagesInfo.put("YTDnetpayment", netpaymentId);
  1444. // YTDtaxamount 年至今个人所得税金额
  1445. wagesInfo.put("YTDtaxamount", ytdtax);
  1446. // YTDtax 年至今个人所得税id
  1447. wagesInfo.put("YTDtax", ytdtaxId);
  1448. // grossincome 年至今税前总工资金额
  1449. wagesInfo.put("grossincome", incomebeforetax);
  1450. // ytdgrossincome 年至今税前总工资id
  1451. wagesInfo.put("ytdgrossincome", incomebeforeId);
  1452. // ServiceTaxamount 劳务税金额
  1453. wagesInfo.put("ServiceTaxamount", serviceTax);
  1454. // ServiceTax 劳务税id
  1455. wagesInfo.put("ServiceTax", serviceID);
  1456. // beforeamcount 税前补款项金额
  1457. wagesInfo.put("beforeamcount", paymentbeforeTax);
  1458. // PaymentbeforeTax 税前补款项id
  1459. wagesInfo.put("PaymentbeforeTax", beforeTaxId);
  1460. // grossamount 总时薪金额
  1461. wagesInfo.put("grossamount", grossWage);
  1462. // GrossWage 总时薪id
  1463. wagesInfo.put("GrossWage", grossid);
  1464. // amount 月薪金额
  1465. wagesInfo.put("amount", monthlysalary);
  1466. // Monthlysalary 月薪的id
  1467. wagesInfo.put("Monthlysalary", monthId);
  1468. // Nationali 国籍
  1469. // wagesInfo.put("Nationali", value);
  1470. // Attendancedays 出勤天数id
  1471. wagesInfo.put("Attendancedays", monthId);
  1472. // 身份证/护照号码
  1473. wagesInfo.setIdcardno(idno);
  1474. // //工号
  1475. wagesInfo.setStaffno(personNumber);
  1476. // 姓名
  1477. wagesInfo.setPersonname(personName);
  1478. // 计算规则名称
  1479. wagesInfo.setCalculationName(gzname);
  1480. // 计算规则编码
  1481. wagesInfo.setCalculationNumber(gznumber);
  1482. // 是否锁定
  1483. wagesInfo.setIsitlocked(locke);
  1484. // 结束时间
  1485. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1486. wagesInfo.setEndtime(sdf.parse(endtime));
  1487. // 起始时间tostarttime
  1488. wagesInfo.setStarttime(sdf.parse(tostarttime));
  1489. // 公司名称
  1490. // 统计月
  1491. wagesInfo.setStatisticalmonth(countmonth);
  1492. // 统计年
  1493. wagesInfo.setStatisticalyear(countyear);
  1494. // 核算次数
  1495. wagesInfo.setAccountingfrequency(fCalTime);
  1496. // 核算状态
  1497. wagesInfo.setAccountingstatus(calstatus);
  1498. // 单据状态
  1499. // HR组织
  1500. HROrgUnitInfo hrOrgUnitInfo = HROrgUnitFactory.getLocalInstance(ctx)
  1501. .getHROrgUnitInfo(new ObjectUuidPK(hrID));
  1502. wagesInfo.setHrOrgUnit(hrOrgUnitInfo);
  1503. // 行政组织
  1504. AdminOrgUnitInfo adminOrgUnitInfo = AdminOrgUnitFactory.getLocalInstance(ctx)
  1505. .getAdminOrgUnitInfo(new ObjectUuidPK(drementid));
  1506. wagesInfo.setAdminOrg(adminOrgUnitInfo);
  1507. // 来源功能
  1508. // 原始单据ID
  1509. // 审核人
  1510. // 是否曾经生效
  1511. // 参考信息
  1512. // 经手人
  1513. // 业务日期
  1514. // 单据编号
  1515. String fname = personName + countyear + "年" + countmonth + "月" + "工资单";
  1516. wagesInfo.setNumber(fname);
  1517. // 控制单元
  1518. // 最后修改时间
  1519. Timestamp timestamp = new Timestamp(nowdate.getTime());
  1520. wagesInfo.setLastUpdateTime(timestamp);
  1521. // 最后修改者
  1522. wagesInfo.setLastUpdateUser(currentUserInfo);
  1523. // 创建时间
  1524. wagesInfo.setCreateTime(timestamp);
  1525. // 创建者
  1526. wagesInfo.setCreator(currentUserInfo);
  1527. // 实发工资金额 netPayment
  1528. wagesInfo.put("shifanetPayment", tonetPayments);
  1529. // 实发工资编码
  1530. wagesInfo.put("netPaymentnumber", netPaymentCode);
  1531. // wagesInfo.put(arg0, arg1, LocaleUtils.locale_l1);
  1532. // 新加薪酬项目
  1533. // Note 备注
  1534. // wagesInfo.put("Note", note);
  1535. wagesInfo.put("tonotes", note);
  1536. // DeductionafterTax 税后扣款项
  1537. wagesInfo.put("DeductionafterTax", deductionafterTax);
  1538. // PaymentafterTax 税后补款项
  1539. wagesInfo.put("PaymentafterTax", paymentafterTax);
  1540. // SalaryAdvance 预支工资还款
  1541. wagesInfo.put("SalaryAdvance", salaryAdvance);
  1542. // UtilityCost 水电气费用
  1543. wagesInfo.put("UtilityCost", utilityCost);
  1544. // Rent 房租
  1545. wagesInfo.put("Rent", rent);
  1546. // GrossSalary 应发工资合计
  1547. wagesInfo.put("GrossSalary", grossSalary);
  1548. // rentorutility 房租或水电费退款
  1549. wagesInfo.put("rentorutility", rentorutility);
  1550. // Utilityfee 房租水电费总计
  1551. wagesInfo.put("Utilityfee", utilityfee);
  1552. // OtherDeduction 其他扣款
  1553. wagesInfo.put("OtherDeduction", otherDeduction);
  1554. // OtherRefund 其他退款
  1555. wagesInfo.put("OtherRefund", otherRefund);
  1556. // UnpaidLeaveDeduction 事假扣款
  1557. wagesInfo.put("UnpaidLeaveDeduction", unpaidLeaveDeduction);
  1558. // UGSubsidyUG 补贴
  1559. wagesInfo.put("UGSubsidyUG", uGSubsidyUG);
  1560. // AdmissionSubsidy 招生津贴
  1561. wagesInfo.put("AdmissionSubsidy", admissionSubsidy);
  1562. // TaxableOtherBenefit 计税其它福利
  1563. wagesInfo.put("TaxableOtherBenefit", taxableOtherBenefit);
  1564. // TaxableCommercial 计税商业保险
  1565. wagesInfo.put("TaxableCommercial", taxableCommercial);
  1566. // TotalDeductionBeforeTax 税前扣款项合计
  1567. wagesInfo.put("TotalDeductionBeforeTax", totalDeductionBeforeTax);
  1568. // DeductionBeforeTax 税前扣款项
  1569. wagesInfo.put("DeductionBeforeTax", deductionBeforeTax);
  1570. // TotalAllowance 津贴总计
  1571. wagesInfo.put("TotalAllowance", totalAllowance);
  1572. // TeachersDayAllowance 教师节慰问金
  1573. wagesInfo.put("TeachersDayAllowance", teachersDayAllowance);
  1574. // TutoringAllowance2 分摊辅导津贴
  1575. wagesInfo.put("TutoringAllowance2", tutoringAllowance);
  1576. // TutoringAllowance 辅导津贴
  1577. wagesInfo.put("TutoringAllowance", tutoringAllowances);
  1578. // GrossWage2 总日薪
  1579. wagesInfo.put("GrossWage2", grossWages);
  1580. // DailyWage 日薪
  1581. wagesInfo.put("DailyWage", dailyWage);
  1582. // leaveallowance 事假补款
  1583. wagesInfo.put("leaveallowance", leaveallowance);
  1584. // severancepay 一次性经济补偿
  1585. wagesInfo.put("severancepay", severancepay);
  1586. // annualleave 年休假补偿费
  1587. wagesInfo.put("annualleave", annualleave);
  1588. // ERHousing 单位公积金
  1589. wagesInfo.put("ERHousing", eRHousing);
  1590. // ERMedicalins 单位综合医保险
  1591. wagesInfo.put("ERMedicalins", eRMedicalins);
  1592. // ERSocialins 单位社保
  1593. wagesInfo.put("ERSocialins", eRSocialins);
  1594. // TotalTax 个税总计
  1595. wagesInfo.put("TotalTax", totalTax);
  1596. // SeveranceTax 经济补偿金税
  1597. wagesInfo.put("SeveranceTax", severanceTax);
  1598. // NonResident 外籍全年一次性所得税
  1599. wagesInfo.put("NonResident", nonResident);
  1600. // BonusTax1 全年一次性所得税
  1601. wagesInfo.put("BonusTax1", bonusTax);
  1602. // AnnualBonus2 年终奖(与当月薪资合并计税)
  1603. wagesInfo.put("AnnualBonus2", annualBonuss);
  1604. // ForeignerAnnual 外籍年终奖(按一次性所得计税
  1605. wagesInfo.put("ForeignerAnnual", foreignerAnnual);
  1606. // AnnualBonus1 年终奖(按全年一次性所得计税)
  1607. wagesInfo.put("AnnualBonus1", annualBonus);
  1608. // Specialexpense 个税专项扣除
  1609. wagesInfo.put("Specialexpense", specialexpense);
  1610. // TaxableItem 计税不计薪
  1611. wagesInfo.put("TaxableItem", taxableItem);
  1612. // PensionAllowance 养老金补贴
  1613. wagesInfo.put("PensionAllowance", pensionAllowance);
  1614. // HouseAllowance 住房补贴
  1615. wagesInfo.put("HouseAllowance", houseAllowance);
  1616. // CommunicationAllowance 通讯补贴
  1617. wagesInfo.put("CommunicationAllowance", communicationAllowance);
  1618. // OTPayment 总加班费
  1619. wagesInfo.put("OTPayment", oTPayment);
  1620. // HolidayOTPayment 法定假加班费
  1621. wagesInfo.put("HolidayOTPayment", holidayOTPayment);
  1622. // TaxExemption 是否免税
  1623. wagesInfo.put("TaxExemption", taxExemption);
  1624. // 个税专项扣除RMB deductionsfortaxRMB
  1625. // wagesInfo.put("deductionsfortaxRMB", deductionsfortaxRMB);
  1626. // 个税专项扣除deductionsfortax
  1627. wagesInfo.put("deductionsfortax", deductionsfortax);
  1628. // 薪酬核算表的最后修改时间
  1629. String formatTime = tosdf.format(flastupdatetime);
  1630. wagesInfo.put("lasttime", formatTime);
  1631. // 存储新建的薪酬项目的值payVlueMap
  1632. for (Map.Entry<String, String> paymateEntry : payVlueMap.entrySet()) {
  1633. String key = paymateEntry.getKey();
  1634. String value = paymateEntry.getValue();
  1635. System.out.println("key是" + key + "vlaue是" + value);
  1636. wagesInfo.put(key, value);
  1637. }
  1638. collection.add(wagesInfo);
  1639. }
  1640. WagesChromatographyFactory.getLocalInstance(ctx).addnewBatchData(collection);
  1641. } catch (SQLException | EASBizException | BOSException e) {
  1642. e.printStackTrace();
  1643. } catch (ParseException e) {
  1644. e.printStackTrace();
  1645. }
  1646. }
  1647. /**
  1648. * 查询工资单薪酬项目新增里面的数据 map存储薪酬编码 key工资单薪酬项目存储实体类
  1649. */
  1650. public void getPaydata() {
  1651. // Map<String,PayAddInfo> payMap=new HashMap<>();
  1652. // 查询工资单薪酬项目新增数据表的sql
  1653. String sql = "select* from CT_CUS_AddSalaryproject";
  1654. try {
  1655. IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
  1656. while (rs.next()) {
  1657. PayAddInfo payInfo = new PayAddInfo();
  1658. payInfo.setDepidentifying(rs.getString("cfdepidentifying"));
  1659. payInfo.setPayCode(rs.getString("cfpayCode"));
  1660. payInfo.setIsitcharacter(rs.getString("cfischarct"));
  1661. payMap.put(rs.getString("cfpayCode"), payInfo);
  1662. }
  1663. } catch (BOSException | SQLException e) {
  1664. e.printStackTrace();
  1665. }
  1666. }
  1667. /**
  1668. * 通过工资单薪酬新增单据添加的薪酬项目 查出这些项目的字段序号 mapkey是薪酬项目编码 value是薪酬项目序号
  1669. */
  1670. public void getSerial() {
  1671. StringBuffer paySql = new StringBuffer();
  1672. if (!payMap.isEmpty()) {
  1673. paySql.append("SELECT * FROM T_HR_SCmpItem where FNumber in (");
  1674. for (Map.Entry<String, PayAddInfo> entry : payMap.entrySet()) {
  1675. String key = entry.getKey();
  1676. paySql.append("'" + key + "',");
  1677. }
  1678. // 删除最后一个逗号
  1679. paySql.deleteCharAt(paySql.length() - 1);
  1680. paySql.append(")");
  1681. }
  1682. logger.error("通过添加的薪酬项目查询的字段序号的sql是" + paySql.toString());
  1683. try {
  1684. IRowSet rs = DbUtil.executeQuery(this.ctx, paySql.toString());
  1685. while (rs.next()) {
  1686. serialMap.put(rs.getString("FNumber"), "s" + rs.getString("FieldSn"));
  1687. }
  1688. } catch (BOSException | SQLException e) {
  1689. e.printStackTrace();
  1690. }
  1691. }
  1692. /**
  1693. * 处理薪酬项目字段序号和dep字段标识的对应关系 map key是字段序号 value 工资单新增薪酬项目的实体
  1694. */
  1695. public Map<String, PayAddInfo> getPaymate() {
  1696. Map<String, PayAddInfo> mateMap = new HashMap<>();
  1697. for (Map.Entry<String, PayAddInfo> entry : payMap.entrySet()) {
  1698. String paydatekey = entry.getKey();
  1699. PayAddInfo payaddInfo = entry.getValue();
  1700. for (Map.Entry<String, String> serialEntry : serialMap.entrySet()) {
  1701. String serialkey = serialEntry.getKey();
  1702. // 字段序号
  1703. String seriaValue = serialEntry.getValue();
  1704. if (paydatekey.equals(serialkey)) {
  1705. mateMap.put(seriaValue, payaddInfo);
  1706. break;
  1707. }
  1708. }
  1709. }
  1710. return mateMap;
  1711. }
  1712. /***
  1713. * 获取薪酬项目的值 map key是字段标识 value是薪酬项目值
  1714. *
  1715. */
  1716. public Map<String, String> getPayVlue(IRowSet rs) {
  1717. Map<String, String> payVlueMap = new HashMap<>();
  1718. Map<String, PayAddInfo> paymateMap = getPaymate();
  1719. try {
  1720. for (Map.Entry<String, PayAddInfo> paymateEntry : paymateMap.entrySet()) {
  1721. // 字段序号
  1722. String key = paymateEntry.getKey();
  1723. PayAddInfo payAddInfo = paymateEntry.getValue();
  1724. // dep标识
  1725. String depidentifying = payAddInfo.getDepidentifying();
  1726. String isitcharacter = payAddInfo.getIsitcharacter();
  1727. // 判断是字符还是数值类型 1 字符 2 是数值
  1728. if ("1".equals(isitcharacter)) {
  1729. // 状态
  1730. String charVlue = rs.getString(key) == null ? "" : rs.getString(depidentifying);
  1731. payVlueMap.put(depidentifying, charVlue);
  1732. } else if ("2".equals(isitcharacter)) {
  1733. BigDecimal bigpayVlue = new BigDecimal("0.00");
  1734. if (StringUtils.isNotBlank(rs.getString(key))) {
  1735. bigpayVlue = rs.getBigDecimal(key).setScale(2, RoundingMode.HALF_UP);
  1736. String payVlue = bigpayVlue.toString();
  1737. payVlueMap.put(depidentifying, payVlue);
  1738. }
  1739. }
  1740. }
  1741. } catch (SQLException e) {
  1742. e.printStackTrace();
  1743. }
  1744. return payVlueMap;
  1745. }
  1746. /***
  1747. * 获取动态新增薪酬项目的数量 判断薪酬项目有没有新增
  1748. *
  1749. * @return
  1750. */
  1751. public String countFiled() {
  1752. String sql = "select count(*)as count from CT_CUS_AddSalaryproject";
  1753. String countFiled = null;
  1754. try {
  1755. IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
  1756. while (rs.next()) {
  1757. countFiled = rs.getString("count");
  1758. }
  1759. } catch (BOSException | SQLException e) {
  1760. // TODO 自动生成的 catch 块
  1761. e.printStackTrace();
  1762. }
  1763. return countFiled;
  1764. }
  1765. /***
  1766. * 修改数据库统计薪酬字段数量的字段
  1767. *
  1768. * @param countFiled
  1769. */
  1770. public void updateFiled(String countFiled) {
  1771. // 获取新增字段的数量
  1772. List<String> filedList = countFiledMap.get("CFAddFiled");
  1773. // 判断薪酬项目的数量的值是否在list里面 不在就要修改数据
  1774. if (!filedList.contains(countFiled)) {
  1775. String updateSql = "UPDATE CT_SAL_WagesChromatography SET CFAddFiled =" + "'" + countFiled + "'";
  1776. System.out.print("添加薪酬项目统计数的修改语句" + updateSql);
  1777. try {
  1778. DbUtil.execute(ctx, updateSql);
  1779. } catch (BOSException e) {
  1780. // TODO 自动生成的 catch 块
  1781. e.printStackTrace();
  1782. }
  1783. }
  1784. }
  1785. /***
  1786. * 查询维护的薪酬基础数据的参数
  1787. *
  1788. * @return
  1789. */
  1790. public String salarBasic() {
  1791. // 查询薪酬基础数据里面维护的值
  1792. String sql = "SELECT * FROM T_HR_SHRRSVITEM0 where fnumber='1006'and fstate='1'";
  1793. logger.error("查询薪酬基础数据的sql是" + sql);
  1794. String dateName = null;
  1795. try {
  1796. IRowSet rs = DbUtil.executeQuery(this.ctx, sql);
  1797. while (rs.next()) {
  1798. dateName = rs.getString("fname_l2");
  1799. }
  1800. } catch (BOSException | SQLException e) {
  1801. // TODO 自动生成的 catch 块
  1802. e.printStackTrace();
  1803. }
  1804. return dateName;
  1805. }
  1806. /***
  1807. * 根据维护的基础数据 判断是否可以查看当天之后的工资单
  1808. */
  1809. public boolean maintenanceDate(Date adjustedDate) {
  1810. boolean comparisonDate = false;
  1811. if(adjustedDate!=null) {
  1812. int comparisonResult = nowDate.compareTo(adjustedDate);
  1813. if(comparisonResult<0) {
  1814. comparisonDate =true;
  1815. }
  1816. }
  1817. return comparisonDate;
  1818. }
  1819. /***
  1820. * 获取当月通过公共参数计算调整后的日期
  1821. */
  1822. public Date getAdjustedDate() {
  1823. Date adjustedDate=null;
  1824. // 查询薪酬基础数据里面维护的值
  1825. String dateName = salarBasic();
  1826. Calendar nowcalendar = new GregorianCalendar();
  1827. // 设置Calendar的日期部分为1,这样Calendar就会自动调整为当前月份的最后一天
  1828. nowcalendar.set(Calendar.DAY_OF_MONTH, 1);
  1829. nowcalendar.add(Calendar.MONTH, 1);
  1830. nowcalendar.add(Calendar.DATE, -1);
  1831. Date lastDayOfMonth = nowcalendar.getTime();
  1832. if (StringUtils.isNotBlank(dateName)) {
  1833. int intDate = Integer.parseInt(dateName);
  1834. Calendar calendar = Calendar.getInstance();
  1835. calendar.setTime(lastDayOfMonth);
  1836. // 往前推的天数
  1837. calendar.add(Calendar.DATE, -intDate);
  1838. // 获取调整后的日期
  1839. adjustedDate = calendar.getTime();
  1840. }
  1841. System.out.println("调整后的日期是"+adjustedDate);
  1842. return adjustedDate;
  1843. }
  1844. }