123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- package com.kingdee.eas.custom.shuiyou.incomeTax;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.json.JSONUtil;
- import com.kingdee.bos.dao.IObjectPK;
- import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
- import com.kingdee.bos.util.BOSUuid;
- import com.kingdee.eas.basedata.person.Genders;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.custom.shuiyou.six.osf.vo.SixTPersonInfo;
- import com.kingdee.eas.custom.shuiyou.six.osf.vo.SpecialAmountInfo;
- import com.kingdee.eas.custom.shuiyou.task.MessageResult;
- import com.kingdee.eas.custom.shuiyou.task.TaskFactory;
- import com.kingdee.eas.custom.shuiyou.task.TaskInfo;
- 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.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- import com.kingdee.shr.base.syssetting.json.JSONUtils;
- import com.kingdee.shr.compensation.*;
- import com.kingdee.shr.compensation.app.tax.*;
- import com.kingdee.shr.compensation.app.taxCal.TaxCalInitDetailStateEnum;
- import com.kingdee.shr.compensation.util.Base64Utils;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.log4j.Logger;
- import com.kingdee.bos.*;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.lang.String;
- public class TaxSpeAddDedReportExFacadeControllerBean extends AbstractTaxSpeAddDedReportExFacadeControllerBean
- {
- private static Logger logger =
- Logger.getLogger("com.kingdee.eas.custom.shuiyou.incomeTax.TaxSpeAddDedReportExFacadeControllerBean");
- private static final long serialVersionUID = 1L;
- private Map<String, String> taskMap;
- private Map<String, Map<String, Object>> dataMap = new HashMap();
- private List<String> sumTaxList;
- private List<String> allTaxItemList;
- private static final int FIXED_PARA_COUNT = 15;
- private String userId;
- private boolean isDelete = false;
- private boolean isFbSubmit;
- private boolean checkParams(Map<String, Object> paramMap) {
- if (!paramMap.containsKey("accept_id") && !paramMap.containsKey("RELAYTASK")) {
- return true;
- } else {
- return !paramMap.containsKey("TaxPersonRecordEntryIDS");
- }
- }
- @Override
- protected MessageResult _report(Context ctx, Map paramMap) throws BOSException {
- logger.error("_report:"+paramMap);
- if (this.checkParams(paramMap)) {
- throw new BOSException("专项附加扣除申报服务参数缺失,请检查参数");
- } else {
- //前置任务
- String RELAYTASK = (String)paramMap.get("RELAYTASK");
- String taxUnitID = (String)paramMap.get("TAXUNITID");
- String initIds = (String)paramMap.get("initIds");
- String period = (String)paramMap.get("PERIOD");
- String taxPersonRecordEntryIDS = (String)paramMap.get("TaxPersonRecordEntryIDS");
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
- TaxUnitCollection taxUnitCollection = TaxUnitFactory.getLocalInstance(ctx).getTaxUnitCollection("select id,name,number,taxNumber,areaCode,regNumber,declPassword,realPassword,isAutoDeduct where id = '" + taxUnitID + "'");
- logger.error("taxUnitCollection:"+taxUnitCollection);
- if (null != taxUnitCollection && taxUnitCollection.size() != 0) {
- TaxUnitInfo taxUnitInfo = taxUnitCollection.get(0);
- IsAllowedQuoted isAutoDeduct = taxUnitInfo.getIsAutoDeduct();
- if (0 == isAutoDeduct.getValue()) {
- return null;
- } else {
- logger.error("period:"+period);
- period = period.replace("-", "");
- int periodYear = Integer.parseInt(period.substring(0, 4));
- int periodMonth = Integer.parseInt(period.substring(4, 6));
- StringBuilder checkSQL = new StringBuilder();
- checkSQL.append(" SELECT ");
- checkSQL.append(" PERSON.FID PERSONID, ");
- checkSQL.append(" PERSON.FNAME_L2 PERSONNAME, ");
- checkSQL.append(" PERSON.FNUMBER PERSONNUMBER, ");
- checkSQL.append(" PERSON.FGENDER GENDER, ");
- checkSQL.append(" TAX.FPHONENUMBER PHONENUMBER, ");
- checkSQL.append(" ENTRY.FPERSONSTATUS PERSONSTATUS, ");
- checkSQL.append(" ENTRY.FEMPLOYEDTYPE EMPLOYEDTYPE, ");
- checkSQL.append(" ENTRY.FEMPLOYEDDATE EMPLOYEDDATE, ");
- checkSQL.append(" isnull(TAX.FBIRTHDAY,PERSON.FBIRTHDAY) BIRTHDAY, ");
- checkSQL.append(" nl.fname_l2 NATIONALITY, ");
- checkSQL.append(" TAX.FISOVERSEA ISOVERSEA,");
- checkSQL.append(" ENTRY.FDEPARTUREDATE DEPARTUREDATE,");
- checkSQL.append(" TAX.FINVESTMENTTOTAL INVESTMENTTOTAL,");
- checkSQL.append(" TAX.FINVESTMENTRATE INVESTMENTRATE,");
- checkSQL.append(" TAX.FISDISABILITY ISDISABILITY,");
- checkSQL.append(" TAX.FISHERO ISHERO,");
- checkSQL.append(" TAX.FISOLD ISOLD,");
- checkSQL.append(" ENTRY.FDEDUCTFEES DEDUCTFEES,");
- checkSQL.append(" TAX.FDISCARDNUMBER DISCARDNUMBER,");
- checkSQL.append(" TAX.FHEROCARDNUMBER HEROCARDNUMBER,");
- checkSQL.append(" TAX.FEMAIL EMAIL,");
- checkSQL.append(" dip.fname_l2 EDULEVEL,");
- checkSQL.append(" TAX.FPOSITION POSITION,");
- checkSQL.append(" bank.fname_l2 BANKNAME,");
- checkSQL.append(" TAX.FBANKCARDPROVINCE BANKCARDPROVINCE,");
- checkSQL.append(" TAX.FACCOUNT BANKACCOUNT,");
- checkSQL.append(" birNl.fName_l2 BIRTHPLACE,");
- checkSQL.append(" TAX.FTAXREASON TAXREASON,");
- checkSQL.append(" TAX.FENTRYDATE ENTRYDATE,");
- checkSQL.append(" TAX.FLEAVEDATE LEAVEDATE,");
- checkSQL.append(" TAX.FCARDTYPE CARDTYPE, ");
- checkSQL.append(" TAX.FReportName reportName, ");
- checkSQL.append(" TAX.FCARDNUMBER CARDNUMBER, ");
- checkSQL.append(" ENTRY.FID ENTRYID, ");
- checkSQL.append(" ENTRY.FTAXUNITID TAXUNITID, ");
- checkSQL.append(" RECORD.FID RECORDID, ");
- checkSQL.append(" RECORD.FSTATE ");
- checkSQL.append(" FROM T_HR_STAXPERSONRECORD TAX ");
- checkSQL.append(" INNER JOIN T_HR_STAXPERSONRECORDENTRY ENTRY ON TAX.FID = ENTRY.FBILLID ");
- checkSQL.append(" LEFT JOIN T_HR_STAXSPEADDDEDRECORD RECORD ON ENTRY.FPERSONID = RECORD.FPERSONID AND ENTRY.FTAXUNITID = RECORD.FTAXUNITID ");
- checkSQL.append(" AND RECORD.FPERIODYEAR = ").append(periodYear);
- checkSQL.append(" AND RECORD.FPERIODMONTH = ").append(periodMonth);
- checkSQL.append(" AND RECORD.FTAXUNITID = '").append(taxUnitInfo.getId().toString()).append("' ");
- checkSQL.append(" INNER JOIN T_BD_PERSON PERSON ON ENTRY.FPERSONID = PERSON.FID ");
- checkSQL.append(" LEFT JOIN T_BD_Nationality nl ON nl.fid = TAX.FNATIONALITYID ");
- checkSQL.append(" LEFT JOIN T_BD_HRDiploma dip ON dip.fid = TAX.FEDULEVELID ");
- checkSQL.append(" LEFT JOIN T_HR_SBank bank ON bank.fid = TAX.FBANKID ");
- checkSQL.append(" LEFT JOIN T_BD_Nationality birNl ON birNl.fid = TAX.FBIRTHPLACEID ");
- checkSQL.append(" WHERE ");
- checkSQL.append(" ENTRY.FID IN (").append(taxPersonRecordEntryIDS).append(") ");
- String updateRecordSQL = " update T_HR_STAXSPEADDDEDRECORD set Fstate = 30, CFTaskID = ? where FID = ?";
- ArrayList updateParamList = new ArrayList();
- ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(ctx);
- try {
- logger.error("_report:"+checkSQL);
- IRowSet rowSet = DbUtil.executeQuery(ctx, checkSQL.toString());
- List<SixTPersonInfo> rylb = new ArrayList();
- CoreBaseCollection recordCollection = new CoreBaseCollection();
- HashSet reportPersonSet = new HashSet();
- while(true) {
- while(true) {
- if (!rowSet.next()) {
- if (rylb.isEmpty()) {
- return null;
- }
- SpecialAmountInfo specialAmountInfo = new SpecialAmountInfo();
- specialAmountInfo.setTaxPersonRecordEntryIDS(initIds);
- specialAmountInfo.setBizNo(facade.getBizNo());
- specialAmountInfo.setQymc(taxUnitInfo.getName());
- specialAmountInfo.setMmlx("0");
- specialAmountInfo.setSmzh(null);
- specialAmountInfo.setJmsmmm(null);
- specialAmountInfo.setSbmm(Base64Utils.decode(taxUnitInfo.getDeclPassword()));
- specialAmountInfo.setJmsbmm(null);
- specialAmountInfo.setDjxhid(taxUnitInfo.getRegNumber());
- specialAmountInfo.setNsrsbh(taxUnitInfo.getTaxNumber());
- specialAmountInfo.setAreaid(taxUnitInfo.getAreaCode());
- specialAmountInfo.setSkssq(period);
- specialAmountInfo.setBmbh(null);
- specialAmountInfo.setBmmc(null);
- specialAmountInfo.setSfrysb(null);
- specialAmountInfo.setXzms("1");
- specialAmountInfo.setRylb(rylb);
- paramMap.put("qymc", taxUnitInfo.getName());
- paramMap.put("nsrsbh", taxUnitInfo.getTaxNumber());
- paramMap.put("areaid", taxUnitInfo.getAreaCode());
- paramMap.put("sdyf", period);
- paramMap.put("ver", "V2.0.000");
- paramMap.put("djxhid", taxUnitInfo.getRegNumber());
- paramMap.put("smmm", Base64Utils.decode(taxUnitInfo.getRealPassword()));
- paramMap.put("sbmm", Base64Utils.decode(taxUnitInfo.getDeclPassword()));
- paramMap.put("xzzxxx", "是");
- Map<String, Object> dataMap = new HashMap();
- dataMap.put("rylb", rylb);
- paramMap.put("data", dataMap);
- Map<String,Object> config = facade.getConfig();
- String url = config.get("ip")+ URLConfigEnum.QUERYPREDEDUCT_VALUE;
- String result = facade.post(url, JSONUtil.toJsonStr(specialAmountInfo));
- // if
- // facade.addTask("GetQuerySpecialAmountFeedback",);
- // TaskInfo taxCalTaskInfo = TaskFactory.getLocalInstance(ctx).getTaskInfo(new ObjectUuidPK(tastId));
- //
- // int i = 0;
- //
- // for(int size = recordCollection.size(); i < size; ++i) {
- // TaxSpeAddDedRecordInfo taxSpeAddDedRecordInfo = (TaxSpeAddDedRecordInfo)recordCollection.get(i);
- // taxSpeAddDedRecordInfo.put("task",taxCalTaskInfo);
- // }
- //
- // Object[] objects;
- // for(Iterator i$ = updateParamList.iterator(); i$.hasNext(); objects[0] = tastId) {
- // objects = (Object[])i$.next();
- // }
- //
- // TaxSpeAddDedRecordFactory.getLocalInstance(ctx).saveBatchData(recordCollection);
- // if (updateParamList.size() > 0) {
- // DbUtil.executeBatch(ctx, updateRecordSQL, updateParamList);
- // }
- //
- // List<IObjectPK> arrayList = new ArrayList();
- // arrayList.add(new ObjectUuidPK(tastId));
- return MessageResult.SUCCESS();
- }
- String recordId = rowSet.getString("RECORDID");
- if (StringUtils.isEmpty(recordId)) {
- break;
- }
- int state = rowSet.getInt("FSTATE");
- if (40 != state && 30 != state) {
- if (50 == state) {
- Object[] updateParam = new Object[]{null, recordId};
- updateParamList.add(updateParam);
- }
- break;
- }
- }
- String personId = rowSet.getString("PERSONID");
- String personName = rowSet.getString("reportName");
- String personNumber = rowSet.getString("PERSONNUMBER");
- String phoneNumber = rowSet.getString("PHONENUMBER");
- String personStatus = rowSet.getString("PERSONSTATUS");
- String employedType = rowSet.getString("EMPLOYEDTYPE");
- Date employeddate = rowSet.getDate("EMPLOYEDDATE");
- String gender = rowSet.getString("GENDER");
- if (StringUtils.isEmpty(personName)) {
- personName = rowSet.getString("PERSONNAME");
- }
- Date birthday = rowSet.getDate("BIRTHDAY");
- String nationality = rowSet.getString("NATIONALITY");
- String isoversea = rowSet.getString("ISOVERSEA");
- Date departuredate = rowSet.getDate("DEPARTUREDATE");
- String investmenttotal = rowSet.getString("INVESTMENTTOTAL");
- String investmentrate = rowSet.getString("INVESTMENTRATE");
- String isdisability = rowSet.getString("ISDISABILITY");
- String ishero = rowSet.getString("ISHERO");
- String isold = rowSet.getString("ISOLD");
- String deductfees = rowSet.getString("DEDUCTFEES");
- String discardnumber = rowSet.getString("DISCARDNUMBER");
- String herocardnumber = rowSet.getString("HEROCARDNUMBER");
- String email = rowSet.getString("EMAIL");
- String edulevel = rowSet.getString("EDULEVEL");
- String position = rowSet.getString("POSITION");
- String bankname = rowSet.getString("BANKNAME");
- String bankcardprovince = rowSet.getString("BANKCARDPROVINCE");
- String bankaccount = rowSet.getString("BANKACCOUNT");
- String birthplace = rowSet.getString("BIRTHPLACE");
- String taxreason = rowSet.getString("TAXREASON");
- Date entrydate = rowSet.getDate("ENTRYDATE");
- Date leavedate = rowSet.getDate("LEAVEDATE");
- String cardType = rowSet.getString("CARDTYPE");
- String cardNumber = rowSet.getString("CARDNUMBER");
- String reportPersonSetKey = personId + "_" + taxUnitID + "_" + periodYear + "_" + periodMonth;
- if (!reportPersonSet.contains(reportPersonSetKey)) {
- reportPersonSet.add(reportPersonSetKey);
- SixTPersonInfo sixTPersonInfo = new SixTPersonInfo();
- sixTPersonInfo.setXm(personName);
- sixTPersonInfo.setZzlx(CardTypeEnum.getEnum(cardType).getAlias());
- sixTPersonInfo.setZzhm(cardNumber);
- sixTPersonInfo.setQtzzlx(null);
- sixTPersonInfo.setQtzzhm(null);
- sixTPersonInfo.setGh(personNumber);
- sixTPersonInfo.setSkssq(period);
- sixTPersonInfo.setLxdh(phoneNumber);
- sixTPersonInfo.setNsrzt(("1".equals(personStatus)? PersonStatusEnum.Normal.getAlias():PersonStatusEnum.NotNormal.getAlias()));
- if(StrUtil.isNotBlank(employedType)) {
- sixTPersonInfo.setSfgy(EmployedTypeEnum.getEnum(employedType).getAlias());
- }else{
- sixTPersonInfo.setSfgy(null);
- }
- if(null!=employeddate){
- sixTPersonInfo.setRzsgrq(format.format(employeddate));
- }else {
- sixTPersonInfo.setRzsgrq(format.format(new Date()));
- }
- if(null!=gender) {
- sixTPersonInfo.setXb(Genders.getEnum(Integer.parseInt(gender)).getAlias());
- }else{
- sixTPersonInfo.setXb(Genders.Male.getAlias());
- }
- sixTPersonInfo.setCsny(format.format(birthday));
- if(StrUtil.isNotBlank(nationality)){
- sixTPersonInfo.setGj(nationality);
- }else{
- sixTPersonInfo.setGj("中国");
- }
- sixTPersonInfo.setRydq("0".equals(isoversea)?"境内":"境外");
- if(null!=departuredate) {
- sixTPersonInfo.setLzrq(format.format(departuredate));
- }else {
- sixTPersonInfo.setLzrq("");
- }
- if(StrUtil.isNotBlank(investmenttotal)){
- sixTPersonInfo.setGrgbze(investmenttotal);
- }else {
- sixTPersonInfo.setGrgbze(null);
- }
- if(StrUtil.isNotBlank(investmentrate)){
- sixTPersonInfo.setGrgbbl(investmentrate);
- }else {
- sixTPersonInfo.setGrgbbl(null);
- }
- if(StrUtil.isNotBlank(isdisability)) {
- sixTPersonInfo.setSfcj("0".equals(isdisability)?"否":"是");
- }else {
- sixTPersonInfo.setSfcj(null);
- }
- if(StrUtil.isNotBlank(ishero)) {
- sixTPersonInfo.setSfls("0".equals(ishero)?"否":"是");
- }else {
- sixTPersonInfo.setSfls(null);
- }
- if(StrUtil.isNotBlank(isold)) {
- sixTPersonInfo.setSfgl("0".equals(isold)?"否":"是");
- }else {
- sixTPersonInfo.setSfgl(null);
- }
- if(StrUtil.isNotBlank(deductfees)) {
- sixTPersonInfo.setSfzdw(DeductFeesEnum.getEnum(deductfees).getAlias());
- }else {
- sixTPersonInfo.setSfzdw(null);
- }
- sixTPersonInfo.setCjzh(discardnumber);
- sixTPersonInfo.setLszh(herocardnumber);
- sixTPersonInfo.setDzyx(email);
- sixTPersonInfo.setXl(edulevel);
- if(StrUtil.isNotBlank(position)) {
- sixTPersonInfo.setZw(PositionTypeEnum.getEnum(position).getAlias());
- }else{
- sixTPersonInfo.setZw(null);
- }
- sixTPersonInfo.setKhyh(bankname);
- sixTPersonInfo.setKhyhsfmz(bankcardprovince);
- sixTPersonInfo.setYhzh(bankaccount);
- sixTPersonInfo.setLxdz_sheng(null);
- sixTPersonInfo.setLxdz_shi(null);
- sixTPersonInfo.setLxdz_qx(null);
- sixTPersonInfo.setLxdz_jd(null);
- sixTPersonInfo.setLxdz(null);
- sixTPersonInfo.setHjszd_sheng(null);
- sixTPersonInfo.setHjszd_shi(null);
- sixTPersonInfo.setHjszd_qx(null);
- sixTPersonInfo.setHjszd_jd(null);
- sixTPersonInfo.setHjszd_xxdz(null);
- sixTPersonInfo.setBz(null);
- sixTPersonInfo.setCsd(birthplace);
- sixTPersonInfo.setSssx(taxreason);
- if(null!=entrydate){
- sixTPersonInfo.setScrjsj(format.format(entrydate));
- }
- if(null!=leavedate){
- sixTPersonInfo.setYjljsj(format.format(leavedate));
- }
- sixTPersonInfo.setWjrlxdz_sheng(null);
- sixTPersonInfo.setWjrlxdz_shi(null);
- sixTPersonInfo.setWjrlxdz_qx(null);
- sixTPersonInfo.setWjrlxdz_jd(null);
- sixTPersonInfo.setWjrlxdz_xxdz(null);
- sixTPersonInfo.setXmzw(null);
- sixTPersonInfo.setBz(null);
- rylb.add(sixTPersonInfo);
- TaxSpeAddDedRecordInfo taxSpeAddDedRecordInfo = new TaxSpeAddDedRecordInfo();
- taxSpeAddDedRecordInfo.setTaxUnit(taxUnitInfo);
- PersonInfo personInfo = new PersonInfo();
- personInfo.setId(BOSUuid.read(personId));
- taxSpeAddDedRecordInfo.setPerson(personInfo);
- taxSpeAddDedRecordInfo.setPeriodYear(periodYear);
- taxSpeAddDedRecordInfo.setPeriodMonth(periodMonth);
- taxSpeAddDedRecordInfo.setState(TaxCalInitDetailStateEnum.RUNNING);
- recordCollection.add(taxSpeAddDedRecordInfo);
- }
- }
- } catch (Exception var27) {
- logger.error(var27.getMessage(), var27);
- throw new BOSException("生成项附加扣除申报服务时,判断是否存在未下载的专项附加扣除信息数据出错", var27);
- }
- }
- } else {
- throw new BOSException("生成项附加扣除申报服务时,未获取到对应的纳税单位数据,请联系管理员检查数据是否被删除");
- }
- }
- }
- @Override
- protected void _save(Context ctx, String taskID, String result) throws BOSException {
- super._save(ctx, taskID, result);
- Map<String, Object> bodyMap = (Map) JSONUtils.convertJsonToObject(ctx, result, Map.class);
- String code = (String)bodyMap.get("code");
- if ("00000000".equals(code)) {
- String updateSql = "update T_HR_STAXSPEADDDEDRECORD set FSTATE = 40 where CFTaskID = '" + taskID + "'";
- DbUtil.execute(ctx, updateSql);
- }
- }
- }
|