myServiceBase.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. // 业务逻辑服务基类,提供基本的添删改查功能
  2. //
  3. // 修改纪录
  4. // 2016.06.06 版本:1.0 yy 新建账户分表结构的处理
  5. package mydb
  6. import (
  7. "encoding/json"
  8. "fmt"
  9. "reflect"
  10. "strconv"
  11. "strings"
  12. "dashoo.cn/utils"
  13. . "dashoo.cn/utils/db"
  14. // "github.com/go-xorm/xorm"
  15. )
  16. type MyServiceBase struct {
  17. ServiceBase
  18. }
  19. type String_Id struct {
  20. Id string
  21. }
  22. type MyInt_Id struct {
  23. Id int
  24. }
  25. type Templatedata struct {
  26. Templdata string
  27. }
  28. //
  29. func (s *MyServiceBase) GetPagingEntitiesWithOrderBytbl(AccCode string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
  30. var err error
  31. var resultsSlice []map[string][]byte
  32. //获取表名
  33. tableName := AccCode + GetTableName(entitiesPtr)
  34. if len(where) == 0 {
  35. if asc {
  36. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  37. } else {
  38. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  39. }
  40. //获取总记录数
  41. sql := "SELECT COUNT(*) AS total FROM " + tableName
  42. resultsSlice, err = s.DBE.Query(sql)
  43. LogError(err)
  44. } else {
  45. if asc {
  46. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  47. } else {
  48. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  49. }
  50. sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
  51. resultsSlice, err = s.DBE.Query(sql)
  52. }
  53. LogError(err)
  54. if len(resultsSlice) > 0 {
  55. results := resultsSlice[0]
  56. for _, value := range results {
  57. total, err = strconv.ParseInt(string(value), 10, 64)
  58. LogError(err)
  59. break
  60. }
  61. }
  62. return total
  63. }
  64. func (s *MyServiceBase) GetPagingEntitiesWithoutAccCode(pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
  65. var err error
  66. var resultsSlice []map[string][]byte
  67. //获取表名
  68. tableName := GetTableName(entitiesPtr)
  69. if len(where) == 0 {
  70. if asc {
  71. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  72. } else {
  73. err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  74. }
  75. //获取总记录数
  76. sql := "SELECT COUNT(*) AS total FROM " + tableName
  77. resultsSlice, err = s.DBE.Query(sql)
  78. LogError(err)
  79. } else {
  80. if asc {
  81. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
  82. } else {
  83. err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
  84. }
  85. sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
  86. resultsSlice, err = s.DBE.Query(sql)
  87. }
  88. LogError(err)
  89. if len(resultsSlice) > 0 {
  90. results := resultsSlice[0]
  91. for _, value := range results {
  92. total, err = strconv.ParseInt(string(value), 10, 64)
  93. LogError(err)
  94. break
  95. }
  96. }
  97. return total
  98. }
  99. //样本库分表
  100. func (s *MyServiceBase) InsertEntityBytbl(tablename string, entity interface{}) (affected int64, err error) {
  101. affected, err = s.DBE.Table(tablename).Insert(entity)
  102. LogError(err)
  103. return
  104. }
  105. func (s *MyServiceBase) GetEntityByIdBytbl(tablename string, id interface{}, entityPtr interface{}) (has bool) {
  106. has, err := s.DBE.Table(tablename).Id(id).Get(entityPtr)
  107. LogError(err)
  108. return
  109. }
  110. func (s *MyServiceBase) GetEntityByWhere(tablename string, where string, entityPtr interface{}) (has bool) {
  111. has, err := s.DBE.Table(tablename).Where(where).Get(entityPtr)
  112. LogError(err)
  113. return
  114. }
  115. func (s *MyServiceBase) GetEntitysByWhere(tablename string, where string, entityPtr interface{}) {
  116. err := s.DBE.Table(tablename).Where(where).Find(entityPtr)
  117. LogError(err)
  118. return
  119. }
  120. func (s *MyServiceBase) GetEntitysByOrderbyWhere(tablename, where, orderby string, entityPtr interface{}) {
  121. err := s.DBE.Table(tablename).Where(where).OrderBy(orderby).Find(entityPtr)
  122. LogError(err)
  123. return
  124. }
  125. //更新实体写入日志,会自动备份数据
  126. func (s *MyServiceBase) UpdateEntityBytbl(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
  127. session := s.DBE.NewSession()
  128. defer session.Close()
  129. err = session.Begin()
  130. LogError(err)
  131. if err != nil {
  132. session.Rollback()
  133. return err
  134. }
  135. _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
  136. LogError(err)
  137. if err != nil {
  138. session.Rollback()
  139. return err
  140. }
  141. err = session.Commit()
  142. if err != nil {
  143. return err
  144. }
  145. return
  146. }
  147. //根据条件修改数据,不记录日志
  148. func (s *MyServiceBase) UpdateEntityBywheretbl(tablename string, entity interface{}, cols []string, where string) (err error) {
  149. _, err = s.DBE.Table(tablename).Where(where).Cols(cols...).Update(entity) //执行更新
  150. return err
  151. }
  152. //更新实体写入日志,会自动备份数据
  153. func (s *MyServiceBase) UpdateDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, sourcename string) (err error) {
  154. s.GetEntityByIdBytbl(tablename, id, entityEmpty)
  155. session := s.DBE.NewSession()
  156. defer session.Close()
  157. err = session.Begin()
  158. json, err := json.Marshal(entityEmpty)
  159. LogError(err)
  160. updatem := new(DonorsLog)
  161. //获取表名
  162. objT := reflect.TypeOf(entity)
  163. objT = objT.Elem()
  164. tableName := objT.Name()
  165. updatem.TableName = tableName
  166. updatem.AccCode = acccode
  167. updatem.OpDesc = opdesc
  168. updatem.OpType = 1
  169. updatem.SourceName = sourcename
  170. updatem.RecordId = fmt.Sprintf("%v", id)
  171. updatem.RecordData = string(json)
  172. updatem.CreateUserId = userid
  173. updatem.CreateBy = username
  174. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  175. LogError(err)
  176. if err != nil {
  177. session.Rollback()
  178. return err
  179. }
  180. _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
  181. LogError(err)
  182. if err != nil {
  183. session.Rollback()
  184. return err
  185. }
  186. err = session.Commit()
  187. if err != nil {
  188. return err
  189. }
  190. return
  191. }
  192. //删除实体并写入日志,会自动备份数据,entity为空的表结构
  193. func (s *MyServiceBase) DeleteDonorAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, sourcename string) (err error) {
  194. has := s.GetEntityByIdBytbl(tablename, id, entity)
  195. if has {
  196. session := s.DBE.NewSession()
  197. defer session.Close()
  198. err := session.Begin()
  199. json, err := json.Marshal(entity)
  200. LogError(err)
  201. deleted := new(DonorsLog)
  202. //获取表名
  203. objT := reflect.TypeOf(entity)
  204. objT = objT.Elem()
  205. tableName := objT.Name()
  206. deleted.TableName = tableName
  207. deleted.AccCode = acccode
  208. deleted.OpDesc = opdesc
  209. deleted.OpType = 2
  210. deleted.SourceName = sourcename
  211. deleted.RecordId = fmt.Sprintf("%v", id)
  212. deleted.RecordData = string(json)
  213. deleted.CreateUserId = userid
  214. deleted.CreateBy = username
  215. _, err = s.DBE.Table(tablelogname).Insert(deleted) //保存到更新历史表
  216. LogError(err)
  217. if err != nil {
  218. session.Rollback()
  219. return err
  220. }
  221. _, err = s.DBE.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
  222. LogError(err)
  223. if err != nil {
  224. session.Rollback()
  225. return err
  226. }
  227. err = session.Commit()
  228. if err != nil {
  229. return err
  230. }
  231. }
  232. return
  233. }
  234. //主信息不存在,首次添加样本
  235. func (s *MyServiceBase) InsertSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{}) (affected int64, err error) {
  236. session := s.DBE.NewSession()
  237. defer session.Close()
  238. err = session.Begin()
  239. affected, err = s.DBE.Table(tblmain).Insert(entitymain)
  240. LogError(err)
  241. if err != nil {
  242. session.Rollback()
  243. return 0, err
  244. }
  245. affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
  246. if err != nil {
  247. session.Rollback()
  248. return 0, err
  249. }
  250. affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
  251. if err != nil {
  252. session.Rollback()
  253. return 0, err
  254. }
  255. err = session.Commit()
  256. if err != nil {
  257. return 0, err
  258. }
  259. return
  260. }
  261. //主信息已存在,添加分管信息
  262. func (s *MyServiceBase) InsertOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
  263. cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
  264. s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
  265. session := s.DBE.NewSession()
  266. defer session.Close()
  267. err = session.Begin()
  268. json, err := json.Marshal(mainentityEmpty)
  269. LogError(err)
  270. updatem := new(SamplesLog)
  271. //获取表名
  272. objT := reflect.TypeOf(entitymain)
  273. objT = objT.Elem()
  274. tableName := objT.Name()
  275. updatem.TableName = tableName
  276. updatem.AccCode = acccode
  277. updatem.OpType = 3
  278. updatem.SampleCode = samplecode
  279. updatem.SampleType = sampletype
  280. updatem.MId = fmt.Sprintf("%v", id)
  281. updatem.RecordData = string(json)
  282. updatem.CreateUserId = userid
  283. updatem.CreateBy = username
  284. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  285. LogError(err)
  286. if err != nil {
  287. session.Rollback()
  288. return 0, err
  289. }
  290. _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
  291. LogError(err)
  292. if err != nil {
  293. session.Rollback()
  294. return 0, err
  295. }
  296. affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
  297. if err != nil {
  298. session.Rollback()
  299. return 0, err
  300. }
  301. affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
  302. if err != nil {
  303. session.Rollback()
  304. return 0, err
  305. }
  306. err = session.Commit()
  307. if err != nil {
  308. return 0, err
  309. }
  310. return
  311. }
  312. //主信息不存在,首次添加样本 预录入新增,不写入buss
  313. func (s *MyServiceBase) InsertSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{}) (affected int64, err error) {
  314. session := s.DBE.NewSession()
  315. defer session.Close()
  316. err = session.Begin()
  317. affected, err = s.DBE.Table(tblmain).Insert(entitymain)
  318. LogError(err)
  319. if err != nil {
  320. session.Rollback()
  321. return 0, err
  322. }
  323. affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
  324. if err != nil {
  325. session.Rollback()
  326. return 0, err
  327. }
  328. err = session.Commit()
  329. if err != nil {
  330. return 0, err
  331. }
  332. return
  333. }
  334. //主信息已存在,添加分管信息 预录入新增,不写入buss
  335. func (s *MyServiceBase) InsertOtherSamplePre(tblmain, tbldetail string, entitymain, entitydetail interface{},
  336. cols []string, id interface{}, mainentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string, sampletype int) (affected int64, err error) {
  337. s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
  338. session := s.DBE.NewSession()
  339. defer session.Close()
  340. err = session.Begin()
  341. json, err := json.Marshal(mainentityEmpty)
  342. LogError(err)
  343. updatem := new(SamplesLog)
  344. //获取表名
  345. objT := reflect.TypeOf(entitymain)
  346. objT = objT.Elem()
  347. tableName := objT.Name()
  348. updatem.TableName = tableName
  349. updatem.AccCode = acccode
  350. updatem.OpType = 3
  351. updatem.SampleCode = samplecode
  352. updatem.SampleType = sampletype
  353. updatem.MId = fmt.Sprintf("%v", id)
  354. updatem.RecordData = string(json)
  355. updatem.CreateUserId = userid
  356. updatem.CreateBy = username
  357. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  358. LogError(err)
  359. if err != nil {
  360. session.Rollback()
  361. return 0, err
  362. }
  363. _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
  364. LogError(err)
  365. if err != nil {
  366. session.Rollback()
  367. return 0, err
  368. }
  369. affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
  370. if err != nil {
  371. session.Rollback()
  372. return 0, err
  373. }
  374. err = session.Commit()
  375. if err != nil {
  376. return 0, err
  377. }
  378. return
  379. }
  380. //出入库信息。修改主表和从表,添加buss表
  381. func (s *MyServiceBase) UpdateOtherSampleAndBuss(tblmain, tbldetail, tblbuss string, entitymain, entitydetail, entitybuss interface{},
  382. cols, colsdetail []string, id interface{}, mainentityEmpty, detailentityEmpty interface{}, tablelogname, acccode, userid, username, samplecode string) (affected int64, err error) {
  383. s.GetEntityByIdBytbl(tblmain, id, mainentityEmpty)
  384. session := s.DBE.NewSession()
  385. defer session.Close()
  386. err = session.Begin()
  387. json, err := json.Marshal(mainentityEmpty)
  388. LogError(err)
  389. updatem := new(SamplesLog)
  390. //获取表名
  391. objT := reflect.TypeOf(entitymain)
  392. objT = objT.Elem()
  393. tableName := objT.Name()
  394. updatem.TableName = tableName
  395. updatem.AccCode = acccode
  396. updatem.OpType = 1
  397. updatem.SampleCode = samplecode
  398. updatem.BarCode = samplecode
  399. updatem.RecordId = fmt.Sprintf("%v", id)
  400. updatem.RecordData = string(json)
  401. updatem.CreateUserId = userid
  402. updatem.CreateBy = username
  403. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  404. LogError(err)
  405. if err != nil {
  406. session.Rollback()
  407. return 0, err
  408. }
  409. _, err = s.DBE.Table(tblmain).Id(id).Cols(cols...).Update(entitymain) //执行更新
  410. LogError(err)
  411. if err != nil {
  412. session.Rollback()
  413. return 0, err
  414. }
  415. s.GetEntityByIdBytbl(tbldetail, id, detailentityEmpty)
  416. affected, err = s.DBE.Table(tbldetail).Insert(entitydetail)
  417. if err != nil {
  418. session.Rollback()
  419. return 0, err
  420. }
  421. affected, err = s.DBE.Table(tblbuss).Insert(entitybuss)
  422. if err != nil {
  423. session.Rollback()
  424. return 0, err
  425. }
  426. err = session.Commit()
  427. if err != nil {
  428. return 0, err
  429. }
  430. return
  431. }
  432. //更改样本表
  433. func (s *MyServiceBase) UpdateSample(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
  434. // fmt.Println("=====")
  435. session := s.DBE.NewSession()
  436. defer session.Close()
  437. err = session.Begin()
  438. _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
  439. LogError(err)
  440. if err != nil {
  441. session.Rollback()
  442. return err
  443. }
  444. err = session.Commit()
  445. if err != nil {
  446. return err
  447. }
  448. return
  449. }
  450. //复苏分装提取信息。修改从表,添加buss表
  451. func (s *MyServiceBase) UpdateDetailAndBuss(tbldetail, tblbuss string, id interface{}, entitydetail, entitybuss interface{}, colsdetail []string) (err error) {
  452. session := s.DBE.NewSession()
  453. defer session.Close()
  454. err = session.Begin()
  455. _, err = s.DBE.Table(tbldetail).Id(id).Cols(colsdetail...).Update(entitydetail) //执行更新
  456. LogError(err)
  457. if err != nil {
  458. session.Rollback()
  459. return err
  460. }
  461. _, err = s.DBE.Table(tblbuss).Insert(entitybuss)
  462. if err != nil {
  463. session.Rollback()
  464. return err
  465. }
  466. err = session.Commit()
  467. if err != nil {
  468. return err
  469. }
  470. return
  471. }
  472. //更改样本表并写入日志
  473. func (s *MyServiceBase) WriteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
  474. session := s.DBE.NewSession()
  475. defer session.Close()
  476. err = session.Begin()
  477. json, err := json.Marshal(entity)
  478. LogError(err)
  479. updatem := new(SamplesLog)
  480. //获取表名
  481. updatem.TableName = "SamplesInfoShow"
  482. updatem.AccCode = acccode
  483. updatem.OpType = 1
  484. updatem.SampleCode = samplecode
  485. updatem.BarCode = barcode
  486. updatem.RecordId = fmt.Sprintf("%v", id)
  487. updatem.MId = fmt.Sprintf("%v", mid)
  488. updatem.RecordData = string(json)
  489. updatem.CreateUserId = userid
  490. updatem.CreateBy = username
  491. updatem.SampleType = sampletype
  492. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  493. LogError(err)
  494. if err != nil {
  495. session.Rollback()
  496. return err
  497. }
  498. err = session.Commit()
  499. if err != nil {
  500. return err
  501. }
  502. return
  503. }
  504. //写入样本删除日志
  505. func (s *MyServiceBase) WriteDeleteSampleLog(tablelogname string, id interface{}, mid interface{}, entity interface{}, userid, username, acccode, samplecode, barcode string, sampletype int) (err error) {
  506. session := s.DBE.NewSession()
  507. defer session.Close()
  508. err = session.Begin()
  509. json, err := json.Marshal(entity)
  510. LogError(err)
  511. updatem := new(SamplesLog)
  512. //获取表名
  513. updatem.TableName = "SamplesInfoShow"
  514. updatem.AccCode = acccode
  515. updatem.OpType = 2
  516. updatem.SampleCode = samplecode
  517. updatem.BarCode = barcode
  518. updatem.RecordId = fmt.Sprintf("%v", id)
  519. updatem.MId = fmt.Sprintf("%v", mid)
  520. updatem.RecordData = string(json)
  521. updatem.CreateUserId = userid
  522. updatem.CreateBy = username
  523. updatem.SampleType = sampletype
  524. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  525. LogError(err)
  526. if err != nil {
  527. session.Rollback()
  528. return err
  529. }
  530. err = session.Commit()
  531. if err != nil {
  532. return err
  533. }
  534. return
  535. }
  536. func StrSplit(s, sep string) []string {
  537. return strings.Split(s, sep)
  538. }
  539. func GetKuoZhan(entity interface{}, filedname string) string {
  540. sfiledtype, _ := reflect.TypeOf(entity).FieldByName(filedname)
  541. objV := reflect.ValueOf(entity).FieldByName(filedname)
  542. switch sfiledtype.Type.Kind() {
  543. case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  544. return utils.ToStr(objV.Int())
  545. case reflect.Float32, reflect.Float64:
  546. return utils.ToStr(utils.FloatPoint(objV.Float(), 2))
  547. case reflect.String:
  548. return objV.String()
  549. case reflect.Struct:
  550. switch sfiledtype.Type.String() {
  551. case "time.Time":
  552. rfvalue := fmt.Sprintf("%v", objV)
  553. return rfvalue[0:19]
  554. }
  555. }
  556. return ""
  557. }
  558. func Boxlinename(x int) string {
  559. switch x {
  560. case 1:
  561. return "A"
  562. case 2:
  563. return "B"
  564. case 3:
  565. return "C"
  566. case 4:
  567. return "D"
  568. case 5:
  569. return "E"
  570. case 6:
  571. return "F"
  572. case 7:
  573. return "G"
  574. case 8:
  575. return "H"
  576. case 9:
  577. return "I"
  578. case 10:
  579. return "J"
  580. case 11:
  581. return "K"
  582. case 12:
  583. return "L"
  584. case 13:
  585. return "M"
  586. case 14:
  587. return "N"
  588. case 15:
  589. return "O"
  590. case 16:
  591. return "P"
  592. case 17:
  593. return "Q"
  594. case 18:
  595. return "R"
  596. case 19:
  597. return "S"
  598. case 20:
  599. return "T"
  600. default:
  601. return "A"
  602. }
  603. }
  604. func Boxlineumber(x string) int {
  605. switch x {
  606. case "A":
  607. return 1
  608. case "B":
  609. return 2
  610. case "C":
  611. return 3
  612. case "D":
  613. return 4
  614. case "E":
  615. return 5
  616. case "F":
  617. return 6
  618. case "G":
  619. return 7
  620. case "H":
  621. return 8
  622. case "I":
  623. return 9
  624. case "J":
  625. return 10
  626. case "K":
  627. return 11
  628. case "L":
  629. return 12
  630. case "M":
  631. return 13
  632. case "N":
  633. return 14
  634. case "O":
  635. return 15
  636. case "P":
  637. return 16
  638. case "Q":
  639. return 17
  640. case "R":
  641. return 18
  642. case "S":
  643. return 19
  644. case "T":
  645. return 20
  646. default:
  647. return 1
  648. }
  649. }
  650. //更新实体写入日志,会自动备份数据
  651. func (s *MyServiceBase) UpdateOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, cols []string, userid, username, opdesc, acccode, tabledesc string) (err error) {
  652. s.GetEntityByIdBytbl(tablename, id, entityEmpty)
  653. session := s.DBE.NewSession()
  654. defer session.Close()
  655. err = session.Begin()
  656. json, err := json.Marshal(entityEmpty)
  657. LogError(err)
  658. updatem := new(Base_OperationLog)
  659. //获取表名
  660. objT := reflect.TypeOf(entity)
  661. objT = objT.Elem()
  662. tableName := objT.Name()
  663. updatem.TableName = tableName
  664. updatem.AccCode = acccode
  665. updatem.OpDesc = opdesc
  666. updatem.OpTage = 1
  667. updatem.TableDesc = tabledesc
  668. updatem.RecordId = fmt.Sprintf("%v", id)
  669. updatem.RecordData = string(json)
  670. updatem.Createuserid = userid
  671. updatem.Createby = username
  672. _, err = s.DBE.Table(tablelogname).Insert(updatem) //保存到更新历史表
  673. LogError(err)
  674. if err != nil {
  675. session.Rollback()
  676. return err
  677. }
  678. _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
  679. LogError(err)
  680. if err != nil {
  681. session.Rollback()
  682. return err
  683. }
  684. err = session.Commit()
  685. if err != nil {
  686. return err
  687. }
  688. return
  689. }
  690. //删除实体并写入日志,会自动备份数据,entity为空的表结构
  691. func (s *MyServiceBase) DeleteOperationAndWriteLogBytbl(tablename string, tablelogname string, id interface{}, entity interface{}, entityEmpty interface{}, userid, username, opdesc, acccode, tabledesc string) (err error) {
  692. has := s.GetEntityByIdBytbl(tablename, id, entity)
  693. if has {
  694. session := s.DBE.NewSession()
  695. defer session.Close()
  696. err := session.Begin()
  697. json, err := json.Marshal(entity)
  698. LogError(err)
  699. deleted := new(Base_OperationLog)
  700. //获取表名
  701. objT := reflect.TypeOf(entity)
  702. objT = objT.Elem()
  703. tableName := objT.Name()
  704. deleted.TableName = tableName
  705. deleted.AccCode = acccode
  706. deleted.OpDesc = opdesc
  707. deleted.OpTage = 2
  708. deleted.TableDesc = tabledesc
  709. deleted.RecordId = fmt.Sprintf("%v", id)
  710. deleted.RecordData = string(json)
  711. deleted.Createuserid = userid
  712. deleted.Createby = username
  713. _, err = s.DBE.Table(tablelogname).Insert(deleted) //保存到更新历史表
  714. LogError(err)
  715. if err != nil {
  716. session.Rollback()
  717. return err
  718. }
  719. _, err = s.DBE.Table(tablename).Id(id).Delete(entityEmpty) //执行删除
  720. LogError(err)
  721. if err != nil {
  722. session.Rollback()
  723. return err
  724. }
  725. err = session.Commit()
  726. if err != nil {
  727. return err
  728. }
  729. }
  730. return
  731. }
  732. //根据条件删除数据,不记录日志
  733. func (s *MyServiceBase) DeleteEntityBytbl(tablename string, where string) (err error) {
  734. if where == "" {
  735. where = "1=2"
  736. }
  737. sql := `delete from ` + tablename + ` where ` + where
  738. _, err = s.DBE.Exec(sql)
  739. return
  740. }
  741. func (s *MyServiceBase) GetTopNEntities(tablename string, topN int, where string, entitiesPtr interface{}) {
  742. err := s.DBE.Table(tablename).Where(where).Limit(topN, 0).Find(entitiesPtr)
  743. LogError(err)
  744. return
  745. }
  746. //按准入范围编码查询所有准入
  747. func (s *MyServiceBase) FindGoodsByCode(tablename string, where string,entitiesPtr interface{} ){
  748. err := s.DBE.Table(tablename).Where(where).Find(entitiesPtr)
  749. LogError(err)
  750. return
  751. }
  752. //按公司查找资质
  753. func (s *MyServiceBase) FindFileByCompany(tablename string, where string,entitiesPtr interface{} ){
  754. err := s.DBE.Table(tablename).Where(where).Find(entitiesPtr)
  755. LogError(err)
  756. return
  757. }