e0d0a4dc3b6e1935bfc0e59dc16dfcfd9e021e83.svn-base 83 KB

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