package controllers import ( "fmt" "math" "strconv" "time" "XT_New/enums" "XT_New/service" "XT_New/utils" "github.com/astaxie/beego" ) type NewStockApiController struct { BaseAuthAPIController } func NewStockApiRegistRouters() { beego.Router("/api/drug/stock", &NewStockApiController{}, "Get:GetDrugStock") beego.Router("/api/drug/change", &NewStockApiController{}, "Get:GetDrugChange") //beego.Router("/api/drug/query", &NewStockApiController{}, "Get:GetDrugQuery") beego.Router("/api/drug/gethisdrugcodequery", &NewStockApiController{}, "Get:GetHisDrugCodeQuery") beego.Router("/api/drug/createuploaddrugcode", &NewStockApiController{}, "Get:CrateUploadDrugCode") beego.Router("/api/drug/getpatientdrugcode", &NewStockApiController{}, "Get:GetPatientDrugCode") } func (c *NewStockApiController) GetDrugStock() { start_time := c.GetString("start_time") end_time := c.GetString("end_time") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") var startTime int64 if len(start_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) if err != nil { fmt.Println(err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startTime = theTime.Unix() } var endTime int64 if len(end_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) if err != nil { utils.ErrorLog(err.Error()) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } endTime = theTime.Unix() } admin := c.GetAdminUserInfo() is_pc, _ := c.GetInt64("is_pc", 0) is_bg, _ := c.GetInt64("is_bg", 0) //manufacturerList, _ := service.GetAllManufacturerList(admin.CurrentOrgId) //dealerList, _ := service.GetAllDealerList(admin.CurrentOrgId) fmt.Println(startTime) fmt.Println(endTime) warehousingInfo, err := service.FindAllDrugWarehousingInfo(admin.CurrentOrgId, is_pc, is_bg, startTime, endTime) //list, _ := service.GetAll/**/StoreHouseListThree(admin.CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "info": warehousingInfo, //"manufacturerList": manufacturerList, //"dealerList": dealerList, //"list": list, }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) } } func (c *NewStockApiController) GetDrugChange() { start_time := c.GetString("start_time") end_time := c.GetString("end_time") is_sale, _ := c.GetInt64("is_sale") is_bg, _ := c.GetInt64("is_bg") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") var startTime int64 if len(start_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) if err != nil { fmt.Println(err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startTime = theTime.Unix() } var endTime int64 if len(end_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) if err != nil { utils.ErrorLog(err.Error()) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } endTime = theTime.Unix() } orgId := c.GetAdminUserInfo().CurrentOrgId page, _ := c.GetInt64("page") limit, _ := c.GetInt64("limit") list, total, _ := service.GetNewDrugFlow(orgId, limit, page, startTime, endTime, is_sale, is_bg) manufacturerList, _ := service.GetAllManufacturerList(orgId) dealerList, _ := service.GetAllDealerList(orgId) houseList, _ := service.GetAllStoreHouseList(orgId) patientList, _ := service.GetAllPatientListSix(orgId) c.ServeSuccessJSON(map[string]interface{}{ "info": list, "total": total, "manufacturerList": manufacturerList, "dealerList": dealerList, "houseList": houseList, "patientList": patientList, }) } func (c *NewStockApiController) GetDrugQuery() { id, _ := c.GetInt64("id", 0) if id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } admin := c.GetAdminUserInfo() warehousing, err := service.FindDrugWarehousingById(id, admin.CurrentOrgId) manufacturerList, _ := service.GetAllManufacturerList(admin.CurrentOrgId) dealerList, _ := service.GetAllDealerList(admin.CurrentOrgId) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } if warehousing.ID <= 0 { return } warehousingInfo, err := service.FindDrugWarehousingInfoByIdThree(id, admin.CurrentOrgId) list, _ := service.GetAllStoreHouseListThree(admin.CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "info": warehousingInfo, "warehousing": warehousing, "manufacturerList": manufacturerList, "dealerList": dealerList, "list": list, }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) } } func (this *NewStockApiController) GetHisDrugCodeQuery() { start_time := this.GetString("start_time") end_time := this.GetString("end_time") limit, _ := this.GetInt64("limit") page, _ := this.GetInt64("page") is_sale, _ := this.GetInt64("is_sale") orgId := this.GetAdminUserInfo().CurrentOrgId timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") var startTime int64 if len(start_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) if err != nil { this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } startTime = theTime.Unix() } var endTime int64 if len(end_time) > 0 { theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) if err != nil { utils.ErrorLog(err.Error()) this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } endTime = theTime.Unix() } list, total, _ := service.GetHisDrugCodeQuery(orgId, startTime, endTime, limit, page, is_sale) drug, _ := service.GetAllDrugList(orgId) codeConfig, _ := service.GetDrugCodeConfig(orgId) patients, _ := service.GetAllpatient(orgId) this.ServeSuccessJSON(map[string]interface{}{ "list": list, "total": total, "drug": drug, "patients": patients, "codeConfig": codeConfig, }) return } func (this *NewStockApiController) CrateUploadDrugCode() { drug_id, _ := this.GetInt64("drug_id") patient_id, _ := this.GetInt64("patient_id") advice_date, _ := this.GetInt64("advice_date") orgId := this.GetAdminUserInfo().CurrentOrgId //查询该药品是否出库 outinfo, _ := service.GetDrugWarehouseOutInfoByDrugCode(drug_id, patient_id, advice_date, orgId) if len(outinfo) == 0 { this.ServeDynamicFailJsonSend("该药品未出库,请先出库") return } else { this.ServeDynamicFailJsonSend("成功!") return } } func (this *NewStockApiController) GetPatientDrugCode() { drug_id, _ := this.GetInt64("drug_id") patient_id, _ := this.GetInt64("patient_id") advice_date, _ := this.GetInt64("advice_date") orgId := this.GetAdminUserInfo().CurrentOrgId advicelist, _ := service.FindeHisAdviceDocAdviceOne(orgId, patient_id, drug_id, advice_date) if len(advicelist) > 0 { var total int64 var prescribing_number_total int64 for _, item := range advicelist { //查询改药品信息 medical, _ := service.GetBaseDrugMedical(item.DrugId) //如果是药房发药的方式 if medical.IsPharmacy == 1 { houseConfig, _ := service.GetAllStoreHouseConfig(orgId) //查询该药品是否有库存 list, _ := service.GetDrugTotalCountTwenty(item.DrugId, item.UserOrgId, houseConfig.DrugStorehouseOut) //判断单位是否相等 if medical.MaxUnit == item.PrescribingNumberUnit { prescribingNumber_temp := strconv.FormatFloat(math.Abs(item.PrescribingNumber), 'f', 0, 64) count, _ := strconv.ParseInt(prescribingNumber_temp, 10, 64) //转化为最小单位 total = list.Count*medical.MinNumber + list.StockMinNumber prescribing_number_total = count * medical.MinNumber } if medical.MinUnit == item.PrescribingNumberUnit { prescribingNumber_temp := strconv.FormatFloat(math.Abs(item.PrescribingNumber), 'f', 0, 64) count, _ := strconv.ParseInt(prescribingNumber_temp, 10, 64) total = list.Count*medical.MinNumber + list.StockMinNumber prescribing_number_total = count } if medical.IsUse != 1 { //如果出库数量大于库存数量 if prescribing_number_total > total { err := fmt.Errorf(service.FindDrugsName(item.DrugId) + "库存不足") if err != nil { utils.ErrorLog(err.Error()) this.ServeFailJsonSend(enums.ErrorCodeParamWrong, err.Error()) return } } } } } } creater := this.GetAdminUserInfo().AdminUser.Id service.DispensingMedicineTwo(orgId, patient_id, advice_date, drug_id, creater) this.ServeSuccessJSON(map[string]interface{}{ "msg": "发药成功!", }) return }