package TaxSb

import (
	"context"
	"fmt"
	"git.listensoft.net/tool/jspkit/common"
	"git.listensoft.net/tool/jspkit/common/models"
	"git.listensoft.net/tool/jspkit/common/models/sb"
	"git.listensoft.net/tool/jspkit/common/variable"
	"git.listensoft.net/tool/jspkit/taxerr"
	"math"
	"strings"
	"time"

	"github.com/go-rod/rod"
	"github.com/go-rod/rod/lib/utils"
)

func SbQysds(ctx context.Context, newp *rod.Page, info models.CompanyInfo, task *models.TaxTask) {
	var A200000 sb.GsTaxQuarter
	if ok := common.GetData(variable.GsTaxQuarter, task.Data, &A200000); !ok {
		panic(taxerr.QysdsEmpty)
	}
	a7 := []sb.GsTaxQuarterFb1{}
	if ok := common.GetData(variable.GsTaxQuarterFb1, task.Data, &a7); !ok {
		panic(taxerr.QysdsFb1Empty)
	}
	a8 := []sb.GsTaxQuarterFb2{}
	if ok := common.GetData(variable.GsTaxQuarterFb2, task.Data, &a8); !ok {
		panic(taxerr.QysdsFb2Empty)
	}
	a13 := []sb.GsTaxQuarterFb3{}
	if ok := common.GetData(variable.GsTaxQuarterFb3, task.Data, &a13); !ok {
		panic(taxerr.QysdsFb3Empty)
	}
	err := rod.Try(func() {
		//是否简易模式
		if newp.Timeout(common.ClickTimeOut).MustHas(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__header > div`) {
			newp.Timeout(common.ClickTimeOut).MustElement(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__footer > div > button.t-button.t-button--variant-base.t-button--theme-default`).MustClick()
		}
		utils.Sleep(3)
		//span[contains(text(), "继续办理")]
		if newp.Timeout(common.ClickTimeOut).MustHasX(`//span[contains(text(), "继续办理")]`) {
			newp.Timeout(common.ClickTimeOut).MustElementX(`//span[contains(text(), "继续办理")]`).MustClick()
		}
		if newp.MustHasX(`//span[contains(text(), "您本属期已申报")]`) {
			task.Result.BusinessStatus = variable.TaxSuccess
			task.Result.BusinessImg = SaveErrImg(newp, info)
			return
		}
		if newp.MustHasR(`body > section > section > section > main > div > div > div > div.gov-inspect > div.gov-inspect-header > div.gov-inspect-header__status-text`, "检测不通过") {
			errMsg := newp.Timeout(common.ClickTimeOut).MustElement(`body > section > section > section > main > div > div > div > div.gov-inspect > div.gov-inspect-table > div > div > div > div > span.gov-inspect-item__text > span`).MustText()
			task.Result.BusinessStatus = variable.TaxFail
			task.Result.BusinessImg = SaveErrImg(newp, info)
			panic(taxerr.NewUserV3(errMsg, "请核实后重试"))
		}
		//检测不通过 返回首页
		if newp.Timeout(common.ClickTimeOut).MustHasX(`//span[contains(text(), "返回首页")]`) {
			task.Result.BusinessStatus = variable.TaxFail
			task.Result.BusinessLog = "检测不通过"
			task.Result.BusinessImg = SaveErrImg(newp, info)
			return
		}
		utils.Sleep(1)
		//您符合简易申报条件，是否确定简易申报？
		if newp.Timeout(common.ClickTimeOut).MustHas(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__header > div`) {
			newp.Timeout(common.ClickTimeOut).MustElement(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__footer > div > button`).MustClick()
		}
		utils.Sleep(5)

		if newp.Timeout(common.ClickTimeOut).MustHasR(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__body.t-dialog__body--icon`, "您符合简易申报条件，是否确定简易申报？") {
			//取消
			newp.Timeout(common.ClickTimeOut).MustSearch(`取消`).MustClick()
			utils.Sleep(3)
		}

		if newp.Timeout(common.ClickTimeOut).MustHas(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__header > div`) {
			newp.Timeout(common.ClickTimeOut).MustElement(`body > div.t-dialog__ctx.t-dialog__ctx--fixed > div.t-dialog__wrap > div > div > div.t-dialog__footer > div > button.t-button.t-button--variant-base.t-button--theme-default`).MustClick() //取消
		}
		qysdsDeclareDo(ctx, newp, info, A200000, a7, a8, a13, task)
	})
	if err != nil {
		task.Result.BusinessStatus = variable.TaxFail
		task.Result.BusinessLog = common.HandleError(ctx, err).Error()
		return
	}
}

func qysdsDeclareDo(ctx context.Context, newp *rod.Page, info models.CompanyInfo, A200000 sb.GsTaxQuarter, a7 []sb.GsTaxQuarterFb1, a8 []sb.GsTaxQuarterFb2, a13 []sb.GsTaxQuarterFb3, task *models.TaxTask) {
	err := rod.Try(func() {
		curperiodFl := common.StrToFloat(info.Period[4:])
		//判断当前第几季度   按季度填报信息
		jd := 0
		i := 0
		var jccyrs string //季初从业人数
		var jmcyrs string //季末从业人数
		var jczcze string //季初资产总额
		var jmzcze string //季末资产总额
		err2 := checkQysds20000(newp, A200000, curperiodFl)
		if err2 != nil {
			return
		}

		if math.Ceil(curperiodFl/3) == 1 {
			jd = 1
			i = 1
			jccyrs = A200000.Qccyrs1
			jmcyrs = A200000.Qmcyrs1
			jczcze = A200000.Qczcze1
			jmzcze = A200000.Qmzcze1
		}
		if math.Ceil(curperiodFl/3) == 2 {
			jd = 2
			i = 3
			jccyrs = A200000.Qccyrs2
			jmcyrs = A200000.Qmcyrs2
			jczcze = A200000.Qczcze2
			jmzcze = A200000.Qmzcze2
		}
		if math.Ceil(curperiodFl/3) == 3 {
			jd = 3
			i = 5
			jccyrs = A200000.Qccyrs3
			jmcyrs = A200000.Qmcyrs3
			jczcze = A200000.Qczcze3
			jmzcze = A200000.Qmzcze3
		}
		if math.Ceil(curperiodFl/3) == 4 {
			jd = 4
			i = 7
			jccyrs = A200000.Qccyrs4
			jmcyrs = A200000.Qmcyrs4
			jczcze = A200000.Qczcze4
			jmzcze = A200000.Qmzcze4
		}
		fmt.Println(jd)
		var arr []string
		if common.StrToFloat(jczcze) <= 0 {
			arr = append(arr, `季初资产总额必须大于0`)
		}
		if common.StrToFloat(jmzcze) <= 0 {
			arr = append(arr, `季末资产总额必须大于0`)
		}
		if common.StrToFloat(jccyrs) <= 0 {
			arr = append(arr, `季初从业人数必须大于0`)
		}
		if common.StrToFloat(jmcyrs) <= 0 {
			arr = append(arr, `季末从业人数必须大于0`)
		}
		if len(arr) != 0 {
			panic(taxerr.NewUserV3(strings.Join(arr, `;`), "请核实后重试"))
		}
		//
		common.Input(newp, `(//td[contains(text(), "从业人数")]/..//input)[`+common.IntToStr(i)+`]`, jccyrs)
		common.Input(newp, `(//td[contains(text(), "从业人数")]/..//input)[`+common.IntToStr(i+1)+`]`, jmcyrs)

		common.Input(newp, `(//td[contains(text(), "资产总额（万元）")]/..//input)[`+common.IntToStr(i)+`]`, jczcze)
		common.Input(newp, `(//td[contains(text(), "资产总额（万元）")]/..//input)[`+common.IntToStr(i+1)+`]`, jmzcze)
		//失去焦距后后会有弹窗
		newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`//td[contains(text(), "从业人数")]`).MustClick()
		utils.Sleep(1)
		if common.MustHas(newp, `//div[text()="您申报的资产总额同资产负债表数据不一致，请确认填报的单位是否为万元，数据填报是否准确。"]`) {
			common.MustElementX(newp, `//div[text()="您申报的资产总额同资产负债表数据不一致，请确认填报的单位是否为万元，数据填报是否准确。"]/..//button/span`).MustClick()
			utils.Sleep(2)
		}
		//资产总额填报单位是万元，币种为人民币。请您确认填写的是否正确
		if newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustHas(`div[class="layui-layer-title"]`) {
			//
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`a[class="layui-layer-btn0"]`).MustClick()
		}

		if A200000.Xzhy == 1 { //1是0否  是否限制行业
			wait1 := newp.MustWaitRequestIdle()
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElement(`#viewCtrlId > div:nth-child(8) > table:nth-child(2) > tbody > tr:nth-child(6) > td.edit.left > label:nth-child(1) > input`).MustClick()
			wait1()
			if newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustHasR(`#layui-layer2 > div.layui-layer-btn.layui-layer-btn- > a.layui-layer-btn0`, "确定") {
				newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#layui-layer2 > div.layui-layer-btn.layui-layer-btn- > a.layui-layer-btn0`).MustClick()
			}
		}

		common.Input(newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame(), `//td[contains(text(), "营业收入")]/..//input`, A200000.Yysr)
		common.Input(newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame(), `//td[contains(text(), "营业成本")]/..//input`, A200000.Yycb)
		common.Input(newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame(), `//td[contains(text(), "利润总额")]/..//input`, A200000.Lrze)
		common.Input(newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame(), `//td[contains(text(), "加：特定业务计算的应纳税所得额")]/..//input`, A200000.Tdywjsdynssde)
		common.Input(newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame(), `//td[contains(text(), "减：不征税收入")]/..//input`, A200000.Bzssr)

		//a7
		var g int
		for _, v1 := range a7 {
			if v1.Status == 1 {
				g = 1
				break
			}
		}

		if g == 1 {
			wait3 := newp.MustWaitRequestIdle()
			//填写优惠事项
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`(//a[contains(text(), "减：免税收入、减计收入、加计扣除")]/..//a)[2]`).MustClick()
			wait3()
			for kk := range a7 {
				if a7[kk].Code != "" {
					if has, el, _ := newp.HasX(fmt.Sprintf("(//td[contains(text(),'%s')]/../td/input)[2]", a7[kk].Code)); has {
						inputStr(el, a7[kk].Amount)
					}
				}
			} //确认 保存
			MustElementX(newp, `//a[contains(text(),"确定")]`).MustClick()
		}
		//a8
		g1 := false
		for _, vv := range a8 {
			if vv.Status == 1 {
				g1 = true
				break
			}
		}
		//g1 = true
		if g1 {
			wait5 := newp.MustWaitRequestIdle()
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`(//a[contains(text(), "减：所得减免")]/..//a)[2]`).MustClick()
			wait5()
			for kk := range a8 {
				if a8[kk].Code != "" {
					if has, el, _ := newp.HasX(fmt.Sprintf("(//td[contains(text(),'%s')]/..//input)[2]", a8[kk].Code)); has {
						inputStr(el, a8[kk].Amount)
					}
				}
			}
			//确认 保存
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`//a[contains(text(),"确定")]`).MustClick()
		}
		//数据对比 //弥补以前年度亏损
		sjmbyqndks := newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`//td[contains(text(), "减：弥补以前年度亏损")]/..//input`).MustText()
		if common.StrToFloat(sjmbyqndks) != common.StrToFloat(A200000.Mbyqndks) { //弥补以前年度亏损
			panic(taxerr.NewUserV3(`弥补以前年度亏损税局为`+sjmbyqndks, "请核实后重试"))
		}
		//第10行大于0 再填写13行优惠事项
		mustText10 := newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`(//td[contains(text(), "实际利润额")]/..//input)[1]`).MustText()
		if common.StrToFloat(mustText10) > 0 {
			//填写优惠事项
			wait13 := newp.MustWaitRequestIdle()
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`(//a[contains(text(), "减：减免所得税额")]/..//a)[2]`).MustClick()
			utils.Sleep(1)
			wait13()
			for kk := range a13 {
				if common.StrToFloat(a13[kk].Amount) > 0 && a13[kk].Code == "JMSE99999" { //只有其他能填
					if has, el, _ := newp.HasX(`(//td[contains(text(), "JMSE99999")]/..//input)[2]`); has {
						inputStr(el, a13[kk].Amount)
					}
					//newp.MustElementX("(//td[contains(text()," + a13[kk].Code + ")]/..//input)[2]").MustInput(a13[kk].Amount)
				}
			}
			// 保存
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`#frmSheet`).MustFrame().MustElementX(`//a[contains(text(),"确定")]`).MustClick()
		}

		//报表列表
		if newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustHas(`body > div.TableMain > table > tbody > tr > td.biao_leftmenu > div > table > tbody > tr > td.dropdownBtn > span > i`) {
			newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`body > div.TableMain > table > tbody > tr > td.biao_leftmenu > div > table > tbody > tr > td.dropdownBtn > span > i`).MustClick()
		}
		utils.Sleep(1)
		//点击
		newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElementX(`//a[@title="《A201020固定资产加速折旧(扣除)优惠明细表》"]`).MustClick()
		utils.Sleep(2)
		//提交申报
		newp.Timeout(common.ClickTimeOut).MustElement(`#page-content > div > section > main > div > div > div > div.gt-layout-footerbar > div > div > div > div > div > div.fxgt-wrap-submitfooter-right > div > div:nth-child(2) > button > span`).MustClick()
		//如果有错误
		if newp.MustHas(`body > section > section > section > main > div > div > div > div > div.gt-layout-footerbar > div > div.gov-validate-dialog > div > div.gov-validate-dialog-content > ul > li > span`) {
			text := newp.MustElement(`body > section > section > section > main > div > div > div > div > div.gt-layout-footerbar > div > div.gov-validate-dialog > div > div.gov-validate-dialog-content > ul > li > span`).MustText()
			panic(taxerr.NewUserV3(text, "请核实后重试"))
		}

		if newp.MustHasX(`//div[@class="t-dialog__body t-dialog__body__icon"]`) {
			text := newp.MustElementX(`//div[@class="t-dialog__body t-dialog__body__icon"]`).MustText()
			if strings.Contains(text, "不符") {
				panic(taxerr.NewUserV3(text, "请核实后重试"))
			}
		}
		if newp.MustHasX(`//div[@class="drawer-body"]//li`) && newp.MustElementX(`//div[@class="drawer-body"]//li`).MustVisible() {
			elementsX := newp.MustElementsX(`//div[@class="drawer-body"]//li`)
			text := ""
			for _, e := range elementsX {
				text += e.MustElement(`p`).MustText()
			}
			panic(taxerr.NewUserV3(text, "请核实后重试"))
		}
		utils.Sleep(3)
		if newp.MustHasX(`//span[text()="核实无误，提交申报"]`) {
			MustElementX(newp, `//span[text()="核实无误，提交申报"]`).MustClick()
		}
		//确认 提交申报
		//if newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustHas(`//div[text()="提示"]`) {
		//}
		MustElementX(newp, `//a[contains(text(),"提交申报")]`).MustClick()
		//newp.Timeout(common.ClickTimeOut).MustElement(`#frmFrame`).MustFrame().MustElement(`#frmMain`).MustFrame().MustElement(`//a[contains(text(),"提交申报")]`).MustClick()
		utils.Sleep(3)
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='真']`).MustClick()
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='真']`).MustInput("真")
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='实']`).MustClick()
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='实']`).MustInput("实")
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='责']`).MustClick()
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='责']`).MustInput("责")
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='任']`).MustClick()
		newp.Timeout(common.ClickTimeOut).MustElementX(`//input[@placeholder='任']`).MustInput("任")

		newp.Timeout(common.ClickTimeOut).MustElementX(`//span[contains(text(),"确定")]`).MustClick()

		text := newp.Timeout(10 * common.ClickTimeOut).MustElementX(`//div[@class="gt-result-title"]`).MustText()

		path := SaveErrImg(newp, info)
		task.Result.BusinessImg = path
		task.Result.BusinessLog = text
	})
	if err != nil {
		task.Result.BusinessStatus = variable.TaxFail
		task.Result.BusinessLog = common.HandleError(ctx, err).Error()
		return
	}
}

func checkQysds20000(page *rod.Page, A200000 sb.GsTaxQuarter, curperiodFl float64) error {
	jd := math.Ceil(curperiodFl / 3)
	errMsg := ""
	for i := 0; i < 5; i++ {
		x := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[1]`)
		readonly := x.MustAttribute("readonly")
		if readonly == nil && x.MustText() == "" {
			time.Sleep(5 * time.Second)
		} else {
			break
		}
	}
	if jd > 1 && MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[1]`).MustAttribute("readonly") == nil {
		jccyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[1]`).MustText()
		if common.StrToFloat(jccyrs) != common.StrToFloat(A200000.Qccyrs1) {
			errMsg += fmt.Sprintf("一季度季初从业人数[%s]与系统[%s]不符 , ", jccyrs, A200000.Qccyrs1)
		}
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[2]`).MustText()
		if common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qmcyrs1) {
			errMsg += fmt.Sprintf("一季度季末从业人数[%s]与系统[%s]不符 , ", jmcyrs, A200000.Qmcyrs1)
		}

		jczcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[1]`).MustText()
		if common.StrToFloat(jczcze) != common.StrToFloat(A200000.Qczcze1) {
			errMsg += fmt.Sprintf("一季度季初资产总额（万元）[%s]与系统[%s]不符 , ", jczcze, A200000.Qczcze1)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[2]`).MustText()
		if common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qmzcze1) {
			errMsg += fmt.Sprintf("一季度季末资产总额（万元）[%s]与系统[%s]不符 , ", jmzcze, A200000.Qmzcze1)
		}
	}

	if jd == 2 {
		jccyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[3]`).MustText()
		if common.StrToInt(jccyrs) != 0 && common.StrToFloat(jccyrs) != common.StrToFloat(A200000.Qccyrs2) {
			errMsg += fmt.Sprintf("一季度季末从业人数[%s]与系统二季度季初从业人数[%s]不符 , ", jccyrs, A200000.Qccyrs2)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[2]`).MustText()
		if common.StrToInt(jmzcze) != 0 && common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qczcze2) {
			errMsg += fmt.Sprintf("一季度季末资产总额（万元）[%s]与系统二季度季初资产总额（万元）[%s]不符 , ", jmzcze, A200000.Qczcze2)
		}
	}

	if jd > 2 && MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[3]`).MustAttribute("readonly") == nil {
		jccyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[3]`).MustText()
		if common.StrToFloat(jccyrs) != common.StrToFloat(A200000.Qccyrs2) {
			errMsg += fmt.Sprintf("二季度季初从业人数[%s]与系统[%s]不符 , ", jccyrs, A200000.Qccyrs2)
		}
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[4]`).MustText()
		if common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qmcyrs2) {
			errMsg += fmt.Sprintf("二季度季末从业人数[%s]与系统[%s]不符 , ", jmcyrs, A200000.Qmcyrs2)
		}

		jczcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[3]`).MustText()
		if common.StrToFloat(jczcze) != common.StrToFloat(A200000.Qczcze2) {
			errMsg += fmt.Sprintf("二季度季初资产总额（万元）[%s]与系统[%s]不符 , ", jczcze, A200000.Qczcze2)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[4]`).MustText()
		if common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qmzcze2) {
			errMsg += fmt.Sprintf("二季度季末资产总额（万元）[%s]与系统[%s]不符 , ", jmzcze, A200000.Qmzcze2)
		}
	}

	if jd == 3 {
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[4]`).MustText()
		if common.StrToInt(jmcyrs) != 0 && common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qccyrs3) {
			errMsg += fmt.Sprintf("二季度季末从业人数[%s]与系统三季度季初从业人数[%s]不符 , ", jmcyrs, A200000.Qccyrs3)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[4]`).MustText()
		if common.StrToInt(jmzcze) != 0 && common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qczcze3) {
			errMsg += fmt.Sprintf("二季度季末资产总额（万元）[%s]与系统三季度季初资产总额（万元）[%s]不符 , ", jmzcze, A200000.Qczcze3)
		}
	}
	if jd > 3 && MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[5]`).MustAttribute("readonly") == nil {
		jccyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[5]`).MustText()
		if common.StrToFloat(jccyrs) != common.StrToFloat(A200000.Qccyrs3) {
			errMsg += fmt.Sprintf("三季度季初从业人数[%s]与系统[%s]不符 , ", jccyrs, A200000.Qccyrs3)
		}
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[6]`).MustText()
		if common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qmcyrs3) {
			errMsg += fmt.Sprintf("三季度季末从业人数[%s]与系统[%s]不符 , ", jmcyrs, A200000.Qmcyrs3)
		}

		jczcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[5]`).MustText()
		if common.StrToFloat(jczcze) != common.StrToFloat(A200000.Qczcze3) {
			errMsg += fmt.Sprintf("三季度季初资产总额（万元）[%s]与系统[%s]不符 , ", jczcze, A200000.Qczcze3)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[6]`).MustText()
		if common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qmzcze3) {
			errMsg += fmt.Sprintf("三季度季末资产总额（万元）[%s]与系统[%s]不符 , ", jmzcze, A200000.Qmzcze3)
		}
	}

	if jd == 4 {
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[6]`).MustText()
		if common.StrToInt(jmcyrs) != 0 && common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qccyrs4) {
			errMsg += fmt.Sprintf("三季度季末从业人数[%s]与系统四季度季初从业人数[%s]不符 , ", jmcyrs, A200000.Qccyrs4)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[6]`).MustText()
		if common.StrToInt(jmzcze) != 0 && common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qczcze4) {
			errMsg += fmt.Sprintf("三季度季末资产总额（万元）[%s]与系统四季度季初资产总额（万元）[%s]不符 , ", jmzcze, A200000.Qczcze4)
		}
	}
	if jd > 4 {
		jccyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[7]`).MustText()
		if common.StrToFloat(jccyrs) != common.StrToFloat(A200000.Qccyrs4) {
			errMsg += fmt.Sprintf("四季度季初从业人数[%s]与系统[%s]不符 , ", jccyrs, A200000.Qccyrs4)
		}
		jmcyrs := MustElementX(page, `(//td[contains(text(), "从业人数")]/..//input)[8]`).MustText()
		if common.StrToFloat(jmcyrs) != common.StrToFloat(A200000.Qmcyrs4) {
			errMsg += fmt.Sprintf("四季度季末从业人数[%s]与系统[%s]不符 , ", jmcyrs, A200000.Qmcyrs4)
		}

		jczcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[7]`).MustText()
		if common.StrToFloat(jczcze) != common.StrToFloat(A200000.Qczcze4) {
			errMsg += fmt.Sprintf("四季度季初资产总额（万元）[%s]与系统[%s]不符 , ", jczcze, A200000.Qczcze4)
		}
		jmzcze := MustElementX(page, `(//td[contains(text(), "资产总额（万元）")]/..//input)[8]`).MustText()
		if common.StrToFloat(jmzcze) != common.StrToFloat(A200000.Qmzcze4) {
			errMsg += fmt.Sprintf("四季度季末资产总额（万元）[%s]与系统[%s]不符 , ", jmzcze, A200000.Qmzcze4)
		}
	}
	if errMsg != "" {
		return taxerr.NewUserV3("季报数据不一致: "+errMsg, "请核实后重试")
	}
	return nil
}
