csx 2 vuotta sitten
vanhempi
commit
96e55da071

+ 1 - 0
.idea/XT_New.iml Näytä tiedosto

1
 <?xml version="1.0" encoding="UTF-8"?>
1
 <?xml version="1.0" encoding="UTF-8"?>
2
 <module type="WEB_MODULE" version="4">
2
 <module type="WEB_MODULE" version="4">
3
+  <component name="Go" enabled="true" />
3
   <component name="NewModuleRootManager">
4
   <component name="NewModuleRootManager">
4
     <content url="file://$MODULE_DIR$" />
5
     <content url="file://$MODULE_DIR$" />
5
     <orderEntry type="inheritedJdk" />
6
     <orderEntry type="inheritedJdk" />

+ 0 - 3
.idea/misc.xml Näytä tiedosto

3
   <component name="JavaScriptSettings">
3
   <component name="JavaScriptSettings">
4
     <option name="languageLevel" value="ES6" />
4
     <option name="languageLevel" value="ES6" />
5
   </component>
5
   </component>
6
-  <component name="RustProjectSettings">
7
-    <option name="toolchainHomeDirectory" value="$USER_HOME$/.cargo/bin" />
8
-  </component>
9
   <component name="SvnBranchConfigurationManager">
6
   <component name="SvnBranchConfigurationManager">
10
     <option name="myConfigurationMap">
7
     <option name="myConfigurationMap">
11
       <map>
8
       <map>

+ 1 - 1
conf/app.conf Näytä tiedosto

1
 appname = 血透
1
 appname = 血透
2
-httpport = 9529
2
+httpport = 9531
3
 runmode =dev
3
 runmode =dev
4
 #dev/prod
4
 #dev/prod
5
 
5
 

+ 173 - 39
controllers/mobile_api_controllers/dialysis_api_controller.go Näytä tiedosto

2159
 	template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id)
2159
 	template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id)
2160
 
2160
 
2161
 	//查询更改的机号,是否有人用了,如果只是排班了,但是没上机,直接替换,如果排班且上机了,就提示他无法上机
2161
 	//查询更改的机号,是否有人用了,如果只是排班了,但是没上机,直接替换,如果排班且上机了,就提示他无法上机
2162
+	//sch, _ := service.GetSourceSch(adminUserInfo.Org.Id, patientID, scheduleendTime)
2162
 
2163
 
2163
 	schedule, err := service.GetDayScheduleByBedid(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
2164
 	schedule, err := service.GetDayScheduleByBedid(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
2164
 
2165
 
2165
 	//查询该床位是否有人用了
2166
 	//查询该床位是否有人用了
2166
-	order, order_err := service.GetDialysisOrderByBedId(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
2167
+	order, _ := service.GetDialysisOrderByBedIdTwo(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
2167
 
2168
 
2168
 	if err == gorm.ErrRecordNotFound { //空床位
2169
 	if err == gorm.ErrRecordNotFound { //空床位
2169
 		// 修改了床位逻辑
2170
 		// 修改了床位逻辑
2189
 	} else if err == nil {
2190
 	} else if err == nil {
2190
 		if schedule.ID > 0 && schedule.DialysisOrder.ID == 0 { //有排班没上机记录
2191
 		if schedule.ID > 0 && schedule.DialysisOrder.ID == 0 { //有排班没上机记录
2191
 
2192
 
2192
-			if order_err == nil {
2193
-				if order.ID > 0 { //该机位被其他人占用了
2194
-					this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed)
2195
-					return
2196
-
2197
-				} else {
2198
-					daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID)
2199
-					if daySchedule.ID > 0 {
2200
-						//daySchedule.PartitionId = deviceNumber.ZoneID
2201
-						//daySchedule.BedId = bedID
2202
-						//daySchedule.ScheduleType = schedual_type
2203
-						//daySchedule.UpdatedTime = time.Now().Unix()
2204
-						//err := service.UpdateSchedule(&daySchedule)
2205
-						xtSchedule := models.Schedule{
2206
-							PartitionId:  deviceNumber.ZoneID,
2207
-							BedId:        bedID,
2208
-							ScheduleType: schedual_type,
2209
-							UpdatedTime:  time.Now().Unix(),
2210
-						}
2211
-						err := service.UpdateScheduleOne(daySchedule.ID, xtSchedule)
2212
-						if err != nil {
2213
-							this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2214
-							return
2215
-						}
2216
-					}
2217
-				}
2218
-			} else if order_err == gorm.ErrRecordNotFound { //该床位没被占用
2193
+			if order.ID > 0 { //该机位被其他人占用了
2194
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed)
2195
+				return
2196
+			} else { //2022-11-04 更变需求,如果改床位有排班,但是没上机,则进行互换床位操作
2219
 				daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID)
2197
 				daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID)
2220
 				if daySchedule.ID > 0 {
2198
 				if daySchedule.ID > 0 {
2221
 					//daySchedule.PartitionId = deviceNumber.ZoneID
2199
 					//daySchedule.PartitionId = deviceNumber.ZoneID
2223
 					//daySchedule.ScheduleType = schedual_type
2201
 					//daySchedule.ScheduleType = schedual_type
2224
 					//daySchedule.UpdatedTime = time.Now().Unix()
2202
 					//daySchedule.UpdatedTime = time.Now().Unix()
2225
 					//err := service.UpdateSchedule(&daySchedule)
2203
 					//err := service.UpdateSchedule(&daySchedule)
2226
-					xtSchedule := models.Schedule{
2227
-						PartitionId:  deviceNumber.ZoneID,
2228
-						BedId:        bedID,
2229
-						ScheduleType: schedual_type,
2230
-						UpdatedTime:  time.Now().Unix(),
2231
-					}
2232
-					err := service.UpdateScheduleOne(daySchedule.ID, xtSchedule)
2233
-					if err != nil {
2234
-						this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2235
-						return
2236
-					}
2204
+					//xtSchedule := models.Schedule{
2205
+					//	PartitionId:  deviceNumber.ZoneID,
2206
+					//	BedId:        bedID,
2207
+					//	ScheduleType: schedual_type,
2208
+					//	UpdatedTime:  time.Now().Unix(),
2209
+					//}
2210
+					//err := service.UpdateScheduleOne(daySchedule.ID, xtSchedule)
2211
+					service.UpdateScheduleTwo(daySchedule, schedule)
2212
+
2237
 				}
2213
 				}
2238
 			}
2214
 			}
2239
 		} else if schedule.ID > 0 && schedule.DialysisOrder.ID > 0 { //有排班且有上机记录
2215
 		} else if schedule.ID > 0 && schedule.DialysisOrder.ID > 0 { //有排班且有上机记录
2240
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed)
2216
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed)
2241
 			return
2217
 			return
2242
 		}
2218
 		}
2219
+		//else if order.ID == 0 { //该床位没被占用
2220
+		//	daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID)
2221
+		//	if daySchedule.ID > 0 {
2222
+		//		//daySchedule.PartitionId = deviceNumber.ZoneID
2223
+		//		//daySchedule.BedId = bedID
2224
+		//		//daySchedule.ScheduleType = schedual_type
2225
+		//		//daySchedule.UpdatedTime = time.Now().Unix()
2226
+		//		//err := service.UpdateSchedule(&daySchedule)
2227
+		//		xtSchedule := models.Schedule{
2228
+		//			PartitionId:  deviceNumber.ZoneID,
2229
+		//			BedId:        bedID,
2230
+		//			ScheduleType: schedual_type,
2231
+		//			UpdatedTime:  time.Now().Unix(),
2232
+		//		}
2233
+		//		err := service.UpdateScheduleOne(daySchedule.ID, xtSchedule)
2234
+		//		if err != nil {
2235
+		//			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2236
+		//			return
2237
+		//		}
2238
+		//	}
2239
+		//}
2240
+		//}
2241
+
2243
 	} else if err != nil {
2242
 	} else if err != nil {
2244
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2243
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
2245
 		return
2244
 		return
6554
 		"dialysisOrder": dialysisOrder,
6553
 		"dialysisOrder": dialysisOrder,
6555
 	})
6554
 	})
6556
 }
6555
 }
6556
+
6557
+func (this *DialysisAPIController) CheckSchedule() {
6558
+
6559
+	patientID, _ := this.GetInt64("patient_id")
6560
+	recordDateStr := this.GetString("record_date")
6561
+	nurseID, _ := this.GetInt64("nurse")
6562
+	schedual_type, _ := this.GetInt64("schedual_type")
6563
+
6564
+	bedID, _ := this.GetInt64("bed")
6565
+	start_time := this.GetString("start_time")
6566
+
6567
+	if patientID <= 0 || len(recordDateStr) == 0 || nurseID <= 0 || bedID <= 0 {
6568
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
6569
+		return
6570
+	}
6571
+
6572
+	startDate, parseStartDateErr := utils.ParseTimeStringToTime("2006-01-02 15:04:05", start_time)
6573
+	if parseStartDateErr != nil {
6574
+		this.ErrorLog("时间解析失败:%v", parseStartDateErr)
6575
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
6576
+		return
6577
+	}
6578
+
6579
+	recordDate, parseErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr)
6580
+	if parseErr != nil {
6581
+		this.ErrorLog("时间解析失败:%v", parseErr)
6582
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
6583
+		return
6584
+	}
6585
+
6586
+	adminUserInfo := this.GetMobileAdminUserInfo()
6587
+	patient, getPatientErr := service.MobileGetPatientById(adminUserInfo.Org.Id, patientID)
6588
+	if getPatientErr != nil {
6589
+		this.ErrorLog("获取患者信息失败:%v", getPatientErr)
6590
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
6591
+		return
6592
+	} else if patient == nil {
6593
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist)
6594
+		return
6595
+	}
6596
+
6597
+	nurse, getNurseErr := service.GetAdminUserByUserID(nurseID)
6598
+	if getNurseErr != nil {
6599
+		this.ErrorLog("获取护士失败:%v", getNurseErr)
6600
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
6601
+		return
6602
+	} else if nurse == nil {
6603
+		this.ErrorLog("护士不存在")
6604
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
6605
+		return
6606
+	}
6607
+
6608
+	deviceNumber, getDeviceNumberErr := service.GetDeviceNumberByID(adminUserInfo.Org.Id, bedID)
6609
+	if getDeviceNumberErr != nil {
6610
+		this.ErrorLog("获取床位号失败:%v", getDeviceNumberErr)
6611
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
6612
+		return
6613
+	} else if deviceNumber == nil {
6614
+		this.ErrorLog("床位号不存在")
6615
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
6616
+		return
6617
+	}
6618
+
6619
+	dialysisRecord, getRecordErr := service.MobileGetDialysisRecord(adminUserInfo.Org.Id, patientID, recordDate.Unix())
6620
+	if getRecordErr != nil {
6621
+		this.ErrorLog("获取透析记录失败:%v", getRecordErr)
6622
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
6623
+		return
6624
+	} else if dialysisRecord != nil {
6625
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatStart)
6626
+		return
6627
+	}
6628
+
6629
+	scheduleDateStart := startDate.Format("2006-01-02") + " 00:00:00"
6630
+	scheduleDateEnd := startDate.Format("2006-01-02") + " 23:59:59"
6631
+	timeLayout := "2006-01-02 15:04:05"
6632
+	loc, _ := time.LoadLocation("Local")
6633
+	theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc)
6634
+	theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc)
6635
+	schedulestartTime := theStartTime.Unix()
6636
+	scheduleendTime := theEndTime.Unix()
6637
+
6638
+	//查询更改的机号,是否有人用了,如果只是排班了,但是没上机,直接替换,如果排班且上机了,就提示他无法上机
6639
+	//sch, _ := service.GetSourceSch(adminUserInfo.Org.Id, patientID, scheduleendTime)
6640
+
6641
+	schedule, err := service.GetDayScheduleByBedid(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
6642
+
6643
+	//查询该床位是否有人用了
6644
+	order, _ := service.GetDialysisOrderByBedIdTwo(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type)
6645
+
6646
+	if err == nil {
6647
+		if schedule.ID == 0 {
6648
+			this.ServeSuccessJSON(map[string]interface{}{
6649
+				"status": 0,
6650
+			})
6651
+
6652
+		} else {
6653
+
6654
+			if schedule.ID > 0 && schedule.DialysisOrder.ID == 0 { //有排班没上机记录
6655
+				if order.ID > 0 { //该机位被其他人占用了
6656
+					this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed)
6657
+					return
6658
+				} else { //2022-11-04 更变需求,如果改床位有排班,但是没上机,则进行互换床位操作,如果改床位是本人的话,不做处理
6659
+					daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID)
6660
+					if daySchedule.ID > 0 && schedule.PatientId != daySchedule.PatientId {
6661
+
6662
+						this.ServeSuccessJSON(map[string]interface{}{
6663
+							"status": 1,
6664
+							"msg":    "该机位已有排班,继续操作将会与原来的排班信息进行互调,请问是否继续?",
6665
+						})
6666
+						return
6667
+					} else {
6668
+						this.ServeSuccessJSON(map[string]interface{}{
6669
+							"status": 0,
6670
+						})
6671
+					}
6672
+				}
6673
+			} else if schedule.ID > 0 && schedule.DialysisOrder.ID > 0 {
6674
+				this.ServeSuccessJSON(map[string]interface{}{
6675
+					"status": 2,
6676
+					"msg":    "当前机位已有患者在使用,请重新选择!",
6677
+				})
6678
+
6679
+			}
6680
+
6681
+		}
6682
+
6683
+	} else {
6684
+		this.ServeSuccessJSON(map[string]interface{}{
6685
+			"status": 0,
6686
+		})
6687
+
6688
+	}
6689
+
6690
+}

+ 2 - 0
controllers/mobile_api_controllers/mobile_api_router_register.go Näytä tiedosto

170
 	beego.Router("/m/api/savepatientsign", &DialysisAPIController{}, "Post:SavePatientSign")
170
 	beego.Router("/m/api/savepatientsign", &DialysisAPIController{}, "Post:SavePatientSign")
171
 	beego.Router("/m/api/getpatientsign", &DialysisAPIController{}, "Get:GetPatientSign")
171
 	beego.Router("/m/api/getpatientsign", &DialysisAPIController{}, "Get:GetPatientSign")
172
 
172
 
173
+	beego.Router("/m/api/checksch/get", &DialysisAPIController{}, "Get:CheckSchedule")
174
+
173
 }
175
 }

+ 910 - 1
controllers/schedule_api_controller.go Näytä tiedosto

70
 	beego.Router("/api/schedule/synchroschedule", &ScheduleApiController{}, "Get:SynchroSchedule")
70
 	beego.Router("/api/schedule/synchroschedule", &ScheduleApiController{}, "Get:SynchroSchedule")
71
 	beego.Router("/api/schedule/getpatientscheduletemplate", &ScheduleApiController{}, "Get:GetPatientScheduleTempalate")
71
 	beego.Router("/api/schedule/getpatientscheduletemplate", &ScheduleApiController{}, "Get:GetPatientScheduleTempalate")
72
 	beego.Router("/api/schedule/getsolutionschedule", &ScheduleApiController{}, "Get:GetSolutionSchedule")
72
 	beego.Router("/api/schedule/getsolutionschedule", &ScheduleApiController{}, "Get:GetSolutionSchedule")
73
+
74
+	beego.Router("/api/schedule/smartpatientsch", &ScheduleApiController{}, "Get:GetPatientSch")
75
+	beego.Router("/api/schedule/smartpatientschtemplate", &ScheduleApiController{}, "Get:GetPatientSchTemplate")
76
+
77
+	beego.Router("/api/patient/smartpatientsch", &ScheduleApiController{}, "Get:GetPatientSmartSch")
78
+
79
+	beego.Router("/api/patient/smartpatientschtemplate", &ScheduleApiController{}, "Get:GetPatientSmartSchTemplate")
80
+
81
+	beego.Router("/api/device/get", &ScheduleApiController{}, "Get:GetDevicesNumbers")
82
+
83
+	beego.Router("/api/smartsch/batch", &ScheduleApiController{}, "Post:BatchPostSmartSch")
84
+
85
+}
86
+func (c *ScheduleApiController) BatchPostSmartSch() {
87
+	patient_id, _ := c.GetInt64("patient_id")
88
+	adminInfo := c.GetAdminUserInfo()
89
+
90
+	patientInfo, _ := service.FindPatientById(adminInfo.CurrentOrgId, patient_id)
91
+	if patientInfo.ID == 0 {
92
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist)
93
+		return
94
+	}
95
+
96
+	dataBody := make(map[string]interface{}, 0)
97
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
98
+	if err != nil {
99
+		utils.ErrorLog(err.Error())
100
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
101
+		return
102
+	}
103
+
104
+	//数据校验
105
+	if dataBody["smart_schs"] != nil && reflect.TypeOf(dataBody["smart_schs"]).String() == "[]interface {}" {
106
+
107
+		schs, _ := dataBody["smart_schs"].([]interface{})
108
+		if len(schs) > 0 {
109
+			for _, item := range schs {
110
+				items := item.(map[string]interface{})
111
+				if items["sch_id"] == nil || reflect.TypeOf(items["sch_id"]).String() != "float64" {
112
+					utils.ErrorLog("id")
113
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
114
+					return
115
+				}
116
+				var schedule models.Schedule
117
+				//var oldSchedule *models.Schedule
118
+				sch_id := int64(items["sch_id"].(float64))
119
+				if sch_id > 0 { //修改排班信息
120
+					schedule, _ = service.GetScheduleTwo(adminInfo.CurrentOrgId, sch_id)
121
+
122
+					if items["mode_id"] == nil || reflect.TypeOf(items["mode_id"]).String() != "float64" {
123
+						utils.ErrorLog("mode_id")
124
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
125
+						return
126
+					}
127
+					modeId := int64(items["mode_id"].(float64))
128
+					if modeId < 1 {
129
+						utils.ErrorLog("modeId < 1")
130
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
131
+						return
132
+					}
133
+					schedule.ModeId = modeId
134
+
135
+					order, err := service.GetOneDialysisOrder(adminInfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
136
+					if err != nil {
137
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
138
+						return
139
+					}
140
+
141
+					if order != nil {
142
+						week_type, _ := items["week_type"].(string)
143
+						week_name, _ := items["week_name"].(string)
144
+
145
+						switch week_type {
146
+						case "1":
147
+							json := make(map[string]interface{})
148
+							json["msg"] = "本周" + week_name + "的床位已经有人上机,无法保存"
149
+							json["state"] = 0
150
+							c.Data["json"] = json
151
+							c.ServeJSON()
152
+							break
153
+						case "2":
154
+							json := make(map[string]interface{})
155
+							json["msg"] = "下周" + week_name + "的床位已经有人上机,无法保存"
156
+							json["state"] = 0
157
+							c.Data["json"] = json
158
+							c.ServeJSON()
159
+							break
160
+						case "3":
161
+							json := make(map[string]interface{})
162
+							json["msg"] = "下周" + week_name + "的床位已经有人上机,无法保存"
163
+							json["state"] = 0
164
+							c.Data["json"] = json
165
+							c.ServeJSON()
166
+							break
167
+
168
+						}
169
+
170
+						return
171
+					}
172
+
173
+					if order != nil {
174
+						week_type, _ := items["week_type"].(string)
175
+						week_name, _ := items["week_name"].(string)
176
+
177
+						switch week_type {
178
+						case "1":
179
+							json := make(map[string]interface{})
180
+							json["msg"] = "本周" + week_name + "的床位已经有人上机,无法保存"
181
+							json["state"] = 0
182
+							c.Data["json"] = json
183
+							c.ServeJSON()
184
+							break
185
+						case "2":
186
+							json := make(map[string]interface{})
187
+							json["msg"] = "下周" + week_name + "的床位已经有人上机,无法保存"
188
+							json["state"] = 0
189
+							c.Data["json"] = json
190
+							c.ServeJSON()
191
+							break
192
+						case "3":
193
+							json := make(map[string]interface{})
194
+							json["msg"] = "下周" + week_name + "的床位已经有人上机,无法保存"
195
+							json["state"] = 0
196
+							c.Data["json"] = json
197
+							c.ServeJSON()
198
+							break
199
+						}
200
+						return
201
+					}
202
+
203
+					if items["schedule_type"] == nil || reflect.TypeOf(items["schedule_type"]).String() != "float64" {
204
+						utils.ErrorLog("schedule_type")
205
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
206
+						return
207
+					}
208
+					scheduleType := int64(items["schedule_type"].(float64))
209
+					if scheduleType < 1 || scheduleType > 3 {
210
+						utils.ErrorLog("scheduleType < 3")
211
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
212
+						return
213
+					}
214
+					schedule.ScheduleType = scheduleType
215
+
216
+					if items["bed_id"] == nil || reflect.TypeOf(items["bed_id"]).String() != "float64" {
217
+						utils.ErrorLog("bed_id")
218
+						fmt.Println("~~~~~~333333333")
219
+
220
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
221
+						return
222
+					}
223
+					bedId := int64(items["bed_id"].(float64))
224
+					if bedId < 1 {
225
+						utils.ErrorLog("bedId < 1")
226
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
227
+						return
228
+					}
229
+					schedule.BedId = bedId
230
+
231
+					if items["zone_id"] == nil || reflect.TypeOf(items["zone_id"]).String() != "float64" {
232
+						utils.ErrorLog("zone_id")
233
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
234
+						return
235
+					}
236
+					partitionId := int64(items["zone_id"].(float64))
237
+					if partitionId < 1 {
238
+						utils.ErrorLog("partitionId < 1")
239
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
240
+						return
241
+					}
242
+					schedule.PartitionId = partitionId
243
+
244
+					bed, _ := service.GetDeviceNumberByID(adminInfo.CurrentOrgId, schedule.BedId)
245
+					if bed == nil {
246
+
247
+						week_type, _ := items["week_type"].(string)
248
+						week_name, _ := items["week_name"].(string)
249
+
250
+						switch week_type {
251
+						case "1":
252
+							json := make(map[string]interface{})
253
+							json["msg"] = "本周" + week_name + "的机号不存在,无法保存"
254
+							json["state"] = 0
255
+							c.Data["json"] = json
256
+							c.ServeJSON()
257
+							break
258
+						case "2":
259
+							json := make(map[string]interface{})
260
+							json["msg"] = "下周" + week_name + "的机号不存在,无法保存"
261
+							json["state"] = 0
262
+							c.Data["json"] = json
263
+							c.ServeJSON()
264
+							break
265
+						case "3":
266
+							json := make(map[string]interface{})
267
+							json["msg"] = "下周" + week_name + "的机号不存在,无法保存"
268
+							json["state"] = 0
269
+							c.Data["json"] = json
270
+							c.ServeJSON()
271
+							break
272
+						}
273
+
274
+						return
275
+					}
276
+					if bed.ZoneID != schedule.PartitionId {
277
+
278
+						week_type, _ := items["week_type"].(string)
279
+						week_name, _ := items["week_name"].(string)
280
+
281
+						switch week_type {
282
+						case "1":
283
+							json := make(map[string]interface{})
284
+							json["msg"] = "本周" + week_name + "所选机号不在选择分区中,无法保存"
285
+							json["state"] = 0
286
+							c.Data["json"] = json
287
+							c.ServeJSON()
288
+							break
289
+						case "2":
290
+							json := make(map[string]interface{})
291
+							json["msg"] = "下周" + week_name + "所选机号不在选择分区中,无法保存"
292
+							json["state"] = 0
293
+							c.Data["json"] = json
294
+							c.ServeJSON()
295
+							break
296
+						case "3":
297
+							json := make(map[string]interface{})
298
+							json["msg"] = "下周" + week_name + "所选机号不在选择分区中,无法保存"
299
+							json["state"] = 0
300
+							c.Data["json"] = json
301
+							c.ServeJSON()
302
+							break
303
+						}
304
+
305
+						return
306
+					}
307
+
308
+					startTime := schedule.ScheduleDate
309
+					endTime := startTime + 86399
310
+
311
+					//一天只有排班一次
312
+					daySchedule, err := service.GetDaySchedule(adminInfo.CurrentOrgId, startTime, endTime, schedule.PatientId)
313
+					if daySchedule.ID > 0 && daySchedule.ID != schedule.ID {
314
+						week_type, _ := items["week_type"].(string)
315
+						week_name, _ := items["week_name"].(string)
316
+
317
+						switch week_type {
318
+						case "1":
319
+							json := make(map[string]interface{})
320
+							json["msg"] = "本周" + week_name + "已有排班,同一天不可有两次排班,无法保存"
321
+							json["state"] = 0
322
+							c.Data["json"] = json
323
+							c.ServeJSON()
324
+							break
325
+						case "2":
326
+							json := make(map[string]interface{})
327
+							json["msg"] = "下周" + week_name + "已有排班,同一天不可有两次排班,无法保存"
328
+							json["state"] = 0
329
+							c.Data["json"] = json
330
+							c.ServeJSON()
331
+							break
332
+						case "3":
333
+							json := make(map[string]interface{})
334
+							json["msg"] = "下下周" + week_name + "已有排班,同一天不可有两次排班,无法保存"
335
+							json["state"] = 0
336
+							c.Data["json"] = json
337
+							c.ServeJSON()
338
+							break
339
+						}
340
+
341
+						return
342
+					}
343
+
344
+					//同天同位置只能排一个
345
+					pointSchedule, err := service.GetPointSchedule(adminInfo.CurrentOrgId, schedule.ScheduleDate, schedule.ScheduleWeek, schedule.ScheduleType, schedule.BedId)
346
+					if err != nil {
347
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
348
+						return
349
+					}
350
+					if pointSchedule.ID > 0 && pointSchedule.PatientId != patient_id {
351
+						week_type, _ := items["week_type"].(string)
352
+						week_name, _ := items["week_name"].(string)
353
+
354
+						switch week_type {
355
+						case "1":
356
+							json := make(map[string]interface{})
357
+							json["msg"] = "本周" + week_name + "所先位置排班已经存在,无法保存"
358
+							json["state"] = 0
359
+							c.Data["json"] = json
360
+							c.ServeJSON()
361
+							break
362
+						case "2":
363
+							json := make(map[string]interface{})
364
+							json["msg"] = "下周" + week_name + "所先位置排班已经存在,无法保存"
365
+							json["state"] = 0
366
+							c.Data["json"] = json
367
+							c.ServeJSON()
368
+							break
369
+						case "3":
370
+							json := make(map[string]interface{})
371
+							json["msg"] = "下下周" + week_name + "所先位置排班已经存在,无法保存"
372
+							json["state"] = 0
373
+							c.Data["json"] = json
374
+							c.ServeJSON()
375
+							break
376
+						}
377
+
378
+						return
379
+					}
380
+
381
+				} else { //新的排班信息
382
+
383
+					if items["schedule_date"] == nil || reflect.TypeOf(items["schedule_date"]).String() != "string" {
384
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
385
+						return
386
+					}
387
+					scheduleDate, _ := items["schedule_date"].(string)
388
+					if len(scheduleDate) == 0 {
389
+						utils.ErrorLog("len(schedule_date) == 0")
390
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
391
+						return
392
+					}
393
+					timeLayout := "2006-01-02"
394
+					loc, _ := time.LoadLocation("Local")
395
+					theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", scheduleDate+" 00:00:00", loc)
396
+					if err != nil {
397
+						utils.ErrorLog(err.Error())
398
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
399
+						return
400
+					}
401
+					schedule.ScheduleDate = theTime.Unix()
402
+					timeNow := time.Now().Format("2006-01-02")
403
+					if timeNow > scheduleDate {
404
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCantSetScheduleBeforeNow)
405
+						return
406
+					}
407
+					scheduleType := int64(items["schedule_type"].(float64))
408
+					if scheduleType < 1 || scheduleType > 3 {
409
+						utils.ErrorLog("scheduleType < 3")
410
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
411
+						return
412
+					}
413
+					schedule.ScheduleType = scheduleType
414
+
415
+					if items["bed_id"] == nil || reflect.TypeOf(items["bed_id"]).String() != "float64" {
416
+						fmt.Println("~~~~~~22222")
417
+						utils.ErrorLog("bed_id")
418
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
419
+						return
420
+					}
421
+					bedId := int64(items["bed_id"].(float64))
422
+					if bedId < 1 {
423
+						utils.ErrorLog("bedId < 1")
424
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
425
+						return
426
+					}
427
+					schedule.BedId = bedId
428
+
429
+					if items["zone_id"] == nil || reflect.TypeOf(items["zone_id"]).String() != "float64" {
430
+						utils.ErrorLog("zone_id")
431
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
432
+						return
433
+					}
434
+					partitionId := int64(items["zone_id"].(float64))
435
+					if partitionId < 1 {
436
+						utils.ErrorLog("zone_id < 1")
437
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
438
+						return
439
+					}
440
+					schedule.PartitionId = partitionId
441
+
442
+					if items["schedule_week"] == nil || reflect.TypeOf(items["schedule_week"]).String() != "float64" {
443
+						utils.ErrorLog("schedule_week")
444
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
445
+						return
446
+					}
447
+					scheduleWeek := int64(items["schedule_week"].(float64))
448
+					if scheduleWeek < 1 || scheduleWeek > 7 {
449
+						utils.ErrorLog("scheduleWeek < 1")
450
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
451
+						return
452
+					}
453
+					schedule.ScheduleWeek = scheduleWeek
454
+
455
+					if items["mode_id"] == nil || reflect.TypeOf(items["mode_id"]).String() != "float64" {
456
+						utils.ErrorLog("mode_id")
457
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
458
+						return
459
+					}
460
+					modeId := int64(items["mode_id"].(float64))
461
+					if modeId < 1 && modeId > 14 {
462
+						utils.ErrorLog("modeId < 1")
463
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
464
+						return
465
+					}
466
+					//校验当天改床位是否有排班,如果有排班则不能替换排班
467
+
468
+					sch, _ := service.GetScheduleByZoneAndBed(adminInfo.CurrentOrgId, partitionId, bedId, schedule.ScheduleDate, schedule.ScheduleType)
469
+
470
+					if sch.ID > 0 {
471
+						week_type, _ := items["week_type"].(string)
472
+						week_name, _ := items["week_name"].(string)
473
+
474
+						switch week_type {
475
+						case "1":
476
+							json := make(map[string]interface{})
477
+							json["msg"] = "本周" + week_name + "该床位已经有人排班,无法保存"
478
+							json["state"] = 0
479
+							c.Data["json"] = json
480
+							c.ServeJSON()
481
+							break
482
+						case "2":
483
+							json := make(map[string]interface{})
484
+							json["msg"] = "下周" + week_name + "该床位已经有人排班,无法保存"
485
+							json["state"] = 0
486
+							c.Data["json"] = json
487
+							c.ServeJSON()
488
+							break
489
+						case "3":
490
+							json := make(map[string]interface{})
491
+							json["msg"] = "下下周" + week_name + "该床位已经有人排班,无法保存"
492
+							json["state"] = 0
493
+							c.Data["json"] = json
494
+							c.ServeJSON()
495
+							break
496
+						}
497
+
498
+						return
499
+					}
500
+
501
+				}
502
+
503
+			}
504
+		}
505
+	}
506
+
507
+	if dataBody["smart_schs"] != nil && reflect.TypeOf(dataBody["smart_schs"]).String() == "[]interface {}" {
508
+
509
+		schs, _ := dataBody["smart_schs"].([]interface{})
510
+		if len(schs) > 0 {
511
+			for _, item := range schs {
512
+				items := item.(map[string]interface{})
513
+				if items["sch_id"] == nil || reflect.TypeOf(items["sch_id"]).String() != "float64" {
514
+					utils.ErrorLog("id")
515
+					c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
516
+					return
517
+				}
518
+				var schedule models.Schedule
519
+				//var oldSchedule *models.Schedule
520
+				sch_id := int64(items["sch_id"].(float64))
521
+				if sch_id > 0 { //修改排班信息
522
+					fmt.Println("!!!!!!!")
523
+					schedule, _ = service.GetScheduleTwo(adminInfo.CurrentOrgId, sch_id)
524
+					if items["mode_id"] == nil || reflect.TypeOf(items["mode_id"]).String() != "float64" {
525
+						fmt.Println(reflect.TypeOf(items["mode_id"]))
526
+
527
+						utils.ErrorLog("mode_id")
528
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
529
+						return
530
+					}
531
+					modeId := int64(items["mode_id"].(float64))
532
+					if modeId < 1 {
533
+						utils.ErrorLog("modeId < 1")
534
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
535
+						return
536
+					}
537
+					schedule.ModeId = modeId
538
+
539
+					order, err := service.GetOneDialysisOrder(adminInfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
540
+					if err != nil {
541
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
542
+						return
543
+					}
544
+
545
+					if order != nil {
546
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeChangeMode)
547
+						return
548
+					}
549
+
550
+					if order != nil {
551
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeChangeDeviceNumber)
552
+						return
553
+					}
554
+
555
+					if items["schedule_type"] == nil || reflect.TypeOf(items["schedule_type"]).String() != "float64" {
556
+						utils.ErrorLog("schedule_type")
557
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
558
+						return
559
+					}
560
+					scheduleType := int64(items["schedule_type"].(float64))
561
+					if scheduleType < 1 || scheduleType > 3 {
562
+						utils.ErrorLog("scheduleType < 3")
563
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
564
+						return
565
+					}
566
+					schedule.ScheduleType = scheduleType
567
+
568
+					if items["bed_id"] == nil || reflect.TypeOf(items["bed_id"]).String() != "float64" {
569
+						utils.ErrorLog("bed_id")
570
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
571
+						return
572
+					}
573
+					bedId := int64(items["bed_id"].(float64))
574
+					if bedId < 1 {
575
+						utils.ErrorLog("bedId < 1")
576
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
577
+						return
578
+					}
579
+					schedule.BedId = bedId
580
+
581
+					if items["zone_id"] == nil || reflect.TypeOf(items["zone_id"]).String() != "float64" {
582
+						utils.ErrorLog("zone_id")
583
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
584
+						return
585
+					}
586
+					partitionId := int64(items["zone_id"].(float64))
587
+					if partitionId < 1 {
588
+						utils.ErrorLog("partitionId < 1")
589
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
590
+						return
591
+					}
592
+					schedule.PartitionId = partitionId
593
+
594
+					bed, _ := service.GetDeviceNumberByID(adminInfo.CurrentOrgId, schedule.BedId)
595
+					if bed == nil {
596
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
597
+						return
598
+					}
599
+					if bed.ZoneID != schedule.PartitionId {
600
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotTheZone)
601
+						return
602
+					}
603
+
604
+					startTime := schedule.ScheduleDate
605
+					endTime := startTime + 86399
606
+
607
+					//一天只有排班一次
608
+					daySchedule, err := service.GetDaySchedule(adminInfo.CurrentOrgId, startTime, endTime, schedule.PatientId)
609
+					if daySchedule.ID > 0 && daySchedule.ID != schedule.ID {
610
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCantSetScheduleAgainOneDay)
611
+						return
612
+					}
613
+
614
+					//同天同位置只能排一个
615
+					pointSchedule, err := service.GetPointSchedule(adminInfo.CurrentOrgId, schedule.ScheduleDate, schedule.ScheduleWeek, schedule.ScheduleType, schedule.BedId)
616
+					if err != nil {
617
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
618
+						return
619
+					}
620
+					if pointSchedule.ID > 0 && pointSchedule.PatientId != patient_id {
621
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePointScheduleExist)
622
+						return
623
+					}
624
+
625
+					so, _ := service.GetDialysisSolutionTwo(adminInfo.CurrentOrgId, schedule.PatientId, schedule.ModeId)
626
+					filedRecordOne, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "透析器")
627
+					filedRecordTwo, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "灌流器")
628
+					filedRecordThree, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "透析器/灌流器")
629
+
630
+					if filedRecordOne.IsShow == 1 {
631
+						schedule.DialysisMachineName = so.DialysisDialyszers
632
+						//service.UpdateSchDName(schedule)
633
+					}
634
+					if filedRecordTwo.IsShow == 1 {
635
+						schedule.DialysisMachineName = so.DialysisIrrigation
636
+						//service.UpdateSchDName(schedule)
637
+					}
638
+
639
+					if filedRecordThree.IsShow == 1 {
640
+						schedule.DialysisMachineName = so.DialyzerPerfusionApparatus
641
+						//service.UpdateSchDName(schedule)
642
+					}
643
+
644
+					service.SaveSch(schedule)
645
+
646
+				} else { //新的排班信息
647
+					if items["schedule_date"] == nil || reflect.TypeOf(items["schedule_date"]).String() != "string" {
648
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
649
+						return
650
+					}
651
+					scheduleDate, _ := items["schedule_date"].(string)
652
+					if len(scheduleDate) == 0 {
653
+						utils.ErrorLog("len(schedule_date) == 0")
654
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
655
+						return
656
+					}
657
+					timeLayout := "2006-01-02"
658
+					loc, _ := time.LoadLocation("Local")
659
+					theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", scheduleDate+" 00:00:00", loc)
660
+					if err != nil {
661
+						utils.ErrorLog(err.Error())
662
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
663
+						return
664
+					}
665
+					schedule.ScheduleDate = theTime.Unix()
666
+					timeNow := time.Now().Format("2006-01-02")
667
+					if timeNow > scheduleDate {
668
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCantSetScheduleBeforeNow)
669
+						return
670
+					}
671
+					scheduleType := int64(items["schedule_type"].(float64))
672
+					if scheduleType < 1 || scheduleType > 3 {
673
+						utils.ErrorLog("scheduleType < 3")
674
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
675
+						return
676
+					}
677
+					schedule.ScheduleType = scheduleType
678
+
679
+					if items["bed_id"] == nil || reflect.TypeOf(items["bed_id"]).String() != "float64" {
680
+						utils.ErrorLog("bed_id")
681
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
682
+						return
683
+					}
684
+					bedId := int64(items["bed_id"].(float64))
685
+					if bedId < 1 {
686
+						utils.ErrorLog("bedId < 1")
687
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
688
+						return
689
+					}
690
+					schedule.BedId = bedId
691
+
692
+					if items["zone_id"] == nil || reflect.TypeOf(items["zone_id"]).String() != "float64" {
693
+						utils.ErrorLog("zone_id")
694
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
695
+						return
696
+					}
697
+					partitionId := int64(items["zone_id"].(float64))
698
+					if partitionId < 1 {
699
+						utils.ErrorLog("zone_id < 1")
700
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
701
+						return
702
+					}
703
+					schedule.PartitionId = partitionId
704
+
705
+					if items["schedule_week"] == nil || reflect.TypeOf(items["schedule_week"]).String() != "float64" {
706
+						utils.ErrorLog("schedule_week")
707
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
708
+						return
709
+					}
710
+					scheduleWeek := int64(items["schedule_week"].(float64))
711
+					if scheduleWeek < 1 || scheduleWeek > 7 {
712
+						utils.ErrorLog("scheduleWeek < 1")
713
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
714
+						return
715
+					}
716
+					schedule.ScheduleWeek = scheduleWeek
717
+
718
+					if items["mode_id"] == nil || reflect.TypeOf(items["mode_id"]).String() != "float64" {
719
+						fmt.Println(reflect.TypeOf(items["mode_id"]))
720
+
721
+						utils.ErrorLog("mode_id")
722
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
723
+						return
724
+					}
725
+					modeId := int64(items["mode_id"].(float64))
726
+					if modeId < 1 && modeId > 14 {
727
+						utils.ErrorLog("modeId < 1")
728
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
729
+						return
730
+					}
731
+					//校验当天改床位是否有排班,如果有排班则不能替换排班
732
+
733
+					sch, _ := service.GetScheduleByZoneAndBed(adminInfo.CurrentOrgId, partitionId, bedId, schedule.ScheduleDate, schedule.ScheduleType)
734
+
735
+					if sch.ID > 0 {
736
+						c.ServeFailJSONWithSGJErrorCode(enums.ErrorSchedualcRepeatBed)
737
+						return
738
+					}
739
+
740
+					schedule.ModeId = modeId
741
+					schedule.PatientId = patient_id
742
+					schedule.CreatedTime = time.Now().Unix()
743
+					schedule.UpdatedTime = time.Now().Unix()
744
+					schedule.Status = 1
745
+					schedule.UserOrgId = adminInfo.CurrentOrgId
746
+
747
+					so, _ := service.GetDialysisSolutionTwo(adminInfo.CurrentOrgId, schedule.PatientId, schedule.ModeId)
748
+					filedRecordOne, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "透析器")
749
+					filedRecordTwo, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "灌流器")
750
+					filedRecordThree, _ := service.FindFiledBy(adminInfo.CurrentOrgId, "透析器/灌流器")
751
+
752
+					if filedRecordOne.IsShow == 1 {
753
+						schedule.DialysisMachineName = so.DialysisDialyszers
754
+						//service.UpdateSchDName(schedule)
755
+					}
756
+					if filedRecordTwo.IsShow == 1 {
757
+						schedule.DialysisMachineName = so.DialysisIrrigation
758
+						//service.UpdateSchDName(schedule)
759
+					}
760
+
761
+					if filedRecordThree.IsShow == 1 {
762
+						schedule.DialysisMachineName = so.DialyzerPerfusionApparatus
763
+						//service.UpdateSchDName(schedule)
764
+					}
765
+
766
+					service.CreateSchedule(&schedule)
767
+
768
+				}
769
+				c.ServeSuccessJSON(map[string]interface{}{
770
+					"msg": "保存成功",
771
+				})
772
+
773
+				HandleRedis(adminInfo.CurrentOrgId, schedule.ScheduleDate)
774
+
775
+			}
776
+		}
777
+	}
778
+}
779
+func HandleRedis(org_id int64, sch_date int64) {
780
+	redis := service.RedisClient()
781
+	//处方
782
+	keyOne := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":prescriptions_list_all"
783
+	redis.Set(keyOne, "", time.Second)
784
+	//医嘱
785
+	keyTwo := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":advice_list_all"
786
+	redis.Set(keyTwo, "", time.Second)
787
+	keySix := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":assessment_befores_list_all"
788
+	redis.Set(keySix, "", time.Second)
789
+	keyThree := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":assessment_after_dislysis_list_all"
790
+	redis.Set(keyThree, "", time.Second)
791
+	keyFour := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":monitor_record_list_all"
792
+	redis.Set(keyFour, "", time.Second)
793
+	keyFive := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":treatment_summarys_list_all"
794
+	redis.Set(keyFive, "", time.Second)
795
+	keySeven := strconv.FormatInt(org_id, 10) + ":" + strconv.FormatInt(sch_date, 10) + ":dialysis_orders_list_all"
796
+	redis.Set(keySeven, "", time.Second)
797
+	defer redis.Close()
798
+
799
+}
800
+
801
+func (c *ScheduleApiController) GetPatientSch() {
802
+	keyWord := c.GetString("keyword")
803
+	adminUserInfo := c.GetAdminUserInfo()
804
+	patient, err := service.GetSmartSchPatientByKeyWord(adminUserInfo.CurrentOrgId, keyWord)
805
+	if err != nil {
806
+		utils.ErrorLog(err.Error())
807
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
808
+		return
809
+	}
810
+	c.ServeSuccessJSON(map[string]interface{}{
811
+		"patient": patient,
812
+	})
813
+}
814
+
815
+func (c *ScheduleApiController) GetPatientSchTemplate() {
816
+	keyWord := c.GetString("keyword")
817
+	adminUserInfo := c.GetAdminUserInfo()
818
+	patient, err := service.GetSmartSchTemplatePatientByKeyWord(adminUserInfo.CurrentOrgId, keyWord)
819
+	if err != nil {
820
+		utils.ErrorLog(err.Error())
821
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
822
+		return
823
+	}
824
+	c.ServeSuccessJSON(map[string]interface{}{
825
+		"patient": patient,
826
+	})
827
+}
828
+
829
+func (c *ScheduleApiController) GetPatientSmartSch() {
830
+	patient_id, _ := c.GetInt64("patient_id", 0)
831
+	adminUserInfo := c.GetAdminUserInfo()
832
+	schs, err := service.GetSmartSchPatientByID(adminUserInfo.CurrentOrgId, patient_id)
833
+	if err != nil {
834
+		utils.ErrorLog(err.Error())
835
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
836
+		return
837
+	}
838
+	c.ServeSuccessJSON(map[string]interface{}{
839
+		"schedules": schs,
840
+	})
841
+}
842
+func (c *ScheduleApiController) GetPatientSmartSchTemplate() {
843
+	patient_id, _ := c.GetInt64("patient_id", 0)
844
+	adminUserInfo := c.GetAdminUserInfo()
845
+	mode, _ := service.GetOrgPatientScheduleTemplateModeTwo(adminUserInfo.CurrentOrgId)
846
+	if mode.ID > 0 {
847
+		if mode.Mode == 0 {
848
+			//schs, _ := service.GetSmartSchTemplatePatientByID(adminUserInfo.CurrentOrgId, patient_id)
849
+			c.ServeSuccessJSON(map[string]interface{}{
850
+				"status": 0,
851
+			})
852
+
853
+		} else if mode.Mode == 1 {
854
+			schs, _ := service.GetSmartSchTemplatePatientByID(adminUserInfo.CurrentOrgId, patient_id, 1)
855
+			c.ServeSuccessJSON(map[string]interface{}{
856
+				"status":             0,
857
+				"schedules_template": schs,
858
+			})
859
+
860
+		} else if mode.Mode == 2 {
861
+			schs, _ := service.GetSmartSchTemplatePatientByID(adminUserInfo.CurrentOrgId, patient_id, 2)
862
+			c.ServeSuccessJSON(map[string]interface{}{
863
+				"status":             1,
864
+				"schedules_template": schs,
865
+			})
866
+
867
+		} else if mode.Mode == 3 {
868
+
869
+			schs, _ := service.GetSmartSchTemplatePatientByID(adminUserInfo.CurrentOrgId, patient_id, 3)
870
+			c.ServeSuccessJSON(map[string]interface{}{
871
+				"status":             1,
872
+				"schedules_template": schs,
873
+			})
874
+		} else if mode.Mode == 4 {
875
+
876
+			schs, _ := service.GetSmartSchTemplatePatientByID(adminUserInfo.CurrentOrgId, patient_id, 4)
877
+			c.ServeSuccessJSON(map[string]interface{}{
878
+				"status":             1,
879
+				"schedules_template": schs,
880
+			})
881
+		}
882
+
883
+	} else {
884
+		c.ServeSuccessJSON(map[string]interface{}{
885
+			"status": 0,
886
+		})
887
+
888
+	}
889
+}
890
+
891
+func (c *ScheduleApiController) GetDevicesNumbers() {
892
+	sch_type, _ := c.GetInt("sch_type", 0)
893
+	zone_id, _ := c.GetInt64("zone_id", 0)
894
+	patient_id, _ := c.GetInt64("patient_id", 0)
895
+
896
+	schedule_date := c.GetString("schedule_date")
897
+
898
+	timeLayout := "2006-01-02"
899
+	loc, _ := time.LoadLocation("Local")
900
+	theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", schedule_date+" 00:00:00", loc)
901
+	if err != nil {
902
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
903
+		return
904
+	}
905
+	recordDateTime := theTime.Unix()
906
+
907
+	deviceNumbers, getDeviceNumbersErr := service.GetAllAvaildDeviceNumbersByZone(c.GetAdminUserInfo().CurrentOrgId, recordDateTime, sch_type, zone_id, patient_id)
908
+	if getDeviceNumbersErr != nil {
909
+		c.ErrorLog("获取所有床位失败:%v", getDeviceNumbersErr)
910
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
911
+		return
912
+	}
913
+	c.ServeSuccessJSON(map[string]interface{}{
914
+		"devices": deviceNumbers,
915
+	})
916
+
73
 }
917
 }
74
 
918
 
75
 func (c *ScheduleApiController) GetWeekPanels() {
919
 func (c *ScheduleApiController) GetWeekPanels() {
333
 	schedule.Status = 1
1177
 	schedule.Status = 1
334
 	schedule.UserOrgId = adminUserInfo.CurrentOrgId
1178
 	schedule.UserOrgId = adminUserInfo.CurrentOrgId
335
 
1179
 
1180
+	so, _ := service.GetDialysisSolutionTwo(adminUserInfo.CurrentOrgId, schedule.PatientId, schedule.ModeId)
1181
+	filedRecordOne, _ := service.FindFiledBy(adminUserInfo.CurrentOrgId, "透析器")
1182
+	filedRecordTwo, _ := service.FindFiledBy(adminUserInfo.CurrentOrgId, "灌流器")
1183
+	filedRecordThree, _ := service.FindFiledBy(adminUserInfo.CurrentOrgId, "透析器/灌流器")
1184
+
1185
+	if filedRecordOne.IsShow == 1 {
1186
+		schedule.DialysisMachineName = so.DialysisDialyszers
1187
+		//service.UpdateSchDName(schedule)
1188
+	}
1189
+	if filedRecordTwo.IsShow == 1 {
1190
+		schedule.DialysisMachineName = so.DialysisIrrigation
1191
+		//service.UpdateSchDName(schedule)
1192
+	}
1193
+
1194
+	if filedRecordThree.IsShow == 1 {
1195
+		schedule.DialysisMachineName = so.DialyzerPerfusionApparatus
1196
+		//service.UpdateSchDName(schedule)
1197
+	}
336
 	bed, _ := service.GetDeviceNumberByID(adminUserInfo.CurrentOrgId, schedule.BedId)
1198
 	bed, _ := service.GetDeviceNumberByID(adminUserInfo.CurrentOrgId, schedule.BedId)
337
 	if bed == nil {
1199
 	if bed == nil {
338
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
1200
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
422
 	adminINfo := c.GetAdminUserInfo()
1284
 	adminINfo := c.GetAdminUserInfo()
423
 
1285
 
424
 	schedule, _ := service.GetSchedule(adminINfo.CurrentOrgId, id)
1286
 	schedule, _ := service.GetSchedule(adminINfo.CurrentOrgId, id)
1287
+	timeNow := time.Now().Format("2006-01-02")
1288
+	timeTemplate := "2006-01-02"
1289
+
1290
+	tm := time.Unix(int64(schedule.ScheduleDate), 0)
1291
+	timeStr := tm.Format(timeTemplate)
1292
+	if timeNow > timeStr {
1293
+		utils.ErrorLog(timeNow)
1294
+		utils.ErrorLog(timeStr)
1295
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCantSetScheduleBeforeNow)
1296
+		return
1297
+	}
425
 	if schedule == nil {
1298
 	if schedule == nil {
426
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeScheduleNotExist)
1299
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeScheduleNotExist)
427
 		return
1300
 		return
521
 		}
1394
 		}
522
 		schedule.ModeId = modeId
1395
 		schedule.ModeId = modeId
523
 
1396
 
1397
+		so, _ := service.GetDialysisSolutionTwo(adminINfo.CurrentOrgId, schedule.PatientId, schedule.ModeId)
1398
+		filedRecordOne, _ := service.FindFiledBy(adminINfo.CurrentOrgId, "透析器")
1399
+		filedRecordTwo, _ := service.FindFiledBy(adminINfo.CurrentOrgId, "灌流器")
1400
+		filedRecordThree, _ := service.FindFiledBy(adminINfo.CurrentOrgId, "透析器/灌流器")
1401
+
1402
+		if filedRecordOne.IsShow == 1 {
1403
+			schedule.DialysisMachineName = so.DialysisDialyszers
1404
+			//service.UpdateSchDName(schedule)
1405
+		}
1406
+		if filedRecordTwo.IsShow == 1 {
1407
+			schedule.DialysisMachineName = so.DialysisIrrigation
1408
+			//service.UpdateSchDName(schedule)
1409
+		}
1410
+
1411
+		if filedRecordThree.IsShow == 1 {
1412
+			schedule.DialysisMachineName = so.DialyzerPerfusionApparatus
1413
+			//service.UpdateSchDName(schedule)
1414
+		}
1415
+
524
 		order, err := service.GetOneDialysisOrder(adminINfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
1416
 		order, err := service.GetOneDialysisOrder(adminINfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
525
 		if err != nil {
1417
 		if err != nil {
526
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
1418
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
533
 		}
1425
 		}
534
 
1426
 
535
 	} else if changeAction == "change_device" {
1427
 	} else if changeAction == "change_device" {
536
-
537
 		order, err := service.GetOneDialysisOrder(adminINfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
1428
 		order, err := service.GetOneDialysisOrder(adminINfo.CurrentOrgId, schedule.ScheduleDate, schedule.PatientId)
538
 		if err != nil {
1429
 		if err != nil {
539
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
1430
 			c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
1423
 			sch.Status = 1
2314
 			sch.Status = 1
1424
 			sch.UserOrgId = this.GetAdminUserInfo().CurrentOrgId
2315
 			sch.UserOrgId = this.GetAdminUserInfo().CurrentOrgId
1425
 			sch.IsExport = 1
2316
 			sch.IsExport = 1
2317
+			so, _ := service.GetDialysisSolutionTwo(sch.UserOrgId, sch.PatientId, sch.ModeId)
2318
+			filedRecordOne, _ := service.FindFiledBy(sch.UserOrgId, "透析器")
2319
+			filedRecordTwo, _ := service.FindFiledBy(sch.UserOrgId, "灌流器")
2320
+			filedRecordThree, _ := service.FindFiledBy(sch.UserOrgId, "透析器/灌流器")
2321
+
2322
+			if filedRecordOne.IsShow == 1 {
2323
+				sch.DialysisMachineName = so.DialysisDialyszers
2324
+				//service.UpdateSchDName(schedule)
2325
+			}
2326
+			if filedRecordTwo.IsShow == 1 {
2327
+				sch.DialysisMachineName = so.DialysisIrrigation
2328
+				//service.UpdateSchDName(schedule)
2329
+			}
2330
+
2331
+			if filedRecordThree.IsShow == 1 {
2332
+				sch.DialysisMachineName = so.DialyzerPerfusionApparatus
2333
+				//service.UpdateSchDName(schedule)
2334
+			}
1426
 			schedules = append(schedules, &sch)
2335
 			schedules = append(schedules, &sch)
1427
 		}
2336
 		}
1428
 
2337
 

+ 290 - 60
controllers/schedule_template_api_controller.go Näytä tiedosto

4
 	"XT_New/enums"
4
 	"XT_New/enums"
5
 	"XT_New/models"
5
 	"XT_New/models"
6
 	"XT_New/service"
6
 	"XT_New/service"
7
-	"XT_New/utils"
8
 	"encoding/json"
7
 	"encoding/json"
9
 	"fmt"
8
 	"fmt"
10
 	"time"
9
 	"time"
17
 	beego.Router("/api/schtemp/p/setmode", &PatientScheduleTemplateAPIController{}, "post:SetMode")
16
 	beego.Router("/api/schtemp/p/setmode", &PatientScheduleTemplateAPIController{}, "post:SetMode")
18
 	beego.Router("/api/schtemp/p/update_sch", &PatientScheduleTemplateAPIController{}, "post:UpdateSchedules")
17
 	beego.Router("/api/schtemp/p/update_sch", &PatientScheduleTemplateAPIController{}, "post:UpdateSchedules")
19
 
18
 
19
+	beego.Router("/api/patients/list", &PatientScheduleTemplateAPIController{}, "get:GetPatientList")
20
+
20
 	// beego.Router("/api/test", &TestCtr{}, "get:Test")
21
 	// beego.Router("/api/test", &TestCtr{}, "get:Test")
21
 }
22
 }
22
 
23
 
92
 		return
93
 		return
93
 	}
94
 	}
94
 	if len(templates) == 0 {
95
 	if len(templates) == 0 {
95
-		firstTemp, secondTemp, createTempErr := service.CreateTwoPatientScheduleTemplates(adminUserInfo.CurrentOrgId)
96
+		firstTemp, secondTemp, thirdTemp, fourTemp, createTempErr := service.CreateTwoPatientScheduleTemplates(adminUserInfo.CurrentOrgId)
96
 		if createTempErr != nil {
97
 		if createTempErr != nil {
97
-			this.ErrorLog("创建个排班模板失败:%v", createTempErr)
98
+			this.ErrorLog("创建4个排班模板失败:%v", createTempErr)
98
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
99
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
99
 			return
100
 			return
100
 		}
101
 		}
101
-		templates = append(templates, firstTemp, secondTemp)
102
+		templates = append(templates, firstTemp, secondTemp, thirdTemp, fourTemp)
102
 
103
 
103
 	} else if len(templates) == 1 {
104
 	} else if len(templates) == 1 {
104
-		temp, createTempErr := service.CreatePatientScheduleTemplate(adminUserInfo.CurrentOrgId)
105
+		temp, thirdTemp, fourTemp, createTempErr := service.CreatePatientScheduleTemplate(adminUserInfo.CurrentOrgId)
106
+		if createTempErr != nil {
107
+			this.ErrorLog("创建3个排班模板失败:%v", createTempErr)
108
+			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
109
+			return
110
+		}
111
+		templates = append(templates, temp, thirdTemp, fourTemp)
112
+	} else if len(templates) == 2 {
113
+		thirdTemp, fourTemp, createTempErr := service.CreatePatientScheduleTemplateTwo(adminUserInfo.CurrentOrgId)
105
 		if createTempErr != nil {
114
 		if createTempErr != nil {
106
-			this.ErrorLog("创建两个排班模板失败:%v", createTempErr)
115
+			this.ErrorLog("创建2个排班模板失败:%v", createTempErr)
116
+			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
117
+			return
118
+		}
119
+		templates = append(templates, thirdTemp, fourTemp)
120
+	} else if len(templates) == 3 {
121
+		temp, createTempErr := service.CreatePatientScheduleTemplateThree(adminUserInfo.CurrentOrgId)
122
+		if createTempErr != nil {
123
+			this.ErrorLog("创建1个排班模板失败:%v", createTempErr)
107
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
124
 			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
108
 			return
125
 			return
109
 		}
126
 		}
118
 	}
135
 	}
119
 
136
 
120
 	// 获取本周的排班
137
 	// 获取本周的排班
121
-	monday, sunday := utils.GetMondayAndSundayOfWeekDate(&now)
122
-	schedules, getScheduleErr := service.GetWeekSchedule(adminUserInfo.CurrentOrgId, monday.Unix(), sunday.Unix())
123
-	if getScheduleErr != nil {
124
-		this.ErrorLog("获取本周排班失败:%v", getScheduleErr)
125
-		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
126
-		return
127
-	}
138
+	//monday, sunday := utils.GetMondayAndSundayOfWeekDate(&now)
139
+	//schedules, getScheduleErr := service.GetWeekSchedule(adminUserInfo.CurrentOrgId, monday.Unix(), sunday.Unix())
140
+	//if getScheduleErr != nil {
141
+	//	this.ErrorLog("获取本周排班失败:%v", getScheduleErr)
142
+	//	this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
143
+	//	return
144
+	//}
128
 
145
 
129
 	this.ServeSuccessJSON(map[string]interface{}{
146
 	this.ServeSuccessJSON(map[string]interface{}{
130
 		"template_mode":  mode,
147
 		"template_mode":  mode,
131
 		"device_numbers": deviceNumbers,
148
 		"device_numbers": deviceNumbers,
132
 		"templates":      templates,
149
 		"templates":      templates,
133
 		"patients":       patients,
150
 		"patients":       patients,
134
-		"schedules":      schedules,
151
+		//"schedules":      schedules,
135
 	})
152
 	})
136
 }
153
 }
137
 
154
 
138
 // /api/schtemp/p/setmode [post]
155
 // /api/schtemp/p/setmode [post]
139
-// @param mode:int 0.不启用模板 1.单周模板 2.双周模板
156
+// @param mode:int 0.不启用模板 1.单周模板 2.双周模板 3.三周模版   4.四周模版
140
 func (this *PatientScheduleTemplateAPIController) SetMode() {
157
 func (this *PatientScheduleTemplateAPIController) SetMode() {
141
 	mode, _ := this.GetInt8("mode")
158
 	mode, _ := this.GetInt8("mode")
159
+	week_time, _ := this.GetInt8("week_time")
160
+
142
 	if mode != 1 && mode != 2 && mode != 0 && mode != 3 && mode != 4 {
161
 	if mode != 1 && mode != 2 && mode != 0 && mode != 3 && mode != 4 {
143
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
162
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
144
 		return
163
 		return
145
 	}
164
 	}
165
+	if mode > 0 {
166
+		if week_time == 0 {
167
+			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
168
+			return
169
+		}
170
+	}
146
 
171
 
147
 	adminUserInfo := this.GetAdminUserInfo()
172
 	adminUserInfo := this.GetAdminUserInfo()
148
 
173
 
156
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
181
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
157
 		return
182
 		return
158
 	}
183
 	}
184
+	templateMode.Week = int64(week_time)
159
 
185
 
160
 	if mode != templateMode.Mode {
186
 	if mode != templateMode.Mode {
161
-		if templateMode.Mode == 0 { // 0 -> 1 或 0 -> 2 则直接清除下周的排班
187
+		if templateMode.Mode == 0 { // 0 -> 1 或 0 -> 2 则直接清除下周的排班
162
 			templateMode.Mode = mode
188
 			templateMode.Mode = mode
163
 			templateMode.ExecuteTimes = 0
189
 			templateMode.ExecuteTimes = 0
164
 			templateMode.ModifyTime = time.Now().Unix()
190
 			templateMode.ModifyTime = time.Now().Unix()
191
 				return
217
 				return
192
 			}
218
 			}
193
 
219
 
194
-		} else if templateMode.Mode == 2 && mode == 1 { // 2 -> 1 清除第二周模板item,清除第二周排班,将第一周的排班重复到第二周
220
+		} else if templateMode.Mode == 1 && mode == 3 {
221
+			templateMode.Mode = mode
222
+			templateMode.ExecuteTimes = 0
223
+			templateMode.ModifyTime = time.Now().Unix()
224
+			updateErr := service.SaveTemplateMode(templateMode)
225
+			if updateErr != nil {
226
+				this.ErrorLog("更新排班模板启用方式(1 -> 3)时失败:%v", updateErr)
227
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
228
+				return
229
+			}
230
+
231
+		} else if templateMode.Mode == 1 && mode == 4 {
232
+			templateMode.Mode = mode
233
+			templateMode.ExecuteTimes = 0
234
+			templateMode.ModifyTime = time.Now().Unix()
235
+			updateErr := service.SaveTemplateMode(templateMode)
236
+			if updateErr != nil {
237
+				this.ErrorLog("更新排班模板启用方式(1 -> 4)时失败:%v", updateErr)
238
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
239
+				return
240
+			}
241
+
242
+		} else if templateMode.Mode == 2 && mode == 1 { // 2 -> 1 清除第二周模板item,清除第二周排班
195
 			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
243
 			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
196
 			if getTemplateIDsErr != nil {
244
 			if getTemplateIDsErr != nil {
197
 				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
245
 				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
215
 				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
263
 				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
216
 				return
264
 				return
217
 			}
265
 			}
266
+		} else if templateMode.Mode == 2 && mode == 3 { // 2 -> 1 清除第二周模板item,清除第二周排班
267
+			templateMode.Mode = mode
268
+			templateMode.ExecuteTimes = 0
269
+			templateMode.ModifyTime = time.Now().Unix()
270
+			updateErr := service.SaveTemplateMode(templateMode)
271
+			if updateErr != nil {
272
+				this.ErrorLog("更新排班模板启用方式(1 -> 4)时失败:%v", updateErr)
273
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
274
+				return
275
+			}
276
+		} else if templateMode.Mode == 2 && mode == 4 { // 2 -> 1 清除第二周模板item,清除第二周排班
277
+			templateMode.Mode = mode
278
+			templateMode.ExecuteTimes = 0
279
+			templateMode.ModifyTime = time.Now().Unix()
280
+			updateErr := service.SaveTemplateMode(templateMode)
281
+			if updateErr != nil {
282
+				this.ErrorLog("更新排班模板启用方式(1 -> 4)时失败:%v", updateErr)
283
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
284
+				return
285
+			}
286
+		} else if templateMode.Mode == 3 && mode == 1 { // 3 -> 1 清除第三,二周模板item,清除第三,二周排班
287
+			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
288
+			if getTemplateIDsErr != nil {
289
+				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
290
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
291
+				return
292
+			}
293
+
294
+			templateMode.Mode = mode
295
+			templateMode.ExecuteTimes = 0
296
+			templateMode.ModifyTime = time.Now().Unix()
297
+			updateErr := service.SavePatientScheduleTemplateMode3To1(templateMode, templateIDs[1].ID, templateIDs[2].ID)
298
+			if updateErr != nil {
299
+				this.ErrorLog("更新排班模板启用方式(1 -> 3)时失败:%v", updateErr)
300
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
301
+				return
302
+			}
303
+		} else if templateMode.Mode == 3 && mode == 2 { // 3 -> 1 清除第三周模板item,清除第三周排班,将第一周的排班重复到第二周
304
+			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
305
+			if getTemplateIDsErr != nil {
306
+				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
307
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
308
+				return
309
+			}
310
+
311
+			templateMode.Mode = mode
312
+			templateMode.ExecuteTimes = 0
313
+			templateMode.ModifyTime = time.Now().Unix()
314
+			updateErr := service.SavePatientScheduleTemplateMode3To2(templateMode, templateIDs[2].ID)
315
+			if updateErr != nil {
316
+				this.ErrorLog("更新排班模板启用方式(2 -> 3)时失败:%v", updateErr)
317
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
318
+				return
319
+			}
320
+
321
+		} else if templateMode.Mode == 3 && mode == 4 { // 2 -> 1 清除第二周模板item,清除第二周排班
322
+			templateMode.Mode = mode
323
+			templateMode.ExecuteTimes = 0
324
+			templateMode.ModifyTime = time.Now().Unix()
325
+			updateErr := service.SaveTemplateMode(templateMode)
326
+			if updateErr != nil {
327
+				this.ErrorLog("更新排班模板启用方式(1 -> 4)时失败:%v", updateErr)
328
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
329
+				return
330
+			}
331
+		} else if templateMode.Mode == 4 && mode == 1 { // 4 -> 1 清除第三周模板item,清除第三周排班,将第一周的排班重复到第二周
332
+			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
333
+			if getTemplateIDsErr != nil {
334
+				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
335
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
336
+				return
337
+			}
338
+
339
+			templateMode.Mode = mode
340
+			templateMode.ExecuteTimes = 0
341
+			templateMode.ModifyTime = time.Now().Unix()
342
+			updateErr := service.SavePatientScheduleTemplateMode4To1(templateMode, templateIDs[1].ID, templateIDs[2].ID, templateIDs[3].ID)
343
+			if updateErr != nil {
344
+				this.ErrorLog("更新排班模板启用方式(1 -> 4)时失败:%v", updateErr)
345
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
346
+				return
347
+			}
348
+
349
+		} else if templateMode.Mode == 4 && mode == 2 { // 4 -> 2
350
+			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
351
+			if getTemplateIDsErr != nil {
352
+				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
353
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
354
+				return
355
+			}
356
+
357
+			templateMode.Mode = mode
358
+			templateMode.ExecuteTimes = 0
359
+			templateMode.ModifyTime = time.Now().Unix()
360
+			updateErr := service.SavePatientScheduleTemplateMode4To2(templateMode, templateIDs[2].ID, templateIDs[3].ID)
361
+			if updateErr != nil {
362
+				this.ErrorLog("更新排班模板启用方式(2 -> 4)时失败:%v", updateErr)
363
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
364
+				return
365
+			}
366
+
367
+		} else if templateMode.Mode == 4 && mode == 3 { // 4 -> 3
368
+			templateIDs, getTemplateIDsErr := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
369
+			if getTemplateIDsErr != nil {
370
+				this.ErrorLog("获取排班模板失败:%v", getTemplateIDsErr)
371
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
372
+				return
373
+			}
374
+
375
+			templateMode.Mode = mode
376
+			templateMode.ExecuteTimes = 0
377
+			templateMode.ModifyTime = time.Now().Unix()
378
+			updateErr := service.SavePatientScheduleTemplateMode4To3(templateMode, templateIDs[3].ID)
379
+			if updateErr != nil {
380
+				this.ErrorLog("更新排班模板启用方式(3 -> 4)时失败:%v", updateErr)
381
+				this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
382
+				return
383
+			}
384
+		}
385
+		templates, _ := service.GetOrgPatientScheduleTemplateIDs(adminUserInfo.CurrentOrgId)
386
+		//处理第几周数问题
387
+		if mode == 1 {
388
+			service.UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, week_time)
389
+
390
+		} else if mode == 2 {
391
+			service.UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, week_time)
392
+			service.UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, week_time+1)
393
+
394
+		} else if mode == 3 {
395
+			service.UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, week_time)
396
+			service.UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, week_time+1)
397
+			service.UpdateTemplateItemWeek(templates[2].OrgID, templates[2].ID, week_time+2)
398
+
399
+		} else if mode == 4 {
400
+			service.UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, week_time)
401
+			service.UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, week_time+1)
402
+			service.UpdateTemplateItemWeek(templates[2].OrgID, templates[2].ID, week_time+2)
403
+			service.UpdateTemplateItemWeek(templates[3].OrgID, templates[3].ID, week_time+3)
218
 		}
404
 		}
405
+
219
 	}
406
 	}
407
+
220
 	this.ServeSuccessJSON(nil)
408
 	this.ServeSuccessJSON(nil)
221
 }
409
 }
222
 
410
 
230
 	addSchedulesJSON := this.GetString("add_schs")
418
 	addSchedulesJSON := this.GetString("add_schs")
231
 	delSchedulesJSON := this.GetString("del_schs")
419
 	delSchedulesJSON := this.GetString("del_schs")
232
 	changeSchedulesJSON := this.GetString("change_schs")
420
 	changeSchedulesJSON := this.GetString("change_schs")
233
-	if templateID <= 0 || len(addSchedulesJSON) == 0 || len(delSchedulesJSON) == 0 || len(changeSchedulesJSON) == 0 {
421
+	if len(addSchedulesJSON) == 0 || len(delSchedulesJSON) == 0 || len(changeSchedulesJSON) == 0 {
234
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
422
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
235
 		return
423
 		return
236
 	}
424
 	}
329
 		return
517
 		return
330
 	}
518
 	}
331
 
519
 
332
-	shouldUpdateNextWeekSchedules := false
333
-	shouldUpdateNextSecondWeekSchedules := false
520
+	//shouldUpdateNextWeekSchedules := false
521
+	//shouldUpdateNextSecondWeekSchedules := false
522
+	//shouldUpdateNextThirdWeekSchedules := false
523
+	//shouldUpdateNextFourWeekSchedules := false
524
+	//
334
 	if templateMode.Mode == 0 {
525
 	if templateMode.Mode == 0 {
335
 		this.ErrorLog("当前未开启排班模板,所以更新模板的操作将被无视")
526
 		this.ErrorLog("当前未开启排班模板,所以更新模板的操作将被无视")
336
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
527
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
337
 		return
528
 		return
338
 	}
529
 	}
339
-	templateIDIndex := 1
340
-	for index, templateIDObject := range templateIDs {
341
-		if templateIDObject.ID == templateID {
342
-			templateIDIndex = index + 1
343
-		}
344
-	}
345
-	if templateMode.Mode == 1 {
346
-		if templateIDIndex == 1 {
347
-			shouldUpdateNextWeekSchedules = true
348
-			shouldUpdateNextSecondWeekSchedules = true
349
-		} else {
350
-			this.ErrorLog("当前开启的是单周模板,所以不会更新第二个模板")
351
-			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
352
-			return
353
-		}
354
-
355
-	} else { // mode == 2 => 开启双周模板时,只需更新一周排班
356
-		if templateIDIndex == 1 {
357
-			if templateMode.ExecuteTimes%2 == 0 {
358
-				shouldUpdateNextWeekSchedules = true
359
-				shouldUpdateNextSecondWeekSchedules = false
360
-			} else {
361
-				shouldUpdateNextWeekSchedules = false
362
-				shouldUpdateNextSecondWeekSchedules = true
363
-			}
364
-
365
-		} else {
366
-			if templateMode.ExecuteTimes%2 == 0 {
367
-				shouldUpdateNextWeekSchedules = false
368
-				shouldUpdateNextSecondWeekSchedules = true
369
-			} else {
370
-				shouldUpdateNextWeekSchedules = true
371
-				shouldUpdateNextSecondWeekSchedules = false
372
-			}
373
-
374
-		}
375
-	}
376
-
377
-	updateErr := service.UpdateScheduleTemplate(adminUserInfo.CurrentOrgId, templateID, addTemplateItems, delTemplateItems, changeTemplateItems, shouldUpdateNextWeekSchedules, shouldUpdateNextSecondWeekSchedules)
530
+	//判断当前用的是模版几
531
+	//templateIDIndex := 1
532
+	//for index, templateIDObject := range templateIDs {
533
+	//	if templateIDObject.ID == templateID {
534
+	//		//templateIDIndex = index + 1
535
+	//	}
536
+	//}
537
+	//if templateMode.Mode == 1 {
538
+	//	if templateIDIndex == 1 {
539
+	//		shouldUpdateNextWeekSchedules = true
540
+	//		shouldUpdateNextSecondWeekSchedules = true
541
+	//	} else {
542
+	//		this.ErrorLog("当前开启的是单周模板,所以不会更新第二个模板")
543
+	//		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
544
+	//		return
545
+	//	}
546
+	//
547
+	//} else if templateMode.Mode == 2 { // mode == 2 => 开启双周模板时,只需更新一周排班
548
+	//	if templateIDIndex == 1 {
549
+	//		if templateMode.ExecuteTimes%2 == 0 {
550
+	//			shouldUpdateNextWeekSchedules = true
551
+	//			shouldUpdateNextSecondWeekSchedules = false
552
+	//		} else {
553
+	//			shouldUpdateNextWeekSchedules = false
554
+	//			shouldUpdateNextSecondWeekSchedules = true
555
+	//		}
556
+	//
557
+	//	} else {
558
+	//		if templateMode.ExecuteTimes%2 == 0 {
559
+	//			shouldUpdateNextWeekSchedules = false
560
+	//			shouldUpdateNextSecondWeekSchedules = true
561
+	//		} else {
562
+	//			shouldUpdateNextWeekSchedules = true
563
+	//			shouldUpdateNextSecondWeekSchedules = false
564
+	//		}
565
+	//
566
+	//	}
567
+	//} else if templateMode.Mode == 3 { // mode == 2 => 开启双周模板时,只需更新一周排班
568
+	//	if templateIDIndex == 1 { //当前修改的是第一个模版
569
+	//		if templateMode.ExecuteTimes%3 == 0 {
570
+	//			shouldUpdateNextWeekSchedules = true
571
+	//			shouldUpdateNextSecondWeekSchedules = false
572
+	//			shouldUpdateNextThirdWeekSchedules = false
573
+	//		} else if templateMode.ExecuteTimes%3 == 1 {
574
+	//			shouldUpdateNextWeekSchedules = false
575
+	//			shouldUpdateNextSecondWeekSchedules = true
576
+	//			shouldUpdateNextThirdWeekSchedules = false
577
+	//		} else {
578
+	//			shouldUpdateNextWeekSchedules = false
579
+	//			shouldUpdateNextSecondWeekSchedules = false
580
+	//			shouldUpdateNextThirdWeekSchedules = true
581
+	//		}
582
+	//	} else if templateIDIndex == 2 {
583
+	//		if templateMode.ExecuteTimes%2 == 0 {
584
+	//			shouldUpdateNextWeekSchedules = false
585
+	//			shouldUpdateNextSecondWeekSchedules = true
586
+	//		} else {
587
+	//			shouldUpdateNextWeekSchedules = true
588
+	//			shouldUpdateNextSecondWeekSchedules = false
589
+	//		}
590
+	//
591
+	//	} else {
592
+	//
593
+	//	}
594
+	//}
595
+
596
+	updateErr := service.UpdateScheduleTemplate(adminUserInfo.CurrentOrgId, templateID, addTemplateItems, delTemplateItems, changeTemplateItems)
378
 	if updateErr != nil {
597
 	if updateErr != nil {
379
 		this.ErrorLog("更新排班模板排班失败:%v", updateErr)
598
 		this.ErrorLog("更新排班模板排班失败:%v", updateErr)
380
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
599
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
381
 		return
600
 		return
382
 	}
601
 	}
383
 
602
 
384
-	newItems, getTemplateItemsErr := service.GetOrgPatientScheduleTemplateItemsByTemplateID(adminUserInfo.CurrentOrgId, templateID)
603
+	newItems, getTemplateItemsErr := service.GetOrgPatientScheduleTemplateItemsByTemplateID(adminUserInfo.CurrentOrgId)
385
 	if getTemplateItemsErr != nil {
604
 	if getTemplateItemsErr != nil {
386
 		this.ErrorLog("获取排班模板排班失败:%v", getTemplateItemsErr)
605
 		this.ErrorLog("获取排班模板排班失败:%v", getTemplateItemsErr)
387
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
606
 		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
399
 	Weekday        int8  `json:"weekday"`
618
 	Weekday        int8  `json:"weekday"`
400
 	TimeType       int8  `json:"time_type"`
619
 	TimeType       int8  `json:"time_type"`
401
 }
620
 }
621
+
622
+func (this *PatientScheduleTemplateAPIController) GetPatientList() {
623
+	patients, err := service.GetSchTemplatePatientList(this.GetAdminUserInfo().CurrentOrgId)
624
+	if err != nil {
625
+		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
626
+	}
627
+	this.ServeSuccessJSON(map[string]interface{}{
628
+		"list": patients,
629
+	})
630
+
631
+}

+ 4 - 1
enums/error_code.go Näytä tiedosto

262
 	ErrorCodeDeletePChargeWrongTwo = 3900004
262
 	ErrorCodeDeletePChargeWrongTwo = 3900004
263
 
263
 
264
 	ErrorCodeHisPatientNoRegException = 4000000
264
 	ErrorCodeHisPatientNoRegException = 4000000
265
+
266
+	ErrorCodeCantDeleteScheduleBeforeNow = 40000001
265
 )
267
 )
266
 
268
 
267
 var ErrCodeMsgs = map[int]string{
269
 var ErrCodeMsgs = map[int]string{
335
 	ErrorCodeCreateScheduleFail:             "添加排班失败",
337
 	ErrorCodeCreateScheduleFail:             "添加排班失败",
336
 	ErrorCodeCantSetScheduleAgainOneDay:     "同一天不可有两次排班",
338
 	ErrorCodeCantSetScheduleAgainOneDay:     "同一天不可有两次排班",
337
 	ErrorCodeCantSetScheduleBeforeNow:       "不能给今天之前的日期排班",
339
 	ErrorCodeCantSetScheduleBeforeNow:       "不能给今天之前的日期排班",
338
-	ErrorCodeScheduleNotExist:               "排班不存在",
340
+	ErrorCodeCantDeleteScheduleBeforeNow:    "不能删除今天之前的日期排班",
341
+	ErrorCodeScheduleNotExist:               "排班不存go在",
339
 	ErrorCodePointScheduleExist:             "所先位置排班已经存在",
342
 	ErrorCodePointScheduleExist:             "所先位置排班已经存在",
340
 	ErrorCodeDeleteScheduleFail:             "取消排班失败",
343
 	ErrorCodeDeleteScheduleFail:             "取消排班失败",
341
 	ErrorCodeChangeScheduleFail:             "修改排班失败",
344
 	ErrorCodeChangeScheduleFail:             "修改排班失败",

+ 2 - 0
models/patient_schedule_template_models.go Näytä tiedosto

8
 	Status       int8  `gorm:"column:status" json:"-" form:"status"`
8
 	Status       int8  `gorm:"column:status" json:"-" form:"status"`
9
 	CreateTime   int64 `gorm:"column:ctime" json:"-" form:"ctime"`
9
 	CreateTime   int64 `gorm:"column:ctime" json:"-" form:"ctime"`
10
 	ModifyTime   int64 `gorm:"column:mtime" json:"-" form:"mtime"`
10
 	ModifyTime   int64 `gorm:"column:mtime" json:"-" form:"mtime"`
11
+	Week         int64 `gorm:"column:week" json:"-" form:"week"`
11
 }
12
 }
12
 
13
 
13
 func (PatientScheduleTemplateMode) TableName() string {
14
 func (PatientScheduleTemplateMode) TableName() string {
20
 	Status     int8  `gorm:"column:status" json:"-" form:"status"`
21
 	Status     int8  `gorm:"column:status" json:"-" form:"status"`
21
 	CreateTime int64 `gorm:"column:ctime" json:"-" form:"ctime"`
22
 	CreateTime int64 `gorm:"column:ctime" json:"-" form:"ctime"`
22
 	ModifyTime int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
23
 	ModifyTime int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
24
+	Week       int   `gorm:"column:week" json:"week" form:"week"`
23
 }
25
 }
24
 
26
 
25
 func (PatientScheduleTemplateId) TableName() string {
27
 func (PatientScheduleTemplateId) TableName() string {

+ 5 - 3
models/schedule_models.go Näytä tiedosto

44
 	UpdatedTime  int64 `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
44
 	UpdatedTime  int64 `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
45
 	IsExport     int64 `gorm:"column:is_export" json:"is_export" form:"is_export"`
45
 	IsExport     int64 `gorm:"column:is_export" json:"is_export" form:"is_export"`
46
 
46
 
47
-	Patient                   string               `gorm:"-" json:"patient" form:"patient"`
48
-	DeviceZone                DeviceZone           `json:"zone" gorm:"foreignkey:ID;AssociationForeignKey:PartitionId;"`
49
-	DeviceNumber              DeviceNumber         `json:"number" gorm:"foreignkey:ID;AssociationForeignKey:BedId;"`
47
+	Patient      string       `gorm:"-" json:"patient" form:"patient"`
48
+	DeviceZone   DeviceZone   `json:"zone" gorm:"foreignkey:ID;AssociationForeignKey:PartitionId;"`
49
+	DeviceNumber DeviceNumber `json:"number" gorm:"foreignkey:ID;AssociationForeignKey:BedId;"`
50
+
50
 	TreatmentMode             TreatmentMode        `json:"mode" gorm:"foreignkey:ModeId"`
51
 	TreatmentMode             TreatmentMode        `json:"mode" gorm:"foreignkey:ModeId"`
51
 	DialysisOrder             DialysisOrder        `json:"order" gorm:"foreignkey:DialysisDate,PatientId;AssociationForeignKey:ScheduleDate,PatientId;"`
52
 	DialysisOrder             DialysisOrder        `json:"order" gorm:"foreignkey:DialysisDate,PatientId;AssociationForeignKey:ScheduleDate,PatientId;"`
52
 	DialysisPrescription      DialysisPrescription `json:"dialysis_prescription" gorm:"foreignkey:RecordDate,PatientId;AssociationForeignKey:RecordDate,PatientId;"`
53
 	DialysisPrescription      DialysisPrescription `json:"dialysis_prescription" gorm:"foreignkey:RecordDate,PatientId;AssociationForeignKey:RecordDate,PatientId;"`
53
 	PatientInfectiousDiseases []InfectiousDiseases `json:"patient_contagions" gorm:"foreignkey:PatientId;AssociationForeignKey:PatientId;"`
54
 	PatientInfectiousDiseases []InfectiousDiseases `json:"patient_contagions" gorm:"foreignkey:PatientId;AssociationForeignKey:PatientId;"`
55
+	DialysisMachineName       string               `gorm:"column:dialysis_machine_name" json:"dialysis_machine_name" form:"dialysis_machine_name"`
54
 }
56
 }
55
 
57
 
56
 func (Schedule) TableName() string {
58
 func (Schedule) TableName() string {

+ 79 - 0
models/smart_sch.go Näytä tiedosto

1
+package models
2
+
3
+type SmartSchPatient struct {
4
+	ID            int64            `gorm:"column:id" json:"id" form:"id"`
5
+	UserOrgId     int64            `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
6
+	Name          string           `gorm:"column:name" json:"name" form:"name"`
7
+	SmartSchedule []*SmartSchedule `gorm:"-" json:"sch"`
8
+}
9
+
10
+func (SmartSchPatient) TableName() string {
11
+	return "xt_patients"
12
+}
13
+
14
+type SmartSchTemplatePatient struct {
15
+	ID                          int64  `gorm:"column:id" json:"id" form:"id"`
16
+	UserOrgId                   int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
17
+	Name                        string `gorm:"column:name" json:"name" form:"name"`
18
+	XtPatientScheduleTemplateId []*XtPatientScheduleTemplateId
19
+}
20
+
21
+func (SmartSchTemplatePatient) TableName() string {
22
+	return "xt_patients"
23
+}
24
+
25
+type SmartSchedule struct {
26
+	ID           int64        `gorm:"column:id" json:"id" form:"id"`
27
+	UserOrgId    int64        `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
28
+	PartitionId  int64        `gorm:"column:partition_id" json:"partition_id" form:"partition_id"`
29
+	BedId        int64        `gorm:"column:bed_id" json:"bed_id" form:"bed_id"`
30
+	PatientId    int64        `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
31
+	ScheduleDate int64        `gorm:"column:schedule_date" json:"schedule_date" form:"schedule_date"`
32
+	ScheduleType int64        `gorm:"column:schedule_type" json:"schedule_type" form:"schedule_type"`
33
+	ScheduleWeek int64        `gorm:"column:schedule_week" json:"schedule_week" form:"schedule_week"`
34
+	ModeId       int64        `gorm:"column:mode_id" json:"mode_id" form:"mode_id"`
35
+	Status       int64        `gorm:"column:status" json:"status" form:"status"`
36
+	CreatedTime  int64        `gorm:"column:created_time" json:"created_time" form:"created_time"`
37
+	UpdatedTime  int64        `gorm:"column:updated_time" json:"updated_time" form:"updated_time"`
38
+	IsExport     int64        `gorm:"column:is_export" json:"is_export" form:"is_export"`
39
+	DeviceZone   DeviceZone   `json:"zone" gorm:"foreignkey:ID;AssociationForeignKey:PartitionId;"`
40
+	DeviceNumber DeviceNumber `json:"number" gorm:"foreignkey:ID;AssociationForeignKey:BedId;"`
41
+}
42
+
43
+func (SmartSchedule) TableName() string {
44
+	return "xt_schedule"
45
+}
46
+
47
+type XtPatientScheduleTemplateId struct {
48
+	ID                            int64                            `gorm:"column:id" json:"id" form:"id"`
49
+	OrgId                         int64                            `gorm:"column:org_id" json:"org_id" form:"org_id"`
50
+	Status                        int64                            `gorm:"column:status" json:"status" form:"status"`
51
+	Ctime                         int64                            `gorm:"column:ctime" json:"ctime" form:"ctime"`
52
+	Mtime                         int64                            `gorm:"column:mtime" json:"mtime" form:"mtime"`
53
+	Week                          int64                            `gorm:"column:week" json:"week" form:"week"`
54
+	XtPatientScheduleTemplateItem []*XtPatientScheduleTemplateItem `gorm:"foreignkey:TemplateId;AssociationForeignKey:ID;" json:"template" form:"template"`
55
+}
56
+
57
+func (XtPatientScheduleTemplateId) TableName() string {
58
+	return "xt_patient_schedule_template_id"
59
+}
60
+
61
+type XtPatientScheduleTemplateItem struct {
62
+	ID             int64 `gorm:"column:id" json:"id" form:"id"`
63
+	OrgId          int64 `gorm:"column:org_id" json:"org_id" form:"org_id"`
64
+	TemplateId     int64 `gorm:"column:template_id" json:"template_id" form:"template_id"`
65
+	DeviceNumberId int64 `gorm:"column:device_number_id" json:"device_number_id" form:"device_number_id"`
66
+	PatientId      int64 `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
67
+	TreatMode      int64 `gorm:"column:treat_mode" json:"treat_mode" form:"treat_mode"`
68
+	Weekday        int64 `gorm:"column:weekday" json:"weekday" form:"weekday"`
69
+	TimeType       int64 `gorm:"column:time_type" json:"time_type" form:"time_type"`
70
+	Status         int64 `gorm:"column:status" json:"status" form:"status"`
71
+	Ctime          int64 `gorm:"column:ctime" json:"ctime" form:"ctime"`
72
+	Mtime          int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
73
+	IsExport       int64 `gorm:"column:is_export" json:"is_export" form:"is_export"`
74
+	ZoneId         int64 `gorm:"-" json:"zone_id" form:"zone_id"`
75
+}
76
+
77
+func (XtPatientScheduleTemplateItem) TableName() string {
78
+	return "xt_patient_schedule_template_item"
79
+}

+ 1 - 0
models/vm_models.go Näytä tiedosto

230
 	Status       int64 `gorm:"column:status" json:"status" form:"status"`
230
 	Status       int64 `gorm:"column:status" json:"status" form:"status"`
231
 	Ctime        int64 `gorm:"column:ctime" json:"ctime" form:"ctime"`
231
 	Ctime        int64 `gorm:"column:ctime" json:"ctime" form:"ctime"`
232
 	Mtime        int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
232
 	Mtime        int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
233
+	Week         int64 `gorm:"column:week" json:"-" form:"week"`
233
 }
234
 }
234
 
235
 
235
 func (VMPatientScheduleTemplateMode) TableName() string {
236
 func (VMPatientScheduleTemplateMode) TableName() string {

+ 1 - 1
routers/router.go Näytä tiedosto

14
 		AllowOrigins: []string{"https://xt.kuyicloud.com", "http://localhost:9528", "http://localhost:9529", "http://localhost:9531", "http://xt.test.shengws.com", "http://new_mobile.test.sgjyun.com", "https://xt.test.shengws.com", "http://xt.test.sgjyun.com", "https://xt.test.sgjyun.com", "http://localhost:8081", "http://localhost:8082", "https://pad.kuyicloud.com", "http://pad.kuyicloud.com", "http://pad.test.sgjyun.com", "https://pad.test.sgjyun.com", "http://admin.xt.test.sgjyun.com", "http://admin.xt.kuyicloud.com", "http://mobile.sgjyun.com", "http://mobile.kuyicloud.com"},
14
 		AllowOrigins: []string{"https://xt.kuyicloud.com", "http://localhost:9528", "http://localhost:9529", "http://localhost:9531", "http://xt.test.shengws.com", "http://new_mobile.test.sgjyun.com", "https://xt.test.shengws.com", "http://xt.test.sgjyun.com", "https://xt.test.sgjyun.com", "http://localhost:8081", "http://localhost:8082", "https://pad.kuyicloud.com", "http://pad.kuyicloud.com", "http://pad.test.sgjyun.com", "https://pad.test.sgjyun.com", "http://admin.xt.test.sgjyun.com", "http://admin.xt.kuyicloud.com", "http://mobile.sgjyun.com", "http://mobile.kuyicloud.com"},
15
 		//AllowOrigins:     []string{"https://xt.kuyicloud.com", "http://localhost:9528", "http://xt.test.shengws.com","https://xt.test.shengws.com", "http://xt.test.sgjyun.com","https://xt.test.sgjyun.com", "http://localhost:8081", "http://localhost:8082", "https://pad.kuyicloud.com", "http://pad.kuyicloud.com", "http://pad.test.sgjyun.com","https://pad.test.sgjyun.com", "http://admin.xt.test.sgjyun.com", "http://admin.xt.kuyicloud.com","http://mobile.sgjyun.com","http://mobile.kuyicloud.com"},
15
 		//AllowOrigins:     []string{"https://xt.kuyicloud.com", "http://localhost:9528", "http://xt.test.shengws.com","https://xt.test.shengws.com", "http://xt.test.sgjyun.com","https://xt.test.sgjyun.com", "http://localhost:8081", "http://localhost:8082", "https://pad.kuyicloud.com", "http://pad.kuyicloud.com", "http://pad.test.sgjyun.com","https://pad.test.sgjyun.com", "http://admin.xt.test.sgjyun.com", "http://admin.xt.kuyicloud.com","http://mobile.sgjyun.com","http://mobile.kuyicloud.com"},
16
 		AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
16
 		AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
17
-		AllowHeaders:     []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type", "X-XSRF-TOKEN", "Permission"},
17
+		AllowHeaders:     []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type", "X-XSRF-TOKEN", "Permission", "KyToken"},
18
 		ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
18
 		ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
19
 		AllowCredentials: true,
19
 		AllowCredentials: true,
20
 	}))
20
 	}))

+ 345 - 20
service/auto_create_week_schedules_service.go Näytä tiedosto

22
 	//spec := "0 */1 * * * ?"
22
 	//spec := "0 */1 * * * ?"
23
 	createWeekSchedulesCronJob.AddFunc(spec, func() {
23
 	createWeekSchedulesCronJob.AddFunc(spec, func() {
24
 		AutoCreateWeekSchedules()
24
 		AutoCreateWeekSchedules()
25
+		NewAutoCreateWeekSchedules()
25
 	})
26
 	})
26
 }
27
 }
27
 
28
 
29
 	createWeekSchedulesCronJob.Start()
30
 	createWeekSchedulesCronJob.Start()
30
 }
31
 }
31
 
32
 
33
+func NewAutoCreateWeekSchedules() {
34
+	utils.TraceLog("自动排班任务开始执行")
35
+	var modes []*models.PatientScheduleTemplateMode
36
+	getModesErr := readDb.Model(&models.PatientScheduleTemplateMode{}).Where("mode <> 0 AND status = 1").Find(&modes).Error
37
+	if getModesErr != nil {
38
+		utils.ErrorLog("自动排班-获取启用模板模式列表失败:%v", getModesErr)
39
+		CreateDBErrorRecord(0, "自动排班-获取启用模板模式列表失败:%v", getModesErr)
40
+		return
41
+	}
42
+
43
+	for _, mode := range modes {
44
+		templates, getTemplatesErr := GetOrgPatientScheduleTemplateIDs(mode.OrgID)
45
+		if getTemplatesErr != nil {
46
+			utils.ErrorLog("自动排班-org_id: %v :获取模板 ID 失败:%v", mode.OrgID, getTemplatesErr)
47
+			CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取模板 ID 失败:%v", mode.OrgID, getTemplatesErr)
48
+			continue
49
+		} else if len(templates) == 0 {
50
+			utils.WarningLog("自动排班-org_id: %v :没有模板", mode.OrgID)
51
+			continue
52
+		}
53
+
54
+		now := time.Now()
55
+		nextSecWeek := now.AddDate(0, 0, 14)
56
+		//nextThridWeek := now.AddDate(0, 0, 21)
57
+		//nextFourWeek := now.AddDate(0, 0, 28)
58
+
59
+		tx := writeDb.Begin()
60
+
61
+		thisTime := time.Now()
62
+		_, theWeek := thisTime.ISOWeek()
63
+
64
+		//mode.Week == 0 为了兼容开发新功能前的老数据
65
+		//新功能加了,预约排班生成的,int64(theWeek) >= mode.Week 当判断当前周数是否小大于或者等于模版预约第几周生成的周数
66
+		if mode.Week == 0 || int64(theWeek) >= mode.Week {
67
+
68
+			if mode.Mode == 1 { // 用第一周模板生成下第二周的排班
69
+
70
+				items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[0].ID)
71
+				if getItemsErr != nil {
72
+					utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
73
+					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
74
+					continue
75
+				}
76
+				insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
77
+				if insertErr != nil {
78
+					utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
79
+					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
80
+					tx.Rollback()
81
+					continue
82
+				} else {
83
+					//更新周次
84
+					templates[0].Week = count
85
+					UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, int8(templates[0].Week))
86
+					continue
87
+				}
88
+			} else if mode.Mode == 2 { // mode.ExecuteTimes % 2 的结果,如果为0,用第一周模板生成下第二周的排班,否则用第二周的模板生成排班
89
+				if mode.ExecuteTimes%2 == 0 {
90
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[0].ID)
91
+					if getItemsErr != nil {
92
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
93
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
94
+						continue
95
+					}
96
+
97
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
98
+					if insertErr != nil {
99
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
100
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
101
+						tx.Rollback()
102
+						continue
103
+					} else {
104
+						//更新周次
105
+						templates[0].Week = count
106
+						UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, int8(templates[0].Week))
107
+
108
+						continue
109
+					}
110
+
111
+				} else {
112
+					if len(templates) < 2 {
113
+						utils.WarningLog("自动排班-org_id: %v :没有第二周的模板")
114
+						continue
115
+					}
116
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[1].ID)
117
+					if getItemsErr != nil {
118
+						utils.ErrorLog("自动排班-org_id: %v :获取第二周模板Item失败:%v", mode.OrgID, getItemsErr)
119
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第二周模板Item失败:%v", mode.OrgID, getItemsErr)
120
+						continue
121
+					}
122
+
123
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
124
+					if insertErr != nil {
125
+						utils.ErrorLog("自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
126
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
127
+						tx.Rollback()
128
+						continue
129
+					} else {
130
+						//更新周次
131
+						templates[1].Week = count
132
+						UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, int8(templates[1].Week))
133
+
134
+						continue
135
+					}
136
+				}
137
+			} else if mode.Mode == 3 { // mode.ExecuteTimes % 2 的结果,如果为0,用第一周模板生成下第二周的排班,否则用第二周的模板生成排班
138
+				if mode.ExecuteTimes%3 == 0 {
139
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[0].ID)
140
+					if getItemsErr != nil {
141
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
142
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
143
+						continue
144
+					}
145
+
146
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
147
+					if insertErr != nil {
148
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
149
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
150
+						tx.Rollback()
151
+						continue
152
+					} else {
153
+						templates[0].Week = count
154
+						UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, int8(templates[0].Week))
155
+
156
+						continue
157
+
158
+					}
159
+
160
+				} else if mode.ExecuteTimes%3 == 1 {
161
+					if len(templates) < 2 {
162
+						utils.WarningLog("自动排班-org_id: %v :没有第二周的模板")
163
+						continue
164
+					}
165
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[1].ID)
166
+					if getItemsErr != nil {
167
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
168
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
169
+						continue
170
+					}
171
+
172
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
173
+					if insertErr != nil {
174
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
175
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
176
+						tx.Rollback()
177
+						continue
178
+					} else {
179
+						//更新周次
180
+						templates[1].Week = count
181
+						UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, int8(templates[1].Week))
182
+
183
+						continue
184
+					}
185
+
186
+				} else {
187
+					if len(templates) < 3 {
188
+						utils.WarningLog("自动排班-org_id: %v :没有第三周的模板")
189
+						continue
190
+					}
191
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[2].ID)
192
+					if getItemsErr != nil {
193
+						utils.ErrorLog("自动排班-org_id: %v :获取第三周模板Item失败:%v", mode.OrgID, getItemsErr)
194
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第三周模板Item失败:%v", mode.OrgID, getItemsErr)
195
+						continue
196
+					}
197
+
198
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
199
+					if insertErr != nil {
200
+						utils.ErrorLog("自动排班-org_id: %v :使用第三周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
201
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第三周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
202
+						tx.Rollback()
203
+						continue
204
+					} else {
205
+						//更新周次
206
+						templates[2].Week = count
207
+						UpdateTemplateItemWeek(templates[2].OrgID, templates[2].ID, int8(templates[2].Week))
208
+
209
+						continue
210
+					}
211
+				}
212
+			} else if mode.Mode == 4 { // mode.ExecuteTimes % 2 的结果,如果为0,用第一周模板生成下第二周的排班,否则用第二周的模板生成排班
213
+				if mode.ExecuteTimes%4 == 0 {
214
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[0].ID)
215
+					if getItemsErr != nil {
216
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
217
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
218
+						continue
219
+					}
220
+
221
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
222
+					if insertErr != nil {
223
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
224
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
225
+						tx.Rollback()
226
+						continue
227
+					} else {
228
+						//更新周次
229
+						templates[0].Week = count
230
+						UpdateTemplateItemWeek(templates[0].OrgID, templates[0].ID, int8(templates[0].Week))
231
+
232
+						continue
233
+
234
+					}
235
+
236
+				} else if mode.ExecuteTimes%4 == 1 {
237
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[1].ID)
238
+					if getItemsErr != nil {
239
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
240
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
241
+						continue
242
+					}
243
+
244
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
245
+					if insertErr != nil {
246
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
247
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
248
+						tx.Rollback()
249
+						continue
250
+					} else {
251
+
252
+						//更新周次
253
+						templates[1].Week = count
254
+						UpdateTemplateItemWeek(templates[1].OrgID, templates[1].ID, int8(templates[1].Week))
255
+
256
+						continue
257
+					}
258
+
259
+				} else if mode.ExecuteTimes%4 == 2 {
260
+					if len(templates) < 2 {
261
+						utils.WarningLog("自动排班-org_id: %v :没有第二周的模板")
262
+						continue
263
+					}
264
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[2].ID)
265
+					if getItemsErr != nil {
266
+						utils.ErrorLog("自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
267
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
268
+						continue
269
+					}
270
+
271
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
272
+					if insertErr != nil {
273
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
274
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
275
+						tx.Rollback()
276
+						continue
277
+					} else {
278
+
279
+						//更新周次
280
+						templates[2].Week = count
281
+						UpdateTemplateItemWeek(templates[2].OrgID, templates[2].ID, int8(templates[2].Week))
282
+
283
+						continue
284
+					}
285
+
286
+				} else if mode.ExecuteTimes%4 == 3 {
287
+					if len(templates) < 3 {
288
+						utils.WarningLog("自动排班-org_id: %v :没有第三周的模板")
289
+						continue
290
+					}
291
+					items, getItemsErr := GetOrgPatientScheduleTemplateItemsWithoutPatientByTemplateID(mode.OrgID, templates[3].ID)
292
+					if getItemsErr != nil {
293
+						utils.ErrorLog("自动排班-org_id: %v :获取第三周模板Item失败:%v", mode.OrgID, getItemsErr)
294
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第三周模板Item失败:%v", mode.OrgID, getItemsErr)
295
+						continue
296
+					}
297
+
298
+					insertErr, count := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
299
+					if insertErr != nil {
300
+						utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第四周排班失败:%v", mode.OrgID, insertErr)
301
+						CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第三周排班失败:%v", mode.OrgID, insertErr)
302
+						tx.Rollback()
303
+						continue
304
+					} else {
305
+						//更新周次
306
+						templates[3].Week = count
307
+						UpdateTemplateItemWeek(templates[3].OrgID, templates[3].ID, int8(templates[3].Week))
308
+						continue
309
+					}
310
+
311
+				}
312
+			}
313
+			mode.ExecuteTimes += 1
314
+			mode.ModifyTime = now.Unix()
315
+			updateModeErr := tx.Save(mode).Error
316
+			if updateModeErr != nil {
317
+				utils.ErrorLog("自动排班-org_id:%v :更新启用模板模式的执行次数失败:%v", mode.OrgID, updateModeErr)
318
+				CreateDBErrorRecord(mode.OrgID, "自动排班-org_id:%v :更新启用模板模式的执行次数失败:%v", mode.OrgID, updateModeErr)
319
+				tx.Rollback()
320
+				continue
321
+			}
322
+			tx.Commit()
323
+			utils.SuccessLog("自动排班-插入排班成功:org_id: %v", mode.OrgID)
324
+			time.Sleep(time.Second * 30)
325
+		}
326
+		utils.SuccessLog("自动排班任务完成")
327
+
328
+	}
329
+
330
+}
331
+
32
 func AutoCreateWeekSchedules() {
332
 func AutoCreateWeekSchedules() {
33
 	utils.TraceLog("自动排班任务开始执行")
333
 	utils.TraceLog("自动排班任务开始执行")
34
 	var modes []*models.PatientScheduleTemplateMode
334
 	var modes []*models.PatientScheduleTemplateMode
61
 				CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
361
 				CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :获取第一周模板Item失败:%v", mode.OrgID, getItemsErr)
62
 				continue
362
 				continue
63
 			}
363
 			}
64
-			insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
364
+			insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
65
 			if insertErr != nil {
365
 			if insertErr != nil {
66
 				utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
366
 				utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
67
 				CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
367
 				CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
78
 					continue
378
 					continue
79
 				}
379
 				}
80
 
380
 
81
-				insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
381
+				insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
82
 				if insertErr != nil {
382
 				if insertErr != nil {
83
 					utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
383
 					utils.ErrorLog("自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
84
 					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
384
 					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
98
 					continue
398
 					continue
99
 				}
399
 				}
100
 
400
 
101
-				insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
401
+				insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, nextSecWeek, items, nil)
102
 				if insertErr != nil {
402
 				if insertErr != nil {
103
 					utils.ErrorLog("自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
403
 					utils.ErrorLog("自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
104
 					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
404
 					CreateDBErrorRecord(mode.OrgID, "自动排班-org_id: %v :使用第二周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
105
 					tx.Rollback()
405
 					tx.Rollback()
106
 					continue
406
 					continue
407
+				} else {
408
+
107
 				}
409
 				}
108
 			}
410
 			}
109
 		}
411
 		}
110
-
111
 		mode.ExecuteTimes += 1
412
 		mode.ExecuteTimes += 1
112
 		mode.ModifyTime = now.Unix()
413
 		mode.ModifyTime = now.Unix()
113
 		updateModeErr := tx.Save(mode).Error
414
 		updateModeErr := tx.Save(mode).Error
117
 			tx.Rollback()
418
 			tx.Rollback()
118
 			continue
419
 			continue
119
 		}
420
 		}
120
-
121
 		tx.Commit()
421
 		tx.Commit()
122
 		utils.SuccessLog("自动排班-插入排班成功:org_id: %v", mode.OrgID)
422
 		utils.SuccessLog("自动排班-插入排班成功:org_id: %v", mode.OrgID)
123
-
124
 		time.Sleep(time.Second * 30)
423
 		time.Sleep(time.Second * 30)
125
 	}
424
 	}
126
 
425
 
127
 	utils.SuccessLog("自动排班任务完成")
426
 	utils.SuccessLog("自动排班任务完成")
128
 }
427
 }
129
 
428
 
130
-func _refreshWeekSchedulesWithTemplateItems(tx *gorm.DB, orgID int64, week time.Time, templateItems []*models.PatientScheduleTemplateItem, deviceNumberMap map[int64]*DeviceNumberViewModel) error {
429
+func _refreshWeekSchedulesWithTemplateItems(tx *gorm.DB, orgID int64, week time.Time, templateItems []*models.PatientScheduleTemplateItem, deviceNumberMap map[int64]*DeviceNumberViewModel) (error, int) {
131
 	if deviceNumberMap == nil {
430
 	if deviceNumberMap == nil {
132
 		deviceNumbers, getDeviceNumbersErr := GetAllValidDeviceNumbers(orgID)
431
 		deviceNumbers, getDeviceNumbersErr := GetAllValidDeviceNumbers(orgID)
133
 		//fmt.Println("getDeviceNumbersErr3232322332323232323323223232323",getDeviceNumbersErr)
432
 		//fmt.Println("getDeviceNumbersErr3232322332323232323323223232323",getDeviceNumbersErr)
134
 		if getDeviceNumbersErr != nil {
433
 		if getDeviceNumbersErr != nil {
135
-			return getDeviceNumbersErr
434
+			return getDeviceNumbersErr, 0
136
 		}
435
 		}
137
 		deviceNumberMap = make(map[int64]*DeviceNumberViewModel, 0)
436
 		deviceNumberMap = make(map[int64]*DeviceNumberViewModel, 0)
138
 		for _, deviceNumber := range deviceNumbers {
437
 		for _, deviceNumber := range deviceNumbers {
145
 	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", orgID, monday.Unix(), sunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
444
 	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", orgID, monday.Unix(), sunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
146
 	//fmt.Println("disableErr323232332323232233222332232332",disableErr)
445
 	//fmt.Println("disableErr323232332323232233222332232332",disableErr)
147
 	if disableErr != nil {
446
 	if disableErr != nil {
148
-		return disableErr
447
+		return disableErr, 0
149
 	}
448
 	}
150
 
449
 
450
+	var week_count int
151
 	// 批量插入排班
451
 	// 批量插入排班
152
 	if len(templateItems) > 0 {
452
 	if len(templateItems) > 0 {
153
 
453
 
454
+		timeLayout := "20060102"
455
+		loc, _ := time.LoadLocation("Local")
456
+		tmp, _ := time.ParseInLocation(timeLayout, time.Unix(monday.Unix(), 0).Format("2006-01-02"), loc)
457
+		_, weeks := tmp.ISOWeek()
458
+		week_count = weeks
154
 		valueStrs := make([]string, 0, len(templateItems))
459
 		valueStrs := make([]string, 0, len(templateItems))
155
 		values := make([]interface{}, 0, len(templateItems)*11)
460
 		values := make([]interface{}, 0, len(templateItems)*11)
156
 
461
 
160
 				continue
465
 				continue
161
 			}
466
 			}
162
 
467
 
163
-			valueStrs = append(valueStrs, "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
468
+			so, _ := GetDialysisSolutionTwo(item.OrgID, item.PatientID, item.TreatMode)
469
+			filedRecordOne, _ := FindFiledBy(item.OrgID, "透析器")
470
+			filedRecordTwo, _ := FindFiledBy(item.OrgID, "灌流器")
471
+			filedRecordThree, _ := FindFiledBy(item.OrgID, "透析器/灌流器")
472
+			var DialysisMachineName string
473
+			if filedRecordOne.IsShow == 1 {
474
+				DialysisMachineName = so.DialysisDialyszers
475
+				//service.UpdateSchDName(schedule)
476
+			}
477
+			if filedRecordTwo.IsShow == 1 {
478
+				DialysisMachineName = so.DialysisIrrigation
479
+				//service.UpdateSchDName(schedule)
480
+			}
481
+
482
+			if filedRecordThree.IsShow == 1 {
483
+				DialysisMachineName = so.DialyzerPerfusionApparatus
484
+				//service.UpdateSchDName(schedule)
485
+			}
486
+
487
+			valueStrs = append(valueStrs, "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)")
164
 			values = append(values, orgID)
488
 			values = append(values, orgID)
165
 			values = append(values, deviceNumber.ZoneID)
489
 			values = append(values, deviceNumber.ZoneID)
166
 			values = append(values, item.DeviceNumberID)
490
 			values = append(values, item.DeviceNumberID)
172
 			values = append(values, 1)
496
 			values = append(values, 1)
173
 			values = append(values, now.Unix())
497
 			values = append(values, now.Unix())
174
 			values = append(values, now.Unix())
498
 			values = append(values, now.Unix())
499
+			values = append(values, DialysisMachineName)
175
 		}
500
 		}
176
-
177
-		sql := fmt.Sprintf("INSERT INTO xt_schedule (user_org_id, partition_id, bed_id, patient_id, schedule_date, schedule_week, schedule_type, mode_id, status, created_time, updated_time) VALUES %v;", strings.Join(valueStrs, ", "))
501
+		sql := fmt.Sprintf("INSERT INTO xt_schedule (user_org_id, partition_id, bed_id, patient_id, schedule_date, schedule_week, schedule_type, mode_id, status, created_time, updated_time,dialysis_machine_name) VALUES %v;", strings.Join(valueStrs, ", "))
178
 		if insertErr := tx.Exec(sql, values...).Error; insertErr != nil {
502
 		if insertErr := tx.Exec(sql, values...).Error; insertErr != nil {
179
 			//fmt.Println("insertErr232332233223332232323222222www",insertErr)
503
 			//fmt.Println("insertErr232332233223332232323222222www",insertErr)
180
-			return insertErr
504
+			return insertErr, 0
181
 		}
505
 		}
182
 	}
506
 	}
183
-	return nil
507
+
508
+	return nil, week_count
184
 }
509
 }
185
 
510
 
186
 func FakeAutoCreateNextTwoWeekSchedules(orgID int64) {
511
 func FakeAutoCreateNextTwoWeekSchedules(orgID int64) {
218
 			utils.ErrorLog("获取第一周模板Item失败:%v", getItemsErr)
543
 			utils.ErrorLog("获取第一周模板Item失败:%v", getItemsErr)
219
 			return
544
 			return
220
 		}
545
 		}
221
-		insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), items, deviceNumberMap)
546
+		insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), items, deviceNumberMap)
222
 		if insertErr != nil {
547
 		if insertErr != nil {
223
 			utils.ErrorLog("使用第一周模板插入下第一周排班失败:%v", insertErr)
548
 			utils.ErrorLog("使用第一周模板插入下第一周排班失败:%v", insertErr)
224
 			tx.Rollback()
549
 			tx.Rollback()
225
 			return
550
 			return
226
 		}
551
 		}
227
-		insertErr = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), items, deviceNumberMap)
552
+		insertErr, _ = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), items, deviceNumberMap)
228
 		if insertErr != nil {
553
 		if insertErr != nil {
229
 			utils.ErrorLog("使用第一周模板插入下第二周排班失败:%v", insertErr)
554
 			utils.ErrorLog("使用第一周模板插入下第二周排班失败:%v", insertErr)
230
 			tx.Rollback()
555
 			tx.Rollback()
244
 		}
569
 		}
245
 
570
 
246
 		if mode.ExecuteTimes%2 == 0 {
571
 		if mode.ExecuteTimes%2 == 0 {
247
-			insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), firstItems, deviceNumberMap)
572
+			insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), firstItems, deviceNumberMap)
248
 			if insertErr != nil {
573
 			if insertErr != nil {
249
 				utils.ErrorLog("使用第一周模板插入下第一周排班失败:%v", insertErr)
574
 				utils.ErrorLog("使用第一周模板插入下第一周排班失败:%v", insertErr)
250
 				tx.Rollback()
575
 				tx.Rollback()
251
 				return
576
 				return
252
 			}
577
 			}
253
-			insertErr = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), secItems, deviceNumberMap)
578
+			insertErr, _ = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), secItems, deviceNumberMap)
254
 			if insertErr != nil {
579
 			if insertErr != nil {
255
 				utils.ErrorLog("使用第二周模板插入下第二周排班失败:%v", insertErr)
580
 				utils.ErrorLog("使用第二周模板插入下第二周排班失败:%v", insertErr)
256
 				tx.Rollback()
581
 				tx.Rollback()
258
 			}
583
 			}
259
 
584
 
260
 		} else { // mode.ExecuteTimes%2 == 1
585
 		} else { // mode.ExecuteTimes%2 == 1
261
-			insertErr := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), secItems, deviceNumberMap)
586
+			insertErr, _ := _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 7), secItems, deviceNumberMap)
262
 			if insertErr != nil {
587
 			if insertErr != nil {
263
 				utils.ErrorLog("使用第二周模板插入下第一周排班失败:%v", mode.OrgID, insertErr)
588
 				utils.ErrorLog("使用第二周模板插入下第一周排班失败:%v", mode.OrgID, insertErr)
264
 				tx.Rollback()
589
 				tx.Rollback()
265
 				return
590
 				return
266
 			}
591
 			}
267
-			insertErr = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), firstItems, deviceNumberMap)
592
+			insertErr, _ = _refreshWeekSchedulesWithTemplateItems(tx, mode.OrgID, now.AddDate(0, 0, 14), firstItems, deviceNumberMap)
268
 			if insertErr != nil {
593
 			if insertErr != nil {
269
 				utils.ErrorLog("使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
594
 				utils.ErrorLog("使用第一周模板插入下第二周排班失败:%v", mode.OrgID, insertErr)
270
 				tx.Rollback()
595
 				tx.Rollback()

+ 383 - 35
service/patient_schedule_template_service.go Näytä tiedosto

27
 // 获取至多两个模板ID
27
 // 获取至多两个模板ID
28
 func GetOrgPatientScheduleTemplateIDs(orgID int64) ([]*models.PatientScheduleTemplateId, error) {
28
 func GetOrgPatientScheduleTemplateIDs(orgID int64) ([]*models.PatientScheduleTemplateId, error) {
29
 	var ids []*models.PatientScheduleTemplateId
29
 	var ids []*models.PatientScheduleTemplateId
30
-	err := readDb.Model(&models.PatientScheduleTemplateId{}).Where("org_id = ? AND status = 1", orgID).Limit(2).Find(&ids).Error
30
+	err := readDb.Model(&models.PatientScheduleTemplateId{}).Where("org_id = ? AND status = 1", orgID).Limit(4).Find(&ids).Error
31
 	if err != nil {
31
 	if err != nil {
32
 		return nil, err
32
 		return nil, err
33
 	}
33
 	}
73
 		Preload("Items", "org_id = ? AND status = 1", orgID).
73
 		Preload("Items", "org_id = ? AND status = 1", orgID).
74
 		Preload("Items.Patient", "user_org_id = ? AND status = 1", orgID).
74
 		Preload("Items.Patient", "user_org_id = ? AND status = 1", orgID).
75
 		Where("org_id = ? AND status = 1", orgID).
75
 		Where("org_id = ? AND status = 1", orgID).
76
-		Limit(2).
76
+		Limit(4).
77
 		Find(&vms).
77
 		Find(&vms).
78
 		Error
78
 		Error
79
 	if err != nil {
79
 	if err != nil {
83
 }
83
 }
84
 
84
 
85
 // 获取指定模板ID的模板排班列表
85
 // 获取指定模板ID的模板排班列表
86
-func GetOrgPatientScheduleTemplateItemsByTemplateID(orgID int64, templateID int64) ([]*PatientScheduleTemplateItemViewModel, error) {
86
+func GetOrgPatientScheduleTemplateItemsByTemplateID(orgID int64) ([]*PatientScheduleTemplateItemViewModel, error) {
87
 	var vms []*PatientScheduleTemplateItemViewModel
87
 	var vms []*PatientScheduleTemplateItemViewModel
88
 	err := readDb.
88
 	err := readDb.
89
 		Model(&PatientScheduleTemplateItemViewModel{}).
89
 		Model(&PatientScheduleTemplateItemViewModel{}).
90
 		Preload("Patient", "user_org_id = ? AND status = 1", orgID).
90
 		Preload("Patient", "user_org_id = ? AND status = 1", orgID).
91
-		Where("org_id = ? AND template_id = ? AND status = 1", orgID, templateID).
91
+		Where("org_id = ? AND template_id = ? AND status = 1", orgID, 0).
92
 		Find(&vms).
92
 		Find(&vms).
93
 		Error
93
 		Error
94
 	if err != nil {
94
 	if err != nil {
127
 }
127
 }
128
 
128
 
129
 // 创建两个默认模板
129
 // 创建两个默认模板
130
-func CreateTwoPatientScheduleTemplates(orgID int64) (*PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, error) {
130
+func CreateTwoPatientScheduleTemplates(orgID int64) (*PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, error) {
131
 	now := time.Now().Unix()
131
 	now := time.Now().Unix()
132
 	firstTemp := models.PatientScheduleTemplateId{}
132
 	firstTemp := models.PatientScheduleTemplateId{}
133
 	firstTemp.OrgID = orgID
133
 	firstTemp.OrgID = orgID
141
 	secondTemp.CreateTime = now
141
 	secondTemp.CreateTime = now
142
 	secondTemp.ModifyTime = now
142
 	secondTemp.ModifyTime = now
143
 
143
 
144
+	thirdTemp := models.PatientScheduleTemplateId{}
145
+	thirdTemp.OrgID = orgID
146
+	thirdTemp.Status = 1
147
+	thirdTemp.CreateTime = now
148
+	thirdTemp.ModifyTime = now
149
+
150
+	fourTemp := models.PatientScheduleTemplateId{}
151
+	fourTemp.OrgID = orgID
152
+	fourTemp.Status = 1
153
+	fourTemp.CreateTime = now
154
+	fourTemp.ModifyTime = now
155
+
144
 	tx := writeDb.Begin()
156
 	tx := writeDb.Begin()
145
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&firstTemp).Error; err != nil {
157
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&firstTemp).Error; err != nil {
146
 		tx.Rollback()
158
 		tx.Rollback()
147
-		return nil, nil, err
159
+		return nil, nil, nil, nil, err
148
 	}
160
 	}
149
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&secondTemp).Error; err != nil {
161
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&secondTemp).Error; err != nil {
150
 		tx.Rollback()
162
 		tx.Rollback()
151
-		return nil, nil, err
163
+		return nil, nil, nil, nil, err
164
+	}
165
+
166
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&thirdTemp).Error; err != nil {
167
+		tx.Rollback()
168
+		return nil, nil, nil, nil, err
169
+	}
170
+
171
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&fourTemp).Error; err != nil {
172
+		tx.Rollback()
173
+		return nil, nil, nil, nil, err
152
 	}
174
 	}
153
 
175
 
154
 	vm1 := PatientScheduleTemplateViewModel{}
176
 	vm1 := PatientScheduleTemplateViewModel{}
158
 	vm2 := PatientScheduleTemplateViewModel{}
180
 	vm2 := PatientScheduleTemplateViewModel{}
159
 	vm2.ID = secondTemp.ID
181
 	vm2.ID = secondTemp.ID
160
 	vm2.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
182
 	vm2.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
183
+
184
+	vm3 := PatientScheduleTemplateViewModel{}
185
+	vm3.ID = thirdTemp.ID
186
+	vm3.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
187
+
188
+	vm4 := PatientScheduleTemplateViewModel{}
189
+	vm4.ID = fourTemp.ID
190
+	vm4.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
191
+
161
 	tx.Commit()
192
 	tx.Commit()
162
-	return &vm1, &vm2, nil
193
+	return &vm1, &vm2, &vm3, &vm4, nil
163
 }
194
 }
164
 
195
 
165
-func CreatePatientScheduleTemplate(orgID int64) (*PatientScheduleTemplateViewModel, error) {
196
+func CreatePatientScheduleTemplate(orgID int64) (*PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, error) {
166
 	now := time.Now().Unix()
197
 	now := time.Now().Unix()
167
 	temp := models.PatientScheduleTemplateId{}
198
 	temp := models.PatientScheduleTemplateId{}
168
 	temp.OrgID = orgID
199
 	temp.OrgID = orgID
172
 	tx := writeDb.Begin()
203
 	tx := writeDb.Begin()
173
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&temp).Error; err != nil {
204
 	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&temp).Error; err != nil {
174
 		tx.Rollback()
205
 		tx.Rollback()
175
-		return nil, err
206
+		return nil, nil, nil, err
207
+	}
208
+
209
+	thirdTemp := models.PatientScheduleTemplateId{}
210
+	thirdTemp.OrgID = orgID
211
+	thirdTemp.Status = 1
212
+	thirdTemp.CreateTime = now
213
+	thirdTemp.ModifyTime = now
214
+
215
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&thirdTemp).Error; err != nil {
216
+		tx.Rollback()
217
+		return nil, nil, nil, err
218
+	}
219
+
220
+	fourTemp := models.PatientScheduleTemplateId{}
221
+	fourTemp.OrgID = orgID
222
+	fourTemp.Status = 1
223
+	fourTemp.CreateTime = now
224
+	fourTemp.ModifyTime = now
225
+
226
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&fourTemp).Error; err != nil {
227
+		tx.Rollback()
228
+		return nil, nil, nil, err
176
 	}
229
 	}
230
+
177
 	vm := PatientScheduleTemplateViewModel{}
231
 	vm := PatientScheduleTemplateViewModel{}
178
 	vm.ID = temp.ID
232
 	vm.ID = temp.ID
179
 	vm.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
233
 	vm.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
234
+
235
+	vm3 := PatientScheduleTemplateViewModel{}
236
+	vm3.ID = thirdTemp.ID
237
+	vm3.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
238
+
239
+	vm4 := PatientScheduleTemplateViewModel{}
240
+	vm4.ID = fourTemp.ID
241
+	vm4.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
242
+
243
+	tx.Commit()
244
+	return &vm, &vm3, &vm4, nil
245
+}
246
+func CreatePatientScheduleTemplateTwo(orgID int64) (*PatientScheduleTemplateViewModel, *PatientScheduleTemplateViewModel, error) {
247
+	now := time.Now().Unix()
248
+
249
+	tx := writeDb.Begin()
250
+
251
+	thirdTemp := models.PatientScheduleTemplateId{}
252
+	thirdTemp.OrgID = orgID
253
+	thirdTemp.Status = 1
254
+	thirdTemp.CreateTime = now
255
+	thirdTemp.ModifyTime = now
256
+
257
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&thirdTemp).Error; err != nil {
258
+		tx.Rollback()
259
+		return nil, nil, err
260
+	}
261
+
262
+	fourTemp := models.PatientScheduleTemplateId{}
263
+	fourTemp.OrgID = orgID
264
+	fourTemp.Status = 1
265
+	fourTemp.CreateTime = now
266
+	fourTemp.ModifyTime = now
267
+
268
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&fourTemp).Error; err != nil {
269
+		tx.Rollback()
270
+		return nil, nil, err
271
+	}
272
+
273
+	vm3 := PatientScheduleTemplateViewModel{}
274
+	vm3.ID = thirdTemp.ID
275
+	vm3.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
276
+
277
+	vm4 := PatientScheduleTemplateViewModel{}
278
+	vm4.ID = fourTemp.ID
279
+	vm4.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
280
+
281
+	tx.Commit()
282
+	return &vm3, &vm4, nil
283
+}
284
+func CreatePatientScheduleTemplateThree(orgID int64) (*PatientScheduleTemplateViewModel, error) {
285
+	now := time.Now().Unix()
286
+	tx := writeDb.Begin()
287
+	fourTemp := models.PatientScheduleTemplateId{}
288
+	fourTemp.OrgID = orgID
289
+	fourTemp.Status = 1
290
+	fourTemp.CreateTime = now
291
+	fourTemp.ModifyTime = now
292
+	if err := tx.Model(&models.PatientScheduleTemplateId{}).Create(&fourTemp).Error; err != nil {
293
+		tx.Rollback()
294
+		return nil, err
295
+	}
296
+	vm4 := PatientScheduleTemplateViewModel{}
297
+	vm4.ID = fourTemp.ID
298
+	vm4.Items = make([]*PatientScheduleTemplateItemViewModel, 0, 0)
299
+
180
 	tx.Commit()
300
 	tx.Commit()
181
-	return &vm, nil
301
+	return &vm4, nil
182
 }
302
 }
183
 
303
 
184
 type PatientScheduleTemplatePatientVM struct {
304
 type PatientScheduleTemplatePatientVM struct {
216
 	return vms, nil
336
 	return vms, nil
217
 }
337
 }
218
 
338
 
219
-func UpdateScheduleTemplate(orgID int64, templateID int64,
339
+func UpdateScheduleTemplate(orgID int64, template_id int64,
220
 	addTemplateItems []*models.PatientScheduleTemplateItem,
340
 	addTemplateItems []*models.PatientScheduleTemplateItem,
221
 	delTemplateItems []*models.PatientScheduleTemplateItem,
341
 	delTemplateItems []*models.PatientScheduleTemplateItem,
222
 	changeTemplateItems []*models.PatientScheduleTemplateItem,
342
 	changeTemplateItems []*models.PatientScheduleTemplateItem,
223
-	shouldUpdateNextWeekSchedules bool,
224
-	shouldUpdateNextSecondWeekSchedules bool) error {
343
+) error {
225
 
344
 
226
 	now := time.Now()
345
 	now := time.Now()
227
 	tx := writeDb.Begin()
346
 	tx := writeDb.Begin()
234
 		for _, item := range addTemplateItems {
353
 		for _, item := range addTemplateItems {
235
 			valueStrs = append(valueStrs, "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
354
 			valueStrs = append(valueStrs, "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
236
 			values = append(values, orgID)
355
 			values = append(values, orgID)
237
-			values = append(values, templateID)
356
+			values = append(values, template_id)
238
 			values = append(values, item.DeviceNumberID)
357
 			values = append(values, item.DeviceNumberID)
239
 			values = append(values, item.PatientID)
358
 			values = append(values, item.PatientID)
240
 			values = append(values, item.TreatMode)
359
 			values = append(values, item.TreatMode)
257
 		// utils.TraceLog("delTemplateItems len: %v", len(delTemplateItems))
376
 		// utils.TraceLog("delTemplateItems len: %v", len(delTemplateItems))
258
 		ins := make([]string, 0, len(delTemplateItems))
377
 		ins := make([]string, 0, len(delTemplateItems))
259
 		for _, item := range delTemplateItems {
378
 		for _, item := range delTemplateItems {
260
-			ins = append(ins, fmt.Sprintf("(%v, %v, %v, %v, %v)", orgID, templateID, item.DeviceNumberID, item.Weekday, item.TimeType))
379
+			ins = append(ins, fmt.Sprintf("(%v, %v, %v, %v, %v)", orgID, template_id, item.DeviceNumberID, item.Weekday, item.TimeType))
261
 		}
380
 		}
262
 
381
 
263
 		sql := fmt.Sprintf("UPDATE xt_patient_schedule_template_item SET status = 0, mtime = %v WHERE status = 1 AND (org_id, template_id, device_number_id, weekday, time_type) IN (%v);", now.Unix(), strings.Join(ins, ","))
382
 		sql := fmt.Sprintf("UPDATE xt_patient_schedule_template_item SET status = 0, mtime = %v WHERE status = 1 AND (org_id, template_id, device_number_id, weekday, time_type) IN (%v);", now.Unix(), strings.Join(ins, ","))
271
 	if len(changeTemplateItems) > 0 {
390
 	if len(changeTemplateItems) > 0 {
272
 		// utils.TraceLog("changeTemplateItems len: %v", len(changeTemplateItems))
391
 		// utils.TraceLog("changeTemplateItems len: %v", len(changeTemplateItems))
273
 		for _, item := range changeTemplateItems {
392
 		for _, item := range changeTemplateItems {
274
-			if updateErr := tx.Exec("UPDATE xt_patient_schedule_template_item SET patient_id = ?, treat_mode = ?, mtime = ? WHERE status = 1 AND org_id = ? AND template_id = ? AND device_number_id = ? AND weekday = ? AND time_type = ?;", item.PatientID, item.TreatMode, now.Unix(), orgID, templateID, item.DeviceNumberID, item.Weekday, item.TimeType).Error; updateErr != nil {
393
+			if updateErr := tx.Exec("UPDATE xt_patient_schedule_template_item SET patient_id = ?, treat_mode = ?, mtime = ? WHERE status = 1 AND org_id = ? AND template_id = ? AND device_number_id = ? AND weekday = ? AND time_type = ?;", item.PatientID, item.TreatMode, now.Unix(), orgID, template_id, item.DeviceNumberID, item.Weekday, item.TimeType).Error; updateErr != nil {
275
 				tx.Rollback()
394
 				tx.Rollback()
276
 				return updateErr
395
 				return updateErr
277
 			}
396
 			}
278
 		}
397
 		}
279
 	}
398
 	}
280
 
399
 
281
-	// 更改下周的排班
400
+	// 更改下周的排班
282
 	deviceNumbers, getDeviceNumbersErr := GetAllValidDeviceNumbers(orgID)
401
 	deviceNumbers, getDeviceNumbersErr := GetAllValidDeviceNumbers(orgID)
283
 	if getDeviceNumbersErr != nil {
402
 	if getDeviceNumbersErr != nil {
284
 		tx.Rollback()
403
 		tx.Rollback()
288
 	for _, deviceNumber := range deviceNumbers {
407
 	for _, deviceNumber := range deviceNumbers {
289
 		devicesMap[deviceNumber.ID] = deviceNumber
408
 		devicesMap[deviceNumber.ID] = deviceNumber
290
 	}
409
 	}
291
-	if shouldUpdateNextWeekSchedules {
292
-		nextWeek := now.AddDate(0, 0, 7)
293
-		if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
294
-			tx.Rollback()
295
-			return updateErr
296
-		}
297
-	}
298
-	if shouldUpdateNextSecondWeekSchedules {
299
-		nextWeek := now.AddDate(0, 0, 14)
300
-		if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
301
-			tx.Rollback()
302
-			return updateErr
303
-		}
304
-	}
410
+	//if shouldUpdateNextWeekSchedules {
411
+	//	nextWeek := now.AddDate(0, 0, 7)
412
+	//	if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
413
+	//		tx.Rollback()
414
+	//		return updateErr
415
+	//	}
416
+	//}
417
+	//if shouldUpdateNextSecondWeekSchedules {
418
+	//	nextWeek := now.AddDate(0, 0, 14)
419
+	//	if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
420
+	//		tx.Rollback()
421
+	//		return updateErr
422
+	//	}
423
+	//}
424
+	//
425
+	//if shouldUpdateNextThirdWeekSchedules {
426
+	//	nextWeek := now.AddDate(0, 0, 21)
427
+	//	if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
428
+	//		tx.Rollback()
429
+	//		return updateErr
430
+	//	}
431
+	//}
432
+	//
433
+	//if shouldUpdateNextFourWeekSchedules {
434
+	//	nextWeek := now.AddDate(0, 0, 28)
435
+	//	if updateErr := _updateWeekSchedules(tx, orgID, nextWeek, addTemplateItems, delTemplateItems, changeTemplateItems, devicesMap); updateErr != nil {
436
+	//		tx.Rollback()
437
+	//		return updateErr
438
+	//	}
439
+	//}
305
 
440
 
306
 	tx.Commit()
441
 	tx.Commit()
307
 	return nil
442
 	return nil
420
 	now := time.Now()
555
 	now := time.Now()
421
 	nextWeek := now.AddDate(0, 0, 7)
556
 	nextWeek := now.AddDate(0, 0, 7)
422
 	nextMonday, _ := utils.GetMondayAndSundayOfWeekDate(&nextWeek)
557
 	nextMonday, _ := utils.GetMondayAndSundayOfWeekDate(&nextWeek)
423
-	nextSecWeek := now.AddDate(0, 0, 14)
558
+	nextSecWeek := now.AddDate(0, 0, 21)
424
 	_, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
559
 	_, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
425
 	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
560
 	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
426
 	if disableErr != nil {
561
 	if disableErr != nil {
444
 	now := time.Now()
579
 	now := time.Now()
445
 	nextSecWeek := now.AddDate(0, 0, 14)
580
 	nextSecWeek := now.AddDate(0, 0, 14)
446
 	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
581
 	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
447
-	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
582
+
583
+	//tx.Model(&models.PatientScheduleTemplateId{}).Where("user_org_id = ? AND status = 1", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
584
+
585
+	disableErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
448
 	if disableErr != nil {
586
 	if disableErr != nil {
449
 		tx.Rollback()
587
 		tx.Rollback()
450
 		return disableErr
588
 		return disableErr
453
 	tx.Commit()
591
 	tx.Commit()
454
 	return nil
592
 	return nil
455
 }
593
 }
594
+func SaveTemplateMode(templateMode *models.PatientScheduleTemplateMode) error {
595
+	err := writeDb.Model(&models.PatientScheduleTemplateMode{}).Where("id = ? AND status = 1", templateMode.ID).Updates(map[string]interface{}{"mode": templateMode.Mode, "mtime": templateMode.ModifyTime}).Error
596
+	return err
597
+}
456
 
598
 
457
 // 2 -> 1 清除第二周模板item,清除第二周排班,将第一周的排班重复到第二周
599
 // 2 -> 1 清除第二周模板item,清除第二周排班,将第一周的排班重复到第二周
458
 func SavePatientScheduleTemplateMode2To1(templateMode *models.PatientScheduleTemplateMode, secondWeekTemplateID int64, firstWeekTemplateItems []*models.PatientScheduleTemplateItem) error {
600
 func SavePatientScheduleTemplateMode2To1(templateMode *models.PatientScheduleTemplateMode, secondWeekTemplateID int64, firstWeekTemplateItems []*models.PatientScheduleTemplateItem) error {
473
 
615
 
474
 	nextSecWeek := now.AddDate(0, 0, 14)
616
 	nextSecWeek := now.AddDate(0, 0, 14)
475
 	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
617
 	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
476
-	disableSchsErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
618
+	disableSchsErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
477
 	if disableSchsErr != nil {
619
 	if disableSchsErr != nil {
478
 		tx.Rollback()
620
 		tx.Rollback()
479
 		return disableSchsErr
621
 		return disableSchsErr
521
 	tx.Commit()
663
 	tx.Commit()
522
 	return nil
664
 	return nil
523
 }
665
 }
666
+
667
+// 3 -> 1 清除第三,二周模板item,清除第三,二周排班
668
+func SavePatientScheduleTemplateMode3To1(templateMode *models.PatientScheduleTemplateMode, secondWeekTemplateID int64, thirdWeekTemplateID int64) error {
669
+	tx := writeDb.Begin()
670
+	saveErr := tx.Save(templateMode).Error
671
+	if saveErr != nil {
672
+		tx.Rollback()
673
+		return saveErr
674
+	}
675
+
676
+	now := time.Now()
677
+
678
+	disableItemsErr := tx.Model(&models.PatientScheduleTemplateItem{}).Where("(template_id = ? AND status = 1) OR (template_id = ? AND status = 1) ", secondWeekTemplateID, thirdWeekTemplateID).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
679
+	if disableItemsErr != nil {
680
+		tx.Rollback()
681
+		return disableItemsErr
682
+	}
683
+
684
+	nextSecWeek := now.AddDate(0, 0, 14)
685
+	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
686
+	disableSchsErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
687
+	if disableSchsErr != nil {
688
+		tx.Rollback()
689
+		return disableSchsErr
690
+	}
691
+
692
+	nextThirdWeek := now.AddDate(0, 0, 21)
693
+	nextThirdMonday, nextThirdSunday := utils.GetMondayAndSundayOfWeekDate(&nextThirdWeek)
694
+	disableSchsErr2 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextThirdMonday.Unix(), nextThirdSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
695
+	if disableSchsErr2 != nil {
696
+		tx.Rollback()
697
+		return disableSchsErr2
698
+	}
699
+
700
+	tx.Commit()
701
+	return nil
702
+}
703
+
704
+// 3 -> 2 清除第三周模板item,清除第三周排班
705
+func SavePatientScheduleTemplateMode3To2(templateMode *models.PatientScheduleTemplateMode, thirdWeekTemplateID int64) error {
706
+	tx := writeDb.Begin()
707
+	saveErr := tx.Save(templateMode).Error
708
+	if saveErr != nil {
709
+		tx.Rollback()
710
+		return saveErr
711
+	}
712
+
713
+	now := time.Now()
714
+
715
+	disableItemsErr := tx.Model(&models.PatientScheduleTemplateItem{}).Where("template_id = ? AND status = 1", thirdWeekTemplateID).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
716
+	if disableItemsErr != nil {
717
+		tx.Rollback()
718
+		return disableItemsErr
719
+	}
720
+	nextThirdWeek := now.AddDate(0, 0, 21)
721
+	nextThirdMonday, nextThirdSunday := utils.GetMondayAndSundayOfWeekDate(&nextThirdWeek)
722
+	disableSchsErr2 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextThirdMonday.Unix(), nextThirdSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
723
+	if disableSchsErr2 != nil {
724
+		tx.Rollback()
725
+		return disableSchsErr2
726
+	}
727
+
728
+	tx.Commit()
729
+	return nil
730
+}
731
+
732
+// 4 -> 1 清除第四,三,二周模板item,清除第四,三,二周排班
733
+func SavePatientScheduleTemplateMode4To1(templateMode *models.PatientScheduleTemplateMode, secondWeekTemplateID int64, thirdWeekTemplateID int64, fourWeekTemplateID int64) error {
734
+	tx := writeDb.Begin()
735
+	saveErr := tx.Save(templateMode).Error
736
+	if saveErr != nil {
737
+		tx.Rollback()
738
+		return saveErr
739
+	}
740
+
741
+	now := time.Now()
742
+
743
+	disableItemsErr := tx.Model(&models.PatientScheduleTemplateItem{}).Where("(template_id = ? AND status = 1)OR(template_id = ? AND status = 1)OR(template_id = ? AND status = 1)", secondWeekTemplateID, thirdWeekTemplateID, fourWeekTemplateID).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
744
+	if disableItemsErr != nil {
745
+		tx.Rollback()
746
+		return disableItemsErr
747
+	}
748
+
749
+	nextSecWeek := now.AddDate(0, 0, 14)
750
+	nextSecMonday, nextSecSunday := utils.GetMondayAndSundayOfWeekDate(&nextSecWeek)
751
+	disableSchsErr := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextSecMonday.Unix(), nextSecSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
752
+	if disableSchsErr != nil {
753
+		tx.Rollback()
754
+		return disableSchsErr
755
+	}
756
+
757
+	nextThirdWeek := now.AddDate(0, 0, 21)
758
+	nextThirdMonday, nextThirdSunday := utils.GetMondayAndSundayOfWeekDate(&nextThirdWeek)
759
+	disableSchsErr2 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextThirdMonday.Unix(), nextThirdSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
760
+	if disableSchsErr2 != nil {
761
+		tx.Rollback()
762
+		return disableSchsErr2
763
+	}
764
+
765
+	nextFourWeek := now.AddDate(0, 0, 28)
766
+	nextFourMonday, nextFourSunday := utils.GetMondayAndSundayOfWeekDate(&nextFourWeek)
767
+	disableSchsErr3 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextFourMonday.Unix(), nextFourSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
768
+	if disableSchsErr3 != nil {
769
+		tx.Rollback()
770
+		return disableSchsErr3
771
+	}
772
+
773
+	tx.Commit()
774
+	return nil
775
+}
776
+
777
+// 4 -> 2 清除第四,三模板item,清除第四,三排班
778
+func SavePatientScheduleTemplateMode4To2(templateMode *models.PatientScheduleTemplateMode, thirdWeekTemplateID int64, fourWeekTemplateID int64) error {
779
+	tx := writeDb.Begin()
780
+	saveErr := tx.Save(templateMode).Error
781
+	if saveErr != nil {
782
+		tx.Rollback()
783
+		return saveErr
784
+	}
785
+
786
+	now := time.Now()
787
+
788
+	disableItemsErr := tx.Model(&models.PatientScheduleTemplateItem{}).Where("(template_id = ? AND status = 1)OR(template_id = ? AND status = 1)", thirdWeekTemplateID, fourWeekTemplateID).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
789
+	if disableItemsErr != nil {
790
+		tx.Rollback()
791
+		return disableItemsErr
792
+	}
793
+
794
+	nextThirdWeek := now.AddDate(0, 0, 21)
795
+	nextThirdMonday, nextThirdSunday := utils.GetMondayAndSundayOfWeekDate(&nextThirdWeek)
796
+	disableSchsErr2 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextThirdMonday.Unix(), nextThirdSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
797
+	if disableSchsErr2 != nil {
798
+		tx.Rollback()
799
+		return disableSchsErr2
800
+	}
801
+
802
+	nextFourWeek := now.AddDate(0, 0, 28)
803
+	nextFourMonday, nextFourSunday := utils.GetMondayAndSundayOfWeekDate(&nextFourWeek)
804
+	disableSchsErr3 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextFourMonday.Unix(), nextFourSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
805
+	if disableSchsErr3 != nil {
806
+		tx.Rollback()
807
+		return disableSchsErr3
808
+	}
809
+
810
+	tx.Commit()
811
+	return nil
812
+}
813
+
814
+// 4 -> 3 清除第四模板item,清除第四周排班
815
+func SavePatientScheduleTemplateMode4To3(templateMode *models.PatientScheduleTemplateMode, fourWeekTemplateID int64) error {
816
+	tx := writeDb.Begin()
817
+	saveErr := tx.Save(templateMode).Error
818
+	if saveErr != nil {
819
+		tx.Rollback()
820
+		return saveErr
821
+	}
822
+
823
+	now := time.Now()
824
+
825
+	disableItemsErr := tx.Model(&models.PatientScheduleTemplateItem{}).Where("(template_id = ? AND status = 1)", fourWeekTemplateID).Updates(map[string]interface{}{"status": 0, "mtime": now.Unix()}).Error
826
+	if disableItemsErr != nil {
827
+		tx.Rollback()
828
+		return disableItemsErr
829
+	}
830
+
831
+	nextFourWeek := now.AddDate(0, 0, 28)
832
+	nextFourMonday, nextFourSunday := utils.GetMondayAndSundayOfWeekDate(&nextFourWeek)
833
+	disableSchsErr3 := tx.Model(&models.Schedule{}).Where("user_org_id = ? AND status = 1 AND schedule_date >= ? AND schedule_date <= ?", templateMode.OrgID, nextFourMonday.Unix(), nextFourSunday.Unix()).Updates(map[string]interface{}{"status": 0, "updated_time": now.Unix()}).Error
834
+	if disableSchsErr3 != nil {
835
+		tx.Rollback()
836
+		return disableSchsErr3
837
+	}
838
+
839
+	tx.Commit()
840
+	return nil
841
+}
842
+
843
+type SchTemplatePatient struct {
844
+	ID         int64  `gorm:"column:id" json:"id" form:"id"`
845
+	UserOrgId  int64  `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
846
+	Name       string `gorm:"column:name" json:"name" form:"name"`
847
+	Lapseto    int64  `gorm:"column:lapseto" json:"lapseto" form:"lapseto"`
848
+	Status     int64  `gorm:"column:status" json:"status" form:"status"`
849
+	DialysisNo string `gorm:"column:dialysis_no" json:"dialysis_no" form:"dialysis_no"`
850
+}
851
+
852
+func (SchTemplatePatient) TableName() string {
853
+	return "xt_patients"
854
+}
855
+
856
+func GetSchTemplatePatientList(orgID int64) ([]*SchTemplatePatient, error) {
857
+	var patients []*SchTemplatePatient
858
+	err := readDb.Model(&SchTemplatePatient{}).Where("user_org_id = ? AND status = 1 AND lapseto = 1", orgID).Find(&patients).Error
859
+	return patients, err
860
+}
861
+
862
+func UpdateTemplateItemWeek(orgID int64, id int64, week_time int8) {
863
+	readDb.Model(&models.PatientScheduleTemplateId{}).Where("org_id = ? AND status = 1 AND id = ? ", orgID, id).Updates(map[string]interface{}{"week": week_time})
864
+	return
865
+}
866
+
867
+func GetOrgPatientScheduleTemplateModeTwo(orgID int64) (models.PatientScheduleTemplateMode, error) {
868
+	var mode models.PatientScheduleTemplateMode
869
+	err := readDb.Model(&models.PatientScheduleTemplateMode{}).Where("org_id = ? AND status = 1", orgID).First(&mode).Error
870
+	return mode, err
871
+}

+ 40 - 3
service/schedule_service.go Näytä tiedosto

71
 	err = readDb.Table("xt_schedule as s").Preload("PatientInfectiousDiseases", "status = 1 ").
71
 	err = readDb.Table("xt_schedule as s").Preload("PatientInfectiousDiseases", "status = 1 ").
72
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
72
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
73
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
73
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
74
-		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time, s.updated_time, p.name as patient").
74
+		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time, s.updated_time,s.dialysis_machine_name, p.name as patient").
75
 		Order("updated_time asc").
75
 		Order("updated_time asc").
76
 		Find(&schedules).Error
76
 		Find(&schedules).Error
77
 	return
77
 	return
89
 	err = db.Preload("PatientInfectiousDiseases", "status = 1 ").
89
 	err = db.Preload("PatientInfectiousDiseases", "status = 1 ").
90
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
90
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
91
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
91
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
92
-		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time, s.updated_time, p.name as patient").
92
+		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time,s.dialysis_machine_name, s.updated_time, p.name as patient").
93
 		Order("updated_time asc").
93
 		Order("updated_time asc").
94
 		Find(&schedules).Error
94
 		Find(&schedules).Error
95
 	return
95
 	return
108
 	err = db.Preload("PatientInfectiousDiseases", "status = 1 ").
108
 	err = db.Preload("PatientInfectiousDiseases", "status = 1 ").
109
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
109
 		Joins("JOIN xt_patients as p ON p.id = s.patient_id").
110
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
110
 		Where("s.user_org_id=? and s.schedule_date>=? and s.schedule_date<=? and s.status=1", orgID, start, end).
111
-		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time, s.updated_time, p.name as patient").
111
+		Select("s.id, s.user_org_id, s.partition_id, s.bed_id, s.patient_id, s.schedule_date, s.schedule_type, s.schedule_week, s.mode_id, s.status, s.created_time, s.updated_time,s.dialysis_machine_name, p.name as patient").
112
 		Order("updated_time asc").
112
 		Order("updated_time asc").
113
 		Find(&schedules).Error
113
 		Find(&schedules).Error
114
 	return
114
 	return
128
 	err = readDb.Model(&models.Schedule{}).Where("user_org_id=?  and schedule_date=? and bed_id=? and status=1 AND schedule_type = ?", orgID, start, bed_id, schedule_type).Preload("DialysisOrder", "status = 1").First(&schedule).Error
128
 	err = readDb.Model(&models.Schedule{}).Where("user_org_id=?  and schedule_date=? and bed_id=? and status=1 AND schedule_type = ?", orgID, start, bed_id, schedule_type).Preload("DialysisOrder", "status = 1").First(&schedule).Error
129
 	return
129
 	return
130
 }
130
 }
131
+func GetSourceSch(orgId int64, patient_id int64, record_date int64) (schedule models.Schedule, err error) {
132
+	err = readDb.Model(&models.Schedule{}).Where("user_org_id=?  and schedule_date=? and patient_id =? and status=1", orgId, record_date, patient_id).First(&schedule).Error
133
+	return
131
 
134
 
135
+}
132
 func GetPatientScheduleFormDay(orgID, start, end, patientID int64) (schedules []*models.PatientSchedule, err error) {
136
 func GetPatientScheduleFormDay(orgID, start, end, patientID int64) (schedules []*models.PatientSchedule, err error) {
133
 
137
 
134
 	err = readDb.Table("xt_schedule as s").
138
 	err = readDb.Table("xt_schedule as s").
279
 	return err
283
 	return err
280
 }
284
 }
281
 
285
 
286
+//参数一:当前操作的患者的排班     参数二被替换床位对应的排班
287
+func UpdateScheduleTwo(schone models.Schedule, schtwo models.Schedule) {
288
+	utx := XTWriteDB()
289
+	var tempPatientID int64
290
+	var tempPatientIDTwo int64
291
+	tempPatientID = schone.PatientId
292
+	tempPatientIDTwo = schtwo.PatientId
293
+	schone.PatientId = tempPatientIDTwo
294
+	schtwo.PatientId = tempPatientID
295
+	utx.Save(schone)
296
+	utx.Save(schtwo)
297
+
298
+}
299
+
282
 func GetPatientScheduleFormToday(orgId, id, start int64) (schedules []*models.PatientSchedule, err error) {
300
 func GetPatientScheduleFormToday(orgId, id, start int64) (schedules []*models.PatientSchedule, err error) {
283
 
301
 
284
 	err = readDb.Table("xt_schedule as s").
302
 	err = readDb.Table("xt_schedule as s").
1185
 	err := XTReadDB().Where("user_org_id = ? and  patient_id = ? and assessment_date < ? and status = 1", orgid, patient_id, scheduleDate).Order("id desc").First(&dislysis).Error
1203
 	err := XTReadDB().Where("user_org_id = ? and  patient_id = ? and assessment_date < ? and status = 1", orgid, patient_id, scheduleDate).Order("id desc").First(&dislysis).Error
1186
 	return dislysis, err
1204
 	return dislysis, err
1187
 }
1205
 }
1206
+
1207
+func GetScheduleTwo(orgID, id int64) (models.Schedule, error) {
1208
+	var schedule models.Schedule
1209
+	var err error
1210
+	err = readDb.Model(&models.Schedule{}).Where("id = ? and user_org_id=? and status=1", id, orgID).First(&schedule).Error
1211
+	return schedule, err
1212
+}
1213
+
1214
+func UpdateSchDName(sch models.Schedule) (err error) {
1215
+	err = writeDb.Model(&models.Schedule{}).Where("status=1 AND id = ?", sch.ID).Updates(map[string]interface{}{"dialysis_machine_name": sch.DialysisMachineName}).Error
1216
+	return
1217
+}
1218
+
1219
+func GetDialysisOrderByBedIdTwo(orgID, start, bed_id int64, schedule_type int64) (models.DialysisOrder, error) {
1220
+	order := models.DialysisOrder{}
1221
+	err = readDb.Model(&order).Where("user_org_id=?  and dialysis_date=? and bed_id=? and status=1 AND schedual_type = ?", orgID, start, bed_id, schedule_type).Find(&order).Error
1222
+	return order, nil
1223
+
1224
+}

+ 115 - 0
service/smart_sch.go Näytä tiedosto

1
+package service
2
+
3
+import (
4
+	"XT_New/models"
5
+	"time"
6
+)
7
+
8
+func GetSmartSchPatientByKeyWord(orgID int64, keywords string) (patient []*models.SmartSchPatient, err error) {
9
+	db := readDb.Model(&models.SmartSchPatient{}).Where("user_org_id=? and status=1", orgID)
10
+	if len(keywords) > 0 {
11
+		likekey := "%" + keywords + "%"
12
+		err = db.Where("name LIKE ? OR dialysis_no LIKE ? ", likekey, likekey).Find(&patient).Error
13
+	} else {
14
+		err = db.Find(&patient).Error
15
+	}
16
+
17
+	for _, item := range patient {
18
+		var sch []*models.SmartSchedule
19
+		now := time.Now()
20
+
21
+		offset := int(time.Monday - now.Weekday())
22
+		if offset > 0 {
23
+			offset = -6
24
+		}
25
+
26
+		weekStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
27
+		readDb.Model(&models.SmartSchedule{}).Where("user_org_id = ? AND status = 1 AND patient_id = ? AND schedule_date >= ?", orgID, item.ID, weekStart.Unix()).
28
+			Preload("DeviceZone", "status = 1").
29
+			Preload("DeviceNumber", "status = 1").Find(&sch)
30
+		item.SmartSchedule = sch
31
+	}
32
+
33
+	return
34
+}
35
+
36
+func GetSmartSchTemplatePatientByKeyWord(orgID int64, keywords string) (patient []*models.SmartSchTemplatePatient, err error) {
37
+	db := readDb.Model(&models.SmartSchTemplatePatient{}).Where("user_org_id=? and status=1", orgID)
38
+	if len(keywords) > 0 {
39
+		likekey := "%" + keywords + "%"
40
+		err = db.Where("name LIKE ? OR dialysis_no LIKE ? ", likekey, likekey).Find(&patient).Error
41
+	} else {
42
+		err = db.Find(&patient).Error
43
+	}
44
+
45
+	for _, item := range patient {
46
+		mode, _ := GetOrgPatientScheduleTemplateModeTwo(item.UserOrgId)
47
+		if mode.ID > 0 {
48
+			if mode.Mode == 1 {
49
+				schs, _ := GetSmartSchTemplatePatientByID(item.UserOrgId, item.ID, 1)
50
+				item.XtPatientScheduleTemplateId = schs
51
+
52
+			} else if mode.Mode == 2 {
53
+				schs, _ := GetSmartSchTemplatePatientByID(item.UserOrgId, item.ID, 2)
54
+
55
+				item.XtPatientScheduleTemplateId = schs
56
+
57
+			} else if mode.Mode == 3 {
58
+				schs, _ := GetSmartSchTemplatePatientByID(item.UserOrgId, item.ID, 3)
59
+				item.XtPatientScheduleTemplateId = schs
60
+
61
+			} else if mode.Mode == 4 {
62
+
63
+				schs, _ := GetSmartSchTemplatePatientByID(item.UserOrgId, item.ID, 4)
64
+				item.XtPatientScheduleTemplateId = schs
65
+
66
+			}
67
+		}
68
+
69
+	}
70
+	return
71
+}
72
+
73
+func GetSmartSchPatientByID(orgID int64, patient_id int64) (schs []*models.SmartSchedule, err error) {
74
+	now := time.Now()
75
+	offset := int(time.Monday - now.Weekday())
76
+	if offset > 0 {
77
+		offset = -6
78
+	}
79
+	weekStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local).AddDate(0, 0, offset)
80
+	err = readDb.Model(&models.SmartSchedule{}).Where("user_org_id = ? AND status = 1 AND patient_id = ? AND schedule_date >= ?", orgID, patient_id, weekStart.Unix()).
81
+		Preload("DeviceZone", "status = 1").
82
+		Preload("DeviceNumber", "status = 1").Find(&schs).Error
83
+	return
84
+}
85
+
86
+func GetSmartSchTemplatePatientByID(orgID int64, patient_id int64, count int) (schs []*models.XtPatientScheduleTemplateId, err error) {
87
+	err = readDb.Model(&models.XtPatientScheduleTemplateId{}).Preload("XtPatientScheduleTemplateItem", "status=1 AND patient_id = ?", patient_id).Where("org_id = ? AND status = 1", orgID).Limit(count).Find(&schs).Error
88
+	for _, items := range schs {
89
+		for _, subItems := range items.XtPatientScheduleTemplateItem {
90
+			number, _ := GetBedNumberById(subItems.DeviceNumberId, subItems.OrgId)
91
+			subItems.ZoneId = number.ZoneID
92
+		}
93
+	}
94
+	return
95
+}
96
+
97
+func GetAllAvaildDeviceNumbersByZone(orgID int64, record_date int64, schedule_type int, zone_id int64, patient_id int64) ([]*DeviceNumberViewModel, error) {
98
+	var vms []*DeviceNumberViewModel = make([]*DeviceNumberViewModel, 0)
99
+	rows, err := readDb.Raw("SELECT n.*, z.name as zone_name FROM xt_device_number as n join xt_device_zone as z on z.id = n.zone_id AND z.id = ?   WHERE (n.org_id = ? AND n.status = 1) AND NOT EXISTS (Select * FROM xt_schedule as s Where s.`schedule_date` = ? AND s.patient_id <> ?  AND  s.user_org_id = n.org_id AND s.`bed_id` = n.id  AND s.`schedule_type` = ? AND s.status = 1 )", zone_id, orgID, record_date, patient_id, schedule_type).Rows()
100
+	defer rows.Close()
101
+	if err != nil {
102
+		return nil, err
103
+	}
104
+	for rows.Next() {
105
+		var vm DeviceNumberViewModel
106
+		readDb.ScanRows(rows, &vm)
107
+		vms = append(vms, &vm)
108
+	}
109
+	return vms, nil
110
+}
111
+
112
+func GetScheduleByZoneAndBed(org_id int64, partitionId int64, bed_id int64, schedule_date int64, sch_type int64) (sch models.SmartSchedule, err error) {
113
+	err = readDb.Model(&models.SmartSchedule{}).Where("bed_id = ? AND user_org_id = ? AND schedule_date = ? AND partition_id = ? AND schedule_type = ?  AND status = 1", bed_id, org_id, schedule_date, partitionId, sch_type).First(&sch).Error
114
+	return
115
+}