package mobile_api_controllers import ( "encoding/json" "fmt" "github.com/astaxie/beego" "github.com/jinzhu/gorm" "reflect" "strconv" "strings" "time" "XT_New/enums" "XT_New/models" "XT_New/service" "XT_New/utils" "math" ) // type DialysisTestAPIController struct { // MobileBaseAPIController // } // [get]/m/api/test // func (this *DialysisTestAPIController) Test() { // orgID := int64(3907) // now := time.Now() // nextWeek := now.AddDate(0, 0, 7) // nextWeekMon, nextWeekSun := utils.GetMondayAndSundayOfWeekDate(&nextWeek) // nextTwoWeek := now.AddDate(0, 0, 14) // nextTwoWeekMon, nextTwoWeekSun := utils.GetMondayAndSundayOfWeekDate(&nextTwoWeek) // nextWeekSchs, getNextWeekSchErr := service.GetWeekSchedule(orgID, nextWeekMon.Unix(), nextWeekSun.Unix()) // nextTwoWeekSchs, getNextTwoWeekSchErr := service.GetWeekSchedule(orgID, nextTwoWeekMon.Unix(), nextTwoWeekSun.Unix()) // if getNextWeekSchErr != nil || getNextTwoWeekSchErr != nil { // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // exchangeErr := service.ExchangeScheduleTimeWithWeekSchedules(orgID, nextWeekSchs, nextTwoWeekSchs) // if exchangeErr != nil { // this.ErrorLog("%v", exchangeErr) // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // this.ServeSuccessJSON(map[string]interface{}{ // // "now": now, // // "next_week": nextWeek,f // // "next_week_mon": nextWeekMon, // // "next_week_sun": nextWeekSun, // // "next_two_week_mon": nextTwoWeekMon, // // "next_two_week_sun": nextTwoWeekSun, // "next_week_schs": nextWeekSchs, // "next_two_week_schs": nextTwoWeekSchs, // }) // } type DialysisAPIController struct { MobileBaseAPIAuthController } // /m/api/scheduals [get] // @param type:int // @param date:string func (this *DialysisAPIController) Scheduals() { schedualType, _ := this.GetInt64("type") schedualDate := this.GetString("date") if schedualType != 0 && schedualType != 1 && schedualType != 2 && schedualType != 3 { schedualType = 0 } date, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", schedualDate) if parseDateErr != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminInfo := this.GetMobileAdminUserInfo() orgID := adminInfo.Org.Id redis := service.RedisClient() defer redis.Close() // cur_date := time.Now().Format("2006-01-02") key := "scheduals_" + schedualDate + "_" + strconv.FormatInt(orgID, 10) scheduals_json_str, _ := redis.Get(key).Result() if len(scheduals_json_str) == 0 { //没有到缓存数据,从数据库中获取数据,进行缓存到redis scheduals, err := service.MobileGetDialysisScheduals(orgID, date.Unix(), schedualType) if err != nil { this.ErrorLog("获取排班信息失败:%v", err) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) } else { if len(scheduals) > 0 { //缓存数据 scheduals_json, err := json.Marshal(scheduals) if err == nil { redis.Set(key, scheduals_json, time.Minute*1) } } this.ServeSuccessJSON(map[string]interface{}{ "scheduals": scheduals, }) } } else { //缓存数据了数据,将redis缓存的json字符串转为map var dat []map[string]interface{} if err := json.Unmarshal([]byte(scheduals_json_str), &dat); err == nil { } else { } this.ServeSuccessJSON(map[string]interface{}{ "scheduals": dat, "redis": "true", "date": schedualDate, }) } } // /m/api/waiting_scheduals [get] // @param date:string func (this *DialysisAPIController) WaitingScheduals() { schedualDate := this.GetString("date") date, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", schedualDate) if parseDateErr != nil && len(schedualDate) != 0 { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminInfo := this.GetMobileAdminUserInfo() orgID := adminInfo.Org.Id redis := service.RedisClient() defer redis.Close() // cur_date := time.Now().Format("2006-01-02") key := "wait_scheduals_" + schedualDate + "_" + strconv.FormatInt(orgID, 10) wait_scheduals, _ := redis.Get(key).Result() if len(wait_scheduals) == 0 { //没有到缓存数据,从数据库中获取数据,进行缓存到redis scheduals, err := service.MobileGetWaitingScheduals(orgID, date.Unix()) if err != nil { this.ErrorLog("获取排班信息失败:%v", err) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) } else { returnScheduals := make([]*service.MDialysisScheduleVM, 0, len(scheduals)) for _, s := range scheduals { returnScheduals = append(returnScheduals, s) } if len(returnScheduals) > 0 { //缓存数据 wait_scheduals_json, err := json.Marshal(scheduals) if err == nil { redis.Set(key, wait_scheduals_json, time.Minute*2) } } this.ServeSuccessJSON(map[string]interface{}{ "scheduals": scheduals, }) } } else { //缓存数据了数据,将redis缓存的json字符串转为map var dat []map[string]interface{} if err := json.Unmarshal([]byte(wait_scheduals), &dat); err == nil { } else { } this.ServeSuccessJSON(map[string]interface{}{ "scheduals": dat, "redis": "true", "date": schedualDate, }) } } //else{ // fmt.Println("33333333") // // scheduals, err := service.MobileGetWaitingScheduals(orgID, date.Unix()) // if err != nil { // this.ErrorLog("获取排班信息失败:%v", err) // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // } else { // returnScheduals := make([]*service.MDialysisScheduleVM, 0, len(scheduals)) // for _, s := range scheduals { // // returnScheduals = append(returnScheduals, s) // } // // this.ServeSuccessJSON(map[string]interface{}{ // "scheduals": returnScheduals, // }) // } // // } //if err == nil{ // // // // // //}else{ //} // /m/api/dialysis/record [get] // @param patient_id:int // @param date:string (yyyy-MM-dd) func (this *DialysisAPIController) DialysisRecord() { patientID, _ := this.GetInt64("patient_id") recordDateStr := this.GetString("date") if patientID <= 0 { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } date, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { this.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminInfo := this.GetMobileAdminUserInfo() patient, getPatientErr := service.MobileGetPatientDetail(adminInfo.Org.Id, patientID) if getPatientErr != nil { this.ErrorLog("获取患者信息失败:%v", getPatientErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if patient == nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } schedual, getSchedualErr := service.MobileGetSchedualDetail(adminInfo.Org.Id, patientID, date.Unix()) // this.TraceLog("==================================%+v", schedual) if getSchedualErr != nil { this.ErrorLog("获取患者排班信息失败:%v", getSchedualErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } receiverTreatmentAccess, getRTARErr := service.MobileGetReceiverTreatmentAccessRecord(adminInfo.Org.Id, patientID, date.Unix()) if getRTARErr != nil { this.ErrorLog("获取接诊评估失败:%v", getRTARErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } predialysisEvaluation, getPEErr := service.MobileGetPredialysisEvaluation(adminInfo.Org.Id, patientID, date.Unix()) if getPEErr != nil { this.ErrorLog("获取透前评估失败:%v", getPEErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } lastPredialysisEvaluation, getLPEErr := service.MobileGetLastTimePredialysisEvaluation(adminInfo.Org.Id, patientID, date.Unix()) if getLPEErr != nil { this.ErrorLog("获取上一次透前评估失败:%v", getLPEErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } doctorAdvices, getDoctorAdvicesErr := service.MobileGetDoctorAdvicesByGroups(adminInfo.Org.Id, patientID, date.Unix()) if getDoctorAdvicesErr != nil { this.ErrorLog("获取临时医嘱失败:%v", getDoctorAdvicesErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } dialysisOrder, getDialysisOrderErr := service.MobileGetSchedualDialysisRecord(adminInfo.Org.Id, patientID, date.Unix()) if getDialysisOrderErr != nil { this.ErrorLog("获取透析记录失败:%v", getDialysisOrderErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } doubleCheck, getDoubleCheckErr := service.MobileGetDoubleCheck(adminInfo.Org.Id, patientID, date.Unix()) if getDoubleCheckErr != nil { this.ErrorLog("获取双人核对记录失败:%v", getDoubleCheckErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } monitorRecords, getMonitorRecordsErr := service.MobileGetMonitorRecords(adminInfo.Org.Id, patientID, date.Unix()) if getMonitorRecordsErr != nil { this.ErrorLog("获取透析监测记录失败:%v", getMonitorRecordsErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var lastMonitorRecord *models.MonitoringRecord lastMonitorRecord, getLastErr := service.MobileGetLastMonitorRecord(adminInfo.Org.Id, patientID, date.Unix()) if getLastErr != nil { this.ErrorLog("获取上一次透析的监测记录失败:%v", getLastErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } assessmentAfterDislysis, getAADErr := service.MobileGetAssessmentAfterDislysis(adminInfo.Org.Id, patientID, date.Unix()) if getAADErr != nil { this.ErrorLog("获取透后评估失败:%v", getAADErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } lastAssessmentAfterDislysis, getLAADErr := service.MobileGetLastTimeAssessmentAfterDislysis(adminInfo.Org.Id, patientID, date.Unix()) if getLAADErr != nil { this.ErrorLog("获取上一次透后评估失败:%v", getLAADErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } treatmentSummary, getTreatmentSummaryErr := service.MobileGetTreatmentSummary(adminInfo.Org.Id, patientID, date.Unix()) if getTreatmentSummaryErr != nil { this.ErrorLog("获取治疗小结失败:%v", getTreatmentSummaryErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } dialysisPrescribe, getDialysisPrescribeErr := service.MobileGetDialysisPrescribeByModeId(adminInfo.Org.Id, patientID, date.Unix(), schedual.ModeId) if getDialysisPrescribeErr != nil { this.ErrorLog("获取透析处方失败:%v", getDialysisPrescribeErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } dialysisSolution, getDialysisSolutionErr := service.MobileGetDialysisSolutionByModeId(adminInfo.Org.Id, patientID, schedual.ModeId) if getDialysisSolutionErr != nil { this.ErrorLog("获取透析方案失败:%v", getDialysisSolutionErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } lastDialysisPrescribe, getDialysisPrescribeErr := service.MobileGetLastDialysisPrescribeByModeId(adminInfo.Org.Id, patientID, schedual.ModeId) if getDialysisPrescribeErr != nil { this.ErrorLog("获取透析处方失败:%v", getDialysisPrescribeErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } //获取系统透析处方模版 systemDialysisPrescribe, getSystemDialysisPrescribeErr := service.MobileGetSystemDialysisPrescribeByModeId(adminInfo.Org.Id, schedual.ModeId) if getSystemDialysisPrescribeErr != nil { this.ErrorLog("获取系统透析处方失败:%v", getSystemDialysisPrescribeErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } //dialysisSolution, getDialysisSolutionErr := service.MobileGetDialysisSolution(adminInfo.Org.Id, patientID) operators, _ := service.GetAllAdminUserES(adminInfo.Org.Id, adminInfo.App.Id) if getLPEErr != nil { this.ErrorLog("获取上一次透前评估失败:%v", getLPEErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } lastDryWeightDislysis, getDryErr := service.MobileGetLastDryWeight(adminInfo.Org.Id, patientID) if getDryErr != nil { this.ErrorLog("获取最后一条干体重失败:%v", getDryErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } headNurses, _ := service.GetAllSpecialPermissionAdminUsersWithoutStatus(adminInfo.Org.Id, adminInfo.App.Id, models.SpecialPermissionTypeHeadNurse) _, gobalConfig := service.FindAutomaticReduceRecordByOrgId(adminInfo.Org.Id) goodTypes, _ := service.FindAllGoodTypeByType(1) //查出所有库存配置的系统类型 goodInfos, _ := service.FindAllGoodInfo(adminInfo.Org.Id) //查出所有库存配置的系统类型 returnData := map[string]interface{}{ "patient": patient, "schedual": schedual, "prescription": dialysisPrescribe, "solution": dialysisSolution, "last_prescription": lastDialysisPrescribe, "receiver_treatment_access": receiverTreatmentAccess, "predialysis_evaluation": predialysisEvaluation, "doctor_advices": doctorAdvices, "double_check": doubleCheck, "assessment_after_dislysis": assessmentAfterDislysis, "treatment_summary": treatmentSummary, "monitor_records": monitorRecords, "dialysis_order": dialysisOrder, "operators": operators, "last_predialysis_evaluation": lastPredialysisEvaluation, "last_assessment_after_dislysis": lastAssessmentAfterDislysis, "last_monitor_record": lastMonitorRecord, "special_premission": headNurses, "config": gobalConfig, "types": goodTypes, "goodInfos": goodInfos, "dry_weight": lastDryWeightDislysis, "system_prescription": systemDialysisPrescribe, } this.ServeSuccessJSON(returnData) } func (c *DialysisAPIController) GetDialysisGlobalConfig() { adminInfo := c.GetMobileAdminUserInfo() adminUsers, _ := service.GetAllAdminUsers(adminInfo.Org.Id, adminInfo.App.Id) devices, _ := service.GetValidDevicesBy(adminInfo.Org.Id, 0, 0) device_numbers, _ := service.GetAllValidDeviceNumbers(adminInfo.Org.Id) returnData := map[string]interface{}{ "admin_users": adminUsers, "devices": devices, "device_numbers": device_numbers, } c.ServeSuccessJSON(returnData) } func (c *DialysisAPIController) PostAtreatmentInfo() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") propagandaAndEducationContent := c.GetString("propagandaAndEducationContent") summaryContent := c.GetString("summaryContent") changeMedicalNurseId, _ := c.GetInt64("changeMedicalNurse", 0) treatNurseId, _ := c.GetInt64("treatNurse", 0) checkStaffId, _ := c.GetInt64("checkStaff", 0) deboardNurseId, _ := c.GetInt64("deboardNurse", 0) treatDoctor, _ := c.GetInt64("treatDoctor", 0) adminUserInfo := c.GetMobileAdminUserInfo() changeMedicalNurseId = adminUserInfo.AdminUser.Id checkStaffId = adminUserInfo.AdminUser.Id deboardNurseId = adminUserInfo.AdminUser.Id treatDoctor = adminUserInfo.AdminUser.Id if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } //now := time.Now() //year, month, day := now.Date() //today_time := time.Date(year, month, day, 0, 0, 0, 0, time.Local) //todayTimeStamp := today_time.Unix() summary := models.TreatmentSummary{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, AssessmentDate: recordDate.Unix(), Mission: propagandaAndEducationContent, DialysisSummary: summaryContent, SjNurse: changeMedicalNurseId, ZlNurse: treatNurseId, HdNurse: checkStaffId, XjNurse: deboardNurseId, ZlDoctor: treatDoctor, CreatedTime: time.Now().Unix(), Status: 1, } _, treatmentSummary := service.FindTreatmentSummaryByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if treatmentSummary.ID == 0 { //新增 summary.Creater = adminUserInfo.AdminUser.Id service.AddSigleSummaryRecord(&summary) c.ServeSuccessJSON(map[string]interface{}{ "summary": summary, }) } else { //修改 //if treatmentSummary.Creater != adminUserInfo.AdminUser.Id { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } //} summary.Creater = treatmentSummary.Creater summary.CreatedTime = treatmentSummary.CreatedTime summary.Modifier = adminUserInfo.AdminUser.Id summary.ID = treatmentSummary.ID service.UpdateSummeRecord(&summary) c.ServeSuccessJSON(map[string]interface{}{ "summary": summary, }) } } func (c *DialysisAPIController) PostDoubleCheck() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") checkTimeStr := c.GetString("check_time") dialysis_item_check, _ := c.GetInt64("dialysis_item_check", 0) dialysis_parameter_check, _ := c.GetInt64("dialysis_parameter_check", 0) vascular_access_verification, _ := c.GetInt64("vascular_access_verification", 0) pipeline_connection_check, _ := c.GetInt64("pipeline_connection_check", 0) dialysis_item_desc := c.GetString("dialysis_item_desc") dialysis_parameter_desc := c.GetString("dialysis_parameter_desc") vascular_access_desc := c.GetString("vascular_access_desc") pipeline_connection_desc := c.GetString("pipeline_connection_desc") collator, _ := c.GetInt64("collator", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if len(checkTimeStr) == 0 { checkTimeStr = time.Now().Format("2006-01-02 15:04:05") } checkDate, _ := utils.ParseTimeStringToTime("2006-01-02 15:04:05", checkTimeStr) //now := time.Now() //year, month, day := now.Date() //today_time := time.Date(year, month, day, 0, 0, 0, 0, time.Local) //todayTimeStamp := today_time.Unix() doubleCheck := models.DoubleCheck{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, DialysisItemCheck: dialysis_item_check, DialysisParameterCheck: dialysis_parameter_check, VascularAccessVerification: vascular_access_verification, PipelineConnectionCheck: pipeline_connection_check, DialysisItemDesc: dialysis_item_desc, DialysisParameterDesc: dialysis_parameter_desc, VascularAccessDesc: vascular_access_desc, PipelineConnectionDesc: pipeline_connection_desc, Collator: collator, Status: 1, CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), CheckDate: recordDate.Unix(), } _, check := service.FindDoubleCheckByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if check.ID == 0 { //新增 doubleCheck.FirstCheckTime = checkDate.Unix() doubleCheck.Creater = adminUserInfo.AdminUser.Id err := service.AddSigleDoubleCheck(&doubleCheck) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "doubleCheck": &doubleCheck, }) } } else { //修改 if check.Modifier != 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDoubleCheckWrong) } else { if adminUserInfo.AdminUser.Id == check.Creater { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDoubleCheckUserWrong) return } doubleCheck.FirstCheckTime = check.FirstCheckTime doubleCheck.CheckTime = checkDate.Unix() doubleCheck.Creater = check.Creater doubleCheck.CreatedTime = check.CreatedTime doubleCheck.Modifier = adminUserInfo.AdminUser.Id doubleCheck.ID = check.ID err := service.UpdateDoubleCheck(&doubleCheck) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "doubleCheck": &doubleCheck, }) } } } } func (c *DialysisAPIController) PostAcceptsAssessment() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") way, _ := c.GetInt64("way", 0) consciousness, _ := c.GetInt64("consciousness", 0) appetite, _ := c.GetInt64("appetite", 0) condition, _ := c.GetInt64("condition", 0) posture, _ := c.GetInt64("posture") sick_condition, _ := c.GetInt64("sick_condition", 0) danger_level, _ := c.GetInt64("danger_level", 0) intake, _ := c.GetInt64("intake", 0) nutrition, _ := c.GetInt64("nutrition", 0) psychological_assessment, _ := c.GetInt64("psychological_assessment", 0) psychological_assessment_other := c.GetString("psychological_assessment_other") score := c.GetString("score") sick_condition_other := c.GetString("sick_condition_other") precaution, _ := c.GetInt64("precaution", 0) precaution_other := c.GetString("precaution_other") psychological_other := c.GetString("psychological_other") admission_number := c.GetString("admission_number") if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } //now := time.Now() //year, month, day := now.Date() //today_time := time.Date(year, month, day, 0, 0, 0, 0, time.Local) //todayTimeStamp := today_time.Unix() if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } _, receiveTreatment := service.FindReceiveTreatmentAssesByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) receiveTreatmentAsses := models.ReceiveTreatmentAsses{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, RecordDate: recordDate.Unix(), Way: way, Consciousness: consciousness, Appetite: appetite, Condition: condition, SickCondition: sick_condition, DangerLevel: danger_level, Intake: intake, Nutrition: nutrition, PsychologicalAssessment: psychological_assessment, PsychologicalAssessmentOther: psychological_assessment_other, SickConditionOther: sick_condition_other, Posture: posture, CreatedTime: time.Now().Unix(), UpdateTime: time.Now().Unix(), Status: 1, Score: score, Precaution: precaution, PrecautionOther: precaution_other, PsychologicalOther: psychological_other, AdmissionNumber: admission_number, } if receiveTreatment.ID == 0 { //新增 receiveTreatmentAsses.Creater = adminUserInfo.AdminUser.Id err := service.AddSigleReceiveTreatmentAssesRecord(&receiveTreatmentAsses) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "receiveTreatmentAsses": receiveTreatmentAsses, }) } } else { //修改 //if receiveTreatment.Creater != adminUserInfo.AdminUser.Id { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } //} receiveTreatmentAsses.Creater = receiveTreatment.Creater receiveTreatmentAsses.CreatedTime = receiveTreatment.CreatedTime receiveTreatmentAsses.Modifier = adminUserInfo.AdminUser.Id receiveTreatmentAsses.ID = receiveTreatment.ID err := service.UpadateReceiveTreatmentAsses(&receiveTreatmentAsses) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "receiveTreatmentAsses": receiveTreatmentAsses, }) } } } func (c *DialysisAPIController) PostAssessmentAfterDislysis() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") weightAfter, _ := c.GetFloat("weight_after", 0) additionalWeight, _ := c.GetFloat("additional_weight", 0) weightReduce, _ := c.GetFloat("weight_loss", 0) temperature, _ := c.GetFloat("temperature", 0) pulse_frequency, _ := c.GetFloat("pulse_frequency", 0) breathing_rate, _ := c.GetFloat("breathing_rate", 0) systolic_blood_pressure, _ := c.GetFloat("systolic_blood_pressure", 0) diastolic_blood_pressure, _ := c.GetFloat("diastolic_blood_pressure", 0) actual_ultrafiltration, _ := c.GetFloat("actual_ultrafiltration", 0) actual_displacement, _ := c.GetFloat("actual_displacement", 0) actualtreatHour, _ := c.GetInt64("actual_treatment_hour", 0) actualtreatmin, _ := c.GetInt64("actual_treatment_minute", 0) cruor := c.GetString("cruor") symptomsAfterDialysi := c.GetString("symptom_after_dialysis") internalFistula := c.GetString("internal_fistula") catheter := c.GetString("catheter") complications := c.GetString("complication") remark := c.GetString("remark") dialysateVolume, _ := c.GetInt64("dialysis_intakes", 0) dialysis_intakes_unit, _ := c.GetInt64("dialysis_intakes_unit", 0) blood_access_part_id, _ := c.GetInt64("blood_access_part_id", 0) blood_access_part_opera_id, _ := c.GetInt64("blood_access_part_opera_id", 0) puncturePointOozingBlood, _ := c.GetInt64("puncture_point_oozing_blood", 0) puncturePointHaematoma, _ := c.GetInt64("puncture_point_haematoma", 0) internalFistulaTremorAc, _ := c.GetInt64("internal_fistula_tremor_ac", 0) patientGose, _ := c.GetInt64("patient_gose", 0) inpatientDepartment := c.GetString("inpatient_department") observationContent := c.GetString("observation_content") observationContentOther := c.GetString("observation_content_other") dialysis_process, _ := c.GetInt64("dialysis_process", 0) in_advance_minute, _ := c.GetFloat("in_advance_minute", 0) in_advance_reason := c.GetString("in_advance_reason") hemostasis_minute, _ := c.GetInt64("hemostasis_minute", 0) hemostasis_opera, _ := c.GetInt64("hemostasis_opera", 0) tremor_noise, _ := c.GetInt64("tremor_noise", 0) disequilibrium_syndrome, _ := c.GetInt64("disequilibrium_syndrome", 0) disequilibrium_syndrome_option := c.GetString("disequilibrium_syndrome_option") arterial_tube, _ := c.GetInt64("arterial_tube", 0) intravenous_tube, _ := c.GetInt64("intravenous_tube", 0) dialyzer, _ := c.GetInt64("dialyzer", 0) in_advance_reason_other := c.GetString("in_advance_reason_other") is_eat, _ := c.GetInt64("is_eat", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } //now := time.Now() //year, month, day := now.Date() //today_time := time.Date(year, month, day, 0, 0, 0, 0, time.Local) //todayTimeStamp := today_time.Unix() _, evaluation := service.FindPredialysisEvaluationByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if evaluation.ID > 0 { if evaluation.WeightBefore > 0 && weightAfter > 0 { if (evaluation.WeightBefore-evaluation.AdditionalWeight)-(weightAfter-additionalWeight) > 0 { weightReduce = (evaluation.WeightBefore - evaluation.AdditionalWeight) - (weightAfter - additionalWeight) } else { weightReduce = 0 } } } assessmentAfterDislysis := models.AssessmentAfterDislysis{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, AssessmentDate: recordDate.Unix(), Temperature: temperature, PulseFrequency: pulse_frequency, BreathingRate: breathing_rate, SystolicBloodPressure: systolic_blood_pressure, DiastolicBloodPressure: diastolic_blood_pressure, ActualUltrafiltration: actual_ultrafiltration, ActualDisplacement: actual_displacement, ActualTreatmentHour: actualtreatHour, ActualTreatmentMinute: actualtreatmin, WeightAfter: weightAfter, AdditionalWeight: additionalWeight, WeightLoss: weightReduce, Cruor: cruor, SymptomAfterDialysis: symptomsAfterDialysi, InternalFistula: internalFistula, Catheter: catheter, Complication: complications, DialysisIntakes: dialysateVolume, CreatedTime: time.Now().Unix(), Status: 1, Remark: remark, BloodAccessPartId: blood_access_part_id, BloodAccessPartOperaId: blood_access_part_opera_id, DialysisIntakesUnit: dialysis_intakes_unit, PuncturePointOozingBlood: puncturePointOozingBlood, PuncturePointHaematoma: puncturePointHaematoma, InternalFistulaTremorAc: internalFistulaTremorAc, PatientGose: patientGose, InpatientDepartment: inpatientDepartment, ObservationContent: observationContent, ObservationContentOther: observationContentOther, DialysisProcess: dialysis_process, InAdvanceMinute: in_advance_minute, InAdvanceReason: in_advance_reason, HemostasisMinute: hemostasis_minute, HemostasisOpera: hemostasis_opera, TremorNoise: tremor_noise, DisequilibriumSyndrome: disequilibrium_syndrome, DisequilibriumSyndromeOption: disequilibrium_syndrome_option, ArterialTube: arterial_tube, IntravenousTube: intravenous_tube, Dialyzer: dialyzer, InAdvanceReasonOther: in_advance_reason_other, IsEat: is_eat, } appRole, _ := service.FindAdminRoleTypeById(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id, adminUserInfo.App.Id) _, assessmentAfter := service.FindAssessmentAfterDislysisByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if assessmentAfter.ID == 0 { //新增 if appRole.UserType == 2 || appRole.UserType == 1 { assessmentAfterDislysis.AssessmentDoctor = adminUserInfo.AdminUser.Id assessmentAfterDislysis.AssessmentTime = time.Now().Unix() } else { assessmentAfterDislysis.Creater = adminUserInfo.AdminUser.Id } err := service.AddSigleAssessmentAfterDislysisRecord(&assessmentAfterDislysis) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "assessmentAfterDislysis": assessmentAfterDislysis, }) } } else { //修改 if appRole.UserType == 2 || appRole.UserType == 1 { assessmentAfterDislysis.AssessmentDoctor = adminUserInfo.AdminUser.Id assessmentAfterDislysis.AssessmentTime = time.Now().Unix() } else { assessmentAfterDislysis.Modifier = adminUserInfo.AdminUser.Id if assessmentAfterDislysis.Creater == 0 { assessmentAfterDislysis.Creater = adminUserInfo.AdminUser.Id } } assessmentAfterDislysis.CreatedTime = assessmentAfter.CreatedTime assessmentAfterDislysis.ID = assessmentAfter.ID err := service.UpdateAssessmentAfterDislysisRecord(&assessmentAfterDislysis) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "assessmentAfterDislysis": assessmentAfterDislysis, }) } } } func (c *DialysisAPIController) PostDialysisPrescription() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } mode_id, _ := c.GetInt64("mode_id", 0) dialysis_duration, _ := c.GetFloat("dialysis_duration", 0) dialyzer, _ := c.GetInt64("dialyzer", 0) perfusion_apparatus, _ := c.GetInt64("perfusion_apparatus", 0) blood_flow_volume, _ := c.GetFloat("blood_flow_volume", 0) dewater_amount, _ := c.GetFloat("dewater_amount", 0) displace_liqui, _ := c.GetFloat("displace_liqui", 0) replacement_total, _ := c.GetFloat("replacement_total", 0) replacement_way, _ := c.GetInt64("replacement_way", 0) anticoagulant, _ := c.GetInt64("anticoagulant", 0) anticoagulant_shouji, _ := c.GetFloat("anticoagulant_shouji", 0) anticoagulant_weichi, _ := c.GetFloat("anticoagulant_weichi", 0) anticoagulant_zongliang, _ := c.GetFloat("anticoagulant_zongliang", 0) anticoagulant_gaimingcheng := c.GetString("anticoagulant_gaimingcheng") anticoagulant_gaijiliang := c.GetString("anticoagulant_gaijiliang") dialyzerPerfusionApparatus := c.GetString("dialyzer_perfusion_apparatus") kalium, _ := c.GetFloat("kalium", 0) sodium, _ := c.GetFloat("sodium", 0) calcium, _ := c.GetFloat("calcium", 0) bicarbonate, _ := c.GetFloat("bicarbonate", 0) glucose, _ := c.GetFloat("glucose", 0) prescription_doctor, _ := c.GetInt64("prescription_doctor", 0) // dry_weight, _ := c.GetFloat("dry_weight", 0) dialysate_flow, _ := c.GetFloat("dialysate_flow", 0) dialysate_temperature, _ := c.GetFloat("dialysate_temperature", 0) conductivity, _ := c.GetFloat("conductivity", 0) remark := c.GetString("remark") dialysisDurationHour, _ := c.GetInt64("dialysis_duration_hour", 0) dialysisDurationMinute, _ := c.GetInt64("dialysis_duration_minute", 0) targetUltrafiltration, _ := c.GetFloat("target_ultrafiltration", 0) dialysateFormulation, _ := c.GetInt64("dialysate_formulation", 0) body_fluid, _ := c.GetInt64("body_fluid", 0) special_medicine, _ := c.GetInt64("special_medicine", 0) special_medicine_other := c.GetString("special_medicine_other") displace_liqui_part, _ := c.GetInt64("displace_liqui_part", 0) displace_liqui_value, _ := c.GetFloat("displace_liqui_value", 0) blood_access, _ := c.GetInt64("blood_access", 0) ultrafiltration, _ := c.GetFloat("ultrafiltration", 0) body_fluid_other := c.GetString("body_fluid_other") niprocart, _ := c.GetInt64("niprocart", 0) jms, _ := c.GetInt64("jms", 0) fistula_needle_set, _ := c.GetInt64("fistula_needle_set", 0) fistula_needle_set_16, _ := c.GetInt64("fistula_needle_set_16", 0) hemoperfusion, _ := c.GetInt64("hemoperfusion", 0) dialyser_sterilised, _ := c.GetInt64("dialyser_sterilised", 0) filtryzer, _ := c.GetInt64("filtryzer", 0) target_ktv, _ := c.GetFloat("target_ktv", 0) dialyzers, _ := c.GetInt64("dialyzers", 0) injector, _ := c.GetInt64("injector", 0) bloodlines, _ := c.GetInt64("bloodlines", 0) tubing_hemodialysis, _ := c.GetInt64("tubing_hemodialysis", 0) safe_package, _ := c.GetInt64("package", 0) a_liquid, _ := c.GetInt64("a_liquid", 0) appRole, _ := service.FindAdminRoleTypeById(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id, adminUserInfo.App.Id) //template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id) // //if template.TemplateId == 2 || template.TemplateId == 6 { // if appRole.UserType == 3 { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePrescriptionPermissionDeniedModify) // return // } // } //} //TODO 需要根据角色去判断 prescription := models.DialysisPrescription{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, RecordDate: recordDate.Unix(), ModeId: mode_id, DialysisDuration: dialysis_duration, Dialyzer: dialyzer, PerfusionApparatus: perfusion_apparatus, BloodFlowVolume: blood_flow_volume, DewaterAmount: dewater_amount, DisplaceLiqui: displace_liqui, ReplacementWay: replacement_way, Anticoagulant: anticoagulant, AnticoagulantShouji: anticoagulant_shouji, AnticoagulantWeichi: anticoagulant_weichi, AnticoagulantZongliang: anticoagulant_zongliang, AnticoagulantGaimingcheng: anticoagulant_gaimingcheng, AnticoagulantGaijiliang: anticoagulant_gaijiliang, Kalium: kalium, Sodium: sodium, Calcium: calcium, Bicarbonate: bicarbonate, Glucose: glucose, // DryWeight: dry_weight, DialysateFlow: dialysate_flow, DialysateTemperature: dialysate_temperature, PrescriptionDoctor: prescription_doctor, ReplacementTotal: replacement_total, Conductivity: conductivity, Remark: remark, Status: 1, CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), DialysisDurationMinute: dialysisDurationMinute, DialysisDurationHour: dialysisDurationHour, TargetUltrafiltration: targetUltrafiltration, DialysateFormulation: dialysateFormulation, DialyzerPerfusionApparatus: dialyzerPerfusionApparatus, BodyFluid: body_fluid, SpecialMedicine: special_medicine, SpecialMedicineOther: special_medicine_other, DisplaceLiquiPart: displace_liqui_part, DisplaceLiquiValue: displace_liqui_value, BloodAccess: blood_access, Ultrafiltration: ultrafiltration, BodyFluidOther: body_fluid_other, Niprocart: niprocart, Jms: jms, FistulaNeedleSet: fistula_needle_set, FistulaNeedleSet16: fistula_needle_set_16, Hemoperfusion: hemoperfusion, DialyserSterilised: dialyser_sterilised, Filtryzer: filtryzer, Dialyzers: dialyzers, Injector: injector, Bloodlines: bloodlines, TubingHemodialysis: tubing_hemodialysis, Package: safe_package, ALiquid: a_liquid, TargetKtv: target_ktv, } _, dialysisPrescription := service.FindDialysisPrescriptionByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if dialysisPrescription.ID == 0 { //新增 //if mode_id > 0 { // //service.ModifyScheduleMode(mode_id, patient.ID, recordDate.Unix(), adminUserInfo.Org.Id) //} if appRole.UserType == 2 || appRole.UserType == 1 { prescription_doctor = adminUserInfo.AdminUser.Id } else { prescription_doctor = 0 } prescription.Creater = adminUserInfo.AdminUser.Id err := service.AddSigleRecord(&prescription) if err == nil { updateErr := service.UpdateScheduleModeId(patient.ID, adminUserInfo.Org.Id, recordDate.Unix(), mode_id) if updateErr != nil { utils.ErrorLog("%v", updateErr) } c.ServeSuccessJSON(map[string]interface{}{ "prescription": prescription, }) } } else { //修改 //if mode_id > 0 { // service.ModifyScheduleMode(mode_id, patient.ID, recordDate.Unix(), adminUserInfo.Org.Id) //} //if template.TemplateId == 1 { // if dialysisPrescription.Creater != adminUserInfo.AdminUser.Id && dialysisPrescription.Creater != 0 { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePrescriptionPermissionDeniedModify) // return // } // } //} _, record := service.FindAutomaticReduceRecordByOrgId(adminUserInfo.Org.Id) if record.IsOpen == 1 { niprocart_good_type_id, _ := beego.AppConfig.Int64("niprocart") jms_good_type_id, _ := beego.AppConfig.Int64("jms") fistula_needle_set_good_type_id, _ := beego.AppConfig.Int64("fistula_needle_set") fistula_needle_set_16_good_type_id, _ := beego.AppConfig.Int64("fistula_needle_set_16") hemoperfusion_good_type_id, _ := beego.AppConfig.Int64("hemoperfusion") dialyser_sterilised_good_type_id, _ := beego.AppConfig.Int64("dialyser_sterilised") filtryzer_good_type_id, _ := beego.AppConfig.Int64("filtryzer") dialyzers_good_type_id, _ := beego.AppConfig.Int64("dialyzers") injector_good_type_id, _ := beego.AppConfig.Int64("injector") bloodlines_good_type_id, _ := beego.AppConfig.Int64("bloodlines") tubingHemodialysis_good_type_id, _ := beego.AppConfig.Int64("tubingHemodialysis") safe_package_good_type_id, _ := beego.AppConfig.Int64("package") aliquid_good_type_id, _ := beego.AppConfig.Int64("aliquid") err, order := service.FindDialysisRecordById(adminUserInfo.Org.Id, id, recordDate.Unix()) if err == nil { if order.ID > 0 { if dialysisPrescription.Niprocart != niprocart { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //1.用上机透析日期查出当天的订单 _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) service.UpdateOrderCount(niprocart_good_type_id, dialysisPrescription.Niprocart, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(niprocart_good_type_id, niprocart, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(niprocart, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = niprocart warehouseOutInfo.GoodTypeId = niprocart_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(niprocart_good_type_id, dialysisPrescription.Niprocart, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: niprocart, GoodTypeId: niprocart_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(niprocart_good_type_id, dialysisPrescription.Niprocart, order.StartTime, adminUserInfo.Org.Id, id, niprocart, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(niprocart_good_type_id, dialysisPrescription.Niprocart, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: niprocart, GoodTypeId: niprocart_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(niprocart_good_type_id, dialysisPrescription.Niprocart, order.StartTime, adminUserInfo.Org.Id, id, niprocart, &newOut) } } } } } if dialysisPrescription.Jms != jms { //不一致,先将原有的商品出库单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(jms_good_type_id, dialysisPrescription.Jms, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(jms_good_type_id, jms, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(jms, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = jms warehouseOutInfo.GoodTypeId = jms_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(jms_good_type_id, dialysisPrescription.Jms, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: jms, GoodTypeId: jms_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(jms_good_type_id, dialysisPrescription.Jms, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: jms, GoodTypeId: jms_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, &newOut) } } } } } if dialysisPrescription.FistulaNeedleSet != fistula_needle_set { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(fistula_needle_set_good_type_id, fistula_needle_set, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(fistula_needle_set, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = fistula_needle_set warehouseOutInfo.GoodTypeId = fistula_needle_set_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set, GoodTypeId: fistula_needle_set_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set, GoodTypeId: fistula_needle_set_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, &newOut) } } } } } if dialysisPrescription.FistulaNeedleSet16 != fistula_needle_set_16 { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(fistula_needle_set_16_good_type_id, fistula_needle_set_16, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(fistula_needle_set_16, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = fistula_needle_set_16 warehouseOutInfo.GoodTypeId = fistula_needle_set_16_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set_16, GoodTypeId: fistula_needle_set_16_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) //service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set_16, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set_good_type_id, GoodTypeId: fistula_needle_set_16_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set_16, &newOut) } } } } } if dialysisPrescription.Hemoperfusion != hemoperfusion { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(hemoperfusion_good_type_id, hemoperfusion, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(hemoperfusion, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = hemoperfusion warehouseOutInfo.GoodTypeId = hemoperfusion_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: hemoperfusion, GoodTypeId: hemoperfusion_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: hemoperfusion, GoodTypeId: hemoperfusion_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, &newOut) } } } } } if dialysisPrescription.DialyserSterilised != dialyser_sterilised { _, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(dialyser_sterilised_good_type_id, dialyser_sterilised, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //����存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.WarehouseOutId, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(dialyser_sterilised, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = dialyser_sterilised warehouseOutInfo.GoodTypeId = dialyser_sterilised_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyser_sterilised, GoodTypeId: dialyser_sterilised_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, warehouseOutInfo) service.UpdateOrderInfoDetails(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id, id, dialyser_sterilised, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyser_sterilised, GoodTypeId: dialyser_sterilised_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id, id, dialyser_sterilised, &newOut) } } } } } if dialysisPrescription.Filtryzer != filtryzer { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(filtryzer_good_type_id, dialysisPrescription.Filtryzer, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(filtryzer_good_type_id, filtryzer, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(filtryzer, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = filtryzer warehouseOutInfo.GoodTypeId = filtryzer_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(filtryzer_good_type_id, dialysisPrescription.Filtryzer, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: filtryzer, GoodTypeId: filtryzer_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id, id, filtryzer, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(filtryzer_good_type_id, dialysisPrescription.Filtryzer, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: filtryzer, GoodTypeId: filtryzer_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id, id, filtryzer, &newOut) } } } } } if dialysisPrescription.Dialyzers != dialyzers { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(dialyzers_good_type_id, dialysisPrescription.Dialyzers, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(dialyzers_good_type_id, dialyzers, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(dialyzers, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = dialyzers warehouseOutInfo.GoodTypeId = dialyzers_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(dialyzers_good_type_id, dialysisPrescription.Dialyzers, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyzers, GoodTypeId: dialyzers_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyzers_good_type_id, dialysisPrescription.Dialyzers, order.StartTime, adminUserInfo.Org.Id, id, dialyzers, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(dialyzers_good_type_id, dialysisPrescription.Dialyzers, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyzers, GoodTypeId: dialyzers_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyzers_good_type_id, dialysisPrescription.Dialyzers, order.StartTime, adminUserInfo.Org.Id, id, dialyzers, &newOut) } } } } } if dialysisPrescription.Injector != injector { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(injector_good_type_id, dialysisPrescription.Injector, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(injector_good_type_id, injector, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(injector, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = injector warehouseOutInfo.GoodTypeId = injector_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(injector_good_type_id, dialysisPrescription.Injector, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: injector, GoodTypeId: injector_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(injector_good_type_id, dialysisPrescription.Injector, order.StartTime, adminUserInfo.Org.Id, id, injector, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(injector_good_type_id, dialysisPrescription.Injector, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: injector, GoodTypeId: injector_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(injector_good_type_id, dialysisPrescription.Injector, order.StartTime, adminUserInfo.Org.Id, id, injector, &newOut) } } } } } if dialysisPrescription.Bloodlines != bloodlines { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(bloodlines_good_type_id, dialysisPrescription.Bloodlines, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(bloodlines_good_type_id, bloodlines, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(bloodlines, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = bloodlines warehouseOutInfo.GoodTypeId = bloodlines_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(bloodlines_good_type_id, dialysisPrescription.Bloodlines, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: bloodlines, GoodTypeId: bloodlines_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(bloodlines_good_type_id, dialysisPrescription.Bloodlines, order.StartTime, adminUserInfo.Org.Id, id, bloodlines, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(bloodlines_good_type_id, dialysisPrescription.Bloodlines, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: bloodlines, GoodTypeId: bloodlines_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(bloodlines_good_type_id, dialysisPrescription.Bloodlines, order.StartTime, adminUserInfo.Org.Id, id, bloodlines, &newOut) } } } } } if dialysisPrescription.TubingHemodialysis != tubing_hemodialysis { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(tubingHemodialysis_good_type_id, tubing_hemodialysis, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(tubing_hemodialysis, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = tubing_hemodialysis warehouseOutInfo.GoodTypeId = tubingHemodialysis_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: tubing_hemodialysis, GoodTypeId: tubingHemodialysis_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, order.StartTime, adminUserInfo.Org.Id, id, tubing_hemodialysis, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: tubing_hemodialysis, GoodTypeId: tubingHemodialysis_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, order.StartTime, adminUserInfo.Org.Id, id, tubing_hemodialysis, &newOut) } } } } } if dialysisPrescription.Package != safe_package { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(safe_package_good_type_id, dialysisPrescription.Package, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(safe_package_good_type_id, safe_package, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(safe_package, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = safe_package warehouseOutInfo.GoodTypeId = safe_package_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(safe_package_good_type_id, dialysisPrescription.Package, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: safe_package, GoodTypeId: safe_package_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(safe_package_good_type_id, dialysisPrescription.Package, order.StartTime, adminUserInfo.Org.Id, id, safe_package, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(safe_package_good_type_id, dialysisPrescription.Package, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: safe_package, GoodTypeId: safe_package_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(safe_package_good_type_id, dialysisPrescription.Package, order.StartTime, adminUserInfo.Org.Id, id, safe_package, &newOut) } } } } } if dialysisPrescription.ALiquid != a_liquid { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(aliquid_good_type_id, dialysisPrescription.ALiquid, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(aliquid_good_type_id, a_liquid, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(a_liquid, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = a_liquid warehouseOutInfo.GoodTypeId = aliquid_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(aliquid_good_type_id, dialysisPrescription.ALiquid, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: a_liquid, GoodTypeId: aliquid_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(aliquid_good_type_id, dialysisPrescription.ALiquid, order.StartTime, adminUserInfo.Org.Id, id, a_liquid, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(aliquid_good_type_id, dialysisPrescription.ALiquid, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: a_liquid, GoodTypeId: aliquid_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(aliquid_good_type_id, dialysisPrescription.ALiquid, order.StartTime, adminUserInfo.Org.Id, id, a_liquid, &newOut) } } } } } } } } prescription.CreatedTime = dialysisPrescription.CreatedTime prescription.Modifier = adminUserInfo.AdminUser.Id if dialysisPrescription.Creater == 0 { prescription.Creater = adminUserInfo.AdminUser.Id if appRole.UserType == 2 || appRole.UserType == 1 { prescription_doctor = adminUserInfo.AdminUser.Id prescription.PrescriptionDoctor = dialysisPrescription.PrescriptionDoctor } else { prescription_doctor = 0 } } else { prescription.Creater = dialysisPrescription.Creater } prescription.ID = dialysisPrescription.ID err := service.UpDateDialysisPrescription(&prescription) if err == nil { updateErr := service.UpdateScheduleModeId(patient.ID, adminUserInfo.Org.Id, recordDate.Unix(), mode_id) if updateErr != nil { utils.ErrorLog("%v", updateErr) } c.ServeSuccessJSON(map[string]interface{}{ "prescription": prescription, }) } } } func (c *DialysisAPIController) Finish() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") nurseID, _ := c.GetInt64("nurse") end_time := c.GetString("end_time") if id <= 0 || nurseID <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } nurse, getNurseErr := service.GetAdminUserByUserID(nurseID) if getNurseErr != nil { c.ErrorLog("获取护士失败:%v", getNurseErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { c.ErrorLog("护士不存在") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } endDate, parseEndDateErr := utils.ParseTimeStringToTime("2006-01-02 15:04:05", end_time) if parseEndDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", end_time, parseEndDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } //now := time.Now() //year, month, day := now.Date() //today_time := time.Date(year, month, day, 0, 0, 0, 0, time.Local) //todayTimeStamp := today_time.Unix() // 获取当天的第一条透析纪录 fmonitorRecords, getMonitorRecordsErr := service.MobileGetMonitorRecordFirst(adminUserInfo.Org.Id, id, recordDate.Unix()) if getMonitorRecordsErr != nil { c.ErrorLog("获取透析监测记录失败:%v", getMonitorRecordsErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } // 获取当前的最后一条透析纪录 endmonitorRecords, getMonitorRecordsErr := service.MobileGetLastMonitorRecord(adminUserInfo.Org.Id, id, recordDate.Unix()) if getMonitorRecordsErr != nil { c.ErrorLog("获取透析监测记录失败:%v", getMonitorRecordsErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } fmt.Println(endmonitorRecords.UltrafiltrationVolume) assessmentAfterDislysis, getAADErr := service.MobileGetAssessmentAfterDislysis(adminUserInfo.Org.Id, id, recordDate.Unix()) if getAADErr != nil { c.ErrorLog("获取透后评估失败:%v", getAADErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } _, dialysisOrder := service.FindDialysisRecordById(adminUserInfo.Org.Id, id, recordDate.Unix()) var tempassessmentAfterDislysis models.AssessmentAfterDislysis if assessmentAfterDislysis != nil { tempassessmentAfterDislysis = *assessmentAfterDislysis tempassessmentAfterDislysis.UpdatedTime = time.Now().Unix() } else { tempassessmentAfterDislysis.CreatedTime = time.Now().Unix() tempassessmentAfterDislysis.AssessmentDate = recordDate.Unix() tempassessmentAfterDislysis.Status = 1 tempassessmentAfterDislysis.PatientId = id tempassessmentAfterDislysis.UserOrgId = adminUserInfo.Org.Id } if dialysisOrder.Stage == 1 { temp_time := (float64(endDate.Unix()) - float64(dialysisOrder.StartTime)) / 3600 value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", temp_time), 64) fmt.Println(value) a, b := math.Modf(value) c, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", b), 64) hour, _ := strconv.ParseInt(fmt.Sprintf("%.0f", a), 10, 64) minute, _ := strconv.ParseInt(fmt.Sprintf("%.0f", c*60), 10, 64) fmt.Println(hour) fmt.Println(minute) tempassessmentAfterDislysis.ActualTreatmentHour = hour tempassessmentAfterDislysis.ActualTreatmentMinute = minute } if fmonitorRecords.ID > 0 && endmonitorRecords.ID > 0 { //var num1 int64 //num1 = endmonitorRecords.OperateTime - fmonitorRecords.OperateTime //fmt.Println(num1) //sub := float64(num1 / 3600) //fmt.Println(sub) //tempassessmentAfterDislysis.ActualTreatmentHour = int64(math.Floor(sub)) //sub2 := float64(((endmonitorRecords.OperateTime - fmonitorRecords.OperateTime) % 3600) / 60) //tempassessmentAfterDislysis.ActualTreatmentMinute = int64(math.Floor(sub2)) tempassessmentAfterDislysis.Temperature = endmonitorRecords.Temperature tempassessmentAfterDislysis.PulseFrequency = endmonitorRecords.PulseFrequency tempassessmentAfterDislysis.BreathingRate = endmonitorRecords.BreathingRate tempassessmentAfterDislysis.SystolicBloodPressure = endmonitorRecords.SystolicBloodPressure tempassessmentAfterDislysis.DiastolicBloodPressure = endmonitorRecords.DiastolicBloodPressure tempassessmentAfterDislysis.ActualUltrafiltration = endmonitorRecords.UltrafiltrationVolume tempassessmentAfterDislysis.ActualDisplacement = endmonitorRecords.DisplacementQuantity } err := service.UpdateAssessmentAfterDislysisRecord(&tempassessmentAfterDislysis) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if dialysisOrder == nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderNoStart) return } if dialysisOrder.Stage == 2 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderNoEND) return } if dialysisOrder.Stage == 1 { err := service.ModifyDialysisRecord(dialysisOrder.ID, nurseID, endDate.Unix(), adminUserInfo.AdminUser.Id) //结束时候透析次数加1 service.UpdateSolutionByPatientId(id) dialysisOrder.Stage = 2 dialysisOrder.FinishNurse = nurseID dialysisOrder.FinishCreator = adminUserInfo.AdminUser.Id dialysisOrder.FinishModifier = adminUserInfo.AdminUser.Id dialysisOrder.EndTime = endDate.Unix() if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "dialysisOrder": dialysisOrder, "assessmentAfterDislysis": tempassessmentAfterDislysis, }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) } } } func (c *DialysisAPIController) GetAllZone() { adminUserInfo := c.GetMobileAdminUserInfo() err, zone := service.GetAllDeviceZone(adminUserInfo.Org.Id) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "zone": zone, }) } } func (c *DialysisAPIController) GetSchedualPatientsList() { adminUserInfo := c.GetMobileAdminUserInfo() page, _ := c.GetInt64("page", 1) limit, _ := c.GetInt64("limit", 10) schedulType, _ := c.GetInt64("schedul_type", 0) startTime, _ := c.GetInt64("schedul_time", 0) partitionType, _ := c.GetInt64("partition_type", 0) keywords := c.GetString("keywords") dialysisSchedule, err := service.GetSchedualPatientList(adminUserInfo.Org.Id, startTime/1000, schedulType, partitionType, keywords, page, limit) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "schedule": dialysisSchedule, }) } return } // /m/api/dialysis/start [post] // @param patient_id:int // @param record_date:string 排班时间 (yyyy-mm-dd) // @param nurse:int 上机护士 // @param bed:int 床位号 func (this *DialysisAPIController) StartDialysis() { patientID, _ := this.GetInt64("patient_id") recordDateStr := this.GetString("record_date") nurseID, _ := this.GetInt64("nurse") puncture_nurse, _ := this.GetInt64("puncture_nurse") blood_drawing, _ := this.GetInt64("blood_drawing") schedual_type, _ := this.GetInt64("schedual_type") bedID, _ := this.GetInt64("bed") start_time := this.GetString("start_time") if patientID <= 0 || len(recordDateStr) == 0 || nurseID <= 0 || bedID <= 0 { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startDate, parseStartDateErr := utils.ParseTimeStringToTime("2006-01-02 15:04:05", start_time) if parseStartDateErr != nil { this.ErrorLog("时间解析失败:%v", parseStartDateErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDate, parseErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseErr != nil { this.ErrorLog("时间解析失败:%v", parseErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := this.GetMobileAdminUserInfo() patient, getPatientErr := service.MobileGetPatientById(adminUserInfo.Org.Id, patientID) if getPatientErr != nil { this.ErrorLog("获取患者信息失败:%v", getPatientErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if patient == nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } nurse, getNurseErr := service.GetAdminUserByUserID(nurseID) if getNurseErr != nil { this.ErrorLog("获取护士失败:%v", getNurseErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { this.ErrorLog("护士不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } nurse, getNurseErr = service.GetAdminUserByUserID(puncture_nurse) if getNurseErr != nil { this.ErrorLog("获取护士失败:%v", getNurseErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { this.ErrorLog("护士不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } deviceNumber, getDeviceNumberErr := service.GetDeviceNumberByID(adminUserInfo.Org.Id, bedID) if getDeviceNumberErr != nil { this.ErrorLog("获取床位号失败:%v", getDeviceNumberErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if deviceNumber == nil { this.ErrorLog("床位号不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } _, configs := service.FindAutomaticReduceRecordByOrgId(adminUserInfo.Org.Id) if configs.IsOpen == 1 { _, prescription := service.FindDialysisPrescriptionByReordDate(patientID, recordDate.Unix(), adminUserInfo.Org.Id) if prescription.ID == 0 { this.ErrorLog("上机失败,还没开处方") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePrescriptionException) return } } dialysisRecord, getRecordErr := service.MobileGetDialysisRecord(adminUserInfo.Org.Id, patientID, recordDate.Unix()) if getRecordErr != nil { this.ErrorLog("获取透析记录失败:%v", getRecordErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if dialysisRecord != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatStart) return } scheduleDateStart := startDate.Format("2006-01-02") + " 00:00:00" scheduleDateEnd := startDate.Format("2006-01-02") + " 23:59:59" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc) schedulestartTime := theStartTime.Unix() scheduleendTime := theEndTime.Unix() template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id) //查询更改的机号,是否有人用了,如果只是排班了,但是没上机,直接替换,如果排班且上机了,就提示他无法上机 schedule, err := service.GetDayScheduleByBedid(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type) if err == gorm.ErrRecordNotFound { //空床位 // 修改了床位逻辑 daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID) if daySchedule.ID > 0 { daySchedule.PartitionId = deviceNumber.ZoneID daySchedule.BedId = bedID daySchedule.ScheduleType = schedual_type daySchedule.UpdatedTime = time.Now().Unix() err := service.UpdateSchedule(&daySchedule) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else if err == nil { if schedule.ID > 0 && schedule.DialysisOrder.ID == 0 { //有排班没上机记录 daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, patientID) if daySchedule.ID > 0 { daySchedule.PartitionId = deviceNumber.ZoneID daySchedule.BedId = bedID daySchedule.ScheduleType = schedual_type daySchedule.UpdatedTime = time.Now().Unix() err := service.UpdateSchedule(&daySchedule) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else if schedule.ID > 0 && schedule.DialysisOrder.ID > 0 { //有排班且有上机记录 this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed) return } } else if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } dialysisRecord = &models.DialysisOrder{ DialysisDate: recordDate.Unix(), UserOrgId: adminUserInfo.Org.Id, PatientId: patientID, Stage: 1, BedID: bedID, StartNurse: nurseID, Status: 1, StartTime: startDate.Unix(), CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), PunctureNurse: puncture_nurse, Creator: adminUserInfo.AdminUser.Id, Modifier: adminUserInfo.AdminUser.Id, SchedualType: schedual_type, } createErr := service.MobileCreateDialysisOrder(adminUserInfo.Org.Id, patientID, dialysisRecord) newdialysisRecord, getRecordErr := service.MobileGetDialysisRecord(adminUserInfo.Org.Id, patientID, recordDate.Unix()) var tempdispose string // 只针对中能建 if blood_drawing > 0 && adminUserInfo.Org.Id == 9538 { tempdispose = "引血" + strconv.FormatInt(blood_drawing, 10) + "ml/min" } var ultrafiltration_rate float64 _, prescription := service.FindDialysisPrescriptionByReordDate(patientID, schedulestartTime, adminUserInfo.Org.Id) if prescription.ID > 0 { if prescription.TargetUltrafiltration > 0 && prescription.DialysisDurationHour > 0 { totalMin := prescription.DialysisDurationHour*60 + prescription.DialysisDurationMinute if template.TemplateId == 6 { //adminUserInfo.Org.Id == 9538 ultrafiltration_rate = math.Floor(prescription.TargetUltrafiltration / float64(totalMin) * 60 * 1000) } // 只针对方济医院 if template.TemplateId == 1 { value, _ := strconv.ParseFloat(fmt.Sprintf("%.3f", prescription.TargetUltrafiltration/float64(totalMin)*60), 6) ultrafiltration_rate = value } } } record := models.MonitoringRecord{ UserOrgId: adminUserInfo.Org.Id, PatientId: patientID, DialysisOrderId: dialysisRecord.ID, MonitoringDate: schedulestartTime, OperateTime: startDate.Unix(), // MonitoringTime: recordTime, MonitoringNurse: nurseID, Dispose: tempdispose, UltrafiltrationRate: ultrafiltration_rate, UltrafiltrationVolume: 0, Status: 1, CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), } // 如果当天有插入数据,则不再往透析纪录里插入数据 if newdialysisRecord.ID > 0 { err := service.CreateMonitor(&record) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeMonitorCreate) return } } //是否启动自动扣减功能 _, config := service.FindAutomaticReduceRecordByOrgId(adminUserInfo.Org.Id) //启动的话 if config.IsOpen == 1 { niprocart, _ := beego.AppConfig.Int64("niprocart") jms, _ := beego.AppConfig.Int64("jms") fistula_needle_set, _ := beego.AppConfig.Int64("fistula_needle_set") fistula_needle_set_16, _ := beego.AppConfig.Int64("fistula_needle_set_16") hemoperfusion, _ := beego.AppConfig.Int64("hemoperfusion") dialyser_sterilised, _ := beego.AppConfig.Int64("dialyser_sterilised") filtryzer, _ := beego.AppConfig.Int64("filtryzer") dialyzers, _ := beego.AppConfig.Int64("dialyzers") injector, _ := beego.AppConfig.Int64("injector") bloodlines, _ := beego.AppConfig.Int64("bloodlines") tubingHemodialysis, _ := beego.AppConfig.Int64("tubingHemodialysis") safe_package, _ := beego.AppConfig.Int64("package") aliquid, _ := beego.AppConfig.Int64("aliquid") //库存自动扣减功能 _, prescription := service.FindDialysisPrescriptionByReordDate(patientID, recordDate.Unix(), adminUserInfo.Org.Id) if prescription.ID > 0 { out, err := service.FindStockOutByIsSys(adminUserInfo.Org.Id, 1, recordDate.Unix()) if err == gorm.ErrRecordNotFound { //没有记录,则创建出库单 timeStr := time.Now().Format("2006-01-02") timeArr := strings.Split(timeStr, "-") total, _ := service.FindAllWarehouseOut(adminUserInfo.Org.Id) total = total + 1 warehousing_out_order := strconv.FormatInt(adminUserInfo.Org.Id, 10) + timeArr[0] + timeArr[1] + timeArr[2] + "000" number, _ := strconv.ParseInt(warehousing_out_order, 10, 64) number = number + total warehousing_out_order = "CKD" + strconv.FormatInt(number, 10) creater := adminUserInfo.AdminUser.Id warehouseOut := models.WarehouseOut{ WarehouseOutOrderNumber: warehousing_out_order, OperationTime: time.Now().Unix(), OrgId: adminUserInfo.Org.Id, Creater: creater, Ctime: time.Now().Unix(), Status: 1, WarehouseOutTime: recordDate.Unix(), Dealer: 0, Manufacturer: 0, Type: 1, IsSys: 1, } err := service.AddSigleWarehouseOut(&warehouseOut) if err != nil { utils.TraceLog("创建出库单失败 err = %v", err) } else { if prescription.Niprocart > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } //查出入库记录中最后一条记录 stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Niprocart, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Niprocart warehouseOutInfo.GoodTypeId = niprocart err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Niprocart, GoodTypeId: niprocart, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Jms > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Jms, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Jms warehouseOutInfo.GoodTypeId = jms err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Jms, GoodTypeId: jms, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.FistulaNeedleSet > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.FistulaNeedleSet, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.FistulaNeedleSet warehouseOutInfo.GoodTypeId = fistula_needle_set err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet, GoodTypeId: fistula_needle_set, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.FistulaNeedleSet16 > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.FistulaNeedleSet16, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.FistulaNeedleSet16 warehouseOutInfo.GoodTypeId = fistula_needle_set_16 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet16, GoodTypeId: fistula_needle_set_16, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Hemoperfusion > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Hemoperfusion, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Hemoperfusion warehouseOutInfo.GoodTypeId = hemoperfusion err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Hemoperfusion, GoodTypeId: hemoperfusion, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.DialyserSterilised > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.DialyserSterilised, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.DialyserSterilised warehouseOutInfo.GoodTypeId = dialyser_sterilised err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.DialyserSterilised, GoodTypeId: dialyser_sterilised, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Filtryzer > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Filtryzer, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Filtryzer warehouseOutInfo.GoodTypeId = filtryzer err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Filtryzer, GoodTypeId: filtryzer, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Dialyzers > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Dialyzers, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Dialyzers warehouseOutInfo.GoodTypeId = dialyzers err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Dialyzers, GoodTypeId: dialyzers, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Injector > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Injector, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Injector warehouseOutInfo.GoodTypeId = injector err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Injector, GoodTypeId: injector, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Bloodlines > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Bloodlines, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Bloodlines warehouseOutInfo.GoodTypeId = bloodlines err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Bloodlines, GoodTypeId: bloodlines, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.TubingHemodialysis > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.TubingHemodialysis, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.TubingHemodialysis warehouseOutInfo.GoodTypeId = tubingHemodialysis err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.TubingHemodialysis, GoodTypeId: tubingHemodialysis, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Package > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Package, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Package warehouseOutInfo.GoodTypeId = safe_package err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Package, GoodTypeId: safe_package, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.ALiquid > 0 { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber, WarehouseOutId: warehouseOut.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.ALiquid, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.ALiquid warehouseOutInfo.GoodTypeId = aliquid err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.ALiquid, GoodTypeId: aliquid, } service.AddSigleAutoReduceRecordInfo(details) } } } } else if err == nil { if out.ID > 0 { if prescription.Niprocart > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, niprocart, prescription.Niprocart, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Niprocart, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Niprocart warehouseOutInfo.GoodTypeId = niprocart warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Niprocart, GoodTypeId: niprocart, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Niprocart, GoodTypeId: niprocart, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Jms > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, jms, prescription.Jms, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Jms, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Jms warehouseOutInfo.GoodTypeId = jms warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Jms, GoodTypeId: jms, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Jms, GoodTypeId: jms, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.FistulaNeedleSet > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, fistula_needle_set, prescription.FistulaNeedleSet, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.FistulaNeedleSet, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.FistulaNeedleSet warehouseOutInfo.GoodTypeId = fistula_needle_set warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet, GoodTypeId: fistula_needle_set, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet, GoodTypeId: fistula_needle_set, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.FistulaNeedleSet16 > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, fistula_needle_set_16, prescription.FistulaNeedleSet16, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.FistulaNeedleSet16, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.FistulaNeedleSet16 warehouseOutInfo.GoodTypeId = fistula_needle_set_16 warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet16, GoodTypeId: fistula_needle_set_16, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.FistulaNeedleSet16, GoodTypeId: fistula_needle_set_16, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Hemoperfusion > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, hemoperfusion, prescription.Hemoperfusion, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Hemoperfusion, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Hemoperfusion warehouseOutInfo.GoodTypeId = hemoperfusion warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Hemoperfusion, GoodTypeId: hemoperfusion, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Hemoperfusion, GoodTypeId: hemoperfusion, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.DialyserSterilised > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, dialyser_sterilised, prescription.DialyserSterilised, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.DialyserSterilised, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.DialyserSterilised warehouseOutInfo.GoodTypeId = dialyser_sterilised warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.DialyserSterilised, GoodTypeId: dialyser_sterilised, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.DialyserSterilised, GoodTypeId: dialyser_sterilised, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Filtryzer > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, filtryzer, prescription.Filtryzer, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Filtryzer, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Filtryzer warehouseOutInfo.GoodTypeId = filtryzer warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Filtryzer, GoodTypeId: filtryzer, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Filtryzer, GoodTypeId: filtryzer, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Dialyzers > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, dialyzers, prescription.Dialyzers, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Dialyzers, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Dialyzers warehouseOutInfo.GoodTypeId = dialyzers warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Dialyzers, GoodTypeId: dialyzers, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Dialyzer, GoodTypeId: dialyzers, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Injector > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, injector, prescription.Injector, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Injector, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Injector warehouseOutInfo.GoodTypeId = injector warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Injector, GoodTypeId: injector, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Injector, GoodTypeId: injector, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Bloodlines > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, bloodlines, prescription.Bloodlines, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Bloodlines, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Bloodlines warehouseOutInfo.GoodTypeId = bloodlines warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Bloodlines, GoodTypeId: bloodlines, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Bloodlines, GoodTypeId: bloodlines, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.TubingHemodialysis > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, tubingHemodialysis, prescription.TubingHemodialysis, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.TubingHemodialysis, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.TubingHemodialysis warehouseOutInfo.GoodTypeId = tubingHemodialysis warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.TubingHemodialysis, GoodTypeId: tubingHemodialysis, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.TubingHemodialysis, GoodTypeId: tubingHemodialysis, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.Package > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, safe_package, prescription.Package, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.Package, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.Package warehouseOutInfo.GoodTypeId = safe_package warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Package, GoodTypeId: safe_package, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.Package, GoodTypeId: safe_package, } service.AddSigleAutoReduceRecordInfo(details) } } if prescription.ALiquid > 0 { outInfo, err := service.FindStockOutInfoByTypeId(adminUserInfo.Org.Id, aliquid, prescription.ALiquid, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: startDate.Unix(), } stockInInfo, _ := service.FindLastStockInInfoRecord(prescription.ALiquid, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = prescription.ALiquid warehouseOutInfo.GoodTypeId = aliquid warehouseOutInfo.Count = 1 err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.ALiquid, GoodTypeId: aliquid, } service.AddSigleAutoReduceRecordInfo(details) } } else if err == nil { //记录存在,则将耗材使用数量加1 if outInfo.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, outInfo.ID) } //插入病人耗材使用记录 details := &models.AutomaticReduceDetail{ WarehouseOutId: outInfo.ID, WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber, PatientId: patientID, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: startDate.Unix(), OrgId: adminUserInfo.Org.Id, GoodId: prescription.ALiquid, GoodTypeId: aliquid, } service.AddSigleAutoReduceRecordInfo(details) } } } } } else { this.ErrorLog("上机失败,还没开处方") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePrescriptionException) return } } if createErr != nil { this.ErrorLog("上机失败:%v", createErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } this.ServeSuccessJSON(map[string]interface{}{ "dialysis_order": newdialysisRecord, "monitor": record, }) } func (c *DialysisAPIController) PostSolution() { id, _ := c.GetInt64("patient", 0) recordDateStr := c.GetString("record_date") if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() patient, _ := service.FindPatientById(adminUserInfo.Org.Id, id) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } recordDate, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } mode_id, _ := c.GetInt64("mode_id", 0) dialysis_duration, _ := c.GetFloat("dialysis_duration", 0) dialyzer, _ := c.GetInt64("dialyzer", 0) perfusion_apparatus, _ := c.GetInt64("perfusion_apparatus", 0) blood_flow_volume, _ := c.GetFloat("blood_flow_volume", 0) dewater_amount, _ := c.GetFloat("dewater_amount", 0) displace_liqui, _ := c.GetFloat("displace_liqui", 0) replacement_way, _ := c.GetInt64("replacement_way", 0) anticoagulant, _ := c.GetInt64("anticoagulant", 0) anticoagulant_shouji, _ := c.GetFloat("anticoagulant_shouji", 0) anticoagulant_weichi, _ := c.GetFloat("anticoagulant_weichi", 0) anticoagulant_zongliang, _ := c.GetFloat("anticoagulant_zongliang", 0) anticoagulant_gaimingcheng := c.GetString("anticoagulant_gaimingcheng") anticoagulant_gaijiliang := c.GetString("anticoagulant_gaijiliang") kalium, _ := c.GetFloat("kalium", 0) sodium, _ := c.GetFloat("sodium", 0) calcium, _ := c.GetFloat("calcium", 0) bicarbonate, _ := c.GetFloat("bicarbonate", 0) prescription_doctor, _ := c.GetInt64("prescription_doctor", 0) dialyzerPerfusionApparatus := c.GetString("dialyzer_perfusion_apparatus") glucose, _ := c.GetFloat("glucose", 0) // dry_weight, _ := c.GetFloat("dry_weight", 0) dialysate_flow, _ := c.GetFloat("dialysate_flow", 0) dialysate_temperature, _ := c.GetFloat("dialysate_temperature", 0) conductivity, _ := c.GetFloat("conductivity", 0) remark := c.GetString("remark") dialysisDurationHour, _ := c.GetInt64("dialysis_duration_hour", 0) dialysisDurationMinute, _ := c.GetInt64("dialysis_duration_minute", 0) targetUltrafiltration, _ := c.GetFloat("target_ultrafiltration", 0) dialysateFormulation, _ := c.GetInt64("dialysate_formulation", 0) body_fluid, _ := c.GetInt64("body_fluid", 0) special_medicine, _ := c.GetInt64("special_medicine", 0) special_medicine_other := c.GetString("special_medicine_other") displace_liqui_part, _ := c.GetInt64("displace_liqui_part", 0) displace_liqui_value, _ := c.GetFloat("displace_liqui_value", 0) blood_access, _ := c.GetInt64("blood_access", 0) ultrafiltration, _ := c.GetFloat("ultrafiltration", 0) body_fluid_other := c.GetString("body_fluid_other") replacement_total, _ := c.GetFloat("replacement_total", 0) niprocart, _ := c.GetInt64("niprocart", 0) jms, _ := c.GetInt64("jms", 0) fistula_needle_set, _ := c.GetInt64("fistula_needle_set", 0) fistula_needle_set_16, _ := c.GetInt64("fistula_needle_set_16", 0) hemoperfusion, _ := c.GetInt64("hemoperfusion", 0) dialyser_sterilised, _ := c.GetInt64("dialyser_sterilised", 0) filtryzer, _ := c.GetInt64("filtryzer", 0) target_ktv, _ := c.GetFloat("target_ktv", 0) dialyzers, _ := c.GetInt64("dialyzers", 0) injector, _ := c.GetInt64("injector", 0) bloodlines, _ := c.GetInt64("bloodlines", 0) tubing_hemodialysis, _ := c.GetInt64("tubing_hemodialysis", 0) safe_package, _ := c.GetInt64("package", 0) a_liquid, _ := c.GetInt64("a_liquid", 0) if mode_id > 0 { service.ModifyScheduleMode(mode_id, patient.ID, recordDate.Unix(), adminUserInfo.Org.Id) } //appRole, _ := service.FindAdminRoleTypeById(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id, adminUserInfo.App.Id) // //if appRole.UserType == 2 || appRole.UserType == 1 { // prescription_doctor = appRole.AdminUserId //} else { // prescription_doctor = 0 //} //template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id) // //if template.TemplateId == 2 || template.TemplateId == 6 { // if appRole.UserType == 3 { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } // } //} prescription := models.DialysisPrescription{ UserOrgId: adminUserInfo.Org.Id, PatientId: id, RecordDate: recordDate.Unix(), ModeId: mode_id, DialysisDuration: dialysis_duration, Dialyzer: dialyzer, PerfusionApparatus: perfusion_apparatus, BloodFlowVolume: blood_flow_volume, DewaterAmount: dewater_amount, DisplaceLiqui: displace_liqui, ReplacementWay: replacement_way, Anticoagulant: anticoagulant, AnticoagulantShouji: anticoagulant_shouji, AnticoagulantWeichi: anticoagulant_weichi, AnticoagulantZongliang: anticoagulant_zongliang, AnticoagulantGaimingcheng: anticoagulant_gaimingcheng, AnticoagulantGaijiliang: anticoagulant_gaijiliang, Kalium: kalium, Sodium: sodium, Calcium: calcium, Bicarbonate: bicarbonate, Glucose: glucose, // DryWeight: dry_weight, DialysateFlow: dialysate_flow, DialysateTemperature: dialysate_temperature, Conductivity: conductivity, Remark: remark, PrescriptionDoctor: prescription_doctor, Status: 1, CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), DialysisDurationMinute: dialysisDurationMinute, DialysisDurationHour: dialysisDurationHour, TargetUltrafiltration: targetUltrafiltration, DialysateFormulation: dialysateFormulation, DialyzerPerfusionApparatus: dialyzerPerfusionApparatus, BodyFluid: body_fluid, SpecialMedicine: special_medicine, SpecialMedicineOther: special_medicine_other, DisplaceLiquiPart: displace_liqui_part, DisplaceLiquiValue: displace_liqui_value, BloodAccess: blood_access, Ultrafiltration: ultrafiltration, BodyFluidOther: body_fluid_other, ReplacementTotal: replacement_total, Niprocart: niprocart, Jms: jms, FistulaNeedleSet: fistula_needle_set, FistulaNeedleSet16: fistula_needle_set_16, Hemoperfusion: hemoperfusion, DialyserSterilised: dialyser_sterilised, Filtryzer: filtryzer, TargetKtv: target_ktv, Dialyzers: dialyzers, Injector: injector, Bloodlines: bloodlines, TubingHemodialysis: tubing_hemodialysis, Package: safe_package, ALiquid: a_liquid, } _, dialysisPrescription := service.FindDialysisPrescriptionByReordDate(id, recordDate.Unix(), adminUserInfo.Org.Id) if dialysisPrescription.ID == 0 { //新增 prescription.Creater = adminUserInfo.AdminUser.Id } else { //修改 prescription.Creater = adminUserInfo.AdminUser.Id //if/**/ //template, _ := service.GetOrgInfoTemplate(adminUserInfo.Org.Id) //if dialysisPrescription.Creater != adminUserInfo.AdminUser.Id && dialysisPrescription.Creater > 0 { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } //} _, record := service.FindAutomaticReduceRecordByOrgId(adminUserInfo.Org.Id) if record.IsOpen == 1 { niprocart_good_type_id, _ := beego.AppConfig.Int64("niprocart") jms_good_type_id, _ := beego.AppConfig.Int64("jms") fistula_needle_set_good_type_id, _ := beego.AppConfig.Int64("fistula_needle_set") fistula_needle_set_16_good_type_id, _ := beego.AppConfig.Int64("fistula_needle_set_16") hemoperfusion_good_type_id, _ := beego.AppConfig.Int64("hemoperfusion") dialyser_sterilised_good_type_id, _ := beego.AppConfig.Int64("dialyser_sterilised") filtryzer_good_type_id, _ := beego.AppConfig.Int64("filtryzer") dialyzers_good_type_id, _ := beego.AppConfig.Int64("dialyzers") injector_good_type_id, _ := beego.AppConfig.Int64("injector") bloodlines_good_type_id, _ := beego.AppConfig.Int64("bloodlines") tubingHemodialysis_good_type_id, _ := beego.AppConfig.Int64("tubingHemodialysis") safe_package_good_type_id, _ := beego.AppConfig.Int64("package") aliquid_good_type_id, _ := beego.AppConfig.Int64("aliquid") err, order := service.FindDialysisRecordById(adminUserInfo.Org.Id, id, recordDate.Unix()) if err == nil { if order.ID > 0 { if dialysisPrescription.Niprocart != niprocart { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //1.用上机透析日期查出当天的订单 _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) service.UpdateOrderCount(niprocart_good_type_id, dialysisPrescription.Niprocart, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(niprocart_good_type_id, niprocart, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(niprocart, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = niprocart warehouseOutInfo.GoodTypeId = niprocart_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(niprocart_good_type_id, dialysisPrescription.Niprocart, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: niprocart, GoodTypeId: niprocart_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(niprocart_good_type_id, dialysisPrescription.Niprocart, order.StartTime, adminUserInfo.Org.Id, id, niprocart, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(niprocart_good_type_id, dialysisPrescription.Niprocart, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: niprocart, GoodTypeId: niprocart_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(niprocart_good_type_id, dialysisPrescription.Niprocart, order.StartTime, adminUserInfo.Org.Id, id, niprocart, &newOut) } } } } } if dialysisPrescription.Jms != jms { //不一致,先将原有的商品出库单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(jms_good_type_id, dialysisPrescription.Jms, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(jms_good_type_id, jms, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(jms, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = jms warehouseOutInfo.GoodTypeId = jms_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(jms_good_type_id, dialysisPrescription.Jms, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: jms, GoodTypeId: jms_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(jms_good_type_id, dialysisPrescription.Jms, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: jms, GoodTypeId: jms_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, &newOut) } } } } } if dialysisPrescription.FistulaNeedleSet != fistula_needle_set { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(fistula_needle_set_good_type_id, fistula_needle_set, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(fistula_needle_set, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = fistula_needle_set warehouseOutInfo.GoodTypeId = fistula_needle_set_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set, GoodTypeId: fistula_needle_set_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set, GoodTypeId: fistula_needle_set_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, &newOut) } } } } } if dialysisPrescription.FistulaNeedleSet16 != fistula_needle_set_16 { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(fistula_needle_set_16_good_type_id, fistula_needle_set_16, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(fistula_needle_set_16, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = fistula_needle_set_16 warehouseOutInfo.GoodTypeId = fistula_needle_set_16_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set_16, GoodTypeId: fistula_needle_set_16_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(jms_good_type_id, dialysisPrescription.Jms, order.StartTime, adminUserInfo.Org.Id, id, jms, warehouseOutInfo) //service.UpdateOrderInfoDetails(fistula_needle_set_good_type_id, dialysisPrescription.FistulaNeedleSet, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set, warehouseOutInfo) service.UpdateOrderInfoDetails(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set_16, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: fistula_needle_set_good_type_id, GoodTypeId: fistula_needle_set_16_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(fistula_needle_set_16_good_type_id, dialysisPrescription.FistulaNeedleSet16, order.StartTime, adminUserInfo.Org.Id, id, fistula_needle_set_16, &newOut) } } } } } if dialysisPrescription.Hemoperfusion != hemoperfusion { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(hemoperfusion_good_type_id, hemoperfusion, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(hemoperfusion, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = hemoperfusion warehouseOutInfo.GoodTypeId = hemoperfusion_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: hemoperfusion, GoodTypeId: hemoperfusion_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: hemoperfusion, GoodTypeId: hemoperfusion_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, &newOut) } } } } } if dialysisPrescription.DialyserSterilised != dialyser_sterilised { _, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(dialyser_sterilised_good_type_id, dialyser_sterilised, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.WarehouseOutId, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(dialyser_sterilised, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = dialyser_sterilised warehouseOutInfo.GoodTypeId = dialyser_sterilised_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyser_sterilised, GoodTypeId: dialyser_sterilised_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { //service.UpdateOrderInfoDetails(hemoperfusion_good_type_id, dialysisPrescription.Hemoperfusion, order.StartTime, adminUserInfo.Org.Id, id, hemoperfusion, warehouseOutInfo) service.UpdateOrderInfoDetails(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id, id, dialyser_sterilised, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyser_sterilised, GoodTypeId: dialyser_sterilised_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyser_sterilised_good_type_id, dialysisPrescription.DialyserSterilised, order.StartTime, adminUserInfo.Org.Id, id, dialyser_sterilised, &newOut) } } } } } if dialysisPrescription.Filtryzer != filtryzer { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(filtryzer_good_type_id, dialysisPrescription.Filtryzer, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOrderInfoByGoodId(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(filtryzer_good_type_id, filtryzer, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(filtryzer, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = filtryzer warehouseOutInfo.GoodTypeId = filtryzer_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(filtryzer_good_type_id, dialysisPrescription.Filtryzer, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: filtryzer, GoodTypeId: filtryzer_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id, id, filtryzer, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(filtryzer_good_type_id, dialysisPrescription.Filtryzer, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: filtryzer, GoodTypeId: filtryzer_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(filtryzer_good_type_id, dialysisPrescription.Filtryzer, order.StartTime, adminUserInfo.Org.Id, id, filtryzer, &newOut) } } } } } if dialysisPrescription.Dialyzers != dialyzers { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(dialyzers_good_type_id, dialysisPrescription.Dialyzers, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(dialyzers_good_type_id, dialyzers, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(dialyzers, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = dialyzers warehouseOutInfo.GoodTypeId = dialyzers_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(dialyzers_good_type_id, dialysisPrescription.Dialyzers, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyzers, GoodTypeId: dialyzers_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyzers_good_type_id, dialysisPrescription.Dialyzers, order.StartTime, adminUserInfo.Org.Id, id, dialyzers, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(dialyzers_good_type_id, dialysisPrescription.Dialyzers, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: dialyzers, GoodTypeId: dialyzers_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(dialyzers_good_type_id, dialysisPrescription.Dialyzers, order.StartTime, adminUserInfo.Org.Id, id, dialyzers, &newOut) } } } } } if dialysisPrescription.Injector != injector { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(injector_good_type_id, dialysisPrescription.Injector, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(injector_good_type_id, injector, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(injector, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = injector warehouseOutInfo.GoodTypeId = injector_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(injector_good_type_id, dialysisPrescription.Injector, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: injector, GoodTypeId: injector_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(injector_good_type_id, dialysisPrescription.Injector, order.StartTime, adminUserInfo.Org.Id, id, injector, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(injector_good_type_id, dialysisPrescription.Injector, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: injector, GoodTypeId: injector_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(injector_good_type_id, dialysisPrescription.Injector, order.StartTime, adminUserInfo.Org.Id, id, injector, &newOut) } } } } } if dialysisPrescription.Bloodlines != bloodlines { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(bloodlines_good_type_id, dialysisPrescription.Bloodlines, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(bloodlines_good_type_id, bloodlines, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(bloodlines, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = bloodlines warehouseOutInfo.GoodTypeId = bloodlines_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(bloodlines_good_type_id, dialysisPrescription.Bloodlines, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: bloodlines, GoodTypeId: bloodlines_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(bloodlines_good_type_id, dialysisPrescription.Bloodlines, order.StartTime, adminUserInfo.Org.Id, id, bloodlines, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(bloodlines_good_type_id, dialysisPrescription.Bloodlines, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: bloodlines, GoodTypeId: bloodlines_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(bloodlines_good_type_id, dialysisPrescription.Bloodlines, order.StartTime, adminUserInfo.Org.Id, id, bloodlines, &newOut) } } } } } if dialysisPrescription.TubingHemodialysis != tubing_hemodialysis { //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) service.UpdateOrderCount(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(tubingHemodialysis_good_type_id, tubing_hemodialysis, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(tubing_hemodialysis, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = tubing_hemodialysis warehouseOutInfo.GoodTypeId = tubingHemodialysis_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: tubing_hemodialysis, GoodTypeId: tubingHemodialysis_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, order.StartTime, adminUserInfo.Org.Id, id, tubing_hemodialysis, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: tubing_hemodialysis, GoodTypeId: tubingHemodialysis_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(tubingHemodialysis_good_type_id, dialysisPrescription.TubingHemodialysis, order.StartTime, adminUserInfo.Org.Id, id, tubing_hemodialysis, &newOut) } } } } } if dialysisPrescription.Package != safe_package { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(safe_package_good_type_id, dialysisPrescription.Package, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(safe_package_good_type_id, safe_package, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(safe_package, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = safe_package warehouseOutInfo.GoodTypeId = safe_package_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(safe_package_good_type_id, dialysisPrescription.Package, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: safe_package, GoodTypeId: safe_package_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(safe_package_good_type_id, dialysisPrescription.Package, order.StartTime, adminUserInfo.Org.Id, id, safe_package, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(safe_package_good_type_id, dialysisPrescription.Package, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: safe_package, GoodTypeId: safe_package_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(safe_package_good_type_id, dialysisPrescription.Package, order.StartTime, adminUserInfo.Org.Id, id, safe_package, &newOut) } } } } } if dialysisPrescription.ALiquid != a_liquid { //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) _, out := service.FindStockOutOrderNumberByTime(order.DialysisDate, adminUserInfo.Org.Id) //不一致,先将原有的商品订单数量进行减一的操作,并将原有使用记录进行修改商品信息(根据上机的日期和商品类型id,商品id) service.UpdateOrderCount(aliquid_good_type_id, dialysisPrescription.ALiquid, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) //_, out := service.FindOldOrderInfoByGoodId(order.StartTime, adminUserInfo.Org.Id) //判断前端更改后的商品id的出库记录在数据库中是否存在 err, newOut := service.FindOrderInfoByGoodId(aliquid_good_type_id, a_liquid, out.WarehouseOutOrderNumber, adminUserInfo.Org.Id) if err == gorm.ErrRecordNotFound { //不存在,则新增出库记录,并更改使用人商品信息 warehouseOutInfo := &models.WarehouseOutInfo{ WarehouseOutOrderNumber: out.WarehouseOutOrderNumber, WarehouseOutId: out.ID, Count: 1, Status: 1, Ctime: time.Now().Unix(), Remark: "", OrgId: adminUserInfo.Org.Id, Type: 1, Manufacturer: 0, Dealer: 0, IsSys: 1, SysRecordTime: order.StartTime, } stockInInfo, _ := service.FindLastStockInInfoRecord(a_liquid, adminUserInfo.Org.Id) warehouseOutInfo.Price = stockInInfo.Price warehouseOutInfo.GoodId = a_liquid warehouseOutInfo.GoodTypeId = aliquid_good_type_id err := service.AddSigleWarehouseOutInfo(warehouseOutInfo) if err == nil { //可能存在商品使用人不存在的情况,需要先判断商品使用人是否存在 user, err := service.FindGoodUserById(aliquid_good_type_id, dialysisPrescription.ALiquid, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: warehouseOutInfo.ID, WarehouseOutOrderNumber: warehouseOutInfo.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: a_liquid, GoodTypeId: aliquid_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(aliquid_good_type_id, dialysisPrescription.ALiquid, order.StartTime, adminUserInfo.Org.Id, id, a_liquid, warehouseOutInfo) } } } } else if err == nil { //存在,则出库数量加1,并更改使用人商品信息 if newOut.ID > 0 { service.UpdateStockOutInfoCount(adminUserInfo.Org.Id, newOut.ID) user, err := service.FindGoodUserById(aliquid_good_type_id, dialysisPrescription.ALiquid, id, adminUserInfo.Org.Id, out.WarehouseOutOrderNumber) if err == gorm.ErrRecordNotFound { details := &models.AutomaticReduceDetail{ WarehouseOutId: newOut.ID, WarehouseOutOrderNumber: newOut.WarehouseOutOrderNumber, PatientId: id, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, RecordTime: order.StartTime, OrgId: adminUserInfo.Org.Id, GoodId: a_liquid, GoodTypeId: aliquid_good_type_id, } service.AddSigleAutoReduceRecordInfo(details) } else if err == nil { if user.ID > 0 { service.UpdateOrderInfoDetails(aliquid_good_type_id, dialysisPrescription.ALiquid, order.StartTime, adminUserInfo.Org.Id, id, a_liquid, &newOut) } } } } } } } } //prescription.Creater = dialysisPrescription.Creater prescription.CreatedTime = dialysisPrescription.CreatedTime prescription.Modifier = adminUserInfo.AdminUser.Id prescription.ID = dialysisPrescription.ID } solution := models.DialysisSolution{ RegistrarsId: adminUserInfo.AdminUser.Id, UserOrgId: adminUserInfo.Org.Id, Doctor: prescription_doctor, PatientId: id, ModeId: mode_id, DialysisDuration: dialysis_duration, PerfusionApparatus: perfusion_apparatus, BloodFlowVolume: blood_flow_volume, Dewater: dewater_amount, DisplaceLiqui: displace_liqui, ReplacementWay: replacement_way, Anticoagulant: anticoagulant, AnticoagulantShouji: anticoagulant_shouji, AnticoagulantWeichi: anticoagulant_weichi, AnticoagulantZongliang: anticoagulant_zongliang, AnticoagulantGaimingcheng: anticoagulant_gaimingcheng, AnticoagulantGaijiliang: anticoagulant_gaijiliang, Kalium: kalium, Sodium: sodium, Calcium: calcium, Bicarbonate: bicarbonate, Glucose: glucose, // DryWeight: dry_weight, DialysateFlow: dialysate_flow, DialysateTemperature: dialysate_temperature, Conductivity: conductivity, Remark: remark, Status: 1, CreatedTime: time.Now().Unix(), UpdatedTime: time.Now().Unix(), DialysisDurationMinute: dialysisDurationMinute, DialysisDurationHour: dialysisDurationHour, TargetUltrafiltration: targetUltrafiltration, DialysateFormulation: dialysateFormulation, DialyzerPerfusionApparatus: dialyzerPerfusionApparatus, BodyFluid: body_fluid, SpecialMedicine: special_medicine, SpecialMedicineOther: special_medicine_other, DisplaceLiquiPart: displace_liqui_part, DisplaceLiquiValue: displace_liqui_value, BloodAccess: blood_access, Ultrafiltration: ultrafiltration, BodyFluidOther: body_fluid_other, ReplacementTotal: replacement_total, TargetKtv: target_ktv, } service.SavePrescriptionAndCreateSolution(&solution, &prescription) c.ServeSuccessJSON(map[string]interface{}{ "solution": &solution, "prescription": &prescription, }) } func (c *DialysisAPIController) GetAcceptsAssessment() { patient, _ := c.GetInt64("patient", 0) adminUserInfo := c.GetMobileAdminUserInfo() _, receiveTreatmentAsses := service.GetLastAcceptsAssessment(patient, adminUserInfo.Org.Id) c.ServeSuccessJSON(map[string]interface{}{ "receiveTreatmentAsses": receiveTreatmentAsses, }) } func (this *DialysisAPIController) PostSignInfo() { patientID, _ := this.GetInt64("patient_id") recordDateStr := this.GetString("date") if patientID <= 0 { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if len(recordDateStr) == 0 { recordDateStr = time.Now().Format("2006-01-02") } date, parseDateErr := utils.ParseTimeStringToTime("2006-01-02", recordDateStr) if parseDateErr != nil { this.ErrorLog("日期(%v)解析错误:%v", recordDateStr, parseDateErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminInfo := this.GetMobileAdminUserInfo() err := service.UpDateDialysisPrescriptionDoctorSign(patientID, date.Unix(), adminInfo.Org.Id, adminInfo.AdminUser.Id) if err != nil { this.ErrorLog("签名失败:%v", err) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } this.ServeSuccessJSON(map[string]interface{}{ "doctor_id": adminInfo.AdminUser.Id, }) } func (this *DialysisAPIController) GetLastMonitorRecord() { patientID, _ := this.GetInt64("patient_id") adminInfo := this.GetMobileAdminUserInfo() record, _ := service.FindLastMonitorRecord(patientID, adminInfo.Org.Id) this.ServeSuccessJSON(map[string]interface{}{ "monitor": record, }) } func (this *DialysisAPIController) GetLastMonitorRecordTody() { thisTime := time.Now() scheduleDateStart := thisTime.Format("2006-01-02") + " 00:00:00" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theAssessmentDateTime := theStartTime.Unix() patientID, _ := this.GetInt64("patient_id") monitorDate, _ := this.GetInt64("monitoring_date", theAssessmentDateTime) adminInfo := this.GetMobileAdminUserInfo() record, _ := service.FindLastMonitorRecordToday(patientID, adminInfo.Org.Id, monitorDate) fristrecord, _ := service.FindFirstMonitorRecordToday(patientID, adminInfo.Org.Id, monitorDate) template, _ := service.GetOrgInfoTemplate(adminInfo.Org.Id) var ultrafiltration_rate float64 _, prescription := service.FindDialysisPrescriptionByReordDate(patientID, theAssessmentDateTime, adminInfo.Org.Id) if prescription.ID > 0 { if prescription.TargetUltrafiltration > 0 && prescription.DialysisDurationHour > 0 { totalMin := prescription.DialysisDurationHour*60 + prescription.DialysisDurationMinute if template.TemplateId == 6 { ultrafiltration_rate = math.Floor(prescription.TargetUltrafiltration / float64(totalMin) * 60 * 1000) } // 只针对方济医院 if template.TemplateId == 1 { value, _ := strconv.ParseFloat(fmt.Sprintf("%.3f", prescription.TargetUltrafiltration/float64(totalMin)*60), 6) ultrafiltration_rate = value } } } record.UltrafiltrationRate = ultrafiltration_rate record.UltrafiltrationVolume = 0 if template.TemplateId == 1 { //adminInfo.Org.Id == 3907 || adminInfo.Org.Id == 4 || adminInfo.Org.Id == 12 || adminInfo.Org.Id == 13 || adminInfo.Org.Id == 9535adminInfo.Org.Id == 3907 || adminInfo.Org.Id == 4 || adminInfo.Org.Id == 12 || adminInfo.Org.Id == 13 || adminInfo.Org.Id == 9535 if ultrafiltration_rate > 0 { value, _ := strconv.ParseFloat(fmt.Sprintf("%.3f", float64(record.OperateTime+3600-fristrecord.OperateTime)/3600*ultrafiltration_rate), 6) record.UltrafiltrationVolume = value } } if template.TemplateId == 6 { //adminInfo.Org.Id == 9538 if ultrafiltration_rate > 0 && adminInfo.Org.Id != 9538 { ultrafiltration_volume := math.Floor(float64(record.OperateTime+3600-fristrecord.OperateTime) / 3600 * ultrafiltration_rate) record.UltrafiltrationVolume = ultrafiltration_volume } } this.ServeSuccessJSON(map[string]interface{}{ "monitor": record, }) } func (this *DialysisAPIController) ModifyStartDialysisOrder() { record_id, _ := this.GetInt64("id") nurseID, _ := this.GetInt64("nurse") puncture_nurse, _ := this.GetInt64("puncture_nurse") bedID, _ := this.GetInt64("bed") start_time := this.GetString("start_time") schedual_type, _ := this.GetInt64("schedual_type") if record_id == 0 { this.ErrorLog("id:%v", record_id) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startDate, parseStartDateErr := utils.ParseTimeStringToTime("2006-01-02 15:04:05", start_time) if parseStartDateErr != nil { this.ErrorLog("时间解析失败:%v", parseStartDateErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := this.GetMobileAdminUserInfo() nurse, getNurseErr := service.GetAdminUserByUserID(nurseID) if getNurseErr != nil { this.ErrorLog("获取护士失败:%v", getNurseErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { this.ErrorLog("护士不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } nurse, getNurseErr = service.GetAdminUserByUserID(puncture_nurse) if getNurseErr != nil { this.ErrorLog("获取护士失败:%v", getNurseErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { this.ErrorLog("护士不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } deviceNumber, getDeviceNumberErr := service.GetDeviceNumberByID(adminUserInfo.Org.Id, bedID) if getDeviceNumberErr != nil { this.ErrorLog("获取床位号失败:%v", getDeviceNumberErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if deviceNumber == nil { this.ErrorLog("床位号不存在") this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } _, tempDialysisRecord := service.FindDialysisOrderById(record_id) // //if tempDialysisRecord.Creator != adminUserInfo.AdminUser.Id { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } //} scheduleDateStart := startDate.Format("2006-01-02") + " 00:00:00" scheduleDateEnd := startDate.Format("2006-01-02") + " 23:59:59" timeLayout := "2006-01-02 15:04:05" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, scheduleDateStart, loc) theEndTime, _ := time.ParseInLocation(timeLayout, scheduleDateEnd, loc) schedulestartTime := theStartTime.Unix() scheduleendTime := theEndTime.Unix() //查询更改的机号,是否有人用了,如果只是排班了,但是没上机,直接替换,如果排班且上机了,就提示他无法上机 schedule, err := service.GetDayScheduleByBedid(adminUserInfo.Org.Id, schedulestartTime, bedID, schedual_type) daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, tempDialysisRecord.PatientId) if daySchedule.BedId != bedID || daySchedule.ScheduleType != schedual_type { if err == gorm.ErrRecordNotFound { //空床位 // 修改了床位逻辑 daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, tempDialysisRecord.PatientId) if daySchedule.ID > 0 { daySchedule.BedId = bedID daySchedule.PartitionId = deviceNumber.ZoneID daySchedule.ScheduleType = schedual_type daySchedule.UpdatedTime = time.Now().Unix() err := service.UpdateSchedule(&daySchedule) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else if err == nil { if schedule.ID > 0 && schedule.DialysisOrder.ID == 0 { //有排班没上机记录 daySchedule, _ := service.GetDaySchedule(adminUserInfo.Org.Id, schedulestartTime, scheduleendTime, tempDialysisRecord.PatientId) if daySchedule.ID > 0 { daySchedule.BedId = bedID daySchedule.PartitionId = deviceNumber.ZoneID daySchedule.ScheduleType = schedual_type daySchedule.UpdatedTime = time.Now().Unix() err := service.UpdateSchedule(&daySchedule) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else if schedule.ID > 0 && schedule.DialysisOrder.ID > 0 { //有排班且有上机记录 this.ServeFailJSONWithSGJErrorCode(enums.ErrorDialysisOrderRepeatBed) return } } else if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } dialysisRecord := &models.DialysisOrder{ ID: record_id, UserOrgId: adminUserInfo.Org.Id, BedID: bedID, StartNurse: nurseID, StartTime: startDate.Unix(), PunctureNurse: puncture_nurse, Creator: adminUserInfo.AdminUser.Id, Modifier: adminUserInfo.AdminUser.Id, SchedualType: schedual_type, } updateErr := service.ModifyStartDialysisOrder(dialysisRecord) if updateErr != nil { this.ErrorLog("修改上机失败:%v", updateErr) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if updateErr == nil { if tempDialysisRecord.Stage == 2 { temp_time := (float64(tempDialysisRecord.EndTime) - float64(startDate.Unix())) / 3600 value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", temp_time), 64) fmt.Println(value) a, b := math.Modf(value) tempMinute, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", b), 64) hour, _ := strconv.ParseInt(fmt.Sprintf("%.0f", a), 10, 64) minute, _ := strconv.ParseInt(fmt.Sprintf("%.0f", tempMinute*60), 10, 64) updateAssessmentErr := service.UpdateAssessmentAfterDate(tempDialysisRecord.PatientId, tempDialysisRecord.UserOrgId, tempDialysisRecord.DialysisDate, hour, minute) if updateAssessmentErr != nil { utils.ErrorLog("%v", updateAssessmentErr) } } } _, dialysisRecords := service.FindDialysisOrderById(record_id) this.ServeSuccessJSON(map[string]interface{}{ "dialysis_order": dialysisRecords, }) } func (c *DialysisAPIController) ModifyFinishDialysisOrder() { record_id, _ := c.GetInt64("id") nurseID, _ := c.GetInt64("nurse") end_time := c.GetString("end_time") if record_id <= 0 || nurseID <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() nurse, getNurseErr := service.GetAdminUserByUserID(nurseID) if getNurseErr != nil { c.ErrorLog("获取护士失败:%v", getNurseErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } else if nurse == nil { c.ErrorLog("护士不存在") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } endDate, parseEndDateErr := utils.ParseTimeStringToTime("2006-01-02 15:04:05", end_time) if parseEndDateErr != nil { c.ErrorLog("日期(%v)解析错误:%v", end_time, parseEndDateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } _, tempDialysisRecords := service.FindDialysisOrderById(record_id) //if tempDialysisRecords.FinishCreator != adminUserInfo.AdminUser.Id { // headNursePermission, getPermissionErr := service.GetAdminUserSpecialPermission(adminUserInfo.Org.Id, adminUserInfo.App.Id, adminUserInfo.AdminUser.Id, models.SpecialPermissionTypeHeadNurse) // if getPermissionErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } else if headNursePermission == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDialysisPermissionDeniedModify) // return // } //} dialysisRecord := &models.DialysisOrder{ ID: record_id, UserOrgId: adminUserInfo.Org.Id, EndTime: endDate.Unix(), FinishNurse: nurseID, FinishModifier: adminUserInfo.AdminUser.Id, } updateErr := service.ModifyFinishDialysisOrder(dialysisRecord) if updateErr != nil { c.ErrorLog("修改下机失败:%v", updateErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if updateErr == nil { temp_time := (float64(endDate.Unix()) - float64(tempDialysisRecords.StartTime)) / 3600 value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", temp_time), 64) a, b := math.Modf(value) tempMinute, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", b), 64) hour, _ := strconv.ParseInt(fmt.Sprintf("%.0f", a), 10, 64) minute, _ := strconv.ParseInt(fmt.Sprintf("%.0f", tempMinute*60), 10, 64) updateAssessmentErr := service.UpdateAssessmentAfterDate(tempDialysisRecords.PatientId, tempDialysisRecords.UserOrgId, tempDialysisRecords.DialysisDate, hour, minute) if updateAssessmentErr != nil { utils.ErrorLog("%v", updateAssessmentErr) } } _, dialysisRecords := service.FindDialysisOrderById(record_id) c.ServeSuccessJSON(map[string]interface{}{ "dialysis_order": dialysisRecords, }) } func (c *DialysisAPIController) GetLongAdvice() { patient_id, _ := c.GetInt64("id") adminUserInfo := c.GetMobileAdminUserInfo() _, config := service.FindDoctorAdviceRecordByOrgId(adminUserInfo.Org.Id) //patient, _ := service.FindPatientIsOpenRemindById(patient_id, adminUserInfo.Org.Id) if config.IsOpenRemind == 0 { //针对老用户,即没开启推送功能,也没有 不开启推送功能,不做任何处理 c.ServeSuccessJSON(map[string]interface{}{ "status": "1", }) return } else { //开启推送提醒 //开启推送提醒逻辑 提交长期处方的时候,弹起长期医嘱推送 var advice_three []*models.DoctorAdvice //groupNo := service.GetMaxLongAdviceGroupID(adminUserInfo.Org.Id, patient_id) advices, err := service.GetLastLongAdviceByGroupNo(adminUserInfo.Org.Id, patient_id) advices_two, err := service.GetLastLongAdviceByGroupNoThree(adminUserInfo.Org.Id, patient_id) for _, advice := range advices { if advice.FrequencyType == 3 { t := time.Now() week := int(t.Weekday()) switch week { case 1: if strings.Index(advice.WeekDay, "周一") == -1 { advice_three = append(advice_three, advice) } break case 2: if strings.Index(advice.WeekDay, "周二") == -1 { advice_three = append(advice_three, advice) } break case 3: if strings.Index(advice.WeekDay, "周三") == -1 { advice_three = append(advice_three, advice) } break case 4: if strings.Index(advice.WeekDay, "周四") == -1 { advice_three = append(advice_three, advice) } break case 5: if strings.Index(advice.WeekDay, "周五") == -1 { advice_three = append(advice_three, advice) } break case 6: if strings.Index(advice.WeekDay, "周六") == -1 { advice_three = append(advice_three, advice) } break case 0: if strings.Index(advice.WeekDay, "周日") == -1 { advice_three = append(advice_three, advice) } break } } } for _, advice := range advices_two { p, _ := time.Parse("2006-01-02", time.Now().Format("2006-01-02")) now := p.Unix() dayStr := strconv.FormatInt(advice.DayCount, 10) dayStr2 := "-" + dayStr count, _ := strconv.ParseInt(dayStr2, 10, 64) oldTime := time.Now().AddDate(0, 0, int(count)).Unix() advices, _ := service.FindAllDoctorAdviceByTime(now, oldTime, patient_id, adminUserInfo.Org.Id, advice.TemplateId) for _, ad := range advices { advice_three = append(advice_three, ad) } } if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "status": "2", "advices": advices, "advices_two": RemoveRepeatedElement(advice_three), "is_open_remind": config.IsOpenRemind, }) } } } func RemoveRepeatedElement(arr []*models.DoctorAdvice) (newArr []*models.DoctorAdvice) { newArr = make([]*models.DoctorAdvice, 0) for i := 0; i < len(arr); i++ { repeat := false for j := i + 1; j < len(arr); j++ { if arr[i].ID == arr[j].ID { repeat = true break } } if !repeat { newArr = append(newArr, arr[i]) } } return } func (c *DialysisAPIController) CreateRemindDoctorAdvice() { patient, _ := c.GetInt64("id", 0) groupNo, _ := c.GetInt64("groupno", 0) if patient <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adminUserInfo := c.GetMobileAdminUserInfo() dataBody := make(map[string]interface{}, 0) err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody) if err != nil { utils.ErrorLog(err.Error()) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } utils.ErrorLog("%v", dataBody) timeLayout := "2006-01-02 15:04" loc, _ := time.LoadLocation("Local") timeLayout2 := "2006-01-02" loc2, _ := time.LoadLocation("Local") if dataBody["advice_type"] == nil || reflect.TypeOf(dataBody["advice_type"]).String() != "float64" { utils.ErrorLog("advice_type") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adviceType := int64(2) if dataBody["advice_date"] == nil || reflect.TypeOf(dataBody["advice_date"]).String() != "string" { utils.ErrorLog("advice_date") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adviceDate, _ := dataBody["advice_date"].(string) theTime, err := time.ParseInLocation(timeLayout2, adviceDate, loc2) AdviceDate := theTime.Unix() RecordDate := theTime.Unix() if dataBody["start_time"] == nil || reflect.TypeOf(dataBody["start_time"]).String() != "string" { utils.ErrorLog("start_time") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startTime, _ := dataBody["start_time"].(string) if len(startTime) == 0 { utils.ErrorLog("len(start_time) == 0") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } theTime, err = time.ParseInLocation(timeLayout, startTime, loc) if err != nil { utils.ErrorLog(err.Error()) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } StartTime := theTime.Unix() Remark := "" if dataBody["remark"] != nil && reflect.TypeOf(dataBody["remark"]).String() == "string" { remark, _ := dataBody["remark"].(string) Remark = remark } var advices []*models.GroupAdvice if dataBody["advices"] == nil || reflect.TypeOf(dataBody["advices"]).String() != "[]interface {}" { utils.ErrorLog("advices") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adviceNames := dataBody["advices"].([]interface{}) for _, adviceNameMap := range adviceNames { adviceNameM := adviceNameMap.(map[string]interface{}) var advice models.GroupAdvice advice.Remark = Remark advice.AdviceType = adviceType advice.StartTime = StartTime advice.AdviceDate = AdviceDate advice.RecordDate = RecordDate advice.Status = 1 advice.CreatedTime = time.Now().Unix() advice.UpdatedTime = time.Now().Unix() advice.StopState = 2 advice.ExecutionState = 2 advice.UserOrgId = adminUserInfo.Org.Id advice.PatientId = patient advice.AdviceDoctor = adminUserInfo.AdminUser.Id if adviceNameM["advice_name"] == nil || reflect.TypeOf(adviceNameM["advice_name"]).String() != "string" { utils.ErrorLog("advice_name") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } adviceName, _ := adviceNameM["advice_name"].(string) if len(adviceName) == 0 { utils.ErrorLog("len(advice_name) == 0") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } advice.AdviceName = adviceName if adviceNameM["drug_spec"] != nil && reflect.TypeOf(adviceNameM["drug_spec"]).String() == "string" { drugSpec, _ := strconv.ParseFloat(adviceNameM["drug_spec"].(string), 64) advice.DrugSpec = drugSpec } if adviceNameM["advice_desc"] != nil && reflect.TypeOf(adviceNameM["advice_desc"]).String() == "string" { adviceDesc, _ := adviceNameM["advice_desc"].(string) advice.AdviceDesc = adviceDesc } if adviceNameM["drug_spec_unit"] != nil && reflect.TypeOf(adviceNameM["drug_spec_unit"]).String() == "string" { drugSpecUnit, _ := adviceNameM["drug_spec_unit"].(string) advice.DrugSpecUnit = drugSpecUnit } //if adviceNameM["single_dose"] != nil && reflect.TypeOf(adviceNameM["single_dose"]).String() == "string" { // singleDose, _ := strconv.ParseFloat(adviceNameM["single_dose"].(string), 64) // advice.SingleDose = singleDose //} if adviceNameM["single_dose"] != nil || reflect.TypeOf(adviceNameM["single_dose"]).String() == "float64" { //single_dose := int64(adviceNameM["single_dose"].(float64)) advice.SingleDose = adviceNameM["single_dose"].(float64) } if adviceNameM["single_dose_unit"] != nil && reflect.TypeOf(adviceNameM["single_dose_unit"]).String() == "string" { singleDoseUnit, _ := adviceNameM["single_dose_unit"].(string) advice.SingleDoseUnit = singleDoseUnit } //if adviceNameM["prescribing_number"] != nil && reflect.TypeOf(adviceNameM["prescribing_number"]).String() == "string" { // prescribingNumber, _ := strconv.ParseFloat(adviceNameM["prescribing_number"].(string), 64) // advice.PrescribingNumber = prescribingNumber //} if adviceNameM["prescribing_number"] != nil || reflect.TypeOf(adviceNameM["prescribing_number"]).String() == "float64" { //single_dose := int64(adviceNameM["single_dose"].(float64)) advice.PrescribingNumber = adviceNameM["prescribing_number"].(float64) } if adviceNameM["prescribing_number_unit"] != nil && reflect.TypeOf(adviceNameM["prescribing_number_unit"]).String() == "string" { prescribingNumberUnit, _ := adviceNameM["prescribing_number_unit"].(string) advice.PrescribingNumberUnit = prescribingNumberUnit } if adviceNameM["delivery_way"] != nil && reflect.TypeOf(adviceNameM["delivery_way"]).String() == "string" { deliveryWay, _ := adviceNameM["delivery_way"].(string) advice.DeliveryWay = deliveryWay } if adviceNameM["execution_frequency"] != nil && reflect.TypeOf(adviceNameM["execution_frequency"]).String() == "string" { executionFrequency, _ := adviceNameM["execution_frequency"].(string) advice.ExecutionFrequency = executionFrequency } if adviceNameM["frequency_type"] != nil || reflect.TypeOf(adviceNameM["frequency_type"]).String() == "float64" { frequency_type := int64(adviceNameM["frequency_type"].(float64)) advice.FrequencyType = frequency_type } if adviceNameM["day_count"] != nil || reflect.TypeOf(adviceNameM["day_count"]).String() == "float64" { day_count := int64(adviceNameM["day_count"].(float64)) advice.DayCount = day_count } if adviceNameM["week_day"] != nil && reflect.TypeOf(adviceNameM["week_day"]).String() == "string" { week_day, _ := adviceNameM["week_day"].(string) advice.WeekDay = week_day } if adviceNameM["template_id"] != nil && reflect.TypeOf(adviceNameM["template_id"]).String() == "string" { template_id, _ := adviceNameM["template_id"].(string) advice.TemplateId = template_id } if adviceNameM["child"] != nil && reflect.TypeOf(adviceNameM["child"]).String() == "string" { executionFrequency, _ := adviceNameM["execution_frequency"].(string) advice.ExecutionFrequency = executionFrequency } if adviceNameM["child"] != nil && reflect.TypeOf(adviceNameM["child"]).String() == "[]interface {}" { children := adviceNameM["child"].([]interface{}) if len(children) > 0 { for _, childrenMap := range children { childMap := childrenMap.(map[string]interface{}) var child models.GroupAdvice child.Remark = Remark child.AdviceType = adviceType child.StartTime = StartTime child.AdviceDate = AdviceDate child.RecordDate = RecordDate child.Status = 1 child.CreatedTime = time.Now().Unix() child.UpdatedTime = time.Now().Unix() child.StopState = 2 child.ExecutionState = 2 child.UserOrgId = adminUserInfo.Org.Id child.PatientId = patient child.AdviceDoctor = adminUserInfo.AdminUser.Id if childMap["advice_name"] == nil || reflect.TypeOf(childMap["advice_name"]).String() != "string" { utils.ErrorLog("child advice_name") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } childAdviceName, _ := childMap["advice_name"].(string) if len(childAdviceName) == 0 { utils.ErrorLog("len(child advice_name) == 0") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } child.AdviceName = childAdviceName if childMap["advice_desc"] != nil && reflect.TypeOf(childMap["advice_desc"]).String() == "string" { childAdviceDesc, _ := childMap["advice_desc"].(string) child.AdviceDesc = childAdviceDesc } if childMap["drug_spec"] != nil && reflect.TypeOf(childMap["drug_spec"]).String() == "string" { childDrugSpec, _ := strconv.ParseFloat(childMap["drug_spec"].(string), 64) child.DrugSpec = childDrugSpec } if childMap["drug_spec_unit"] != nil && reflect.TypeOf(childMap["drug_spec_unit"]).String() == "string" { childDrugSpecUnit, _ := childMap["drug_spec_unit"].(string) child.DrugSpecUnit = childDrugSpecUnit } if childMap["single_dose"] != nil && reflect.TypeOf(childMap["single_dose"]).String() == "float64" { child.SingleDose = childMap["single_dose"].(float64) } if childMap["single_dose_unit"] != nil && reflect.TypeOf(childMap["single_dose_unit"]).String() == "string" { childSingleDoseUnit, _ := childMap["single_dose_unit"].(string) child.SingleDoseUnit = childSingleDoseUnit } if childMap["prescribing_number"] != nil && reflect.TypeOf(childMap["prescribing_number"]).String() == "float64" { child.PrescribingNumber = childMap["prescribing_number"].(float64) } if childMap["prescribing_number_unit"] != nil && reflect.TypeOf(childMap["prescribing_number_unit"]).String() == "string" { childPrescribingNumberUnit, _ := childMap["prescribing_number_unit"].(string) child.PrescribingNumberUnit = childPrescribingNumberUnit } child.DeliveryWay = advice.DeliveryWay child.ExecutionFrequency = advice.ExecutionFrequency advice.Children = append(advice.Children, &child) } } } advices = append(advices, &advice) } list, err := service.CreateMGroupAdvice(adminUserInfo.Org.Id, advices, groupNo) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreateDoctorAdviceFail) return } c.ServeSuccessJSON(map[string]interface{}{ "msg": "ok", "advices": list, }) return } func (c *DialysisAPIController) UploadDryWeight() { patient_id, _ := c.GetInt64("id") dry_weight, _ := c.GetFloat("dry_weight") doctor_id, _ := c.GetInt64("doctor_id") remark := c.GetString("remark") adminUserInfo := c.GetMobileAdminUserInfo() weightAdjust, err := service.FindLastDryWeightAdjust(adminUserInfo.Org.Id, patient_id) if err == gorm.ErrRecordNotFound { dryWeight := &models.SgjPatientDryweight{ PatientId: patient_id, DryWeight: dry_weight, Remakes: remark, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Creator: doctor_id, Status: 1, UserOrgId: adminUserInfo.Org.Id, AdjustedValue: "/", UserId: adminUserInfo.AdminUser.Id, } createErr := service.CreatePatientWeightAdjust(dryWeight) if createErr == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "提交成功", "weight": dryWeight, }) } } else { dryWeight := &models.SgjPatientDryweight{ PatientId: patient_id, DryWeight: dry_weight, Remakes: remark, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Creator: doctor_id, Status: 1, UserOrgId: adminUserInfo.Org.Id, AdjustedValue: "/", UserId: adminUserInfo.AdminUser.Id, } var value float64 value = dry_weight - weightAdjust.DryWeight if value < 0 { dryWeight.AdjustedValue = strconv.FormatFloat(math.Abs(value), 'f', 1, 64) + "(下调)" } else if value == 0 { dryWeight.AdjustedValue = "/" } else if value > 0 { dryWeight.AdjustedValue = strconv.FormatFloat(value, 'f', 1, 64) + "(上调)" } createErr := service.CreatePatientWeightAdjust(dryWeight) if createErr == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "提交成功", "weight": dryWeight, }) } } } func (c *DialysisAPIController) GetSolution() { patient_id, _ := c.GetInt64("patient_id") mode_id, _ := c.GetInt64("mode_id") adminUserInfo := c.GetMobileAdminUserInfo() solution, err := service.MobileGetDialysisSolutionByModeId(adminUserInfo.Org.Id, patient_id, mode_id) prescription, err := service.MobileGetLastDialysisPrescribeByModeId(adminUserInfo.Org.Id, patient_id, mode_id) system_prescription, err := service.MobileGetSystemDialysisPrescribeByModeId(adminUserInfo.Org.Id, mode_id) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } c.ServeSuccessJSON(map[string]interface{}{ "solution": solution, "prescription": prescription, "system_prescription": system_prescription, }) } func (c *DialysisAPIController) GetSchedule() { schedual_type, _ := c.GetInt64("schedual_type") adminUserInfo := c.GetMobileAdminUserInfo() timeLayout := "2006-01-02 15:04:05" date := time.Now().Format("2006-01-02") + " 00:00:00" loc, _ := time.LoadLocation("Local") theStartTime, _ := time.ParseInLocation(timeLayout, date, loc) scheduleTime := theStartTime.Unix() deviceNumber, _ := service.GetAllDeviceNumbers(adminUserInfo.Org.Id, scheduleTime, schedual_type) c.ServeSuccessJSON(map[string]interface{}{ "number": deviceNumber, }) }