package com.kingdee.eas.custom.shuiyou.six.osf; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.bsf.service.app.IHRMsfService; import com.kingdee.bos.metadata.entity.*; import com.kingdee.bos.metadata.query.util.CompareType; import com.kingdee.eas.basedata.person.*; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.custom.shuiyou.task.MessageResult; import com.kingdee.eas.custom.shuiyou.uitls.ISYUtilsFacade; import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory; import com.kingdee.eas.custom.shuiyou.uitls.URLConfigEnum; import com.kingdee.eas.framework.CoreBaseCollection; import com.kingdee.shr.compensation.app.tax.*; import com.kingdee.shr.dydeploy.web.executeSql.ExceptionUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Map; /** * description: GetCompanyIncomes
* date: 2024/9/13 19:02
* author: lhbj
* version: 1.0
*/ public class GetCompanyIncomesService implements IHRMsfService { @Override public Object process(Context context, Map map) throws EASBizException, BOSException { String this_taskid = (String) map.get("this_taskId"); String param = (String) map.get("paramData"); ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(context); Map config = facade.getConfig(); ITaxUnit taxUnit = TaxUnitFactory.getLocalInstance(context); String skssq = (String) map.get("skssq"); MessageResult messageResult = null; try { JSONObject parJSONMap = null; if (StrUtil.isNotBlank(param)) { parJSONMap = JSONUtil.parseObj(param); if (StrUtil.isBlank(skssq)) { skssq = (String) parJSONMap.getStr("skssq"); } } BigDecimal ZERO = BigDecimal.ZERO; EntityViewInfo viewInfo = new EntityViewInfo(); SelectorItemCollection sc = new SelectorItemCollection(); sc.add(new SelectorItemInfo("id")); sc.add(new SelectorItemInfo("number")); sc.add(new SelectorItemInfo("name")); sc.add(new SelectorItemInfo("realPassword"));//实名密码 sc.add(new SelectorItemInfo("declPassword"));//申报密码 sc.add(new SelectorItemInfo("areaCode"));//行政区划代码 sc.add(new SelectorItemInfo("regNumber"));//登记号 sc.add(new SelectorItemInfo("taxNumber"));//扣缴单位纳税人识别号 sc.add(new SelectorItemInfo("state")); viewInfo.setSelector(sc); FilterInfo filterInfo = new FilterInfo(); filterInfo.getFilterItems().add(new FilterItemInfo("state", "1", CompareType.EQUALS)); viewInfo.setFilter(filterInfo); TaxUnitCollection taxUnitCollection = taxUnit.getTaxUnitCollection(viewInfo); ITaxDeclaration taxDeclaration = TaxDeclarationFactory.getLocalInstance(context); IPerson iPerson = PersonFactory.getLocalInstance(context); EntityViewInfo personViewInfo = new EntityViewInfo(); SelectorItemCollection personSc = new SelectorItemCollection(); personSc.add(new SelectorItemInfo("id")); personViewInfo.setSelector(personSc); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("GetCompanyIncomesService:"+taxUnitCollection.toString()); for (int i = 0; i < taxUnitCollection.size(); i++) { TaxUnitInfo taxUnitInfo = taxUnitCollection.get(i); String declPassword = taxUnitInfo.getDeclPassword(); String areaid = taxUnitInfo.getAreaCode(); String name = taxUnitInfo.getName(); String djxhid = taxUnitInfo.getRegNumber(); String nsrsbh = taxUnitInfo.getTaxNumber(); if (StrUtil.isNotBlank(nsrsbh) && StrUtil.isNotBlank(djxhid) && StrUtil.isNotBlank(name) && StrUtil.isNotBlank(areaid) && StrUtil.isNotBlank(declPassword)) { int pageNo = 1; int pageSize = 4999; boolean next =false; do { next =false; String result = facade.post(config.get("ip") + URLConfigEnum.GETCOMPANYINCOMES_VALUE, param); System.out.println("GetCompanyIncomesService:result:"+result.toString()); TaxDeclarationInfo info = new TaxDeclarationInfo(); JSONObject resultMap = JSONUtil.parseObj(result); JSONObject head = resultMap.getJSONObject("head"); JSONObject body = resultMap.getJSONObject("body"); String code = head.getStr("code"); if ("00000000".equals(code)) { String total = body.getStr("total"); Integer totalInt = Integer.valueOf(total); if (totalInt.compareTo(0) > 0) { if(totalInt.compareTo(pageSize+pageNo) > 0){ pageNo=pageNo+1; next =true; } JSONArray sfmx = body.getJSONArray("sfmx"); CoreBaseCollection collection = new CoreBaseCollection(); for (int j = 0; j < sfmx.size(); j++) { TaxDeclarationInfo declaration = new TaxDeclarationInfo(); JSONObject sfm = sfmx.getJSONObject(j); String zjhm = sfm.getStr("zjhm"); FilterInfo personfilterInfo = new FilterInfo(); personfilterInfo.getFilterItems().add(new FilterItemInfo("idCardNO", zjhm, CompareType.EQUALS)); FilterInfo personfilterInfo2 = new FilterInfo(); personfilterInfo2.getFilterItems().add(new FilterItemInfo("passportNO", zjhm, CompareType.EQUALS)); personfilterInfo.mergeFilter(personfilterInfo2, "or"); personViewInfo.setFilter(personfilterInfo); PersonCollection perc = iPerson.getPersonCollection(personViewInfo); PersonInfo personInfo = null; if (null != perc) { personInfo = perc.get(0); } if (null == personInfo) { continue; } declaration.setPerson(personInfo); Integer year = Integer.valueOf(skssq.substring(0, 4)); Integer month = Integer.valueOf(skssq.substring(4, 6)); declaration.setPeriodYear(year); declaration.setPeriodMonth(month); Calendar begin = Calendar.getInstance(); begin.set(year, month, 1); declaration.setTaxPeriodBegin(begin.getTime()); begin.add(Calendar.MONTH, 1); begin.add(Calendar.DAY_OF_MONTH, -1); declaration.setTaxPeriodEnd(begin.getTime()); declaration.setTaxUnit(taxUnitInfo); declaration.setIdType(sfm.getStr("zjlx"));//证件类型 declaration.setIdNO(zjhm); declaration.setTaxPayerNum(sfm.getStr(nsrsbh)); declaration.setIsPersonal(("1".equals(sfm.getStr("sffjm"))) ? false : true);//非居民个人;1:否 2:是 declaration.setProceedItem(sfm.getStr("sdxmmc"));//所得项目名称 String income = sfm.getStr("sre"); declaration.setIncome(StrUtil.isNotBlank(income) ? new BigDecimal(income) : ZERO); String cost = sfm.getStr("fy"); declaration.setIncome(StrUtil.isNotBlank(cost) ? new BigDecimal(cost) : ZERO); String exemptIncome = sfm.getStr("mssr"); declaration.setExemptIncome(StrUtil.isNotBlank(exemptIncome) ? new BigDecimal(exemptIncome) : ZERO); String deductions = sfm.getStr("jcfy"); declaration.setDeductions(StrUtil.isNotBlank(deductions) ? new BigDecimal(deductions) : ZERO); String basicPension = sfm.getStr("jbylaobxf"); declaration.setBasicPension(StrUtil.isNotBlank(basicPension) ? new BigDecimal(basicPension) : ZERO); String basicMedical = sfm.getStr("jbylbxf"); declaration.setBasicMedical(StrUtil.isNotBlank(basicMedical) ? new BigDecimal(basicMedical) : ZERO); String unemployment = sfm.getStr("sybxf"); declaration.setUnemployment(StrUtil.isNotBlank(unemployment) ? new BigDecimal(unemployment) : ZERO); String housingFund = sfm.getStr("zfgjj"); declaration.setHousingFund(StrUtil.isNotBlank(housingFund) ? new BigDecimal(housingFund) : ZERO); String annuity = sfm.getStr("nj"); declaration.setAnnuity(StrUtil.isNotBlank(annuity) ? new BigDecimal(annuity) : ZERO); String comHelath = sfm.getStr("syjkbx"); declaration.setComHelath(StrUtil.isNotBlank(comHelath) ? new BigDecimal(comHelath) : ZERO); String taxDeferred = sfm.getStr("syylbx"); declaration.setTaxDeferred(StrUtil.isNotBlank(taxDeferred) ? new BigDecimal(taxDeferred) : ZERO); String originalValue = sfm.getStr("ccyz"); declaration.setOriginalValue(StrUtil.isNotBlank(originalValue) ? new BigDecimal(originalValue) : ZERO); String taxAllowReduct = sfm.getStr("yxkcsf"); declaration.setTaxAllowReduct(StrUtil.isNotBlank(taxAllowReduct) ? new BigDecimal(taxAllowReduct) : ZERO); String otherDeductions = sfm.getStr("qt"); declaration.setOtherDeductions(StrUtil.isNotBlank(otherDeductions) ? new BigDecimal(otherDeductions) : ZERO); String incomeSum = sfm.getStr("ljsre"); declaration.setIncomeSum(StrUtil.isNotBlank(incomeSum) ? new BigDecimal(incomeSum) : ZERO); String deductionSum = sfm.getStr("ljjcfy"); declaration.setDeductionSum(StrUtil.isNotBlank(deductionSum) ? new BigDecimal(deductionSum) : ZERO); String specialDeductSum = sfm.getStr("ljzxkc"); declaration.setSpecialDeductSum(StrUtil.isNotBlank(specialDeductSum) ? new BigDecimal(specialDeductSum) : ZERO); String ChildEducateSum = sfm.getStr("ljznjy"); declaration.setChildEducateSum(StrUtil.isNotBlank(ChildEducateSum) ? new BigDecimal(ChildEducateSum) : ZERO); String OldSupportSum = sfm.getStr("ljsylr"); declaration.setOldSupportSum(StrUtil.isNotBlank(OldSupportSum) ? new BigDecimal(OldSupportSum) : ZERO); String LoanInterestSum = sfm.getStr("ljzfdklx"); declaration.setLoanInterestSum(StrUtil.isNotBlank(LoanInterestSum) ? new BigDecimal(LoanInterestSum) : ZERO); String HousingRentSum = sfm.getStr("ljzfzj"); declaration.setHousingRentSum(StrUtil.isNotBlank(HousingRentSum) ? new BigDecimal(HousingRentSum) : ZERO); String ContinueEducateSum = sfm.getStr("ljjxjy"); declaration.setContinueEducateSum(StrUtil.isNotBlank(ContinueEducateSum) ? new BigDecimal(ContinueEducateSum) : ZERO); String OtherDeductionSum = sfm.getStr("ljqtkc"); declaration.setOtherDeductionSum(StrUtil.isNotBlank(OtherDeductionSum) ? new BigDecimal(OtherDeductionSum) : ZERO); String TaxableRatio = sfm.getStr("jjbl"); declaration.setTaxableRatio(StrUtil.isNotBlank(TaxableRatio) ? new BigDecimal(TaxableRatio) : ZERO); String AllowDonationSum = sfm.getStr("zykcjze"); declaration.setAllowDonationSum(StrUtil.isNotBlank(AllowDonationSum) ? new BigDecimal(AllowDonationSum) : ZERO); String TaxableIncomeSum = sfm.getStr("ynssde"); declaration.setTaxableIncomeSum(StrUtil.isNotBlank(TaxableIncomeSum) ? new BigDecimal(TaxableIncomeSum) : ZERO); String TaxRatio = sfm.getStr("sl"); declaration.setTaxRatio(StrUtil.isNotBlank(TaxRatio) ? new BigDecimal(TaxRatio) : ZERO); String QuickDeduct = sfm.getStr("sskcs"); declaration.setQuickDeduct(StrUtil.isNotBlank(QuickDeduct) ? new BigDecimal(QuickDeduct) : ZERO); String TaxPayableSum = sfm.getStr("ynse"); declaration.setTaxPayableSum(StrUtil.isNotBlank(TaxPayableSum) ? new BigDecimal(TaxPayableSum) : ZERO); String TaxCreditSum = sfm.getStr("jmse"); declaration.setTaxCreditSum(StrUtil.isNotBlank(TaxCreditSum) ? new BigDecimal(TaxCreditSum) : ZERO); String TaxPaidSum = sfm.getStr("ykjse"); declaration.setTaxPaidSum(StrUtil.isNotBlank(TaxPaidSum) ? new BigDecimal(TaxPaidSum) : ZERO); String TaxSupOrRefund = sfm.getStr("ybtse"); declaration.setTaxSupOrRefund(StrUtil.isNotBlank(TaxSupOrRefund) ? new BigDecimal(TaxSupOrRefund) : ZERO); declaration.setSourceType(SourceType.outer); declaration.setItemDefine(ItemDefine.NormalSalary); declaration.setReportName(sfm.getStr("xm")); String InFantSum = sfm.getStr("ljyyezhzc"); declaration.setInFantSum(StrUtil.isNotBlank(InFantSum) ? new BigDecimal(InFantSum) : ZERO); String PersonalPension = sfm.getStr("ljgrylj"); declaration.setPersonalPension(StrUtil.isNotBlank(PersonalPension) ? new BigDecimal(PersonalPension) : ZERO); collection.add(declaration); } taxDeclaration.addnewBatchData(collection); } } }while (next); } } messageResult = MessageResult.SUCCESS(); } catch (Exception e) { e.printStackTrace(); messageResult = MessageResult.ERROR(ExceptionUtils.getStackTrace(e)); } return messageResult; } }