samplesubpackage.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. package samplesinfo
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "math"
  6. "strconv"
  7. "strings"
  8. "time"
  9. "dashoo.cn/backend/api/business/codecsequence"
  10. "dashoo.cn/backend/api/business/coderule"
  11. "dashoo.cn/backend/api/business/printscheme"
  12. "dashoo.cn/backend/api/business/samplesgroup"
  13. "dashoo.cn/backend/api/business/samplesubpackage"
  14. "dashoo.cn/backend/api/business/sampletype"
  15. . "dashoo.cn/backend/api/controllers"
  16. "dashoo.cn/utils"
  17. )
  18. type SampleSubpackageController struct {
  19. BaseController
  20. }
  21. // @Title get
  22. // @Description get SampleType by token
  23. // @Success 200 {object} samplesubpackage.SampleSubpackage
  24. // @router /list [get]
  25. func (this *SampleSubpackageController) List() {
  26. var list []samplesubpackage.SamplesDetailModel
  27. page := this.GetPageInfoForm()
  28. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  29. where := " a.IState =2 and a.DeletionStateCode=0 "
  30. sampleCode := this.GetString("SampleCode")
  31. if sampleCode != "" {
  32. where = where + " and a.SampleCode like '%" + sampleCode + "%' "
  33. }
  34. barCode := this.GetString("BarCode")
  35. if barCode != "" {
  36. where = where + " and a.BarCode like '%" + barCode + "%' "
  37. }
  38. sampletype := this.GetString("SampleType")
  39. if sampletype != "" {
  40. where = where + " and b.SampleType like '%" + sampletype + "%'"
  41. }
  42. total, list := svc.GetPagingEntitiesWithOrderSerch(this.User.AccCode, page.CurrentPage, page.Size, "a.Id desc", where)
  43. var datainfo DataInfo
  44. datainfo.Items = list
  45. datainfo.CurrentItemCount = total
  46. this.Data["json"] = &datainfo
  47. this.ServeJSON()
  48. }
  49. // @Title 获取采集单列表
  50. // @Description get SampleSubpackage by token
  51. // @Success 200 {object} samplesubpackage.SampleSubpackage
  52. // @router /getbooklist [get]
  53. func (this *SampleSubpackageController) GetBookList() {
  54. var list []samplesubpackage.SamplesBookDetailModel
  55. //获取分页信息
  56. page := this.GetPageInfoForm()
  57. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  58. SampleCode := this.GetString("SampleCode")
  59. BarCode := this.GetString("BarCode")
  60. sampletypename := this.GetString("SampleType")
  61. orderby := "SampleCode desc"
  62. Order := this.GetString("Order")
  63. Prop := this.GetString("Prop")
  64. if Order != "" && Prop != "" {
  65. orderby = Prop + " " + Order
  66. }
  67. where := "1 = 1"
  68. if SampleCode != "" {
  69. where = where + " and SampleCode like '%" + SampleCode + "%'"
  70. }
  71. if BarCode != "" {
  72. where = where + " and BarCode like '%" + BarCode + "%'"
  73. }
  74. if sampletypename != "" {
  75. where = where + " and SampleType like '%" + sampletypename + "%'"
  76. }
  77. total, list := svc.GetSampleCodeBooklist(page.CurrentPage, page.Size, orderby, this.User.AccCode+SamplesBookDetailName, SampleTypeName, where)
  78. var datainfo DataInfo
  79. datainfo.Items = list
  80. datainfo.CurrentItemCount = total
  81. this.Data["json"] = &datainfo
  82. this.ServeJSON()
  83. }
  84. // @Title 判断身份证是否存在
  85. // @Description get user by token
  86. // @Success 200 {object} models.Userblood
  87. // @router /getIdlist [get]
  88. func (this *SampleSubpackageController) GetIdlist() {
  89. SourceId := this.GetString("SourceId")
  90. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  91. where := " Id= '" + SourceId + "'"
  92. total := svc.GetIdlist(this.User.AccCode+DonorstbName, where)
  93. var datainfo DataInfo
  94. datainfo.Items = total
  95. this.Data["json"] = &datainfo
  96. this.ServeJSON()
  97. }
  98. // @Title get
  99. // @Description get SampleType by token
  100. // @Success 200 {object} samplesubpackage.SampleSubpackage
  101. // @router /subpackagelist/:samplecode [get]
  102. func (this *SampleSubpackageController) SubpackageList() {
  103. page := this.GetPageInfoForm()
  104. var Samplesubpackagelist []samplesubpackage.SamplesDetailModel
  105. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  106. where := " a.IState =2 and a.DeletionStateCode=0 "
  107. sampleCode := this.Ctx.Input.Param(":samplecode")
  108. samplecode := strings.Split(sampleCode, ",")
  109. if len(samplecode) > 1 {
  110. where = where + "and ( a.SampleCode = '" + samplecode[0] + "'"
  111. for i := 1; i < len(samplecode)-1; i++ {
  112. where = where + " or a.SampleCode = '" + samplecode[i] + "'"
  113. }
  114. where = where + " or a.SampleCode = '" + samplecode[len(samplecode)-1] + "')"
  115. } else {
  116. where = where + " and a.SampleCode like '%" + samplecode[0] + "%'"
  117. }
  118. total, Samplesubpackagelist := svc.GetPagingEntitiesSerch(this.User.AccCode, page.CurrentPage, page.Size, "a.Id desc", where)
  119. var datainfo DataInfo
  120. datainfo.Items = Samplesubpackagelist
  121. datainfo.CurrentItemCount = total
  122. this.Data["json"] = &datainfo
  123. this.ServeJSON()
  124. }
  125. // @Title 创建样本类型
  126. // @Description 创建样本类型
  127. // @Param body body business.device.DeviceChannels "传感器信息"
  128. // @Success 200 {object} controllers.Request
  129. // @router / [post]
  130. func (this *SampleSubpackageController) Add() {
  131. var errinfo ErrorDataInfo
  132. var jsonblob = this.Ctx.Input.RequestBody
  133. var datamain samplesubpackage.SamplesMain
  134. var datadetail samplesubpackage.SamplesDetail
  135. var dataother SampmanageModel
  136. var datamainnew samplesubpackage.SamplesMain
  137. var datadetailnew samplesubpackage.SamplesDetail
  138. json.Unmarshal(jsonblob, &datamain)
  139. json.Unmarshal(jsonblob, &datadetail)
  140. json.Unmarshal(jsonblob, &datamainnew)
  141. json.Unmarshal(jsonblob, &datadetailnew)
  142. json.Unmarshal(jsonblob, &dataother)
  143. groupid := this.GetString("groupid")
  144. groupname := this.GetString("groupname")
  145. subpackagenum := this.GetString("subpackagenum")
  146. Subpackagenum, _ := utils.StrTo(subpackagenum).Int()
  147. subnum, _ := utils.StrTo(utils.ToStr(subpackagenum)).Float32()
  148. capacity := this.GetString("capacity")
  149. datadetail.Capacity, _ = utils.StrTo(utils.ToStr(capacity)).Float32()
  150. subpackagecapacity := this.GetString("subpackagecapacity")
  151. Subpackagecapacity, _ := utils.StrTo(utils.ToStr(subpackagecapacity)).Float32()
  152. UsedCapacity := subnum * Subpackagecapacity
  153. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  154. datadetail.IState = 2
  155. datadetail.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  156. datadetail.CreateBy = this.User.Realname
  157. var err error
  158. if datadetail.Capacity > 0 {
  159. if datadetail.BarCode == "" {
  160. datadetail.BarCode = datamain.SampleCode + "-1"
  161. }
  162. datamain.AccCode = this.User.AccCode
  163. datamain.MCreateUserId = datadetail.CreateUserId
  164. datamain.MCreateBy = datadetail.CreateBy
  165. datadetail.InitCapacity = datadetail.Capacity + UsedCapacity
  166. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  167. _, err = svc.InsertSamplePre(this.User.AccCode+SamplesMaintbName, this.User.AccCode+SamplesDetailtbName, &datamain, &datadetail)
  168. } else {
  169. datamain.AccCode = this.User.AccCode
  170. datamain.MCreateUserId = datadetail.CreateUserId
  171. datamain.MCreateBy = datadetail.CreateBy
  172. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  173. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesMaintbName, &datamain)
  174. }
  175. if Subpackagenum > 1 && Subpackagecapacity > 0 {
  176. for subcapacity := Subpackagenum; subcapacity > 0; subcapacity-- {
  177. datadetailnew.IState = 2
  178. datadetailnew.Capacity = Subpackagecapacity
  179. datadetailnew.InitCapacity, _ = utils.StrTo(utils.ToStr(subpackagecapacity)).Float32()
  180. datadetailnew.BarCode = svc.AutoGetBarCode(this.User.AccCode, datamainnew.SampleCode)
  181. datadetailnew.ParentBarCode = datadetail.BarCode
  182. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesDetailtbName, &datadetailnew)
  183. if groupid != "" {
  184. var entity samplesgroup.GroupDetail
  185. entity.GroupId = groupid
  186. entity.GroupName = groupname
  187. entity.SampleId = datadetailnew.Id
  188. entity.SampleCode = datamain.SampleCode
  189. entity.BarCode = datadetailnew.BarCode
  190. entity.GroupType = "SampleGroup"
  191. entity.CreateBy = this.User.Realname
  192. entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  193. groupSvc := samplesgroup.GetSamplesGroupService(utils.DBE)
  194. groupSvc.InsertEntityBytbl(this.User.AccCode+GroupDetailName, &entity)
  195. }
  196. }
  197. }
  198. if dataother.Code_codeId > 0 {
  199. svc_coderule := coderule.GetCodeRuleService(utils.DBE)
  200. svc_coderule.UpdateLastNum(dataother.Code_lastnum, utils.ToStr(dataother.Code_codeId))
  201. }
  202. //打印相关
  203. var sisAutoPrintSample string
  204. sdefaultfangan := ""
  205. if dataother.Autoprintchecked {
  206. sisAutoPrintSample = "true"
  207. var PrintSchemeList []printscheme.PrintScheme
  208. svcprint := printscheme.GetPrintSchemeService(utils.DBE)
  209. where1 := " Funcode = '样本' and AccCode = '" + this.User.AccCode + "' and IsDefault=1 "
  210. PrintSchemeList = svcprint.GetPrintSchemeList(where1)
  211. if len(PrintSchemeList) > 0 {
  212. sdefaultfangan = PrintSchemeList[0].FileName
  213. }
  214. } else {
  215. sisAutoPrintSample = "false"
  216. }
  217. saveandadd := dataother.Saveandadd
  218. var Auto_Code_Struct AutoCodeStruct
  219. if err == nil {
  220. if saveandadd == "1" { //保存并新增新编码
  221. if dataother.Code_codeId > 0 { //使用默认规则
  222. n, _ := utils.StrTo(dataother.Code_lastnum).Int()
  223. count := len(dataother.Code_lastnum)
  224. Auto_Code_Struct.Num = strconv.FormatFloat(float64(n+1)*(1/math.Pow(10, float64(count))), 'f', count, 64)[2:]
  225. Auto_Code_Struct.SampleCode = this.AutoBarCodeAdd()
  226. } else { //不使用默认规则
  227. Auto_Code_Struct.Num = ""
  228. Auto_Code_Struct.SampleCode = ""
  229. }
  230. if datamain.AccCode == "" {
  231. Auto_Code_Struct.PrintAccCode = this.User.AccCode
  232. } else {
  233. Auto_Code_Struct.PrintAccCode = datamain.AccCode
  234. }
  235. Auto_Code_Struct.PrintCode = datadetail.Id
  236. Auto_Code_Struct.PrintSAuto = sisAutoPrintSample
  237. Auto_Code_Struct.Printfangan = sdefaultfangan
  238. errinfo.Code = 1
  239. errinfo.Message = "保存成功"
  240. errinfo.Item = Auto_Code_Struct
  241. } else if saveandadd == "2" { //保存并添加分管
  242. if dataother.Code_codeId > 0 { //使用默认规则
  243. Auto_Code_Struct.Num = dataother.Code_lastnum
  244. } else { //不使用默认规则
  245. Auto_Code_Struct.Num = ""
  246. }
  247. Auto_Code_Struct.SampleCode = datamain.SampleCode
  248. Auto_Code_Struct.PrintAccCode = this.User.AccCode
  249. Auto_Code_Struct.PrintCode = datadetail.Id
  250. Auto_Code_Struct.PrintSAuto = sisAutoPrintSample
  251. Auto_Code_Struct.Printfangan = sdefaultfangan
  252. errinfo.Code = 2
  253. errinfo.Message = "保存成功"
  254. errinfo.Item = Auto_Code_Struct
  255. } else {
  256. if sisAutoPrintSample == "true" {
  257. errinfo.Code = 0
  258. errinfo.Message = "保存成功"
  259. }
  260. }
  261. } else {
  262. if saveandadd == "1" {
  263. Auto_Code_Struct.SampleCode = "-1"
  264. errinfo.Code = -2
  265. errinfo.Message = "保存失败!"
  266. errinfo.Item = Auto_Code_Struct
  267. } else {
  268. errinfo.Code = -1
  269. errinfo.Message = "保存失败!" + err.Error()
  270. }
  271. }
  272. this.Data["json"] = &errinfo
  273. this.ServeJSON()
  274. }
  275. // @Title 创建样本类型--蜜蜂所
  276. // @Description 创建样本类型
  277. // @Param body body business.device.DeviceChannels "传感器信息"
  278. // @Success 200 {object} controllers.Request
  279. // @router /subpackage [post]
  280. func (this *SampleSubpackageController) Subpackage() {
  281. var errinfo ErrorDataInfo
  282. var jsonblob = this.Ctx.Input.RequestBody
  283. var datamain samplesubpackage.SamplesMain
  284. var datadetail samplesubpackage.SamplesDetail
  285. var dataother SampmanageModel
  286. var datamainnew samplesubpackage.SamplesMain
  287. var datadetailnew samplesubpackage.SamplesDetail
  288. json.Unmarshal(jsonblob, &datamain)
  289. json.Unmarshal(jsonblob, &datadetail)
  290. json.Unmarshal(jsonblob, &datamainnew)
  291. json.Unmarshal(jsonblob, &datadetailnew)
  292. json.Unmarshal(jsonblob, &dataother)
  293. timecode := this.GetString("timecode") //蜜蜂所编码
  294. groupid := this.GetString("groupid")
  295. groupname := this.GetString("groupname")
  296. subpackagenum := this.GetString("subpackagenum")
  297. Subpackagenum, _ := utils.StrTo(subpackagenum).Int()
  298. subnum, _ := utils.StrTo(utils.ToStr(subpackagenum)).Float32()
  299. capacity := this.GetString("capacity")
  300. datadetail.Capacity, _ = utils.StrTo(utils.ToStr(capacity)).Float32()
  301. subpackagecapacity := this.GetString("subpackagecapacity")
  302. Subpackagecapacity, _ := utils.StrTo(utils.ToStr(subpackagecapacity)).Float32()
  303. UsedCapacity := subnum * Subpackagecapacity
  304. svc := samplesubpackage.GetSampleSubpackageService(utils.DBE)
  305. datadetail.IState = 2
  306. datadetail.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  307. datadetail.CreateBy = this.User.Realname
  308. //判断是否需要循环添加
  309. arr := strings.Split(datamain.SampleCode, "-")
  310. if arr[1] == "全部" {
  311. var codeModel codecsequence.CodecSequence
  312. where_seq := " SeqName = '" + strconv.Itoa(datamain.SourceId) + "'"
  313. svc.GetEntityByWhere(CodecSequenceName, where_seq, &codeModel)
  314. for i := codeModel.MinValue; i < codeModel.MaxValue+1; i++ {
  315. datamain.SampleCode = arr[0] + "-" + fmt.Sprintf("%04s", strconv.Itoa(i)) + "-" + arr[2]
  316. datamainnew.SampleCode = arr[0] + "-" + fmt.Sprintf("%04s", strconv.Itoa(i)) + "-" + arr[2]
  317. var err error
  318. if datadetail.Capacity > 0 {
  319. if datadetail.BarCode == "" {
  320. datadetail.BarCode = datamain.SampleCode + "01"
  321. }
  322. datamain.AccCode = this.User.AccCode
  323. datamain.MCreateUserId = datadetail.CreateUserId
  324. datamain.MCreateBy = datadetail.CreateBy
  325. datadetail.InitCapacity = datadetail.Capacity + UsedCapacity
  326. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  327. _, err = svc.InsertSamplePre(this.User.AccCode+SamplesMaintbName, this.User.AccCode+SamplesDetailtbName, &datamain, &datadetail)
  328. } else {
  329. datamain.AccCode = this.User.AccCode
  330. datamain.MCreateUserId = datadetail.CreateUserId
  331. datamain.MCreateBy = datadetail.CreateBy
  332. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  333. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesMaintbName, &datamain)
  334. }
  335. if Subpackagenum > 0 && Subpackagecapacity > 0 {
  336. for subcapacity := Subpackagenum; subcapacity > 0; subcapacity-- {
  337. datadetailnew.IState = 2
  338. datadetailnew.Capacity = Subpackagecapacity
  339. datadetailnew.InitCapacity, _ = utils.StrTo(utils.ToStr(subpackagecapacity)).Float32()
  340. datadetailnew.BarCode = svc.AutoGetBarCodeAnimal(this.User.AccCode, datamainnew.SampleCode, timecode)
  341. datadetailnew.SampleCode = datamain.SampleCode
  342. datadetailnew.ParentBarCode = datadetail.BarCode
  343. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesDetailtbName, &datadetailnew)
  344. if groupid != "" {
  345. var entity samplesgroup.GroupDetail
  346. entity.GroupId = groupid
  347. entity.GroupName = groupname
  348. entity.SampleId = datadetailnew.Id
  349. entity.SampleCode = datamain.SampleCode
  350. entity.BarCode = datadetailnew.BarCode
  351. entity.GroupType = "SampleGroup"
  352. entity.CreateBy = this.User.Realname
  353. entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  354. groupSvc := samplesgroup.GetSamplesGroupService(utils.DBE)
  355. groupSvc.InsertEntityBytbl(this.User.AccCode+GroupDetailName, &entity)
  356. }
  357. }
  358. }
  359. if dataother.Code_codeId > 0 {
  360. svc_coderule := coderule.GetCodeRuleService(utils.DBE)
  361. svc_coderule.UpdateLastNum(dataother.Code_lastnum, utils.ToStr(dataother.Code_codeId))
  362. }
  363. saveandadd := dataother.Saveandadd
  364. var Auto_Code_Struct AutoCodeStruct
  365. if err == nil {
  366. if saveandadd == "1" { //保存并新增新编码
  367. n, _ := utils.StrTo(dataother.Code_lastnum).Int()
  368. count := len(dataother.Code_lastnum)
  369. Auto_Code_Struct.Num = strconv.FormatFloat(float64(n+1)*(1/math.Pow(10, float64(count))), 'f', count, 64)[2:]
  370. Auto_Code_Struct.SampleCode = this.AutoBarCodeAdd() + "-" + timecode
  371. errinfo.Code = 1
  372. errinfo.Message = "保存成功"
  373. errinfo.Item = Auto_Code_Struct
  374. } else if saveandadd == "2" { //保存并添加分管
  375. Auto_Code_Struct.Num = dataother.Code_lastnum + "-" + timecode
  376. Auto_Code_Struct.SampleCode = datamain.SampleCode
  377. errinfo.Code = 2
  378. errinfo.Message = "保存成功"
  379. errinfo.Item = Auto_Code_Struct
  380. }
  381. } else {
  382. if saveandadd == "1" {
  383. Auto_Code_Struct.SampleCode = "01"
  384. errinfo.Code = -2
  385. errinfo.Message = "保存失败!"
  386. errinfo.Item = Auto_Code_Struct
  387. } else {
  388. errinfo.Code = -1
  389. errinfo.Message = "保存失败!" + err.Error()
  390. }
  391. }
  392. this.Data["json"] = &errinfo
  393. this.ServeJSON()
  394. }
  395. } else {
  396. var err error
  397. if datadetail.Capacity > 0 {
  398. if datadetail.BarCode == "" {
  399. datadetail.BarCode = datamain.SampleCode + "01"
  400. }
  401. datamain.AccCode = this.User.AccCode
  402. datamain.MCreateUserId = datadetail.CreateUserId
  403. datamain.MCreateBy = datadetail.CreateBy
  404. datadetail.InitCapacity = datadetail.Capacity + UsedCapacity
  405. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  406. _, err = svc.InsertSamplePre(this.User.AccCode+SamplesMaintbName, this.User.AccCode+SamplesDetailtbName, &datamain, &datadetail)
  407. } else {
  408. datamain.AccCode = this.User.AccCode
  409. datamain.MCreateUserId = datadetail.CreateUserId
  410. datamain.MCreateBy = datadetail.CreateBy
  411. datamain.ReceiveDate = time.Unix(dataother.ReceiveDateint/1000, 0)
  412. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesMaintbName, &datamain)
  413. }
  414. if Subpackagenum > 1 && Subpackagecapacity > 0 {
  415. for subcapacity := Subpackagenum; subcapacity > 0; subcapacity-- {
  416. datadetailnew.IState = 2
  417. datadetailnew.Capacity = Subpackagecapacity
  418. datadetailnew.InitCapacity, _ = utils.StrTo(utils.ToStr(subpackagecapacity)).Float32()
  419. datadetailnew.BarCode = svc.AutoGetBarCodeAnimal(this.User.AccCode, datamainnew.SampleCode, timecode)
  420. datadetailnew.ParentBarCode = datadetail.BarCode
  421. _, err = svc.InsertEntityBytbl(this.User.AccCode+SamplesDetailtbName, &datadetailnew)
  422. if groupid != "" {
  423. var entity samplesgroup.GroupDetail
  424. entity.GroupId = groupid
  425. entity.GroupName = groupname
  426. entity.SampleId = datadetailnew.Id
  427. entity.SampleCode = datamain.SampleCode
  428. entity.BarCode = datadetailnew.BarCode
  429. entity.GroupType = "SampleGroup"
  430. entity.CreateBy = this.User.Realname
  431. entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  432. groupSvc := samplesgroup.GetSamplesGroupService(utils.DBE)
  433. groupSvc.InsertEntityBytbl(this.User.AccCode+GroupDetailName, &entity)
  434. }
  435. }
  436. }
  437. if dataother.Code_codeId > 0 {
  438. svc_coderule := coderule.GetCodeRuleService(utils.DBE)
  439. svc_coderule.UpdateLastNum(dataother.Code_lastnum, utils.ToStr(dataother.Code_codeId))
  440. }
  441. saveandadd := dataother.Saveandadd
  442. var Auto_Code_Struct AutoCodeStruct
  443. if err == nil {
  444. if saveandadd == "1" { //保存并新增新编码
  445. n, _ := utils.StrTo(dataother.Code_lastnum).Int()
  446. count := len(dataother.Code_lastnum)
  447. Auto_Code_Struct.Num = strconv.FormatFloat(float64(n+1)*(1/math.Pow(10, float64(count))), 'f', count, 64)[2:]
  448. Auto_Code_Struct.SampleCode = this.AutoBarCodeAdd() + "-" + timecode
  449. errinfo.Code = 1
  450. errinfo.Message = "保存成功"
  451. errinfo.Item = Auto_Code_Struct
  452. } else if saveandadd == "2" { //保存并添加分管
  453. Auto_Code_Struct.Num = dataother.Code_lastnum + "-" + timecode
  454. Auto_Code_Struct.SampleCode = datamain.SampleCode
  455. errinfo.Code = 2
  456. errinfo.Message = "保存成功"
  457. errinfo.Item = Auto_Code_Struct
  458. }
  459. } else {
  460. if saveandadd == "1" {
  461. Auto_Code_Struct.SampleCode = "-1"
  462. errinfo.Code = -2
  463. errinfo.Message = "保存失败!"
  464. errinfo.Item = Auto_Code_Struct
  465. } else {
  466. errinfo.Code = -1
  467. errinfo.Message = "保存失败!" + err.Error()
  468. }
  469. }
  470. this.Data["json"] = &errinfo
  471. this.ServeJSON()
  472. }
  473. }
  474. func (this *SampleSubpackageController) AutoBarCodeAdd() string {
  475. ss, _ := this.AutoBarCodeModel()
  476. return ss
  477. }
  478. func (this *SampleSubpackageController) AutoBarCodeModel() (string, string) {
  479. //自动生成编码
  480. var coderule_list []coderule.CodeRule
  481. var coderuledetail_list []coderule.CodeRuleDetail
  482. svc_coderule := coderule.GetCodeRuleService(utils.DBE)
  483. where2 := " AccCode='" + this.User.AccCode + "' and IsDefault=1"
  484. coderule_list = svc_coderule.GetCodeRuleList(where2)
  485. str_adds := ""
  486. value_sampletype := this.GetString("SampleType")
  487. value_samplesite := this.GetString("fid")
  488. //获取是否更改流水号。分装提取需要修改。20160520
  489. isupdate := this.GetString("isupdate")
  490. lastnum := ""
  491. if len(coderule_list) == 1 {
  492. //获取编码规则的流水号
  493. lastnum = coderule_list[0].LastNum
  494. where := " AccCode='" + this.User.AccCode + "' and MainId=" + utils.ToStr(coderule_list[0].Id)
  495. coderuledetail_list = svc_coderule.GetCodeRuleDetailOrderList(where, "SortCode")
  496. count := len(coderuledetail_list)
  497. for i := 0; i < count; i++ {
  498. count := coderuledetail_list[i].ItemNum
  499. if coderuledetail_list[i].ItemName == "样本类型" {
  500. sample_type := sampletype.GetSampleTypeService(utils.DBE)
  501. where2 := " AccCode='" + this.User.AccCode + "' and Id=" + value_sampletype
  502. entry := sample_type.GetSampleType(where2)
  503. if count <= len(entry.Code) {
  504. str_adds += entry.Code[:count]
  505. } else {
  506. str_add := ""
  507. for i := 0; i < (count - len(entry.Code)); i++ {
  508. str_add = entry.Code + "0"
  509. }
  510. str_adds += str_add
  511. }
  512. } else if coderuledetail_list[i].ItemName == "组织器官" {
  513. if count <= len(value_samplesite) {
  514. str_adds += value_samplesite[:count]
  515. } else {
  516. str_add := ""
  517. for i := 0; i < (count - len(value_samplesite)); i++ {
  518. str_add = value_samplesite + "0"
  519. }
  520. str_adds += str_add
  521. }
  522. } else if coderuledetail_list[i].ItemName == "其他" {
  523. str_adds += coderuledetail_list[i].ItemContent
  524. } else if coderuledetail_list[i].ItemName == "年份" {
  525. str := utils.ToStr(time.Now().Year())
  526. str_adds += str[len(str)-count : len(str)]
  527. } else if coderuledetail_list[i].ItemName == "月份" {
  528. str := utils.ToStr(time.Now())
  529. str_adds += str[5 : 5+count]
  530. } else if coderuledetail_list[i].ItemName == "日" {
  531. str := utils.ToStr(time.Now())
  532. str_adds += str[8 : 8+count]
  533. } else if coderuledetail_list[i].ItemName == "流水号" {
  534. if lastnum == "" {
  535. lastnum = strconv.FormatFloat(float64(1)*(1/math.Pow(10, float64(count))), 'f', count, 64)[2:] //生成相应位数的流水号
  536. } else {
  537. n, _ := utils.StrTo(lastnum).Int()
  538. lastnum = strconv.FormatFloat(float64(n+1)*(1/math.Pow(10, float64(count))), 'f', count, 64)[2:]
  539. }
  540. str_adds += lastnum
  541. }
  542. }
  543. //使用默认编码规则序列号自增跟新数据库
  544. if isupdate == "true" {
  545. svc_coderule.UpdateLastNum(lastnum, utils.ToStr(coderule_list[0].Id))
  546. }
  547. this.Data["code_lastnum"] = lastnum
  548. } else {
  549. }
  550. return str_adds, lastnum
  551. }