2
3
Quellcode durchsuchen

老数据同步sql语句优化

baichengfei vor 5 Jahren
Ursprung
Commit
eb8da216f3

+ 3 - 4
src/dashoo.cn/backend/api/business/oilsupplier/suppliercert/oilsuppliercertService.go

@@ -4,19 +4,18 @@ import (
 	"dashoo.cn/backend/api/business/auditsetting"
 	"dashoo.cn/backend/api/business/oilsupplier/classorgsetting"
 	"dashoo.cn/backend/api/business/oilsupplier/supplier"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
 	"dashoo.cn/backend/api/business/oilsupplier/supplierfile"
 	"dashoo.cn/backend/api/business/oilsupplier/supplierscenefile"
 	"dashoo.cn/backend/api/business/workflow"
+	. "dashoo.cn/backend/api/mydb"
 	baseparameter "dashoo.cn/business2/parameter"
 	"dashoo.cn/business2/userRole"
 	"dashoo.cn/utils"
 	"fmt"
+	"github.com/go-xorm/xorm"
 	"strconv"
 	"strings"
-
-	"dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
-	. "dashoo.cn/backend/api/mydb"
-	"github.com/go-xorm/xorm"
 )
 
 type OilSupplierCertService struct {

+ 49 - 6
src/dashoo.cn/backend/api/business/tmpzcgf/tmpzcgfSession.go

@@ -3,6 +3,8 @@ package tmpzcgf
 import (
 	. "dashoo.cn/backend/api/mydb"
 	"github.com/go-xorm/xorm"
+	"math"
+	"strconv"
 )
 
 /** type TmpzcgtSession struct {
@@ -327,12 +329,29 @@ func (s *TmpzcgtSession) InsertOilSupplierCertAppend() error {
 	//	"企业名称 as SupplierName, 录入员 as CreateBy, 推荐单位编码 as RecUnitId, 申请日期 as ApplyDate "+
 	//	"from tmp_zengxiang "+
 	//	"group by id,申请日期,企业名称,录入员,推荐单位编码,申请日期,准入类别"
-	sql := "INSERT INTO OilSupplierCertAppend " +
-		"(Status,CreateOn,SupplierName,AppendType,CreateBy,ApplyDate,OldId) " +
-		"SELECT '11' as Status, a.`申请日期` AS CreateOn, a.`企业名称` AS SupplierName, (CASE 准入类别 WHEN '物资类' THEN '01' WHEN '基建类' THEN '02' WHEN '服务类' THEN '03' END) AppendType, " +
-		"'导入' AS CreateBy,a.`申请日期` AS ApplyDate, MAX(a.id) AS OldId " +
-		"FROM tmp_zengxiang a WHERE 企业名称 != '' GROUP BY a.`申请日期`, a.`企业名称`, a.`准入类别`"
-	_, err := s.DBE.Query(sql)
+	countSql := "SELECT count(*) from (select a.申请日期 from tmp_zengxiang a WHERE 企业名称 != '' GROUP BY a.`申请日期`, a.`企业名称`, a.`准入类别`) b"
+	countStr, err := s.DBE.Query(countSql)
+	var total int64
+	if len(countStr) > 0 {
+		results := countStr[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+		n := math.Ceil(float64(total) / 200)
+		for i:=0; i <= int(n); i++ {
+			start := strconv.Itoa(i * 200)
+			end := strconv.Itoa(200)
+			sql := "INSERT INTO OilSupplierCertAppend " +
+				"(Status,CreateOn,SupplierName,AppendType,CreateBy,ApplyDate,OldId) " +
+				"SELECT '11' as Status, a.`申请日期` AS CreateOn, a.`企业名称` AS SupplierName, (CASE 准入类别 WHEN '物资类' THEN '01' WHEN '基建类' THEN '02' WHEN '服务类' THEN '03' END) AppendType, " +
+				"'导入' AS CreateBy,a.`申请日期` AS ApplyDate, MAX(a.id) AS OldId " +
+				"FROM tmp_zengxiang a WHERE 企业名称 != '' GROUP BY a.`申请日期`, a.`企业名称`, a.`准入类别` ORDER BY a.`申请日期`, a.`准入类别`, a.`准入类别` " +
+				"limit " + start + "," +  end
+			_, err = s.DBE.Query(sql)
+		}
+	}
+
 	return err
 }
 
@@ -355,8 +374,32 @@ func (s *TmpzcgtSession) InsertOilInfoChange() error {
 func (s *TmpzcgtSession) InsertOilSupplierCertSub() error {
 	sql := "insert into OilSupplierCertSub (ModifiedBy,Type, OldId, SupplierTypeCode, Code, Name, Remark, CreateOn, CreateBy) " +
 		"select 企业名称 as ModifiedBy,'3' as Type, id as OldId, ( case 准入类别 when '物资类' then '01' when '基建类' then '02' when '服务类' then '03' end ) SupplierTypeCode, 物资编码 as Code, 产品名称 as Name, 备注 as Remark, 申请日期 as CreateOn, 录入员 as CreateBy " +
+		"ORDER BY a.`申请日期`, a.`准入类别`, a.`准入类别` " +
 		"from tmp_zengxiang "
 	_, err := s.DBE.Query(sql)
+	//return err
+
+	countSql := "SELECT count(*) from tmp_zengxiang"
+	countStr, err := s.DBE.Query(countSql)
+	var total int64
+	if len(countStr) > 0 {
+		results := countStr[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+		n := math.Ceil(float64(total) / 200)
+		for i:=0; i <= int(n); i++ {
+			start := strconv.Itoa(i * 200)
+			end := strconv.Itoa(200)
+			sql := "insert into OilSupplierCertSub (ModifiedBy,Type, OldId, SupplierTypeCode, Code, Name, Remark, CreateOn, CreateBy) " +
+				"select 企业名称 as ModifiedBy,'3' as Type, id as OldId, ( case 准入类别 when '物资类' then '01' when '基建类' then '02' when '服务类' then '03' end ) SupplierTypeCode, 物资编码 as Code, 产品名称 as Name, 备注 as Remark, 申请日期 as CreateOn, 录入员 as CreateBy " +
+				"from tmp_zengxiang " +
+				"limit " + start + "," +  end
+			_, err = s.DBE.Query(sql)
+		}
+	}
+
 	return err
 }
 

+ 5 - 5
src/dashoo.cn/backend/api/controllers/tmpzcgf/tmpzcgf.go

@@ -864,14 +864,14 @@ func (this *TmpzcgfController) InsertAll() {
 	this.InsertFileName()
 	this.InsertCertSub() // 准入
 	this.UpdateOilSupplierCertSub()
-	//this.InsertOilSupplierCertAppend()
-	//this.UpdateOilSupplierCertAppend()
-	//this.InsertOilSupplierCertSub() //插入增项的准入范围
-	//this.UpdateCertSubIsType1() // 更新增项的准入范围
+	this.InsertOilSupplierCertAppend()
+	this.UpdateOilSupplierCertAppend()
+	this.InsertOilSupplierCertSub() //插入增项的准入范围
+	this.UpdateCertSubIsType1() // 更新增项的准入范围
 
 	this.CapacityExpansion() // 编码扩充
 	// 历史数据导入-由于运行到此处中断,上面的代码临时注释
-	//this.UpdateCertSubIsType3() // 更新增项的准入范围
+	//this.UpdateCertSubIsType3() // 更新增项的准入范围 弃用 2020年11月26日
 	this.InsterAnnualAudit()
 	this.UpdateAnnualAudit()
 	this.InsterOilPaymentInfo()