csx 2 年 前
コミット
81edb7612f
共有1 個のファイルを変更した148 個の追加142 個の削除を含む
  1. 148 142
      service/sh_service.go

+ 148 - 142
service/sh_service.go ファイルの表示

@@ -1,8 +1,13 @@
1 1
 package service
2 2
 
3 3
 import (
4
+	"IC/models"
5
+	"IC/utils"
4 6
 	"fmt"
5 7
 	"regexp"
8
+	"strconv"
9
+	"strings"
10
+	"time"
6 11
 	"unicode"
7 12
 )
8 13
 
@@ -67,132 +72,133 @@ func (KMResult) TableName() string {
67 72
 func GetSHResultDataInsertDB(org_id int64) (result []*KMResult) {
68 73
 	record, _ := GetLastSyncResultRecord(org_id)
69 74
 	fmt.Println(record)
70
-	//if record.ID == 0 {
71
-	//	list, err := GetSHResultRecord()
72
-	//	if err == nil {
73
-	//		fmt.Println(list)
74
-	//
75
-	//		//插入到系统检验检查数据
76
-	//		for _, item := range list {
77
-	//			project_id := int64(0)
78
-	//			if len(item.FIDCardNo) > 0 {
79
-	//				project_id, _ = GetShjhProjectID(org_id, item.FCompoundItemName)
80
-	//			} else {
81
-	//				continue
82
-	//			}
83
-	//			printInfo, _ := GetPatientsInfoByIDCardNo(item.FIDCardNo, 10215)
84
-	//
85
-	//			if printInfo.ID == 0 {
86
-	//				fmt.Println(item)
87
-	//				fmt.Println(printInfo)
88
-	//				fmt.Println("暂无该患者")
89
-	//				continue
90
-	//			}
91
-	//
92
-	//			item_id, _ := GetShItemID(org_id, item.FCompoundItemName, item.FSingleItemName, project_id)
93
-	//
94
-	//			tx := writeMiddleDb.Begin()
95
-	//			var inspection models.MiddleInspection
96
-	//			var inspection_reference models.MiddleInspectionReference
97
-	//
98
-	//			recordDateStr := ""
99
-	//			//inspect_date := item.FRecordTime.Format("2006-01-02 15:04")
100
-	//
101
-	//			recordDateStr = item.FRecordTime
102
-	//			date, _ := utils.ParseTimeStringToTime("2006-01-02 15:04", recordDateStr)
103
-	//			record_date, _ := utils.ParseTimeStringToTime("2006-01-02", date.Format("2006-01-02"))
104
-	//			var total int
105
-	//			var RangeOptions string
106
-	//			var RangeMin string
107
-	//			var RangeMax string
108
-	//			// 判断检查类型
109
-	//			var ItemType int
110
-	//			if IsChineseChar(item.FReference) || strings.Contains(item.FReference, "|") || strings.Contains(item.FReference, "≤") {
111
-	//				ItemType = 2
112
-	//			} else {
113
-	//				if strings.Contains(item.FReference, "-") {
114
-	//					ItemType = 1
115
-	//				} else {
116
-	//					ItemType = 2
117
-	//				}
118
-	//			}
119
-	//
120
-	//			if ItemType == 1 {
121
-	//				Range := strings.Split(item.FReference, "-")
122
-	//				RangeMin = Range[0]
123
-	//				RangeMax = Range[1]
124
-	//			} else {
125
-	//				RangeOptions = item.FReference
126
-	//			}
127
-	//
128
-	//			err = readMiddleDb.Model(&models.MiddleInspectionReference{}).Where("org_id = ? and project_id = ? and item_id = ? and status = 1", org_id, project_id, item_id).Find(&inspection_reference).Count(&total).Error
129
-	//			if inspection_reference.ID > 0 {
130
-	//				ItemType = inspection_reference.RangeType
131
-	//			}
132
-	//			if total <= 0 {
133
-	//				inspection_reference.OrgId = org_id
134
-	//				inspection_reference.ProjectName = item.FCompoundItemName
135
-	//				inspection_reference.Project = item.FCompoundItemName
136
-	//				inspection_reference.ProjectId = project_id
137
-	//				inspection_reference.ItemName = item.FSingleItemName
138
-	//				inspection_reference.ItemNameAddition = ""
139
-	//				inspection_reference.ItemId = item_id
140
-	//				inspection_reference.RangeType = ItemType
141
-	//				inspection_reference.RangeMin = RangeMin
142
-	//				inspection_reference.RangeMax = RangeMax
143
-	//				inspection_reference.RangeOptions = RangeOptions
144
-	//				inspection_reference.Unit = item.FUnit
145
-	//				inspection_reference.Status = 1
146
-	//				inspection_reference.CreatedTime = time.Now().Unix()
147
-	//				inspection_reference.UpdatedTime = time.Now().Unix()
148
-	//				inspection_reference.InspectDate = item.FCheckTime
149
-	//				inspection_reference.UTime = item.FCheckTime
150
-	//				err = tx.Model(&models.MiddleInspectionReference{}).Create(&inspection_reference).Error
151
-	//				if err != nil {
152
-	//					tx.Rollback()
153
-	//				}
154
-	//			}
155
-	//
156
-	//			var itotal int
157
-	//			err = readMiddleDb.Model(&models.MiddleInspection{}).Where("org_id = ? and project_id = ? and item_id = ? and record_date = ? and patient_id = ?  and status = 1", org_id, project_id, item_id, record_date.Unix(), printInfo.ID).Find(&inspection).Count(&itotal).Error
158
-	//			if itotal <= 0 {
159
-	//				inspection.PatientId = printInfo.ID
160
-	//				inspection.OrgId = org_id
161
-	//				inspection.ProjectId = project_id
162
-	//				inspection.ItemName = inspection_reference.ItemName
163
-	//				inspection.ProjectName = inspection_reference.ProjectName
164
-	//				inspection.InspectType = ItemType
165
-	//				inspection.ItemId = item_id
166
-	//				inspection.InspectValue = item.FResult
167
-	//				inspection.InspectDate = item.FCheckTime
168
-	//				inspection.RecordDate = record_date.Unix()
169
-	//				inspection.Status = 1
170
-	//				inspection.CreatedTime = time.Now().Unix()
171
-	//				inspection.UpdatedTime = time.Now().Unix()
172
-	//				inspection.UTime = item.FCheckTime
173
-	//				inspection.HisUserId = strconv.FormatInt(printInfo.ID, 10)
174
-	//				err = tx.Model(&models.MiddleInspection{}).Create(&inspection).Error
175
-	//				if err != nil {
176
-	//					tx.Rollback()
177
-	//				}
178
-	//			}
179
-	//
180
-	//			tx.Commit()
181
-	//
182
-	//		}
183
-	//		//插入一条查询检验检查结果记录状态数据
184
-	//		var info LisSyncResultStatusInfo
185
-	//		info.Ctime = time.Now().Unix()
186
-	//		info.Status = 1
187
-	//		info.Mtime = time.Now().Unix()
188
-	//		info.OrgId = org_id
189
-	//		info.IsResult = 1
190
-	//		info.LastId = int64(len(list))
191
-	//		info.ResultDate = time.Now().Unix()
192
-	//		writeMiddleDb.Save(&info)
193
-	//	}
194
-	//
195
-	//} else
75
+	if record.ID == 0 {
76
+		list, err := GetSHResultRecord()
77
+		if err == nil {
78
+			fmt.Println(list)
79
+
80
+			//插入到系统检验检查数据
81
+			for _, item := range list {
82
+				project_id := int64(0)
83
+				if len(item.FIDCardNo) > 0 {
84
+					project_id, _ = GetShjhProjectID(org_id, item.FCompoundItemName)
85
+				} else {
86
+					continue
87
+				}
88
+				printInfo, _ := GetPatientsInfoByIDCardNo(item.FIDCardNo, 10215)
89
+
90
+				if printInfo.ID == 0 {
91
+					fmt.Println(item)
92
+					fmt.Println(printInfo)
93
+					fmt.Println("暂无该患者")
94
+					continue
95
+				}
96
+
97
+				item_id, _ := GetShItemID(org_id, item.FCompoundItemName, item.FSingleItemName, project_id)
98
+
99
+				tx := writeMiddleDb.Begin()
100
+				var inspection models.MiddleInspection
101
+				var inspection_reference models.MiddleInspectionReference
102
+
103
+				recordDateStr := ""
104
+				//inspect_date := item.FRecordTime.Format("2006-01-02 15:04")
105
+
106
+				recordDateStr = item.FRecordTime
107
+				date, _ := utils.ParseTimeStringToTime("2006-01-02 15:04", recordDateStr)
108
+				record_date, _ := utils.ParseTimeStringToTime("2006-01-02", date.Format("2006-01-02"))
109
+				var total int
110
+				var RangeOptions string
111
+				var RangeMin string
112
+				var RangeMax string
113
+				// 判断检查类型
114
+				var ItemType int
115
+				if IsChineseChar(item.FReference) || strings.Contains(item.FReference, "|") || strings.Contains(item.FReference, "≤") {
116
+					ItemType = 2
117
+				} else {
118
+					if strings.Contains(item.FReference, "-") {
119
+						ItemType = 1
120
+					} else {
121
+						ItemType = 2
122
+					}
123
+				}
124
+
125
+				if ItemType == 1 {
126
+					Range := strings.Split(item.FReference, "-")
127
+					RangeMin = Range[0]
128
+					RangeMax = Range[1]
129
+				} else {
130
+					RangeOptions = item.FReference
131
+				}
132
+
133
+				err = readMiddleDb.Model(&models.MiddleInspectionReference{}).Where("org_id = ? and project_id = ? and item_id = ? and status = 1", org_id, project_id, item_id).Find(&inspection_reference).Count(&total).Error
134
+				if inspection_reference.ID > 0 {
135
+					ItemType = inspection_reference.RangeType
136
+				}
137
+				if total <= 0 {
138
+					inspection_reference.OrgId = org_id
139
+					inspection_reference.ProjectName = item.FCompoundItemName
140
+					inspection_reference.Project = item.FCompoundItemName
141
+					inspection_reference.ProjectId = project_id
142
+					inspection_reference.ItemName = item.FSingleItemName
143
+					inspection_reference.ItemNameAddition = ""
144
+					inspection_reference.ItemId = item_id
145
+					inspection_reference.RangeType = ItemType
146
+					inspection_reference.RangeMin = RangeMin
147
+					inspection_reference.RangeMax = RangeMax
148
+					inspection_reference.RangeOptions = RangeOptions
149
+					inspection_reference.Unit = item.FUnit
150
+					inspection_reference.Status = 1
151
+					inspection_reference.CreatedTime = time.Now().Unix()
152
+					inspection_reference.UpdatedTime = time.Now().Unix()
153
+					inspection_reference.InspectDate = item.FCheckTime
154
+					inspection_reference.UTime = item.FCheckTime
155
+					err = tx.Model(&models.MiddleInspectionReference{}).Create(&inspection_reference).Error
156
+					if err != nil {
157
+						tx.Rollback()
158
+					}
159
+				}
160
+
161
+				var itotal int
162
+				err = readMiddleDb.Model(&models.MiddleInspection{}).Where("org_id = ? and project_id = ? and item_id = ? and record_date = ? and patient_id = ?  and status = 1", org_id, project_id, item_id, record_date.Unix(), printInfo.ID).Find(&inspection).Count(&itotal).Error
163
+				if itotal <= 0 {
164
+					inspection.PatientId = printInfo.ID
165
+					inspection.OrgId = org_id
166
+					inspection.ProjectId = project_id
167
+					inspection.ItemName = inspection_reference.ItemName
168
+					inspection.ProjectName = inspection_reference.ProjectName
169
+					inspection.InspectType = ItemType
170
+					inspection.ItemId = item_id
171
+					inspection.InspectValue = item.FResult
172
+					inspection.InspectDate = item.FCheckTime
173
+					inspection.RecordDate = record_date.Unix()
174
+					inspection.Status = 1
175
+					inspection.CreatedTime = time.Now().Unix()
176
+					inspection.UpdatedTime = time.Now().Unix()
177
+					inspection.UTime = item.FCheckTime
178
+					inspection.HisUserId = strconv.FormatInt(printInfo.ID, 10)
179
+					err = tx.Model(&models.MiddleInspection{}).Create(&inspection).Error
180
+					if err != nil {
181
+						tx.Rollback()
182
+					}
183
+				}
184
+
185
+				tx.Commit()
186
+
187
+			}
188
+			//插入一条查询检验检查结果记录状态数据
189
+			var info LisSyncResultStatusInfo
190
+			info.Ctime = time.Now().Unix()
191
+			info.Status = 1
192
+			info.Mtime = time.Now().Unix()
193
+			info.OrgId = org_id
194
+			info.IsResult = 1
195
+			info.LastId = int64(len(list))
196
+			info.ResultDate = time.Now().Unix()
197
+			writeMiddleDb.Save(&info)
198
+		}
199
+
200
+	}
201
+	//else
196 202
 	//{
197 203
 	//	if record.LastId != 0 {
198 204
 	//		list, err := GetResultRecordByID(record.LastId)
@@ -322,22 +328,22 @@ func GetSHResultDataInsertDB(org_id int64) (result []*KMResult) {
322 328
 	//
323 329
 	//}
324 330
 	//
325
-	//// 第一步:跟进org_id 去中间库查出需要同步的数据
326
-	//inspection_references, _ := GetSyncInspectionReferenceByOrgId(org_id)
327
-	//inspections, _ := GetSyncInspectionByOrgId(org_id)
328
-	//
329
-	//// 第二步:将数据同步到业务库
330
-	//if len(inspection_references) > 0 {
331
-	//	for _, inspection_reference := range inspection_references {
332
-	//		SyncInspectionReference(&inspection_reference)
333
-	//	}
334
-	//}
335
-	//
336
-	//if len(inspections) > 0 {
337
-	//	for _, inspection := range inspections {
338
-	//		SyncInspection(&inspection)
339
-	//	}
340
-	//}
331
+	// 第一步:跟进org_id 去中间库查出需要同步的数据
332
+	inspection_references, _ := GetSyncInspectionReferenceByOrgId(org_id)
333
+	inspections, _ := GetSyncInspectionByOrgId(org_id)
334
+
335
+	// 第二步:将数据同步到业务库
336
+	if len(inspection_references) > 0 {
337
+		for _, inspection_reference := range inspection_references {
338
+			SyncInspectionReference(&inspection_reference)
339
+		}
340
+	}
341
+
342
+	if len(inspections) > 0 {
343
+		for _, inspection := range inspections {
344
+			SyncInspection(&inspection)
345
+		}
346
+	}
341 347
 	return
342 348
 
343 349
 }