| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288 |
- package com.kingdee.eas.custom.compensation.handler;
- import cn.com.servyou.dto.ApiResponse;
- import cn.com.servyou.dto.AsyncResult;
- import cn.com.servyou.dto.tax.*;
- import cn.com.servyou.rmi.client.ClientProxyFactory;
- import cn.com.servyou.service.TaxRequest;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.dao.IObjectPK;
- import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
- import com.kingdee.bos.metadata.entity.EntityViewInfo;
- import com.kingdee.bos.metadata.entity.FilterInfo;
- import com.kingdee.bos.metadata.entity.FilterItemInfo;
- import com.kingdee.bos.metadata.entity.SelectorItemCollection;
- import com.kingdee.bos.metadata.query.util.CompareType;
- import com.kingdee.bos.util.EASResource;
- import com.kingdee.eas.basedata.hraux.NationalityInfo;
- import com.kingdee.eas.basedata.person.IPerson;
- import com.kingdee.eas.basedata.person.PersonFactory;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.custom.compensation.vo.TaxUnitAndPerson;
- import com.kingdee.eas.custom.individualback.ITaxPaymentBackCalculate;
- import com.kingdee.eas.custom.individualback.TaxPaymentBackCalculateCollection;
- import com.kingdee.eas.custom.individualback.TaxPaymentBackCalculateFactory;
- import com.kingdee.eas.custom.individualback.TaxPaymentBackCalculateInfo;
- import com.kingdee.eas.custom.shuiyou.interfacelog.LogInfoFactory;
- import com.kingdee.eas.custom.shuiyou.interfacelog.LogInfoInfo;
- import com.kingdee.eas.custom.shuiyou.six.osf.vo.SixTConfirmInfo;
- import com.kingdee.eas.custom.shuiyou.task.TaskCatalogEnum;
- import com.kingdee.eas.custom.shuiyou.uitls.ISYUtilsFacade;
- import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory;
- import com.kingdee.eas.custom.shuiyou.utils.ClientProxyFactoryUtils;
- import com.kingdee.eas.hr.base.SqlParam;
- import com.kingdee.eas.hr.base.app.filter.FilterUtil;
- import com.kingdee.eas.hr.base.util.HRParamUtil;
- import com.kingdee.eas.hr.emp.IPersonPosition;
- import com.kingdee.eas.hr.emp.PersonPositionCollection;
- import com.kingdee.eas.hr.emp.PersonPositionFactory;
- import com.kingdee.eas.hr.emp.PersonPositionInfo;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
- import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
- import com.kingdee.shr.base.syssetting.context.SHRContext;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
- import com.kingdee.shr.base.syssetting.ml.SHRWebResource;
- import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
- import com.kingdee.shr.compensation.*;
- import com.kingdee.shr.compensation.app.formula.tax.Salary2TaxCalculator;
- import com.kingdee.shr.compensation.app.formula.tax.Salary2TaxCalculatorMgr;
- import com.kingdee.shr.compensation.app.incomeTax.*;
- import com.kingdee.shr.compensation.app.tax.*;
- import com.kingdee.shr.compensation.app.taxCal.CmpCalTaxCalExchangeFacadeFactory;
- import com.kingdee.shr.compensation.exception.CmpCalDynamicListBizException;
- import com.kingdee.shr.compensation.exception.ExceptionHandle;
- import com.kingdee.shr.compensation.helper.CalSchemeBizUtil;
- import com.kingdee.shr.compensation.helper.CmpConstants;
- import com.kingdee.shr.compensation.log.modUtils.WizardLogOperateUtils;
- import com.kingdee.shr.compensation.request.ParseRequestHelper;
- import com.kingdee.shr.compensation.util.*;
- import com.kingdee.shr.custom.compensation.accrue.handler.CmpCalDynamicListHandlerExEx;
- import com.kingdee.util.StringUtils;
- import org.apache.log4j.Logger;
- import org.springframework.ui.ModelMap;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.math.BigDecimal;
- import java.sql.SQLException;
- import java.text.MessageFormat;
- import java.text.SimpleDateFormat;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.*;
- /**
- * @author qingwu
- * @date 2024/8/30
- * @apiNote BackCalculateService 反算服务 TaxPaymentBackCalculate
- */
- public class CmpCalDynamicListHandlerExExEx extends CmpCalDynamicListHandlerExEx {
- private Context ctx = SHRContext.getInstance().getContext();
- Logger logger = Logger.getLogger("com.kingdee.eas.custom.compensation.handler.CmpCalDynamicListHandlerExExEx");
- /**
- * 反算同步
- *
- * @param request
- * @param response
- * @param modelMap
- * @throws SHRWebException
- * @throws BOSException
- * @throws EASBizException
- */
- public void taxPaymentBackSynAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException {
- logger.error("taxPaymentBackSynAction---------starst-------------");
- //计算规则ID
- String cmpschemeid = request.getParameter("cmpschemeid");
- if (StringUtils.isEmpty(cmpschemeid)) {
- throw new ShrWebBizException("计算规则ID不可为空!!");
- }
- Map msgMap = new HashMap();
- try {
- //薪酬项目
- Map cmpItemMap = new HashMap();
- ICmpItem iCmpItem = CmpItemFactory.getLocalInstance(ctx);
- //GS014:当月个税 JZT02:税后保应发
- CmpItemCollection cmpItemCollection = iCmpItem.getCmpItemCollection("where number in ('GS014','JZT02')");
- for (int i = 0; i < cmpItemCollection.size(); i++) {
- CmpItemInfo cmpItemInfo = cmpItemCollection.get(i);
- cmpItemMap.put(cmpItemInfo.getNumber(), cmpItemInfo.getFieldSn());
- }
- logger.error("cmpItemMap----------------------" + cmpItemMap);
- //税款反算
- ITaxPaymentBackCalculate iTaxPaymentBackCalculate = TaxPaymentBackCalculateFactory.getLocalInstance(ctx);
- TaxPaymentBackCalculateCollection taxPaymentBackCalculateCollection = iTaxPaymentBackCalculate.getTaxPaymentBackCalculateCollection("where cmpscheme = '" + cmpschemeid + "'");
- if (taxPaymentBackCalculateCollection.size() <= 0) {
- throw new ShrWebBizException("税款反算未找到该计算规则数据,请进行税款反算提交操作后再同步!!");
- }
- for (int i = 0; i < taxPaymentBackCalculateCollection.size(); i++) {
- TaxPaymentBackCalculateInfo taxPaymentBackCalculateInfo = taxPaymentBackCalculateCollection.get(i);
- //税后保应发
- BigDecimal salarySum = taxPaymentBackCalculateInfo.getSalarySum();
- //当月个税
- BigDecimal individual = taxPaymentBackCalculateInfo.getIndividual();
- //员工信息
- PersonInfo person = taxPaymentBackCalculateInfo.getPerson();
- //计算规则
- CalSchemeInfo cmpscheme = taxPaymentBackCalculateInfo.getCmpscheme();
- // 税后保应发序号 税后保应发 当月个税序号 当月个税 计算规则ID 员工ID
- String updateSql = String.format("update T_HR_SCmpCalTable set s%s = '%s' , s%s = '%s' where FCALSCHEMEID = '%s' and FPERSONID = '%s'",
- cmpItemMap.get("JZT02"), salarySum.toString(), cmpItemMap.get("GS014"), individual, cmpscheme.getId(), person.getId());
- logger.error("updateSql---------" + updateSql);
- DbUtil.execute(ctx, updateSql);
- //String updateSql = "select * from T_HR_SCmpCalTable where FCALSCHEMEID = 'FqEAAAe2vAv/zfKx' and FPERSONID = '383Uzn7KSea0Y+B08YP6qIDvfe0='";
- //update T_HR_SCmpCalTable set s1 , s2 where FCALSCHEMEID = '' and FPERSONID = ''
- }
- msgMap.put("msg", "同步成功");
- JSONUtils.SUCCESS(msgMap);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ShrWebBizException(e);
- }
- }
- /**
- * 税款反算
- *
- * @param request
- * @param response
- * @param modelMap
- * @throws ShrWebBizException
- * @throws BOSException
- */
- public void taxPaymentBackCalculateAction(HttpServletRequest request, HttpServletResponse response, ModelMap
- modelMap) throws SHRWebException, BOSException, EASBizException {
- //计算规则ID
- String cmpschemeid = request.getParameter("cmpschemeid");
- if (StringUtils.isEmpty(cmpschemeid)) {
- throw new ShrWebBizException("计算规则ID不可为空!!");
- }
- Map rseMap = new HashMap();
- List resList = new ArrayList();
- //接口日志实体
- LogInfoInfo logInfo = new LogInfoInfo();
- //入口
- logInfo.setEntrance(this.getClass().getName());
- logInfo.setBizDate(new Date());
- try {
- //计算规则
- ICalScheme iCalScheme = CalSchemeFactory.getLocalInstance(ctx);
- ITaxUnit iTaxUnit = TaxUnitFactory.getLocalInstance(ctx);
- IPerson iPerson = PersonFactory.getLocalInstance(ctx);
- SelectorItemCollection sic = new SelectorItemCollection();
- sic.add("taxItemPlanList.taxItemPlan.name");
- sic.add("taxItemPlanList.taxItemPlan.number");
- sic.add("*");
- FilterInfo filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("id", cmpschemeid, CompareType.EQUALS));
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
- CalSchemeInfo calSchemeInfo = iCalScheme.getCalSchemeCollection(entityViewInfo).get(0);
- //获取当前的薪酬核算
- CmpCalTableCollection cmpCalTableCollection = getCalSchemeColl(calSchemeInfo.getId().toString(), calSchemeInfo.getPeriodYear(), calSchemeInfo.getPeriodMonth());
- logger.error("cmpCalTableCollection--------" + cmpCalTableCollection.size());
- //获取所有人和纳税单位
- List<TaxUnitAndPerson> taxUnitAndPeople = new ArrayList();
- if (cmpCalTableCollection.size() > 0) {
- for (int i = 0; i < cmpCalTableCollection.size(); i++) {
- String personId = cmpCalTableCollection.get(i).getPerson().getId().toString();
- //查询是否存在税后保实发
- Integer abroadIncome = getAbroadIncome(personId, cmpschemeid);
- logger.error("abroadIncome-----------" + personId + "--------------" + cmpschemeid);
- logger.error("abroadIncome-----------" + abroadIncome);
- if (abroadIncome != null && abroadIncome != 0) {
- //获取纳税单位
- String sql = getSalaryOrgMappingByPersonId(personId);
- logger.error("getSalaryOrgMappingByPersonId--------" + sql);
- IRowSet iRowSet = DbUtil.executeQuery(ctx, sql);
- String taxUnitId = null;
- while (iRowSet.next()) {
- taxUnitId = iRowSet.getString("taxunit");
- }
- if (!StringUtils.isEmpty(taxUnitId)) {
- //throw new ShrWebBizException("员工ID:" + personId + "未获取到纳税单位!!");
- TaxUnitAndPerson taxUnitAndPerson = new TaxUnitAndPerson(taxUnitId, personId);
- taxUnitAndPeople.add(taxUnitAndPerson);
- }
- }
- }
- }
- logger.error("taxUnitAndPeople-----------" + taxUnitAndPeople);
- // 通过纳税单位分组
- Map<String, List<TaxUnitAndPerson>> groupedPeople = new HashMap<>();
- for (TaxUnitAndPerson taxUnitAndPerson : taxUnitAndPeople) {
- String taxunitId = taxUnitAndPerson.getTaxunitId();
- if (!groupedPeople.containsKey(taxunitId)) {
- groupedPeople.put(taxunitId, new ArrayList<>());
- }
- groupedPeople.get(taxunitId).add(taxUnitAndPerson);
- }
- logger.error("groupedPeople-----------" + groupedPeople);
- // 输出分组结果
- for (Map.Entry<String, List<TaxUnitAndPerson>> entry : groupedPeople.entrySet()) {
- logger.error("输出分组结果------------start");
- logger.error("taxunitId: " + entry.getKey());
- //自定义类 反算服务
- SixTConfirmInfo sixTConfirmInfo = new SixTConfirmInfo();
- //外部业务编号
- sixTConfirmInfo.setBizNo(UUID.randomUUID().toString().replace("-", ""));
- //纳税单位
- String taxunitId = entry.getKey();
- TaxUnitInfo taxUnitInfo = iTaxUnit.getTaxUnitInfo("where id = '" + taxunitId + "'");
- //个税方案
- TaxItemPlanInfo taxItemPlan = calSchemeInfo.getTaxItemPlanList().get(0).getTaxItemPlan();
- String taxItemPlanNumber = taxItemPlan.getNumber();
- String taxItemPlanName = taxItemPlan.getName();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("periodYear", calSchemeInfo.getPeriodYear());
- jsonObject.put("periodMonth", calSchemeInfo.getPeriodMonth());
- jsonObject.put("cmpschemeid", cmpschemeid);
- jsonObject.put("taxItemPlanName", taxItemPlanName);
- jsonObject.put("taxItemPlanNumber", taxItemPlanNumber);
- logger.error("jsonObject-------------" + jsonObject);
- //反算服务
- ClientProxyFactory clientProxyFactory = ClientProxyFactoryUtils.getClientProxyFactory();
- //算税请求接口
- TaxRequest taxRequest = clientProxyFactory.getTaxRequest();
- //获取请求参数
- CalculateIndividualIncomeTaxRequest calculateIndividualIncomeTaxRequest = getCalculateIndividualIncomeTaxRequest(entry, taxUnitInfo, taxItemPlanNumber, taxItemPlanName, cmpschemeid, logInfo);
- //调用反算服务接口
- ApiResponse<AsyncResult> asyncResultApiResponse = clientProxyFactory.getTaxRequest().reverseCalculateASynIndividualIncomeTax(calculateIndividualIncomeTaxRequest);
- logger.error("asyncResultApiResponse-----getCode-------" + asyncResultApiResponse.getHead().getCode());
- logger.error("asyncResultApiResponse-----getMsg--------" + asyncResultApiResponse.getHead().getMsg());
- if (asyncResultApiResponse.getHead().getCode().equals("00000000")) {
- AsyncResult body = asyncResultApiResponse.getBody();
- String requestId = body.getRequestId();
- logger.error("requestId-----" + requestId);
- //查询反算反馈结果
- ISYUtilsFacade isyUtilsFacade = SYUtilsFacadeFactory.getLocalInstance(ctx);
- //backTask(url,requestId,回调osf服务,自定义参数,任务类型)
- //isyUtilsFacade.backTask(isyUtilsFacade.getConfig().get("ip") + "/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", jsonObject.toString(), TaskCatalogEnum.CAL_GET);
- JSONObject json = new JSONObject();
- json.put("requestId", requestId);
- json.put("param", jsonObject.toString());
- isyUtilsFacade.addTask("synIndividualIncomeTaxService", json.toJSONString(), TaskCatalogEnum.UN_CAL_GET, "");
- //isyUtilsFacade.backTask("https://test-openapi.17win.com/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", jsonObject.toString(), TaskCatalogEnum.CAL_GET);
- //查询反算反馈结果
- //ISYUtilsFacade isyUtilsFacade = SYUtilsFacadeFactory.getLocalInstance(ctx);
- //backTask(url,requestId,回调osf服务,自定义参数,任务类型)
- //isyUtilsFacade.backTask(isyUtilsFacade.getConfig().get("ip") + "/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", "", TaskCatalogEnum.CAL_GET);
- //isyUtilsFacade.backTask("https://test-openapi.17win.com/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", jsonObject.toString(), TaskCatalogEnum.CAL_GET);
- //ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback = null;
- //boolean istrue = true;
- //while (istrue) {
- // //ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback = taxRequest.getReverseASynIndividualIncomeTaxFeedback(requestId);
- // aSynIndividualIncomeTaxFeedback = taxRequest.getReverseASynIndividualIncomeTaxFeedback(requestId);
- // //ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback =taxRequest.getReverseASynIndividualIncomeTaxFeedback("9a538f46af784ec6b78fa6e2e10e7037");
- // String code = aSynIndividualIncomeTaxFeedback.getHead().getCode();
- // if (!"100004".equals(code)) {
- // istrue = false;
- // }
- // logger.error("getCode---" + aSynIndividualIncomeTaxFeedback.getHead().getCode());
- // logger.error("getMsg---" + aSynIndividualIncomeTaxFeedback.getHead().getMsg());
- // // 等待一段时间再进行下一次轮询,这里设置为 5 秒(5000 毫秒)
- // Thread.sleep(3000);
- //}
- //CalculateTaxResultRequest resBody = aSynIndividualIncomeTaxFeedback.getBody();
- ////个税反算保存方法
- //String saveId = addTaxPaymentBackCalculate(resBody, jsonObject);
- //resList.add(saveId);
- }
- }
- rseMap.put("msg", "已增加至后台事务中执行!");
- } catch (Exception e) {
- e.printStackTrace();
- logInfo.setErrorInfo(e.getMessage());//错误信息
- LogInfoFactory.getLocalInstance(ctx).save(logInfo);
- rseMap.put("msg", e.getMessage());
- throw new SHRWebException(e);
- }
- JSONUtils.SUCCESS(rseMap);
- }
- /**
- * 获取请求参数
- *
- * @param entry
- * @param taxUnitInfo
- * @param taxItemPlanNumber
- * @param taxItemPlanName
- * @param cmpschemeid
- * @param logInfo
- * @throws BOSException
- * @throws EASBizException
- * @throws SQLException
- * @throws JsonProcessingException
- */
- private CalculateIndividualIncomeTaxRequest getCalculateIndividualIncomeTaxRequest
- (Map.Entry<String, List<TaxUnitAndPerson>> entry, TaxUnitInfo taxUnitInfo, String taxItemPlanNumber, String
- taxItemPlanName, String cmpschemeid, LogInfoInfo logInfo) throws
- BOSException, EASBizException, SQLException, JsonProcessingException {
- CalculateIndividualIncomeTaxRequest calculateIndividualIncomeTaxRequest = new CalculateIndividualIncomeTaxRequest();
- //外部业务编号
- String replace = UUID.randomUUID().toString().replace("-", "");
- logger.error("BizNo" + replace);
- calculateIndividualIncomeTaxRequest.setBizNo(replace);
- //企业名称(纳税单位)
- calculateIndividualIncomeTaxRequest.setName(taxUnitInfo.getName());
- //calculateIndividualIncomeTaxRequest.setName("荆州九州通医药有限公司00");
- //申报密码
- logger.error("taxUnitInfo----" + taxUnitInfo);
- String declPassword = taxUnitInfo.getDeclPassword();
- if (StringUtils.isEmpty(declPassword)) {
- //实名账号
- calculateIndividualIncomeTaxRequest.setRealNameAccount(taxUnitInfo.getString("realAccount"));
- //实名密码
- calculateIndividualIncomeTaxRequest.setRealNamePassword(Base64Utils.decode(taxUnitInfo.getRealPassword()));
- //密码类型
- calculateIndividualIncomeTaxRequest.setPasswordType("2");
- }else {
- logger.error("declPassword----" + taxUnitInfo.getDeclPassword());
- String sbmm = new String(Base64Utils.decode(declPassword));
- //String sbmm = new String(Base64.getDecoder().decode("QWExMjM0NTY="));
- logger.error("sbmm----" + sbmm);
- calculateIndividualIncomeTaxRequest.setDeclarePassword(sbmm);
- //密码类型
- calculateIndividualIncomeTaxRequest.setPasswordType("0");
- }
- //加密实名密码
- calculateIndividualIncomeTaxRequest.setEncryptedRealNamePassword(null);
- //登记序号
- calculateIndividualIncomeTaxRequest.setRegistrationNumber(taxUnitInfo.getRegNumber());
- //calculateIndividualIncomeTaxRequest.setRegistrationNumber("10117310124834931897");
- //税号
- calculateIndividualIncomeTaxRequest.setTaxNo(taxUnitInfo.getTaxNumber());
- //calculateIndividualIncomeTaxRequest.setTaxNo("91310124834931897I");
- //地区编号
- calculateIndividualIncomeTaxRequest.setArea(taxUnitInfo.getAreaCode());
- //calculateIndividualIncomeTaxRequest.setArea("310101");
- //部门编号
- calculateIndividualIncomeTaxRequest.setDeptNo(null);
- //部门名称
- calculateIndividualIncomeTaxRequest.setDeptName(null);
- //税款所属期
- //获取当前年月
- LocalDateTime now = LocalDateTime.now();
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
- String formattedDate = now.format(formatter);
- calculateIndividualIncomeTaxRequest.setMonth(formattedDate);
- //获取员工数据
- IPersonPosition iPersonPosition = PersonPositionFactory.getLocalInstance(ctx);
- Set personIds = new HashSet();
- for (TaxUnitAndPerson taxUnitAndPerson : entry.getValue()) {
- logger.error("personId" + taxUnitAndPerson.getPersonId());
- String personId = taxUnitAndPerson.getPersonId();
- personIds.add(personId);
- }
- FilterInfo personFilterInfo = new FilterInfo();
- personFilterInfo.getFilterItems().add(new FilterItemInfo("person.id", personIds, CompareType.INCLUDE));
- SelectorItemCollection personSic = new SelectorItemCollection();
- personSic.add("*");
- personSic.add("person.*");
- personSic.add("person.employeeType.*");
- personSic.add("person.nationality.*");
- EntityViewInfo personEntityViewInfo = EntityViewInfo.getInstance(personFilterInfo, personSic, null);
- PersonPositionCollection personPositionCollection = iPersonPosition.getPersonPositionCollection(personEntityViewInfo);
- logger.error("personPositionCollection------------size" + personPositionCollection.size());
- //综合所得对象
- ComplexIncomeRequest complexIncomeRequest = getComplexIncomeRequest(taxItemPlanNumber, taxItemPlanName, personPositionCollection, cmpschemeid, taxUnitInfo);
- logger.error("complexIncomeRequest------------" + complexIncomeRequest);
- //综合所得
- calculateIndividualIncomeTaxRequest.setComplexIncomeRequest(complexIncomeRequest);
- //非居民所得
- //NonResidentsIncomeRequest nonResidentsIncomeRequest = getNonResidentsIncomeRequest(taxItemPlanName, personInfo, cmpschemeid);
- logger.error("输出分组结果------------end");
- logInfo.setInterfaceAddress("gateway/iit/reverseCalculateTax/calculateASynIndividualIncomeTax");//接口地址
- logInfo.setInterfaceName("calculateASynIndividualIncomeTax");//接口名
- ObjectMapper mapper = new ObjectMapper();
- logger.error("calculateIndividualIncomeTaxRequest------------" + mapper.writeValueAsString(calculateIndividualIncomeTaxRequest));
- logInfo.setInParameter(mapper.writeValueAsString(calculateIndividualIncomeTaxRequest));//入参
- return calculateIndividualIncomeTaxRequest;
- }
- ///**
- // * 税款反算
- // *
- // * @param request
- // * @param response
- // * @param modelMap
- // * @throws ShrWebBizException
- // * @throws BOSException
- // */
- //public void taxPaymentBackCalculateAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException, SQLException, EASBizException, InterruptedException {
- // //计算规则ID
- // String cmpschemeid = request.getParameter("cmpschemeid");
- // if (StringUtils.isEmpty(cmpschemeid)) {
- // throw new ShrWebBizException("计算规则ID不可为空!!");
- // }
- // //计算规则
- // ICalScheme iCalScheme = CalSchemeFactory.getLocalInstance(ctx);
- // ITaxUnit iTaxUnit = TaxUnitFactory.getLocalInstance(ctx);
- // IPerson iPerson = PersonFactory.getLocalInstance(ctx);
- // SelectorItemCollection sic = new SelectorItemCollection();
- // sic.add("taxItemPlanList.taxItemPlan.name");
- // sic.add("taxItemPlanList.taxItemPlan.number");
- // sic.add("*");
- // FilterInfo filterInfo = new FilterInfo();
- // filterInfo.getFilterItems().add(new FilterItemInfo("id", cmpschemeid, CompareType.EQUALS));
- // EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
- // CalSchemeInfo calSchemeInfo = iCalScheme.getCalSchemeCollection(entityViewInfo).get(0);
- // //获取当前的薪酬核算
- // CmpCalTableCollection cmpCalTableCollection = getCalSchemeColl(calSchemeInfo.getId().toString(), calSchemeInfo.getPeriodYear(), calSchemeInfo.getPeriodMonth());
- // logger.error("cmpCalTableCollection--------" + cmpCalTableCollection.size());
- // Map rseMap = new HashMap();
- // List resList = new ArrayList();
- // if (cmpCalTableCollection.size() > 0) {
- // for (int i = 0; i < cmpCalTableCollection.size(); i++) {
- // String personId = cmpCalTableCollection.get(i).getPerson().getId().toString();
- // //自定义类 反算服务
- // SixTConfirmInfo sixTConfirmInfo = new SixTConfirmInfo();
- // //外部业务编号
- // sixTConfirmInfo.setBizNo(UUID.randomUUID().toString().replace("-", ""));
- // //获取纳税单位
- // String sql = getSalaryOrgMappingByPersonId(personId);
- // logger.error("getSalaryOrgMappingByPersonId--------" + sql);
- // IRowSet iRowSet = DbUtil.executeQuery(ctx, sql);
- // if (iRowSet.size() <= 0) {
- // throw new ShrWebBizException("员工ID:" + personId + "未获取到纳税单位!!");
- // }
- // TaxUnitInfo taxUnitInfo = null;
- // while (iRowSet.next()) {
- // taxUnitInfo = iTaxUnit.getTaxUnitInfo("where id = '" + iRowSet.getString("taxunit") + "'");
- // }
- // //个税方案
- // TaxItemPlanInfo taxItemPlan = calSchemeInfo.getTaxItemPlanList().get(0).getTaxItemPlan();
- // String taxItemPlanNumber = taxItemPlan.getNumber();
- // String taxItemPlanName = taxItemPlan.getName();
- // //String taxItemPlanNumber = "2024083001";
- // JSONObject jsonObject = new JSONObject();
- // jsonObject.put("personId", personId);
- // jsonObject.put("periodYear", calSchemeInfo.getPeriodYear());
- // jsonObject.put("periodMonth", calSchemeInfo.getPeriodMonth());
- // jsonObject.put("cmpschemeid", cmpschemeid);
- // jsonObject.put("taxItemPlanName", taxItemPlanName);
- // jsonObject.put("taxItemPlanNumber", taxItemPlanNumber);
- // logger.error("jsonObject-------------" + jsonObject);
- // ClientProxyFactory clientProxyFactory = new ClientProxyFactory(
- // "46639607259987202405271637080",
- // "oTmd/QGL2xOfIKItqFGKnw==",
- // "https://test-openapi.17win.com");
- // //反算服务
- // //算税请求接口
- // TaxRequest taxRequest = clientProxyFactory.getTaxRequest();
- // CalculateIndividualIncomeTaxRequest calculateIndividualIncomeTaxRequest = new CalculateIndividualIncomeTaxRequest();
- // //外部业务编号
- // String replace = UUID.randomUUID().toString().replace("-", "");
- // logger.error("BizNo" + replace);
- // calculateIndividualIncomeTaxRequest.setBizNo(replace);
- // //企业名称(纳税单位)
- // calculateIndividualIncomeTaxRequest.setName(taxUnitInfo.getName());
- // //calculateIndividualIncomeTaxRequest.setName("荆州九州通医药有限公司00");
- // //申报密码
- // String sbmm = new String(Base64.getDecoder().decode(taxUnitInfo.getDeclPassword()));
- // //String sbmm = new String(Base64.getDecoder().decode("QWExMjM0NTY="));
- // logger.error("sbmm----" + sbmm);
- // calculateIndividualIncomeTaxRequest.setDeclarePassword(sbmm);
- // //密码类型
- // calculateIndividualIncomeTaxRequest.setPasswordType(null);
- // //实名账号
- // calculateIndividualIncomeTaxRequest.setRealNameAccount(null);
- // //实名密码
- // calculateIndividualIncomeTaxRequest.setRealNamePassword(null);
- // //加密实名密码
- // calculateIndividualIncomeTaxRequest.setEncryptedRealNamePassword(null);
- // //登记序号
- // calculateIndividualIncomeTaxRequest.setRegistrationNumber(taxUnitInfo.getRegNumber());
- // //calculateIndividualIncomeTaxRequest.setRegistrationNumber("10117310124834931897");
- // //税号
- // calculateIndividualIncomeTaxRequest.setTaxNo(taxUnitInfo.getTaxNumber());
- // //calculateIndividualIncomeTaxRequest.setTaxNo("91310124834931897I");
- // //地区编号
- // calculateIndividualIncomeTaxRequest.setArea(taxUnitInfo.getAreaCode());
- // //calculateIndividualIncomeTaxRequest.setArea("310101");
- // //部门编号
- // calculateIndividualIncomeTaxRequest.setDeptNo(null);
- // //部门名称
- // calculateIndividualIncomeTaxRequest.setDeptName(null);
- // //税款所属期
- // //获取当前年月
- // LocalDateTime now = LocalDateTime.now();
- // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
- // String formattedDate = now.format(formatter);
- // calculateIndividualIncomeTaxRequest.setMonth(formattedDate);
- // //获取员工数据
- // IPersonPosition iPersonPosition = PersonPositionFactory.getLocalInstance(ctx);
- // PersonPositionInfo personPositionInfo = iPersonPosition.getPersonPositionInfo("select *,person.*,person.employeeType.* ,person.nationality.* where person.id = '" + personId + "'");
- // //PersonInfo personInfo = iPerson.getPersonInfo(new ObjectUuidPK(personId));
- // PersonInfo personInfo = personPositionInfo.getPerson();
- // //综合所得对象
- // ComplexIncomeRequest complexIncomeRequest = getComplexIncomeRequest(taxItemPlanNumber, taxItemPlanName, personInfo, cmpschemeid);
- // //综合所得
- // calculateIndividualIncomeTaxRequest.setComplexIncomeRequest(complexIncomeRequest);
- // //非居民所得
- // NonResidentsIncomeRequest nonResidentsIncomeRequest = getNonResidentsIncomeRequest(taxItemPlanName, personInfo, cmpschemeid);
- // calculateIndividualIncomeTaxRequest.setNonResidentsIncomeRequest(nonResidentsIncomeRequest);
- //
- // ApiResponse<AsyncResult> asyncResultApiResponse = clientProxyFactory.getTaxRequest().reverseCalculateASynIndividualIncomeTax(calculateIndividualIncomeTaxRequest);
- // logger.error("asyncResultApiResponse-----getCode-------" + asyncResultApiResponse.getHead().getCode());
- // logger.error("asyncResultApiResponse-----getMsg--------" + asyncResultApiResponse.getHead().getMsg());
- // if (asyncResultApiResponse.getHead().getCode().equals("00000000")) {
- // AsyncResult body = asyncResultApiResponse.getBody();
- // String requestId = body.getRequestId();
- // logger.error("requestId-----" + requestId);
- // //查询反算反馈结果
- // //ISYUtilsFacade isyUtilsFacade = SYUtilsFacadeFactory.getLocalInstance(ctx);
- // //backTask(url,requestId,回调osf服务,自定义参数,任务类型)
- // //isyUtilsFacade.backTask(isyUtilsFacade.getConfig().get("ip") + "/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", "", TaskCatalogEnum.CAL_GET);
- // //isyUtilsFacade.backTask("https://test-openapi.17win.com/gateway/iit/reverseCalculateTax/getASynIndividualIncomeTaxFeedback", requestId, "synIndividualIncomeTaxService", jsonObject.toString(), TaskCatalogEnum.CAL_GET);
- // ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback = null;
- // boolean istrue = true;
- // while (istrue) {
- // //ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback = taxRequest.getReverseASynIndividualIncomeTaxFeedback(requestId);
- // aSynIndividualIncomeTaxFeedback = taxRequest.getReverseASynIndividualIncomeTaxFeedback(requestId);
- // //ApiResponse<CalculateTaxResultRequest> aSynIndividualIncomeTaxFeedback =taxRequest.getReverseASynIndividualIncomeTaxFeedback("9a538f46af784ec6b78fa6e2e10e7037");
- // String code = aSynIndividualIncomeTaxFeedback.getHead().getCode();
- // if (!"100004".equals(code)) {
- // istrue = false;
- // }
- // logger.error("getCode---" + aSynIndividualIncomeTaxFeedback.getHead().getCode());
- // logger.error("getMsg---" + aSynIndividualIncomeTaxFeedback.getHead().getMsg());
- // // 等待一段时间再进行下一次轮询,这里设置为 5 秒(5000 毫秒)
- // Thread.sleep(3000);
- // }
- // CalculateTaxResultRequest resBody = aSynIndividualIncomeTaxFeedback.getBody();
- // //个税反算保存方法
- // String saveId = addTaxPaymentBackCalculate(resBody, jsonObject);
- // resList.add(saveId);
- // }
- // }
- // rseMap.put("resListSize", resList.size());
- // rseMap.put("resList", resList);
- // JSONUtils.writeJson(response, rseMap);
- // }
- //}
- /**
- * 添加个税反算数据
- *
- * @param resBody 查询反算反馈结果接口返回结果
- * @param param 员工ID
- * @return
- */
- public String addTaxPaymentBackCalculate(CalculateTaxResultRequest resBody, com.alibaba.fastjson.JSONObject
- param) throws BOSException, EASBizException {
- logger.error("addTaxPaymentBackCalculate============Start===============");
- String personId = param.getString("personId");//员工ID
- String periodYear = param.getString("periodYear");//统计年
- String periodMonth = param.getString("periodMonth");//统计月
- String cmpschemeid = param.getString("cmpschemeid");//计算规则ID
- String taxItemPlanName = param.getString("taxItemPlanName");//个税项目方案
- String taxItemPlanNumber = param.getString("taxItemPlanNumber");//个税项目方案
- //查询税款反算表是否存在该数据
- ITaxPaymentBackCalculate iTaxPaymentBackCalculate = TaxPaymentBackCalculateFactory.getLocalInstance(ctx);
- FilterInfo filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("person", personId, CompareType.EQUALS));
- filterInfo.getFilterItems().add(new FilterItemInfo("periodMonth", periodMonth, CompareType.EQUALS));
- filterInfo.getFilterItems().add(new FilterItemInfo("periodYear", periodYear, CompareType.EQUALS));
- filterInfo.getFilterItems().add(new FilterItemInfo("cmpscheme", cmpschemeid, CompareType.EQUALS));
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, null, null);
- TaxPaymentBackCalculateCollection taxPaymentBackCalculateCollection = iTaxPaymentBackCalculate.getTaxPaymentBackCalculateCollection(entityViewInfo);
- TaxPaymentBackCalculateInfo taxPaymentBackCalculateInfo = new TaxPaymentBackCalculateInfo();
- if (taxPaymentBackCalculateCollection.size() > 0) {
- taxPaymentBackCalculateInfo = taxPaymentBackCalculateCollection.get(0);
- taxPaymentBackCalculateInfo.setId(taxPaymentBackCalculateCollection.get(0).getId());
- }
- //员工
- taxPaymentBackCalculateInfo.setPerson(PersonFactory.getLocalInstance(ctx).getPersonInfo(new ObjectUuidPK(personId)));
- //统计年
- taxPaymentBackCalculateInfo.setPeriodYear(periodYear);
- //统计月
- taxPaymentBackCalculateInfo.setPeriodMonth(periodMonth);
- //计算规则
- taxPaymentBackCalculateInfo.setCmpscheme(CalSchemeFactory.getLocalInstance(ctx).getCalSchemeInfo(new ObjectUuidPK(cmpschemeid)));
- //个税项目方案
- taxPaymentBackCalculateInfo.setTaxItemPlan(taxItemPlanName);
- ComplexTaxCalculateResult complexTaxCalculateResult = null;
- //zhsd 综合所得
- ComplexIncomeResultRequest complexIncomeResultRequest = resBody.getComplexIncomeResultRequest();
- //全年一次性奖金
- if ("GS003".equals(taxItemPlanNumber)) {
- //qnycxjjsslb 全年一次性奖金
- complexTaxCalculateResult = complexIncomeResultRequest.getAnnualOneTimeBonusIncome();
- }
- //一般劳务报酬所得列表
- if ("GS002".equals(taxItemPlanNumber)) {
- //lwbclb 一般劳务报酬所得列表
- complexTaxCalculateResult = complexIncomeResultRequest.getLaborRemunerationIncome();
- }
- //正常工资薪金对象
- if ("GS001".equals(taxItemPlanNumber)) {
- //zcgzxj 正常工资薪金对象
- complexTaxCalculateResult = complexIncomeResultRequest.getNormalSalarySpecIncome();
- }
- List<ComplexIncome> successComplexIncomes = complexTaxCalculateResult.getSuccessComplexIncomes();
- ComplexIncome complexIncome = successComplexIncomes.get(0);
- //sre 收入额
- BigDecimal income = complexIncome.getIncome();
- taxPaymentBackCalculateInfo.setSalarySum(income);
- //ybtse refundTax 应补退税额
- BigDecimal refundTax = complexIncome.getRefundTax();
- taxPaymentBackCalculateInfo.setIndividual(refundTax);
- IObjectPK save = iTaxPaymentBackCalculate.save(taxPaymentBackCalculateInfo);
- logger.error("addTaxPaymentBackCalculate============end===============");
- return save.toString();
- }
- /**
- * 获取非居民所得 对象
- *
- * @return
- */
- public NonResidentsIncomeRequest getNonResidentsIncomeRequest(String taxItemPlanName, PersonInfo
- personInfo, String cmpschemeid) throws SQLException, BOSException {
- NonResidentsIncomeRequest nonResidentsIncomeRequest = new NonResidentsIncomeRequest();
- List<NonResidentsIncome> foreignerWagesSalaryIncomes = new ArrayList();
- NonResidentsIncome nonResidentsIncome = getNonResidentsIncome(taxItemPlanName, personInfo, cmpschemeid);
- foreignerWagesSalaryIncomes.add(nonResidentsIncome);
- nonResidentsIncomeRequest.setForeignerWagesSalaryIncomes(foreignerWagesSalaryIncomes);
- return nonResidentsIncomeRequest;
- }
- /**
- * 非居民所得-无住所个人正常工资薪金
- * * taxItemPlanName 个税项目名称
- * * personInfo 员工信息
- * * cmpschemeid 计算规则ID
- */
- public NonResidentsIncome getNonResidentsIncome(String taxItemPlanName, PersonInfo personInfo, String
- cmpschemeid) throws SQLException, BOSException {
- NonResidentsIncome nonResidentsIncome = new NonResidentsIncome();
- //nonResidentsIncome.setName("何云");
- //nonResidentsIncome.setLicenseType("居民身份证");
- //nonResidentsIncome.setLicenseNumber("429004198601085125");
- //nonResidentsIncome.setAbroadIncome(new BigDecimal("8000"));
- //nonResidentsIncome.setIncomeItemName("无住所个人正常工资薪金");
- //姓名
- nonResidentsIncome.setName(personInfo.getName());
- //complexIncome.setName("何云");
- //居民身份证
- if (personInfo.getIdCardNO() != null) {
- //证照号码
- nonResidentsIncome.setLicenseNumber(personInfo.getIdCardNO());
- //证照类型
- nonResidentsIncome.setLicenseType("居民身份证");
- }
- //中国护照不
- if (personInfo.getPassportNO() != null) {
- //证照类型
- nonResidentsIncome.setLicenseType("中国护照");
- //证照号码
- nonResidentsIncome.setLicenseNumber(personInfo.getPassportNO());
- }
- Integer abroadIncome = getAbroadIncome(personInfo.getId().toString(), cmpschemeid);
- //complexIncome.setLicenseNumber("429004198601085125");
- //税后收入额
- //nonResidentsIncome.setAbroadIncome(new BigDecimal(abroadIncome));
- nonResidentsIncome.setIncomeItemName(taxItemPlanName);
- return nonResidentsIncome;
- }
- /**
- * 获取综合所得
- * taxItemPlanNumber 个税项目编码
- * taxItemPlanName 个税项目名称
- * personInfo 员工信息
- * cmpschemeid 计算规则ID
- *
- * @return
- */
- public ComplexIncomeRequest getComplexIncomeRequest(String taxItemPlanNumber, String
- taxItemPlanName, PersonPositionCollection personPositionCollection, String cmpschemeid, TaxUnitInfo taxUnitInfo) throws
- BOSException, EASBizException, SQLException {
- logger.error("getComplexIncomeRequest-----" + taxItemPlanNumber + "---" + taxItemPlanName + "---" + personPositionCollection + "---" + cmpschemeid);
- ComplexIncomeRequest complexIncomeRequest = new ComplexIncomeRequest();
- //全年一次性奖金
- if (taxItemPlanNumber.equals("GS003")) {
- //if (taxItemPlanNumber.equals("2024083001")) {
- List<ComplexIncome> aOneBonusIncomeList = new ArrayList();
- for (int i = 0; i < personPositionCollection.size(); i++) {
- PersonPositionInfo personPositionInfo = personPositionCollection.get(i);
- PersonInfo personInfo = personPositionInfo.getPerson();
- logger.error("getAbroadIncome-----" + personInfo.getName() + "-----------" + getAbroadIncome(personInfo.getId().toString(), cmpschemeid));
- if (getAbroadIncome(personInfo.getId().toString(), cmpschemeid) != null || getAbroadIncome(personInfo.getId().toString(), cmpschemeid) != 0) {
- ComplexIncome annualOneTimeBonusIncome = getAnnualOneTimeBonusIncome(personInfo, taxItemPlanName, cmpschemeid);
- aOneBonusIncomeList.add(annualOneTimeBonusIncome);
- complexIncomeRequest.setAnnualOneTimeBonusIncome(aOneBonusIncomeList);
- }
- }
- }
- //一般劳务报酬所得列表
- //if (taxItemPlanNumber.equals("2024083003")) {
- if (taxItemPlanNumber.equals("GS002")) {
- List<ComplexIncome> complexIncomeList = new ArrayList();
- for (int i = 0; i < personPositionCollection.size(); i++) {
- PersonPositionInfo personPositionInfo = personPositionCollection.get(i);
- PersonInfo personInfo = personPositionInfo.getPerson();
- logger.error("getAbroadIncome-----" + personInfo.getName() + "-----------" + +getAbroadIncome(personInfo.getId().toString(), cmpschemeid));
- if (getAbroadIncome(personInfo.getId().toString(), cmpschemeid) != null || getAbroadIncome(personInfo.getId().toString(), cmpschemeid) != 0) {
- ComplexIncome laborRemunerationIncome = getLaborRemunerationIncome(personInfo, taxItemPlanName, cmpschemeid);
- complexIncomeList.add(laborRemunerationIncome);
- complexIncomeRequest.setLaborRemunerationIncome(complexIncomeList);
- }
- }
- }
- //正常工资薪金对象
- //if (taxItemPlanNumber.equals("2024083004")) {
- if (taxItemPlanNumber.equals("GS001")) {
- logger.error("GS001-----" + personPositionCollection);
- NormalSalarySpecIncome normalSalarySpecIncome = getNormalSalarySpecIncome(personPositionCollection, taxItemPlanName, cmpschemeid, taxUnitInfo);
- complexIncomeRequest.setNormalSalarySpecIncome(normalSalarySpecIncome);
- }
- return complexIncomeRequest;
- }
- /**
- * 获取全年一次性奖金
- * taxItemPlanName 个税项目名称
- * cmpschemeid 计算规则ID
- *
- * @return
- */
- public ComplexIncome getAnnualOneTimeBonusIncome(PersonInfo personInfo, String taxItemPlanName, String
- cmpschemeid) throws SQLException, BOSException {
- ComplexIncome complexIncome = new ComplexIncome();
- //姓名
- complexIncome.setName(personInfo.getName());
- //complexIncome.setName("何云");
- //居民身份证
- if (personInfo.getIdCardNO() != null) {
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getIdCardNO());
- //证照类型
- complexIncome.setLicenseType("居民身份证");
- }
- //中国护照不
- if (personInfo.getPassportNO() != null) {
- //证照类型
- complexIncome.setLicenseType("中国护照");
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getPassportNO());
- }
- Integer abroadIncome = getAbroadIncome(personInfo.getId().toString(), cmpschemeid);
- //complexIncome.setLicenseNumber("429004198601085125");
- //税后收入额
- complexIncome.setAfterTaxIncome(new BigDecimal(abroadIncome));
- complexIncome.setIncomeItemName(taxItemPlanName);
- return complexIncome;
- }
- /**
- * 获取一般劳务报酬所得
- * taxItemPlanName 个税项目名称
- * cmpschemeid 计算规则ID
- *
- * @return
- */
- public ComplexIncome getLaborRemunerationIncome(PersonInfo personInfo, String taxItemPlanName, String
- cmpschemeid) throws SQLException, BOSException {
- ComplexIncome complexIncome = new ComplexIncome();
- //姓名
- complexIncome.setName(personInfo.getName());
- //complexIncome.setName("何云");
- //居民身份证
- if (personInfo.getIdCardNO() != null) {
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getIdCardNO());
- //证照类型
- complexIncome.setLicenseType("居民身份证");
- }
- //中国护照不
- if (personInfo.getPassportNO() != null) {
- //证照类型
- complexIncome.setLicenseType("中国护照");
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getPassportNO());
- }
- Integer abroadIncome = getAbroadIncome(personInfo.getId().toString(), cmpschemeid);
- //complexIncome.setLicenseNumber("429004198601085125");
- //税后收入额
- complexIncome.setAfterTaxIncome(new BigDecimal(abroadIncome));
- complexIncome.setIncomeItemName(taxItemPlanName);
- return complexIncome;
- }
- /**
- * 获取正常工资薪金对象
- *
- * @return
- */
- public NormalSalarySpecIncome getNormalSalarySpecIncome(PersonPositionCollection
- personPositionCollection, String taxItemPlanName, String cmpschemeid, TaxUnitInfo taxUnitInfo) throws
- BOSException, EASBizException, SQLException {
- logger.error("getNormalSalarySpecIncome-------------start");
- //正常工资薪金对象
- NormalSalarySpecIncome normalSalarySpecIncome = new NormalSalarySpecIncome();
- //人员列表
- List<DetailCompanyEmployee> companyEmployeeList = new ArrayList();
- for (int i = 0; i < personPositionCollection.size(); i++) {
- PersonPositionInfo personPositionInfo = personPositionCollection.get(i);
- PersonInfo personInfo = personPositionInfo.getPerson();
- //获取人员数据
- DetailCompanyEmployee detailCompanyEmployee = getDetailCompanyEmployee(personInfo, taxUnitInfo);
- companyEmployeeList.add(detailCompanyEmployee);
- normalSalarySpecIncome.setCompanyEmployeeList(companyEmployeeList);
- //正常薪金列表
- List<ComplexIncome> normalSalarySpec = new ArrayList();
- ComplexIncome complexIncome = new ComplexIncome();
- //姓名
- complexIncome.setName(personInfo.getName());
- //complexIncome.setName("何云");
- //居民身份证
- if (personInfo.getIdCardNO() != null) {
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getIdCardNO());
- //证照类型
- complexIncome.setLicenseType("居民身份证");
- }
- //中国护照不
- if (personInfo.getPassportNO() != null) {
- //证照类型
- complexIncome.setLicenseType("中国护照");
- //证照号码
- complexIncome.setLicenseNumber(personInfo.getPassportNO());
- }
- Integer abroadIncome = getAbroadIncome(personInfo.getId().toString(), cmpschemeid);
- //complexIncome.setLicenseNumber("429004198601085125");
- //税后收入额
- complexIncome.setAfterTaxIncome(new BigDecimal(abroadIncome));
- complexIncome.setIncomeItemName(taxItemPlanName);
- normalSalarySpec.add(complexIncome);
- normalSalarySpecIncome.setNormalSalarySpec(normalSalarySpec);
- }
- return normalSalarySpecIncome;
- }
- /**
- * 人员
- *
- * @return
- */
- public DetailCompanyEmployee getDetailCompanyEmployee(PersonInfo personInfo, TaxUnitInfo taxUnitInfo) throws
- BOSException, EASBizException {
- logger.error("getDetailCompanyEmployee-------------start");
- //人员对象
- DetailCompanyEmployee detailCompanyEmployee = new DetailCompanyEmployee();
- ////姓名
- //detailCompanyEmployee.setName("何云");
- ////证件类型
- //detailCompanyEmployee.setLicenseType("居民身份证");
- ////证照号码
- //detailCompanyEmployee.setLicenseNumber("429004198601085125");
- //姓名
- detailCompanyEmployee.setName(personInfo.getName());
- logger.error("personInfoName-------------" + personInfo.getName());
- logger.error("personInfo.getIdCardNO()-------------" + personInfo.getIdCardNO());
- //complexIncome.setName("何云");
- //居民身份证
- if (personInfo.getIdCardNO() != null) {
- //证照号码
- detailCompanyEmployee.setLicenseNumber(personInfo.getIdCardNO());
- //证照类型
- detailCompanyEmployee.setLicenseType("居民身份证");
- //人员地区
- detailCompanyEmployee.setArea("境内");
- }
- //中国护照
- if (personInfo.getPassportNO() != null) {
- //证照类型
- detailCompanyEmployee.setLicenseType("中国护照");
- //证照号码
- detailCompanyEmployee.setLicenseNumber(personInfo.getPassportNO());
- //人员地区
- detailCompanyEmployee.setArea("境外");
- }
- //电话号码
- detailCompanyEmployee.setPhone(personInfo.getCell());
- //人员状态
- detailCompanyEmployee.setState(personInfo.getEmployeeType().getName());
- //人员报税信息->任职受雇从业信息
- ITaxPersonRecordEntry iTaxPersonRecordEntry = TaxPersonRecordEntryFactory.getLocalInstance(ctx);
- TaxPersonRecordEntryCollection taxPersonRecordEntryCollection = iTaxPersonRecordEntry.getTaxPersonRecordEntryCollection("where person.id = '" + personInfo.getId() + "'");
- TaxPersonRecordEntryInfo taxPersonRecordEntryInfo = taxPersonRecordEntryCollection.get(0);
- logger.error("taxPersonRecordEntryInfo-------------" + taxPersonRecordEntryInfo);
- //任职受雇类型 可选择雇员、保险营销员、证券经纪人、其他、实习学生(全日制学历教育)
- //detailCompanyEmployee.setIsEmployee("其他");
- if (taxPersonRecordEntryInfo.getEmployedType() == null) {
- detailCompanyEmployee.setIsEmployee("其他");
- } else {
- detailCompanyEmployee.setIsEmployee(taxPersonRecordEntryInfo.getEmployedType().getAlias());
- }
- //受雇日期 YYYY-MM-DD,不能大于当前时间,任职受雇类型选择雇员、保险营销员、证券经纪人时必录
- SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
- detailCompanyEmployee.setEmployedDate(inputFormat.format(taxPersonRecordEntryInfo.getEmployedDate()));
- //性别
- detailCompanyEmployee.setGender(personInfo.getGender().getAlias());
- //出生日期
- detailCompanyEmployee.setBirthday(inputFormat.format(personInfo.getBirthday()));
- //国籍 nationality
- NationalityInfo nationality = personInfo.getNationality();
- detailCompanyEmployee.setNationality(nationality.getName());
- //纳税人状态
- detailCompanyEmployee.setState(taxPersonRecordEntryInfo.getPersonStatus().getAlias());
- logger.error("detailCompanyEmployee-------------" + detailCompanyEmployee);
- logger.error("getDetailCompanyEmployee-------------end");
- return detailCompanyEmployee;
- }
- /**
- * 获取税后收入额 系统字段=税后保实发
- *
- * @param perosnId
- * @param cmpschemeid
- * @return
- */
- public Integer getAbroadIncome(String perosnId, String cmpschemeid) throws BOSException, SQLException {
- String sql = String.format("select S328 from T_HR_SCmpCalTable where FPERSONID = '%s' and FCALSCHEMEID = '%s'", perosnId, cmpschemeid);
- logger.error("getAbroadIncomeSql---------------" + sql);
- IRowSet iRowSet = DbUtil.executeQuery(ctx, sql);
- Integer abroadIncome = null;
- while (iRowSet.next()) {
- abroadIncome = iRowSet.getInt("S328");
- }
- return abroadIncome;
- }
- /**
- * 获取纳税单元
- *
- * @param personId
- * @return
- */
- public String getSalaryOrgMappingByPersonId(String personId) {
- StringBuilder sb = new StringBuilder();
- sb.append("select top 1 ").append("\n");
- sb.append("cmpOrgUnitCus.FTAXUNITID as taxunit").append("\n");
- sb.append("from CT_COM_CmpOrgUnitCus cmpOrgUnitCus").append("\n");
- sb.append("left join T_HR_SPersonCmp personCmp on personCmp.Fid = cmpOrgUnitCus.FPERSONCMPID").append("\n");
- sb.append("left join T_bd_person person on person.Fid = personCmp.FPERSONID").append("\n");
- sb.append("where").append("\n");
- sb.append("person.Fid = '").append(personId).append("'").append("\n");
- sb.append("order by cmpOrgUnitCus.FLEFFECTTIME desc ").append("\n");
- return sb.toString();
- }
- /**
- * 通过计算规则id获取薪酬核算数据
- *
- * @param cmpschemeid
- * @throws BOSException
- */
- public CmpCalTableCollection getCalSchemeColl(String cmpschemeid, int year, int month) throws BOSException {
- ICmpCalTable iCmpCalTable = CmpCalTableFactory.getLocalInstance(ctx);
- SelectorItemCollection sic = new SelectorItemCollection();
- sic.add("*");
- sic.add("calScheme.*");
- sic.add("person.*");
- //获取当前月的薪酬计算
- FilterInfo filterInfo = new FilterInfo();
- filterInfo.getFilterItems().add(new FilterItemInfo("calScheme", cmpschemeid, CompareType.EQUALS));
- filterInfo.getFilterItems().add(new FilterItemInfo("periodYear", year, CompareType.EQUALS));
- filterInfo.getFilterItems().add(new FilterItemInfo("periodMonth", month, CompareType.EQUALS));
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
- CmpCalTableCollection cmpCalTableCollection = iCmpCalTable.getCmpCalTableCollection(entityViewInfo);
- return cmpCalTableCollection;
- }
- public String beforeSubmitPreDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException, BOSException, SQLException {
- String cmpSchemeId = request.getParameter("cmpschemeid");
- this.verifyMultiUipkScheme(request, cmpSchemeId);
- Context ctx = SHRContext.getInstance().getContext();
- String language = ctx.getLocale().getLanguage();
- CalSchemeInfo calSchemeInfo = CalSchemeBizUtil.getCalSchemeInfo(ctx, cmpSchemeId);
- if (!calSchemeInfo.isIsUseForTaxCal()) {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label_tax_item_plan", ctx.getLocale()));
- } else {
- TaxItemPlanShemeRelCollection taxItemPlanList = calSchemeInfo.getTaxItemPlanList();
- if (null != taxItemPlanList && !taxItemPlanList.isEmpty()) {
- StringBuilder incomeItemIds = new StringBuilder();
- for(int i = 0; i < taxItemPlanList.size(); ++i) {
- if (taxItemPlanList.get(i).getTaxItemPlan().getIncomeItem() == null) {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label239", ctx.getLocale()));
- }
- if (incomeItemIds.length() > 0) {
- incomeItemIds.append(",");
- }
- incomeItemIds.append(taxItemPlanList.get(i).getTaxItemPlan().getIncomeItem().getId().toString());
- }
- String filterSql = this.getCalKeyFromSeesion(request);
- String calSql = "select FID from T_HR_SCmpCalTable where FCalState = 4 and FID in (" + filterSql + ") and (FisNotNeedCal = 0 or FisNotNeedCal is null)";
- IRowSet rowSet = null;
- try {
- rowSet = DbUtil.executeQuery(ctx, calSql);
- } catch (BOSException e) {
- logger.error(e.getMessage(), e);
- }
- int tcal = rowSet == null ? 0 : rowSet.size();
- if (tcal < 1) {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label223", ctx.getLocale()));
- } else {
- CmpTaxUtil cmpTaxUtil = new CmpTaxUtil();
- Map<String, Date> taxYearRange = cmpTaxUtil.getTaxYearRange(ctx, calSchemeInfo);
- int taxYear = cmpTaxUtil.getTaxYear(ctx, calSchemeInfo);
- if (null == taxYearRange) {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label224", ctx.getLocale()));
- } else {
- Date taxBeginDate = (Date)taxYearRange.get("beginDate");
- int periodYear = calSchemeInfo.getPeriodYear();
- int periodMonth = calSchemeInfo.getPeriodMonth();
- Calendar max = Calendar.getInstance();
- max.set(periodYear, periodMonth - 1, 2);
- int result = 0;
- Calendar min = Calendar.getInstance();
- min.setTime(taxBeginDate);
- min.set(min.get(1), min.get(2), 1);
- while(min.before(max)) {
- ++result;
- min.add(2, 1);
- }
- Calendar calendar = Calendar.getInstance();
- calendar.set(taxYear, result - 1, 1, 0, 0, 0);
- Map<String, Object> obj = new HashMap();
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
- obj.put("taxPeriodDate", format.format(calendar.getTime()));
- boolean isCal = true;
- try {
- isCal = HRParamUtil.getParamOfHR(ctx, "shr_cmp_026", (String)null);
- } catch (Exception e) {
- ExceptionHandle.handleException(e);
- }
- StringBuilder personNames = new StringBuilder();
- int count = 0;
- if (isCal) {
- String getCalDetailSQL = " SELECT DISTINCT PERSON.FNAME_" + language + " NAME,PERSON.FNUMBER PERSONNUMBER " + " FROM T_HR_SCMPCALTABLE CAL " + " INNER JOIN T_BD_PERSON PERSON ON CAL.FPERSONID = PERSON.FID " + " inner JOIN T_HR_STAXCALINITDETAIL DETAIL ON DETAIL.FCMPCALTABLEID = CAL.FID " + " WHERE CAL.FID IN (" + calSql + ") " + " AND DETAIL.FINCOMEITEMID in " + CmpStrUtil.buildInSql(incomeItemIds.toString()) + " AND DETAIL.FPERIODBEGIN = " + CmpDateUtil.toKSqlDate(calendar.getTime()) + " AND DETAIL.FDATASTATE = " + 10 + " AND DETAIL.FSTATE IN (20,40) ";
- for(IRowSet var35 = DbUtil.executeQuery(ctx, getCalDetailSQL); var35.next(); ++count) {
- if (count > 5) {
- personNames.append(MessageFormat.format(SHRWebResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label225"), var35.size()));
- break;
- }
- if (personNames.length() > 0) {
- personNames.append("、");
- }
- personNames.append(var35.getString("NAME")).append("(").append(var35.getString("PERSONNUMBER")).append(")");
- }
- } else {
- String getTaxCalInitDetailSQL = " SELECT distinct person.fname_" + language + " personName,person.fnumber personNumber " + " FROM T_HR_STaxCalInitDetail detail " + " inner join T_HR_SCmpCalTable cal on detail.fcmpcaltableid = cal.FID " + " inner join T_BD_Person person on detail.fpersonid = person.fid " + " where detail.fpersonid in ( select A.fpersonid from T_HR_SCMPCALTABLE A where a.FTAXUNITID = detail.ftaxunitid and a.fid IN (" + calSql + ")) " + " and detail.fincomeitemid in " + CmpStrUtil.buildInSql(incomeItemIds.toString()) + " and detail.fPERIODBEGIN = " + CmpDateUtil.toKSqlDate(calendar.getTime()) + " and detail.fdatastate = " + 10 + " and detail.fstate in (20,40) ";
- for(IRowSet rowSet1 = DbUtil.executeQuery(ctx, getTaxCalInitDetailSQL); rowSet1.next(); ++count) {
- if (count > 5) {
- personNames.append(MessageFormat.format(SHRWebResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label225"), rowSet1.size()));
- break;
- }
- if (personNames.length() > 0) {
- personNames.append("、");
- }
- personNames.append(rowSet1.getString("personName")).append("(").append(rowSet1.getString("PERSONNUMBER")).append(")");
- }
- }
- StringBuilder confirmMessage = new StringBuilder();
- if (!StringUtils.isEmpty(personNames.toString())) {
- String prefix = EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label226", ctx.getLocale());
- confirmMessage.append(prefix).append(personNames.toString().replaceFirst(",", ""));
- }
- if (!StringUtils.isEmpty(confirmMessage.toString())) {
- obj.put("confirmMsg", confirmMessage.toString());
- obj.put("confirm", true);
- } else {
- obj.put("confirm", false);
- }
- JSONUtils.writeJson(response, obj);
- return null;
- }
- }
- } else {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label_tax_item_plan", ctx.getLocale()));
- }
- }
- }
- private String getCalKeyFromSeesion(HttpServletRequest request) throws SHRWebException {
- String filterSql = "";
- if (!StringUtils.isEmpty(request.getParameter("selectedData"))) {
- filterSql = "'" + CmpStrUtil.join(request.getParameter("selectedData").split(","), "','", (String)null) + "'";
- } else {
- HttpSession session = request.getSession();
- Object cmpschemeid = ParseRequestHelper.getParameterByRequest(request, "cmpschemeid");
- Object sqlParamObject = session.getAttribute(cmpschemeid == null ? "" : cmpschemeid.toString() + "sqlParam");
- SqlParam param = null;
- if (sqlParamObject instanceof Map) {
- Map<String, Object> sqlParamMap = (Map)sqlParamObject;
- param = (SqlParam)sqlParamMap.get(cmpschemeid == null ? "" : cmpschemeid.toString() + "sqlParam");
- } else {
- param = (SqlParam)session.getAttribute(cmpschemeid == null ? "" : cmpschemeid.toString() + "sqlParam");
- }
- Map<String, String> map = new HashMap();
- map.put("cmp_ctb.id", "cmp_ctb.id");
- param.setSelectMapping(map);
- String originalSql = "";
- try {
- originalSql = FilterUtil.getSql(SHRContext.getInstance().getContext(), param);
- } catch (Exception e) {
- e.printStackTrace();
- }
- String key = "cal_" + originalSql;
- String tempName = "";
- try {
- tempName = null == BaseUtils.getCacheMap(key) ? null : BaseUtils.getCacheMap(key).toString();
- if (null != tempName) {
- return tempName;
- }
- filterSql = this.util.getTempTable(key, originalSql);
- } catch (Exception var12) {
- filterSql = this.util.getTempTable(key, originalSql);
- }
- }
- return filterSql;
- }
- private void verifyMultiUipkScheme(HttpServletRequest request, String cmpschemeid) throws SHRWebException {
- HttpSession session = request.getSession();
- String uipk = request.getParameter("uipk");
- Object uipkObj = session.getAttribute(cmpschemeid + "uipk");
- String queryUipk = uipkObj == null ? "" : uipkObj.toString();
- if (!StringUtils.isEmpty(queryUipk) && !queryUipk.equals(uipk)) {
- throw new ShrWebBizException(new com.kingdee.shr.compensation.exception.CmpCalDynamicListBizException(com.kingdee.shr.compensation.exception.CmpCalDynamicListBizException.EXCEPTION148));
- } else {
- String cmpSchemeId = String.valueOf(session.getAttribute("calscheme")).trim();
- if (!cmpSchemeId.equals(cmpschemeid)) {
- throw new ShrWebBizException(new com.kingdee.shr.compensation.exception.CmpCalDynamicListBizException(CmpCalDynamicListBizException.EXCEPTION149));
- }
- }
- }
- public String submitPreDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
- String cmpSchemeId = request.getParameter("cmpschemeid");
- String zeroIncome = request.getParameter("isZeroIncome");
- boolean isZeroIncome = Boolean.parseBoolean(zeroIncome);
- this.verifyMultiUipkScheme(request, cmpSchemeId);
- String uid = "";
- try {
- BaseUtils.clearCacheMap();
- Salary2TaxCalculator cal = new Salary2TaxCalculator();
- Salary2TaxCalculatorMgr.addTask(cal);
- uid = cal.getUID();
- String taxPeriodDate = request.getParameter("taxPeriodDate");
- String filterSql = this.getCalKeyFromSeesion(request);
- String calSql = "select FID from T_HR_SCmpCalTable where FID in (" + filterSql + ") and (FisNotNeedCal = 0 or FisNotNeedCal is null) and FEMPLOYEETYPEID not in(select fid from T_HR_BDEmployeeType where FNUMBER in('JZT006','JZT022') ) ";
- HashMap<String, String> mapParam = new HashMap();
- mapParam.put("cmpschemeid", cmpSchemeId);
- mapParam.put("uid", uid);
- mapParam.put("cmpcalid", calSql);
- mapParam.put("filterSql", filterSql);
- mapParam.put("taxPeriodDate", taxPeriodDate);
- Context ctx = SHRContext.getInstance().getContext();
- Map<String, Object> rmap;
- try {
- if (!isZeroIncome) {
- rmap = CmpCalTaxCalExchangeFacadeFactory.getLocalInstance(ctx).submitData(mapParam);
- } else {
- rmap = CmpCalTaxCalExchangeFacadeFactory.getLocalInstance(ctx).genZeroIncome(mapParam);
- }
- } catch (Exception e) {
- throw new ShrWebBizException(EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label227", ctx.getLocale()) + e.getMessage());
- }
- if (rmap == null || rmap.get("UID") == null || StringUtils.isEmpty(rmap.get("UID").toString())) {
- throw new ShrWebBizException(rmap + " " + EASResource.getString("com.kingdee.shr.compensation.resource.TaxCalBaseResource", "label228", ctx.getLocale()));
- }
- BatchMessageTipsHeader header = (BatchMessageTipsHeader)rmap.get("header");
- String calSql2 = "select FID,fname_l2,fnumber from T_HR_SCmpCalTable where FCalState = 4 and FID in (" + filterSql + ") and (FisNotNeedCal = 0 or FisNotNeedCal is null) and FEMPLOYEETYPEID in(select fid from T_HR_BDEmployeeType where FNUMBER in('JZT006','JZT022') )";
- IRowSet rowSet2 = null;
- try {
- rowSet2 = DbUtil.executeQuery(ctx, calSql2);
- } catch (BOSException e) {
- logger.error(e.getMessage(), e);
- }
- String billId = header.getBillId()==null?"":header.getBillId();
- String[] ids =billId.split(",");
- List<String> idsList = new ArrayList<>();
- idsList.addAll(Arrays.asList(ids));
- while (rowSet2.next()) {
- String id = rowSet2.getString("fid");
- String fname_l2 = rowSet2.getString("fname_l2");
- String fnumber = rowSet2.getString("fnumber");
- idsList.add(id);
- BatchMessageTipsBody body = new BatchMessageTipsBody();
- body.setId(id);
- body.setMuitTipsState(Boolean.FALSE);
- body.setMuitTipsMessage("劳务派遣(内部)和业务外包(内部)的人员不允许进行个税初算数据提交");
- List<Object> messageListExt = new ArrayList();
- messageListExt.add(fnumber);
- messageListExt.add(fname_l2);
- messageListExt.add("");
- messageListExt.add("");
- body.addMessageListExt(messageListExt);
- header.addResult(body);
- header.setFailureCount(header.getFailureCount() + 1);
- }
- header.setBillId(CmpStrUtil.convertListToString(idsList));
- JSONUtils.SUCCESS(header);
- } catch (Exception e) {
- ExceptionHandle.handleException(e);
- } finally {
- if (!StringUtils.isEmpty(uid)) {
- Salary2TaxCalculatorMgr.removeTask(uid, "");
- }
- }
- request.setAttribute(CmpConstants.CMP_LOG_OPERATE, WizardLogOperateUtils.getOperateLocalCmpScheme(request));
- return null;
- }
- }
|