material.go 79 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158
  1. package material
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "strconv"
  6. "strings"
  7. "time"
  8. "dashoo.cn/backend/api/business/material"
  9. "dashoo.cn/backend/api/business/materialstorehouse"
  10. . "dashoo.cn/backend/api/controllers"
  11. "dashoo.cn/utils"
  12. "github.com/tealeg/xlsx"
  13. )
  14. type MaterialController struct {
  15. BaseController
  16. }
  17. // @Title 物料基本信息列表 MaterialInfo
  18. // @Description get user by token
  19. // @Success 200 {object} models.Userblood
  20. // @router /materiallist [get]
  21. func (this *MaterialController) Materiallist() {
  22. page := this.GetPageInfoForm()
  23. where := " 1=1 "
  24. orderby := "Id"
  25. asc := true
  26. Order := this.GetString("Order")
  27. Prop := this.GetString("Prop")
  28. if Order != "" && Prop != "" {
  29. orderby = Prop
  30. if Order == "desc" {
  31. asc = false
  32. }
  33. }
  34. Code := this.GetString("Code")
  35. if Code != "" {
  36. where = where + " and Code like '%" + Code + "%' "
  37. }
  38. Name := this.GetString("Name")
  39. if Name != "" {
  40. where = where + " and (Name like '%" + Name + "%' or Symbol like '%" + Name + "%') "
  41. }
  42. Category := this.GetString("Category")
  43. if Category != "" {
  44. where = where + " and Category= " + Category
  45. }
  46. Brand := this.GetString("Brand")
  47. if Brand != "" {
  48. where = where + " and Brand like '%" + Brand + "%' "
  49. }
  50. Supplier := this.GetString("Supplier")
  51. if Supplier != "" {
  52. where = where + " and Supplier like '%" + Supplier + "%' "
  53. }
  54. GoodsNo := this.GetString("GoodsNo")
  55. if GoodsNo != "" {
  56. where = where + " and GoodsNo like '%" + GoodsNo + "%' "
  57. }
  58. svc := material.GetMaterialService(utils.DBE)
  59. var list []material.MaterialInfo
  60. total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
  61. var datainfo DataInfo
  62. datainfo.Items = list
  63. datainfo.CurrentItemCount = total
  64. this.Data["json"] = &datainfo
  65. this.ServeJSON()
  66. }
  67. // @Title 获取物料下拉框 MaterialInfo
  68. // @Description get user by token
  69. // @Success 200 {object} models.Userblood
  70. // @router /getmateriallist [get]
  71. func (this *MaterialController) GetMaterialListByWhere() {
  72. where := " 1=1 "
  73. Category := this.GetString("Category")
  74. if Category != "" {
  75. where = where + " and Category = " + Category
  76. }
  77. svc := material.GetMaterialService(utils.DBE)
  78. var list []material.MaterialInfo
  79. svc.GetEntitysByWhere(this.User.AccCode+MaterialInfoName, where, &list)
  80. var datainfo DataInfo
  81. datainfo.Items = list
  82. this.Data["json"] = &datainfo
  83. this.ServeJSON()
  84. }
  85. // @Title 入库申请信息列表 MaterialRKHead
  86. // @Description get user by token
  87. // @Success 200 {object} models.Userblood
  88. // @router /rklist [get]
  89. func (this *MaterialController) RKlist() {
  90. page := this.GetPageInfoForm()
  91. where := " 1=1 "
  92. orderby := "Id"
  93. asc := false
  94. Order := this.GetString("Order")
  95. Prop := this.GetString("Prop")
  96. if Order != "" && Prop != "" {
  97. orderby = Prop
  98. if orderby == "StoreHouseName" {
  99. orderby = "StoreHouseId"
  100. }
  101. if Order == "asc" {
  102. asc = true
  103. }
  104. }
  105. RKNo := this.GetString("RKNo")
  106. if RKNo != "" {
  107. where = where + " and RKNo like '%" + RKNo + "%' "
  108. }
  109. RKDate := this.GetString("RKDate")
  110. if RKDate != "" {
  111. dates := strings.Split(RKDate, ",")
  112. if len(dates) == 2 {
  113. ValidityminDate := dates[0]
  114. ValiditymaxDate := dates[1]
  115. where = where + " and RKDate>='" + ValidityminDate + "' and RKDate<='" + ValiditymaxDate + "'"
  116. }
  117. }
  118. RKType := this.GetString("RKType")
  119. if RKType != "" {
  120. where = where + " and RKType=" + RKType + " "
  121. }
  122. AuditorStatus := this.GetString("AuditorStatus")
  123. if AuditorStatus != "" {
  124. where = where + " and AuditorStatus=" + AuditorStatus + " "
  125. }
  126. StoreHouseId := this.GetString("StoreHouseId")
  127. if StoreHouseId != "" {
  128. where = where + " and StoreHouseId =" + StoreHouseId + " "
  129. }
  130. svc := material.GetMaterialService(utils.DBE)
  131. var list []material.MaterialRKHead
  132. total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
  133. var datainfo DataInfo
  134. datainfo.Items = list
  135. datainfo.CurrentItemCount = total
  136. this.Data["json"] = &datainfo
  137. this.ServeJSON()
  138. }
  139. // @Title 根据ID 查询物料详情 MaterialInfo
  140. // @Description get SampleType by token
  141. // @Success 200
  142. // @router /getmaterialdetail/:id [get]
  143. func (this *MaterialController) GetMaterialdetailById() {
  144. id := this.Ctx.Input.Param(":id")
  145. var model material.MaterialInfo
  146. svc := material.GetMaterialService(utils.DBE)
  147. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialInfoName, id, &model)
  148. var datainfo DataInfo
  149. datainfo.Items = model
  150. this.Data["json"] = &datainfo
  151. this.ServeJSON()
  152. }
  153. // @Title 保存当前修改的基本信息 MaterialInfo
  154. // @Success 200 {object} controllers.Request
  155. // @router /editmaterialinfo/:id [put]
  156. func (this *MaterialController) Saveedit() {
  157. id := this.Ctx.Input.Param(":id")
  158. Name := this.GetString("Name")
  159. var errinfo ErrorInfo
  160. if id == "" {
  161. errinfo.Message = "操作失败!请求信息不完整"
  162. errinfo.Code = -2
  163. this.Data["json"] = &errinfo
  164. this.ServeJSON()
  165. return
  166. }
  167. var model material.MaterialInfo
  168. var jsonblob = this.Ctx.Input.RequestBody
  169. json.Unmarshal(jsonblob, &model)
  170. var entityempty material.MaterialInfo
  171. svc := material.GetMaterialService(utils.DBE)
  172. var eneity material.MaterialInfo
  173. where := "Name='" + model.Name + "' and Code='" + model.Code + "' and Id!=" + id
  174. has := svc.GetEntityByWhere(this.User.AccCode+MaterialInfoName, where, &eneity)
  175. if has {
  176. errinfo.Message = "该物料已存在,请勿重复添加!"
  177. errinfo.Code = -3
  178. this.Data["json"] = &errinfo
  179. this.ServeJSON()
  180. return
  181. }
  182. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  183. model.ModifiedBy = this.User.Realname
  184. opdesc := "编辑物料" + Name
  185. var cols []string = []string{"Code", "Name", "Unit", "ValidityLong", "ValidityLongType", "Temperature",
  186. "RKUnit", "RKRatio", "CKUnit", "CKRatio", "KCUnit", "KCRatio", "ProductSpec", "KCCount", "DefaultPrice", "NewestPrice", "Brand", "Category",
  187. "KCMin", "KCMax", "CategoryName", "Supplier", "GoodsNo", "Photo", "BarCode", "QRCode", "Symbol", "PUnit1", "PUnit2",
  188. "Remark", "ModifiedUserId", "ModifiedBy"}
  189. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialInfoName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  190. if err == nil {
  191. errinfo.Message = "保存成功!"
  192. errinfo.Code = 0
  193. this.Data["json"] = &errinfo
  194. this.ServeJSON()
  195. } else {
  196. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  197. errinfo.Code = -1
  198. this.Data["json"] = &errinfo
  199. this.ServeJSON()
  200. }
  201. }
  202. // @Title 新增物料信息 MaterialInfo
  203. // @Description
  204. // @Success 200 {object} controllers.Request
  205. // @router /addmaterialinfo [post]
  206. func (this *MaterialController) AddMaterialInfo() {
  207. var errinfo ErrorDataInfo
  208. var model material.MaterialInfo
  209. var jsonblob = this.Ctx.Input.RequestBody
  210. json.Unmarshal(jsonblob, &model)
  211. model.CreateBy = this.User.Realname
  212. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  213. svc := material.GetMaterialService(utils.DBE)
  214. var eneity material.MaterialInfo
  215. where := "Name='" + model.Name + "' and Code='" + model.Code + "'"
  216. has := svc.GetEntityByWhere(this.User.AccCode+MaterialInfoName, where, &eneity)
  217. if has {
  218. errinfo.Message = "该物料已存在,请勿重复添加!"
  219. errinfo.Code = -2
  220. this.Data["json"] = &errinfo
  221. this.ServeJSON()
  222. return
  223. }
  224. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialInfoName, &model)
  225. if err == nil {
  226. errinfo.Message = "保存成功!"
  227. errinfo.Code = 0
  228. errinfo.Item = model.Id
  229. this.Data["json"] = &errinfo
  230. this.ServeJSON()
  231. } else {
  232. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  233. errinfo.Code = -1
  234. this.Data["json"] = &errinfo
  235. this.ServeJSON()
  236. }
  237. }
  238. // @Title 删除基本信息 MaterialInfo
  239. // @Description
  240. // @Success 200 {object} ErrorInfo
  241. // @Failure 403 :id 为空
  242. // @router /deletematerialinfo/:id [delete]
  243. func (this *MaterialController) DeleteMaterialinfo() {
  244. Name := this.GetString("Name")
  245. id := this.Ctx.Input.Param(":id")
  246. var errinfo ErrorInfo
  247. if id == "" || Name == "" {
  248. errinfo.Message = "操作失败!请求信息不完整"
  249. errinfo.Code = -2
  250. this.Data["json"] = &errinfo
  251. this.ServeJSON()
  252. return
  253. }
  254. var entity material.MaterialInfo
  255. var entityempty material.MaterialInfo
  256. opdesc := "删除物料-" + Name
  257. svc := material.GetMaterialService(utils.DBE)
  258. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialInfoName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  259. if err == nil {
  260. errinfo.Message = "删除成功"
  261. errinfo.Code = 0
  262. this.Data["json"] = &errinfo
  263. this.ServeJSON()
  264. } else {
  265. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  266. errinfo.Code = -1
  267. this.Data["json"] = &errinfo
  268. this.ServeJSON()
  269. }
  270. }
  271. // @Title 删除入库主表信息 MaterialRKHead
  272. // @Description
  273. // @Success 200 {object} ErrorInfo
  274. // @Failure 403 :id 为空
  275. // @router /deletematerialRKhead/:id [delete]
  276. func (this *MaterialController) MaterialRKHeadDelete() {
  277. id := this.Ctx.Input.Param(":id")
  278. RKNo := this.GetString("RKNo")
  279. var errinfo ErrorInfo
  280. if id == "" {
  281. errinfo.Message = "操作失败!请求信息不完整"
  282. errinfo.Code = -0
  283. this.Data["json"] = &errinfo
  284. this.ServeJSON()
  285. return
  286. }
  287. var entity material.MaterialRKHead
  288. var entityempty material.MaterialRKHead
  289. opdesc := "删除入库单-" + RKNo
  290. svc := material.GetMaterialService(utils.DBE)
  291. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKHeadName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  292. if err == nil {
  293. where := " RKNo=" + RKNo
  294. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialRKDetailName, where)
  295. }
  296. if err == nil {
  297. errinfo.Message = "删除成功"
  298. errinfo.Code = 0
  299. this.Data["json"] = &errinfo
  300. this.ServeJSON()
  301. } else {
  302. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  303. errinfo.Code = -1
  304. this.Data["json"] = &errinfo
  305. this.ServeJSON()
  306. }
  307. }
  308. // @Title ixcell制备模板 获取主表信息
  309. // @Description get user by token
  310. // @Success 200 {object} models.Userblood
  311. // @router /getmaterialmianlist [get]
  312. func (this *MaterialController) GetMaterialMainlist() {
  313. page := this.GetPageInfoForm()
  314. where := " 1=1 "
  315. Name := this.GetString("Name")
  316. if Name != "" {
  317. where = where + " and (Name like '%" + Name + "%' or Symbol like '%" + Name + "%') "
  318. }
  319. Supplier := this.GetString("Supplier")
  320. if Supplier != "" {
  321. where = where + " and Supplier like '%" + Supplier + "%' "
  322. }
  323. Category := this.GetString("Category")
  324. if Category != "" {
  325. where = where + " and Category= " + Category
  326. }
  327. GoodsNo := this.GetString("GoodsNo")
  328. if GoodsNo != "" {
  329. where = where + " and GoodsNo like '%" + GoodsNo + "%' "
  330. }
  331. Brand := this.GetString("Brand")
  332. if Brand != "" {
  333. where = where + " and Brand like '%" + Brand + "%' "
  334. }
  335. svc := material.GetMaterialService(utils.DBE)
  336. var list []material.MaterialInfo
  337. total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, "Id ", true, &list, where)
  338. var datainfo DataInfo
  339. datainfo.Items = list
  340. datainfo.CurrentItemCount = total
  341. this.Data["json"] = &datainfo
  342. this.ServeJSON()
  343. }
  344. // @Title 根据批号BatchNo减去MaterialBatchKC的KCCount数量
  345. // @Description 根据物品名称Name减去MaterialInfo的KCCount数量
  346. // @Success 200 {object} controllers.Request
  347. // @router /putkcinfo [put]
  348. func (this *MaterialController) Putkcinfo() {
  349. var model material.MaterialBatchKC
  350. var jsonblob = this.Ctx.Input.RequestBody
  351. json.Unmarshal(jsonblob, &model)
  352. HouseId := this.GetHouseIdByLoginuser()
  353. where := " StoreHouseId= " + utils.ToStr(HouseId)
  354. addflag := this.GetString("add")
  355. MaterialId := this.GetString("MaterialId")
  356. if MaterialId != "" {
  357. where = where + " and MaterialId= " + MaterialId
  358. }
  359. infowhere := " Id= '" + MaterialId + "' "
  360. svc := material.GetMaterialService(utils.DBE)
  361. if addflag == "1" { //撤销物料操作,返还出库数量
  362. // var PrepInfoDetail cellspreparation.CellsPreparationInfoDetail
  363. // PrepInfoDetailId := this.GetString("detailid")
  364. // svc.GetEntityByIdBytbl(this.User.AccCode+CellsPreparationInfoDetailName, PrepInfoDetailId, &PrepInfoDetail)
  365. // where = where + " and BatchNo= '" + PrepInfoDetail.Data1 + "'"
  366. // svc.UpdateaddKCinfo(this.User.AccCode+MaterialBatchKCName, where, utils.ToStr(model.KCCount))
  367. // svc.UpdateaddKCinfo(this.User.AccCode+MaterialInfoName, infowhere, utils.ToStr(model.KCCount))
  368. } else {
  369. if model.BatchNo != "" {
  370. where = where + " and BatchNo= '" + model.BatchNo + "'"
  371. }
  372. svc.UpdatesubKCinfo(this.User.AccCode+MaterialBatchKCName, where, utils.ToStr(model.KCCount))
  373. svc.UpdatesubKCinfo(this.User.AccCode+MaterialInfoName, infowhere, utils.ToStr(model.KCCount))
  374. }
  375. }
  376. // @Title 库存列表 MaterialBatchKC
  377. // @Description get user by token
  378. // @Success 200 {object} models.Userblood
  379. // @router /materialbatchKClist [get]
  380. func (this *MaterialController) MaterialBatchKClist() {
  381. page := this.GetPageInfoForm()
  382. where := " a.KCCount <> 0 "
  383. orderby := "a.CreateOn desc"
  384. Order := this.GetString("Order")
  385. Prop := this.GetString("Prop")
  386. if Order != "" && Prop != "" {
  387. orderby = Prop + " " + Order
  388. }
  389. BatchNo := this.GetString("BatchNo")
  390. if BatchNo != "" {
  391. where = where + " and a.BatchNo like '%" + BatchNo + "%' "
  392. }
  393. ProductDate := this.GetString("ProductDate")
  394. if ProductDate != "" {
  395. dates := strings.Split(ProductDate, ",")
  396. if len(dates) == 2 {
  397. ProductminDate := dates[0]
  398. ProductmaxDate := dates[1]
  399. where = where + " and ProductDate>='" + ProductminDate + "' and ProductDate<='" + ProductmaxDate + "'"
  400. }
  401. }
  402. ValidityDate := this.GetString("ValidityDate")
  403. if ValidityDate != "" {
  404. dates := strings.Split(ValidityDate, ",")
  405. if len(dates) == 2 {
  406. ValidityminDate := dates[0]
  407. ValiditymaxDate := dates[1]
  408. where = where + " and ValidityDate>='" + ValidityminDate + "' and ValidityDate<='" + ValiditymaxDate + "'"
  409. }
  410. }
  411. Code := this.GetString("Code")
  412. if Code != "" {
  413. where = where + " and b.Code like '%" + Code + "%' "
  414. }
  415. Name := this.GetString("Name")
  416. if Name != "" {
  417. where = where + " and (b.Name like '%" + Name + "%' or b.Symbol like '%" + Name + "%') "
  418. }
  419. Category := this.GetString("Category")
  420. if Category != "" {
  421. where = where + " and b.Category= " + Category
  422. }
  423. Brand := this.GetString("Brand")
  424. if Brand != "" {
  425. where = where + " and b.Brand like '%" + Brand + "%' "
  426. }
  427. Supplier := this.GetString("Supplier")
  428. if Supplier != "" {
  429. where = where + " and b.Supplier like '%" + Supplier + "%' "
  430. }
  431. GoodsNo := this.GetString("GoodsNo")
  432. if GoodsNo != "" {
  433. where = where + " and b.GoodsNo like '%" + GoodsNo + "%' "
  434. }
  435. StoreHouseId := this.GetString("StoreHouseId")
  436. if StoreHouseId != "" {
  437. where = where + " and c.Id =" + StoreHouseId + " "
  438. }
  439. svc := material.GetMaterialService(utils.DBE)
  440. total, list := svc.GetPagingMaterialBatchKCByWhere(this.User.AccCode+MaterialBatchKCName, this.User.AccCode+MaterialInfoName, this.User.AccCode+MaterialStoreHouseName, page.CurrentPage, page.Size, orderby, where)
  441. var datainfo DataInfo
  442. datainfo.Items = list
  443. datainfo.CurrentItemCount = total
  444. this.Data["json"] = &datainfo
  445. this.ServeJSON()
  446. }
  447. // @Title 根据ID 查询物料库存详情 MaterialBatchKC
  448. // @Description get SampleType by token
  449. // @Success 200
  450. // @router /getmaterialKCdetail/:id [get]
  451. func (this *MaterialController) GetMaterialKCdetailById() {
  452. id := this.Ctx.Input.Param(":id")
  453. var model material.MaterialBatchKC
  454. svc := material.GetMaterialService(utils.DBE)
  455. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialBatchKCName, id, &model)
  456. var datainfo DataInfo
  457. datainfo.Items = model
  458. this.Data["json"] = &datainfo
  459. this.ServeJSON()
  460. }
  461. // @Title 仓库列表 MaterialStoreHouse
  462. // @Description get user by token
  463. // @Success 200 {object} models.Userblood
  464. // @router /getstorehouselist [get]
  465. func (this *MaterialController) MaterialStoreHouselist() {
  466. where := " 1=1 "
  467. svc := material.GetMaterialService(utils.DBE)
  468. var list []material.MaterialStoreHouse
  469. svc.GetEntitysByWhere(this.User.AccCode+MaterialStoreHouseName, where, &list)
  470. var datainfo DataInfo
  471. datainfo.Items = list
  472. this.Data["json"] = &datainfo
  473. this.ServeJSON()
  474. }
  475. // @Title 新增入库主单信息 MaterialRKHead
  476. // @Description
  477. // @Success 200 {object} controllers.Request
  478. // @router /addmaterialRKhead [post]
  479. func (this *MaterialController) AddMaterialRKHead() {
  480. var model material.MaterialRKHead
  481. var jsonblob = this.Ctx.Input.RequestBody
  482. json.Unmarshal(jsonblob, &model)
  483. model.CreateBy = this.User.Realname
  484. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  485. svc := material.GetMaterialService(utils.DBE)
  486. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialRKHeadName, &model)
  487. var errinfo ErrorDataInfo
  488. if err == nil {
  489. errinfo.Message = "保存成功!"
  490. errinfo.Code = 0
  491. errinfo.Item = model.Id
  492. this.Data["json"] = &errinfo
  493. this.ServeJSON()
  494. } else {
  495. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  496. errinfo.Code = -1
  497. this.Data["json"] = &errinfo
  498. this.ServeJSON()
  499. }
  500. }
  501. // @Title 编辑入库主单信息 MaterialRKHead
  502. // @Success 200 {object} controllers.Request
  503. // @router /editmaterialRKhead/:id [put]
  504. func (this *MaterialController) EditMaterialRKHead() {
  505. id := this.Ctx.Input.Param(":id")
  506. RKNo := this.GetString("RKNo")
  507. var errinfo ErrorInfo
  508. if id == "" {
  509. errinfo.Message = "操作失败!请求信息不完整"
  510. errinfo.Code = -2
  511. this.Data["json"] = &errinfo
  512. this.ServeJSON()
  513. return
  514. }
  515. var model material.MaterialRKHead
  516. var jsonblob = this.Ctx.Input.RequestBody
  517. json.Unmarshal(jsonblob, &model)
  518. var entityempty material.MaterialRKHead
  519. svc := material.GetMaterialService(utils.DBE)
  520. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  521. model.ModifiedBy = this.User.Realname
  522. opdesc := "编辑入库单" + RKNo
  523. var cols []string = []string{"StoreHouseId", "RKType", "RKTypeName", "TotalPrice", "RKDate", "RKPersionId", "RKPersion", "SourceId", "SourceName", "Remark", "ModifiedUserId", "ModifiedBy"}
  524. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  525. if err == nil {
  526. errinfo.Message = "保存成功!"
  527. errinfo.Code = 0
  528. this.Data["json"] = &errinfo
  529. this.ServeJSON()
  530. } else {
  531. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  532. errinfo.Code = -1
  533. this.Data["json"] = &errinfo
  534. this.ServeJSON()
  535. }
  536. }
  537. // @Title 新增入库单详细信息 MaterialRKDetail
  538. // @Description
  539. // @Success 200 {object} controllers.Request
  540. // @router /addmaterialRKdetail [post]
  541. func (this *MaterialController) AddMaterialRKDetail() {
  542. var model material.MaterialRKDetail
  543. var jsonblob = this.Ctx.Input.RequestBody
  544. json.Unmarshal(jsonblob, &model)
  545. model.CreateBy = this.User.Realname
  546. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  547. svc := material.GetMaterialService(utils.DBE)
  548. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialRKDetailName, &model)
  549. var errinfo ErrorDataInfo
  550. if err == nil {
  551. errinfo.Message = "保存成功!"
  552. errinfo.Code = 0
  553. errinfo.Item = model.Id
  554. this.Data["json"] = &errinfo
  555. this.ServeJSON()
  556. } else {
  557. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  558. errinfo.Code = -1
  559. this.Data["json"] = &errinfo
  560. this.ServeJSON()
  561. }
  562. }
  563. // @Title 根据入库单号,查询入库单详情 MaterialRKDetail
  564. // @Description get user by token
  565. // @Success 200 {object} models.Userblood
  566. // @router /getRKdetaillistbyRKNo/:RKNo [get]
  567. func (this *MaterialController) GetRKDetailListByRKNo() {
  568. page := this.GetPageInfoForm()
  569. RKNo := this.Ctx.Input.Param(":RKNo")
  570. where := " a.RKNo= '" + RKNo + "' "
  571. svc := material.GetMaterialService(utils.DBE)
  572. total, list := svc.GetPagingMaterialRKDetailByWhere(this.User.AccCode+MaterialRKDetailName, this.User.AccCode+MaterialInfoName, page.CurrentPage, page.Size, " a.CreateOn desc ", where)
  573. var datainfo DataInfo
  574. datainfo.Items = list
  575. datainfo.CurrentItemCount = total
  576. this.Data["json"] = &datainfo
  577. this.ServeJSON()
  578. }
  579. // @Title 根据入库单号,查询入库单详情 无分页 计算入库单总价 MaterialRKDetail
  580. // @Description get user by token
  581. // @Success 200 {object} models.Userblood
  582. // @router /getRKdetailbyRKNo/:RKNo [get]
  583. func (this *MaterialController) GetRKDetailByRKNo() {
  584. RKNo := this.Ctx.Input.Param(":RKNo")
  585. var list []material.MaterialRKDetail
  586. where := " RKNo= '" + RKNo + "' "
  587. svc := material.GetMaterialService(utils.DBE)
  588. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKDetailName, where, &list)
  589. var datainfo DataInfo
  590. datainfo.Items = list
  591. this.Data["json"] = &datainfo
  592. this.ServeJSON()
  593. }
  594. // @Title 编辑入库单详细信息 MaterialRKDetail
  595. // @Success 200 {object} controllers.Request
  596. // @router /editmaterialRKdetail/:id [put]
  597. func (this *MaterialController) EditMaterialRKDetail() {
  598. id := this.Ctx.Input.Param(":id")
  599. RKNo := this.GetString("RKNo")
  600. var errinfo ErrorInfo
  601. if id == "" {
  602. errinfo.Message = "操作失败!请求信息不完整"
  603. errinfo.Code = -2
  604. this.Data["json"] = &errinfo
  605. this.ServeJSON()
  606. return
  607. }
  608. var model material.MaterialRKDetail
  609. var jsonblob = this.Ctx.Input.RequestBody
  610. json.Unmarshal(jsonblob, &model)
  611. var entityempty material.MaterialRKDetail
  612. svc := material.GetMaterialService(utils.DBE)
  613. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  614. model.ModifiedBy = this.User.Realname
  615. opdesc := "编辑入库单" + RKNo
  616. var cols []string = []string{"BatchNo", "ShelfNo", "Allocation", "RKCount", "Unit", "UnitPrice", "TotalPrice", "ProductDate", "ValidityDate", "Remark", "ModifiedUserId", "ModifiedBy"}
  617. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKDetailName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  618. if err == nil {
  619. errinfo.Message = "保存成功!"
  620. errinfo.Code = 0
  621. this.Data["json"] = &errinfo
  622. this.ServeJSON()
  623. } else {
  624. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  625. errinfo.Code = -1
  626. this.Data["json"] = &errinfo
  627. this.ServeJSON()
  628. }
  629. }
  630. // @Title 删除入库单详情信息 MaterialRKDetail
  631. // @Description
  632. // @Success 200 {object} ErrorInfo
  633. // @Failure 403 :id 为空
  634. // @router /deletematerialRKdetail/:id [delete]
  635. func (this *MaterialController) MaterialRKDetailDelete() {
  636. id := this.Ctx.Input.Param(":id")
  637. RKNo := this.GetString("RKNo")
  638. var errinfo ErrorInfo
  639. if id == "" {
  640. errinfo.Message = "操作失败!请求信息不完整"
  641. errinfo.Code = -0
  642. this.Data["json"] = &errinfo
  643. this.ServeJSON()
  644. return
  645. }
  646. var entity material.MaterialRKDetail
  647. var entityempty material.MaterialRKDetail
  648. opdesc := "删除入库单详情-" + RKNo
  649. svc := material.GetMaterialService(utils.DBE)
  650. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKDetailName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  651. if err == nil {
  652. errinfo.Message = "删除成功"
  653. errinfo.Code = 0
  654. this.Data["json"] = &errinfo
  655. this.ServeJSON()
  656. } else {
  657. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  658. errinfo.Code = -1
  659. this.Data["json"] = &errinfo
  660. this.ServeJSON()
  661. }
  662. }
  663. // @Title 根据入库单Id 查询入库单主信息 MaterialRKHead
  664. // @Description get SampleType by token
  665. // @Success 200
  666. // @router /getmaterialRKheaddetail/:id [get]
  667. func (this *MaterialController) GetMaterialRKHeadDetailById() {
  668. id := this.Ctx.Input.Param(":id")
  669. var model material.MaterialRKHead
  670. svc := material.GetMaterialService(utils.DBE)
  671. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialRKHeadName, id, &model)
  672. var datainfo DataInfo
  673. datainfo.Items = model
  674. this.Data["json"] = &datainfo
  675. this.ServeJSON()
  676. }
  677. // @Title 入库单审核 MaterialRKHead
  678. // @Success 200 {object} controllers.Request
  679. // @router /auditorRKhead/:id [put]
  680. func (this *MaterialController) AuditorRKHeadById() {
  681. id := this.Ctx.Input.Param(":id")
  682. RKNo := this.GetString("RKNo")
  683. var errinfo ErrorInfo
  684. if id == "" {
  685. errinfo.Message = "操作失败!请求信息不完整"
  686. errinfo.Code = -2
  687. this.Data["json"] = &errinfo
  688. this.ServeJSON()
  689. return
  690. }
  691. var model material.MaterialRKHead
  692. var jsonblob = this.Ctx.Input.RequestBody
  693. json.Unmarshal(jsonblob, &model)
  694. var entityempty material.MaterialRKHead
  695. svc := material.GetMaterialService(utils.DBE)
  696. model.AuditorOn = time.Now()
  697. model.AuditorUserId, _ = utils.StrTo(this.User.Id).Int()
  698. model.AuditorBy = this.User.Realname
  699. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  700. model.ModifiedBy = this.User.Realname
  701. opdesc := "审核入库单" + RKNo
  702. var cols []string = []string{"StoreHouseId", "RKType", "RKTypeName", "TotalPrice", "RKDate",
  703. "RKPersionId", "RKPersion", "SourceId", "SourceName", "AuditorStatus", "AuditorOn", "AuditorUserId",
  704. "AuditorBy", "ModifiedUserId", "Remark", "ModifiedBy"}
  705. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  706. if err == nil {
  707. this.InsertMaterialBatchKC(RKNo)
  708. }
  709. if err == nil {
  710. errinfo.Message = "审核成功!"
  711. errinfo.Code = 0
  712. this.Data["json"] = &errinfo
  713. this.ServeJSON()
  714. } else {
  715. errinfo.Message = "审核失败!" + utils.AlertProcess(err.Error())
  716. errinfo.Code = -1
  717. this.Data["json"] = &errinfo
  718. this.ServeJSON()
  719. }
  720. }
  721. //入库单审核通过后更新库存信息 MaterialBatchKC
  722. func (this *MaterialController) InsertMaterialBatchKC(RKNo string) {
  723. var rkhead material.MaterialRKHead
  724. var rkdetail []material.MaterialRKDetail
  725. var batchkc material.MaterialBatchKC
  726. svc := material.GetMaterialService(utils.DBE)
  727. where_RKNo := " RKNo='" + RKNo + "' "
  728. //根据入库单号查询入库主单信息
  729. svc.GetEntityByWhere(this.User.AccCode+MaterialRKHeadName, where_RKNo, &rkhead)
  730. //根据入库单查询入库详情
  731. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKDetailName, where_RKNo, &rkdetail)
  732. for i := 0; i < len(rkdetail); i++ {
  733. where_BatchKC := " StoreHouseId=" + utils.ToStr(rkhead.StoreHouseId) + " and MaterialId=" + utils.ToStr(rkdetail[i].MaterialId) + " and BatchNo='" + rkdetail[i].BatchNo + "' "
  734. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_BatchKC, &batchkc)
  735. if has {
  736. rkcount, _ := utils.StrTo(rkdetail[i].RKCount).Float32()
  737. batchkc.KCCount = batchkc.KCCount + rkcount
  738. batchkc.RKDate = rkhead.RKDate
  739. batchkc.ProductDate = rkdetail[i].ProductDate
  740. batchkc.ValidityDate = rkdetail[i].ValidityDate
  741. batchkc.Price = rkdetail[i].UnitPrice
  742. batchkc.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  743. batchkc.ModifiedBy = this.User.Realname
  744. var entityempty material.MaterialBatchKC
  745. opdesc := "新增库存" + rkdetail[i].BatchNo
  746. var cols []string = []string{"KCCount", "RKDate", "ProductDate", "ValidityDate", "Price", "ModifiedUserId", "ModifiedBy"}
  747. _ = svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialBatchKCName, BaseOperationLogName, batchkc.Id, &batchkc, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  748. } else {
  749. batchkc.StoreHouseId = rkhead.StoreHouseId
  750. batchkc.MaterialId = rkdetail[i].MaterialId
  751. batchkc.BatchNo = utils.ToStr(rkdetail[i].BatchNo)
  752. batchkc.KCCount, _ = utils.StrTo(rkdetail[i].RKCount).Float32()
  753. batchkc.RKDate = rkhead.RKDate
  754. batchkc.ProductDate = rkdetail[i].ProductDate
  755. batchkc.ValidityDate = rkdetail[i].ValidityDate
  756. batchkc.Price = rkdetail[i].UnitPrice
  757. //batchkc.Remark = rkdetail[i].Remark
  758. batchkc.CreateBy = this.User.Realname
  759. batchkc.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  760. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialBatchKCName, &batchkc)
  761. }
  762. where_materialid := " Id=" + utils.ToStr(rkdetail[i].MaterialId)
  763. svc.UpdateaddKCinfo(this.User.AccCode+MaterialInfoName, where_materialid, rkdetail[i].RKCount)
  764. batchkc = material.MaterialBatchKC{}
  765. }
  766. }
  767. // @Title 入库单审核撤销 MaterialRKHead
  768. // @Success 200 {object} controllers.Request
  769. // @router /cancelRKhead/:id [put]
  770. func (this *MaterialController) CancelRKHeadById() {
  771. id := this.Ctx.Input.Param(":id")
  772. RKNo := this.GetString("RKNo")
  773. var errinfo ErrorInfo
  774. if id == "" {
  775. errinfo.Message = "操作失败!请求信息不完整"
  776. errinfo.Code = -2
  777. this.Data["json"] = &errinfo
  778. this.ServeJSON()
  779. return
  780. }
  781. var model material.MaterialRKHead
  782. var jsonblob = this.Ctx.Input.RequestBody
  783. json.Unmarshal(jsonblob, &model)
  784. var entityempty material.MaterialRKHead
  785. svc := material.GetMaterialService(utils.DBE)
  786. model.AuditorOn = time.Now()
  787. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  788. model.ModifiedBy = this.User.Realname
  789. opdesc := "撤销入库单审核" + RKNo
  790. var cols []string = []string{"AuditorStatus", "AuditorOn", "ModifiedUserId", "ModifiedBy"}
  791. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialRKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  792. if err == nil {
  793. this.DelMaterialBatchKC(RKNo)
  794. }
  795. if err == nil {
  796. errinfo.Message = "操作成功!"
  797. errinfo.Code = 0
  798. this.Data["json"] = &errinfo
  799. this.ServeJSON()
  800. } else {
  801. errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
  802. errinfo.Code = -1
  803. this.Data["json"] = &errinfo
  804. this.ServeJSON()
  805. }
  806. }
  807. //入库单审核撤销后更新库存信息 MaterialBatchKC
  808. func (this *MaterialController) DelMaterialBatchKC(RKNo string) {
  809. var rkhead material.MaterialRKHead
  810. var rkdetail []material.MaterialRKDetail
  811. var batchkc material.MaterialBatchKC
  812. svc := material.GetMaterialService(utils.DBE)
  813. where_RKNo := " RKNo='" + RKNo + "' "
  814. //根据入库单号查询入库主单信息
  815. svc.GetEntityByWhere(this.User.AccCode+MaterialRKHeadName, where_RKNo, &rkhead)
  816. //根据入库单查询入库详情
  817. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKDetailName, where_RKNo, &rkdetail)
  818. for i := 0; i < len(rkdetail); i++ {
  819. where_BatchKC := " StoreHouseId=" + utils.ToStr(rkhead.StoreHouseId) + " and MaterialId=" + utils.ToStr(rkdetail[i].MaterialId) + " and BatchNo='" + rkdetail[i].BatchNo + "' "
  820. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_BatchKC, &batchkc)
  821. if has {
  822. rkcount, _ := utils.StrTo(rkdetail[i].RKCount).Float32()
  823. batchkc.KCCount = batchkc.KCCount - rkcount
  824. batchkc.RKDate = rkhead.RKDate
  825. batchkc.ProductDate = rkdetail[i].ProductDate
  826. batchkc.ValidityDate = rkdetail[i].ValidityDate
  827. batchkc.Price = rkdetail[i].UnitPrice
  828. batchkc.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  829. batchkc.ModifiedBy = this.User.Realname
  830. var entityempty material.MaterialBatchKC
  831. opdesc := "撤销新增库存" + rkdetail[i].BatchNo
  832. var cols []string = []string{"KCCount", "RKDate", "ProductDate", "ValidityDate", "Price", "ModifiedUserId", "ModifiedBy"}
  833. _ = svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialBatchKCName, BaseOperationLogName, batchkc.Id, &batchkc, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  834. }
  835. where_materialid := " Id=" + utils.ToStr(rkdetail[i].MaterialId)
  836. svc.UpdatecancelKCinfo(this.User.AccCode+MaterialInfoName, where_materialid, rkdetail[i].RKCount)
  837. batchkc = material.MaterialBatchKC{}
  838. }
  839. }
  840. // @Title 判断库存信息是否存在
  841. // @Description get SampleType by token
  842. // @Success 200
  843. // @router /getexitkucuninfo/ [get]
  844. func (this *MaterialController) Getexitkucuninfo() {
  845. var list []material.MaterialCKHead
  846. ReceiveUserId := this.User.Id
  847. where := " 1=1 "
  848. CKType := this.GetString("CKType")
  849. if CKType != "" {
  850. where = where + " and CKType= " + CKType
  851. }
  852. where = where + " and ReceiveUserId=" + ReceiveUserId + " "
  853. var dataformat = "2006-01-02"
  854. nowdata := time.Now().Format(dataformat)
  855. starttime, endtime := nowdata, nowdata+" 23:59:59"
  856. where = where + " and CKDate>='" + starttime + "' and CKDate<='" + endtime + "'"
  857. svc := material.GetMaterialService(utils.DBE)
  858. svc.GetEntitysByWhere(this.User.AccCode+MaterialCKHeadName, where, &list)
  859. var datainfo DataInfo
  860. datainfo.Items = list
  861. this.Data["json"] = &datainfo
  862. this.ServeJSON()
  863. }
  864. // @Title ixcell细胞制备 新增出库单主信息
  865. // @Description
  866. // @Success 200 {object} controllers.Request
  867. // @router /addkucuninfo [post]
  868. func (this *MaterialController) Addchukuinfo() {
  869. var model material.MaterialCKHead
  870. var jsonblob = this.Ctx.Input.RequestBody
  871. json.Unmarshal(jsonblob, &model)
  872. model.CKPersionId, _ = utils.StrTo(this.User.Id).Int()
  873. model.CKPersion = this.User.Realname
  874. model.ReceiveUserId, _ = utils.StrTo(this.User.Id).Int()
  875. model.ReceiveUserBy = this.User.Realname
  876. model.ReceiveId, _ = utils.StrTo(this.User.DepartmentId).Int()
  877. model.ReceiveName = this.User.Realname
  878. model.CreateBy = this.User.Realname
  879. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  880. model.StoreHouseId = this.GetHouseIdByLoginuser()
  881. svc := material.GetMaterialService(utils.DBE)
  882. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialCKHeadName, &model)
  883. var errinfo ErrorDataInfo
  884. if err == nil {
  885. errinfo.Message = "保存成功!"
  886. errinfo.Code = 0
  887. errinfo.Item = model.Id
  888. this.Data["json"] = &errinfo
  889. this.ServeJSON()
  890. } else {
  891. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  892. errinfo.Code = -1
  893. this.Data["json"] = &errinfo
  894. this.ServeJSON()
  895. }
  896. }
  897. // @Title ixcell细胞制备 新增出库单详细信息
  898. // @Description
  899. // @Success 200 {object} controllers.Request
  900. // @router /addkucundetailinfo [post]
  901. func (this *MaterialController) Addkucundetailinfo() {
  902. var model material.MaterialCKDetail
  903. var jsonblob = this.Ctx.Input.RequestBody
  904. json.Unmarshal(jsonblob, &model)
  905. model.CreateBy = this.User.Realname
  906. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  907. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  908. model.ModifiedBy = this.User.Realname
  909. svc := material.GetMaterialService(utils.DBE)
  910. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialCKDetailName, &model)
  911. var errinfo ErrorDataInfo
  912. if err == nil {
  913. errinfo.Message = "保存成功!"
  914. errinfo.Code = 0
  915. errinfo.Item = model.Id
  916. this.Data["json"] = &errinfo
  917. this.ServeJSON()
  918. } else {
  919. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  920. errinfo.Code = -1
  921. this.Data["json"] = &errinfo
  922. this.ServeJSON()
  923. }
  924. }
  925. // @Title 修改库存detail表信息
  926. // @Success 200 {object} controllers.Request
  927. // @router /editkucundetailinfo/:id [put]
  928. func (this *MaterialController) Editkucundetailinfo() {
  929. id := this.Ctx.Input.Param(":id")
  930. var errinfo ErrorInfo
  931. if id == "" {
  932. errinfo.Message = "操作失败!请求信息不完整"
  933. errinfo.Code = -2
  934. this.Data["json"] = &errinfo
  935. this.ServeJSON()
  936. return
  937. }
  938. var model material.MaterialCKDetail
  939. var jsonblob = this.Ctx.Input.RequestBody
  940. json.Unmarshal(jsonblob, &model)
  941. svc := material.GetMaterialService(utils.DBE)
  942. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  943. model.ModifiedBy = this.User.Realname
  944. var cols []string = []string{"CKCount"}
  945. err := svc.UpdateEntityBytbl(this.User.AccCode+MaterialCKDetailName, id, &model, cols)
  946. if err == nil {
  947. errinfo.Message = "保存成功!"
  948. errinfo.Code = 0
  949. this.Data["json"] = &errinfo
  950. this.ServeJSON()
  951. } else {
  952. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  953. errinfo.Code = -1
  954. this.Data["json"] = &errinfo
  955. this.ServeJSON()
  956. }
  957. }
  958. // @Title 新增出库单主信息 MaterialCKHead
  959. // @Description
  960. // @Success 200 {object} controllers.Request
  961. // @router /addmaterialCKhead [post]
  962. func (this *MaterialController) AddMaterialCKHead() {
  963. var model material.MaterialCKHead
  964. var jsonblob = this.Ctx.Input.RequestBody
  965. json.Unmarshal(jsonblob, &model)
  966. model.CreateBy = this.User.Realname
  967. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  968. svc := material.GetMaterialService(utils.DBE)
  969. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialCKHeadName, &model)
  970. var errinfo ErrorDataInfo
  971. if err == nil {
  972. errinfo.Message = "保存成功!"
  973. errinfo.Code = 0
  974. errinfo.Item = model.Id
  975. this.Data["json"] = &errinfo
  976. this.ServeJSON()
  977. } else {
  978. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  979. errinfo.Code = -1
  980. this.Data["json"] = &errinfo
  981. this.ServeJSON()
  982. }
  983. }
  984. // @Title 出库申请信息列表 MaterialCKHead
  985. // @Description get user by token
  986. // @Success 200 {object} models.Userblood
  987. // @router /getCKheadlist [get]
  988. func (this *MaterialController) GetMaterialCKHeadList() {
  989. page := this.GetPageInfoForm()
  990. where := " 1=1 "
  991. orderby := "Id"
  992. asc := false
  993. Order := this.GetString("Order")
  994. Prop := this.GetString("Prop")
  995. if Order != "" && Prop != "" {
  996. orderby = Prop
  997. if orderby == "StoreHouseName" {
  998. orderby = "StoreHouseId"
  999. }
  1000. if Order == "asc" {
  1001. asc = true
  1002. }
  1003. }
  1004. CKNo := this.GetString("CKNo")
  1005. if CKNo != "" {
  1006. where = where + " and CKNo like '%" + CKNo + "%' "
  1007. }
  1008. SaleNo := this.GetString("SaleNo")
  1009. if SaleNo != "" {
  1010. where = where + " and SaleNo like '%" + SaleNo + "%' "
  1011. }
  1012. CKPersion := this.GetString("CKPersion")
  1013. if CKPersion != "" {
  1014. where = where + " and CKPersion like '%" + CKPersion + "%' "
  1015. }
  1016. CKDate := this.GetString("CKDate")
  1017. if CKDate != "" {
  1018. dates := strings.Split(CKDate, ",")
  1019. if len(dates) == 2 {
  1020. ValidityminDate := dates[0]
  1021. ValiditymaxDate := dates[1]
  1022. where = where + " and CKDate>='" + ValidityminDate + "' and CKDate<='" + ValiditymaxDate + "'"
  1023. }
  1024. }
  1025. CKType := this.GetString("CKType")
  1026. if CKType != "" {
  1027. where = where + " and CKType=" + CKType + " "
  1028. }
  1029. AuditorStatus := this.GetString("AuditorStatus")
  1030. if AuditorStatus != "" {
  1031. where = where + " and AuditorStatus=" + AuditorStatus + " "
  1032. }
  1033. StoreHouseId := this.GetString("StoreHouseId")
  1034. if StoreHouseId != "" {
  1035. where = where + " and StoreHouseId =" + StoreHouseId + " "
  1036. }
  1037. ReceiveId := this.GetString("ReceiveId")
  1038. if ReceiveId != "" {
  1039. where = where + " and ReceiveId =" + ReceiveId + " "
  1040. }
  1041. svc := material.GetMaterialService(utils.DBE)
  1042. var list []material.MaterialCKHead
  1043. total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
  1044. var datainfo DataInfo
  1045. datainfo.Items = list
  1046. datainfo.CurrentItemCount = total
  1047. this.Data["json"] = &datainfo
  1048. this.ServeJSON()
  1049. }
  1050. // @Title 删除出库主表信息 MaterialCKHead
  1051. // @Description
  1052. // @Success 200 {object} ErrorInfo
  1053. // @Failure 403 :id 为空
  1054. // @router /deletematerialCKhead/:id [delete]
  1055. func (this *MaterialController) MaterialCKHeadDelete() {
  1056. id := this.Ctx.Input.Param(":id")
  1057. CKNo := this.GetString("CKNo")
  1058. var errinfo ErrorInfo
  1059. if id == "" {
  1060. errinfo.Message = "操作失败!请求信息不完整"
  1061. errinfo.Code = -0
  1062. this.Data["json"] = &errinfo
  1063. this.ServeJSON()
  1064. return
  1065. }
  1066. var entity material.MaterialCKHead
  1067. var entityempty material.MaterialCKHead
  1068. opdesc := "删除出库单-" + CKNo
  1069. svc := material.GetMaterialService(utils.DBE)
  1070. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKHeadName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1071. if err == nil {
  1072. where := " CKNo='" + CKNo + "' "
  1073. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialCKDetailName, where)
  1074. }
  1075. if err == nil {
  1076. errinfo.Message = "删除成功"
  1077. errinfo.Code = 0
  1078. this.Data["json"] = &errinfo
  1079. this.ServeJSON()
  1080. } else {
  1081. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  1082. errinfo.Code = -1
  1083. this.Data["json"] = &errinfo
  1084. this.ServeJSON()
  1085. }
  1086. }
  1087. // @Title 根据出库单Id 查询出库单主信息 MaterialCKHead
  1088. // @Description get SampleType by token
  1089. // @Success 200
  1090. // @router /getmaterialCKheaddetail/:id [get]
  1091. func (this *MaterialController) GetMaterialCKHeadDetailById() {
  1092. id := this.Ctx.Input.Param(":id")
  1093. var model material.MaterialCKHead
  1094. svc := material.GetMaterialService(utils.DBE)
  1095. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialCKHeadName, id, &model)
  1096. var datainfo DataInfo
  1097. datainfo.Items = model
  1098. this.Data["json"] = &datainfo
  1099. this.ServeJSON()
  1100. }
  1101. // @Title 编辑出库主单信息 MaterialCKHead
  1102. // @Success 200 {object} controllers.Request
  1103. // @router /editmaterialCKhead/:id [put]
  1104. func (this *MaterialController) EditMaterialCKHead() {
  1105. id := this.Ctx.Input.Param(":id")
  1106. CKNo := this.GetString("CKNo")
  1107. var errinfo ErrorInfo
  1108. if id == "" {
  1109. errinfo.Message = "操作失败!请求信息不完整"
  1110. errinfo.Code = -2
  1111. this.Data["json"] = &errinfo
  1112. this.ServeJSON()
  1113. return
  1114. }
  1115. var model material.MaterialCKHead
  1116. var jsonblob = this.Ctx.Input.RequestBody
  1117. json.Unmarshal(jsonblob, &model)
  1118. var entityempty material.MaterialCKHead
  1119. svc := material.GetMaterialService(utils.DBE)
  1120. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1121. model.ModifiedBy = this.User.Realname
  1122. opdesc := "编辑出库单-" + CKNo
  1123. var cols []string = []string{"StoreHouseId", "CKType", "CKTypeName", "CKPersionId", "CKPersion", "TotalPrice", "CKDate", "SaleNo", "ReceiveId", "ReceiveName", "ReceiveUserId", "ReceiveUserBy", "Remark", "ModifiedUserId", "ModifiedBy"}
  1124. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1125. if err == nil {
  1126. errinfo.Message = "保存成功!"
  1127. errinfo.Code = 0
  1128. this.Data["json"] = &errinfo
  1129. this.ServeJSON()
  1130. } else {
  1131. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1132. errinfo.Code = -1
  1133. this.Data["json"] = &errinfo
  1134. this.ServeJSON()
  1135. }
  1136. }
  1137. // @Title 新增出库单详情信息 MaterialCKDetail
  1138. // @Description
  1139. // @Success 200 {object} controllers.Request
  1140. // @router /addmaterialCKdetail [post]
  1141. func (this *MaterialController) AddMaterialCKDetail() {
  1142. var model material.MaterialCKDetail
  1143. var jsonblob = this.Ctx.Input.RequestBody
  1144. json.Unmarshal(jsonblob, &model)
  1145. model.CreateBy = this.User.Realname
  1146. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1147. svc := material.GetMaterialService(utils.DBE)
  1148. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialCKDetailName, &model)
  1149. var errinfo ErrorDataInfo
  1150. if err == nil {
  1151. errinfo.Message = "保存成功!"
  1152. errinfo.Code = 0
  1153. errinfo.Item = model.Id
  1154. this.Data["json"] = &errinfo
  1155. this.ServeJSON()
  1156. } else {
  1157. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1158. errinfo.Code = -1
  1159. this.Data["json"] = &errinfo
  1160. this.ServeJSON()
  1161. }
  1162. }
  1163. // @Title 编辑出库单详情信息 MaterialCKDetail
  1164. // @Success 200 {object} controllers.Request
  1165. // @router /editmaterialCKdetail/:id [put]
  1166. func (this *MaterialController) EditMaterialCKDetail() {
  1167. id := this.Ctx.Input.Param(":id")
  1168. CKNo := this.GetString("CKNo")
  1169. var errinfo ErrorInfo
  1170. if id == "" {
  1171. errinfo.Message = "操作失败!请求信息不完整"
  1172. errinfo.Code = -2
  1173. this.Data["json"] = &errinfo
  1174. this.ServeJSON()
  1175. return
  1176. }
  1177. var model material.MaterialCKDetail
  1178. var jsonblob = this.Ctx.Input.RequestBody
  1179. json.Unmarshal(jsonblob, &model)
  1180. var entityempty material.MaterialCKDetail
  1181. svc := material.GetMaterialService(utils.DBE)
  1182. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1183. model.ModifiedBy = this.User.Realname
  1184. opdesc := "编辑出库单" + CKNo
  1185. var cols []string = []string{"BatchNo", "CKCount", "CKWeight", "UnitPrice", "TotalPrice", "Remark", "ModifiedUserId", "ModifiedBy"}
  1186. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKDetailName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1187. if err == nil {
  1188. errinfo.Message = "保存成功!"
  1189. errinfo.Code = 0
  1190. this.Data["json"] = &errinfo
  1191. this.ServeJSON()
  1192. } else {
  1193. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1194. errinfo.Code = -1
  1195. this.Data["json"] = &errinfo
  1196. this.ServeJSON()
  1197. }
  1198. }
  1199. // @Title 删除入库单详情信息 MaterialCKDetail
  1200. // @Description
  1201. // @Success 200 {object} ErrorInfo
  1202. // @Failure 403 :id 为空
  1203. // @router /deletematerialCKdetail/:id [delete]
  1204. func (this *MaterialController) MaterialCKDetailDelete() {
  1205. id := this.Ctx.Input.Param(":id")
  1206. CKNo := this.GetString("CKNo")
  1207. var errinfo ErrorInfo
  1208. if id == "" {
  1209. errinfo.Message = "操作失败!请求信息不完整"
  1210. errinfo.Code = -0
  1211. this.Data["json"] = &errinfo
  1212. this.ServeJSON()
  1213. return
  1214. }
  1215. var entity material.MaterialCKDetail
  1216. var entityempty material.MaterialCKDetail
  1217. opdesc := "删除出库单详情-" + CKNo
  1218. svc := material.GetMaterialService(utils.DBE)
  1219. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKDetailName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1220. if err == nil {
  1221. errinfo.Message = "删除成功"
  1222. errinfo.Code = 0
  1223. this.Data["json"] = &errinfo
  1224. this.ServeJSON()
  1225. } else {
  1226. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  1227. errinfo.Code = -1
  1228. this.Data["json"] = &errinfo
  1229. this.ServeJSON()
  1230. }
  1231. }
  1232. // @Title 根据仓库、物料类型 查询库存对应的物料 MaterialBatchKC
  1233. // @Description get user by token
  1234. // @Success 200 {object} models.Userblood
  1235. // @router /getmaterialbatchKClist [get]
  1236. func (this *MaterialController) GetMaterialBatchKCListByWhere() {
  1237. where := " 1=1 "
  1238. MaterialId := this.GetString("MaterialId")
  1239. if MaterialId != "" {
  1240. where = where + " and a.MaterialId = " + MaterialId
  1241. }
  1242. Category := this.GetString("Category")
  1243. if Category != "" {
  1244. where = where + " and b.Category = " + Category
  1245. }
  1246. StoreHouseId := this.GetString("StoreHouseId")
  1247. if StoreHouseId != "" {
  1248. where = where + " and a.StoreHouseId = " + StoreHouseId
  1249. }
  1250. BatchNo := this.GetString("BatchNo")
  1251. if BatchNo != "" {
  1252. where = where + " and a.BatchNo = '" + BatchNo + "' "
  1253. }
  1254. Name := this.GetString("Name")
  1255. if Name != "" {
  1256. where = where + " and (b.Name like '%" + Name + "%' or b.Symbol like '%" + Name + "%') "
  1257. }
  1258. Brand := this.GetString("Brand")
  1259. if Brand != "" {
  1260. where = where + " and b.Brand like '%" + Brand + "%' "
  1261. }
  1262. Supplier := this.GetString("Supplier")
  1263. if Supplier != "" {
  1264. where = where + " and b.Supplier like '%" + Supplier + "%' "
  1265. }
  1266. svc := material.GetMaterialService(utils.DBE)
  1267. list := svc.GetMaterialBatchKCByWhere(this.User.AccCode+MaterialBatchKCName, this.User.AccCode+MaterialInfoName, "Id desc", where)
  1268. var datainfo DataInfo
  1269. datainfo.Items = list
  1270. this.Data["json"] = &datainfo
  1271. this.ServeJSON()
  1272. }
  1273. // @Title 根据出库单号,查询出库单详情 MaterialCKDetail
  1274. // @Description get user by token
  1275. // @Success 200 {object} models.Userblood
  1276. // @router /getCKdetaillistbyCKNo/:CKNo [get]
  1277. func (this *MaterialController) GetCKDetailListByCKNo() {
  1278. page := this.GetPageInfoForm()
  1279. CKNo := this.Ctx.Input.Param(":CKNo")
  1280. where := " a.CKNo= '" + CKNo + "' "
  1281. svc := material.GetMaterialService(utils.DBE)
  1282. total, list := svc.GetPagingMaterialCKDetailByWhere(this.User.AccCode+MaterialCKDetailName, this.User.AccCode+MaterialInfoName, page.CurrentPage, page.Size, " a.CreateOn desc ", where)
  1283. var datainfo DataInfo
  1284. datainfo.Items = list
  1285. datainfo.CurrentItemCount = total
  1286. this.Data["json"] = &datainfo
  1287. this.ServeJSON()
  1288. }
  1289. // @Title 出库单审核 MaterialCKHead
  1290. // @Success 200 {object} controllers.Request
  1291. // @router /auditorCKhead/:id [put]
  1292. func (this *MaterialController) AuditorCKHeadById() {
  1293. id := this.Ctx.Input.Param(":id")
  1294. CKNo := this.GetString("CKNo")
  1295. var errinfo ErrorInfo
  1296. if id == "" {
  1297. errinfo.Message = "操作失败!请求信息不完整"
  1298. errinfo.Code = -2
  1299. this.Data["json"] = &errinfo
  1300. this.ServeJSON()
  1301. return
  1302. }
  1303. var model material.MaterialCKHead
  1304. var jsonblob = this.Ctx.Input.RequestBody
  1305. json.Unmarshal(jsonblob, &model)
  1306. var entityempty material.MaterialCKHead
  1307. svc := material.GetMaterialService(utils.DBE)
  1308. //判断物料库存是否充足
  1309. where_CKNo := " a.CKNo='" + CKNo + "' "
  1310. materialjudgment := svc.GetMaterialBatchKCCount(this.User.AccCode+MaterialCKDetailName, this.User.AccCode+MaterialBatchKCName, this.User.AccCode+MaterialInfoName, utils.ToStr(model.StoreHouseId), where_CKNo)
  1311. if materialjudgment.MaterialName != "" {
  1312. errinfo.Message = materialjudgment.MaterialName + ",库存不足"
  1313. errinfo.Code = -3
  1314. this.Data["json"] = &errinfo
  1315. this.ServeJSON()
  1316. return
  1317. }
  1318. model.AuditorOn = time.Now()
  1319. model.AuditorUserId, _ = utils.StrTo(this.User.Id).Int()
  1320. model.AuditorBy = this.User.Realname
  1321. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1322. model.ModifiedBy = this.User.Realname
  1323. opdesc := "审核出库单" + CKNo
  1324. var cols []string = []string{"StoreHouseId", "CKType", "CKTypeName", "CKPersionId", "CKPersion",
  1325. "TotalPrice", "CKDate", "SaleNo", "ReceiveId", "ReceiveName", "ReceiveUserId", "ReceiveUserBy",
  1326. "AuditorStatus", "AuditorOn", "AuditorUserId", "AuditorBy", "Remark", "ModifiedUserId", "ModifiedBy"}
  1327. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1328. if err == nil {
  1329. var ckhead material.MaterialCKHead
  1330. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialCKHeadName, id, &ckhead)
  1331. if ckhead.CKType == 3 && ckhead.ReceiveId != 0 { //出库类型为调拨入库,生成入库信息并更改库存
  1332. this.MaterialYKOperation(CKNo, utils.ToStr(model.StoreHouseId), id)
  1333. } else {
  1334. this.SubMaterialBatchKC(CKNo, utils.ToStr(model.StoreHouseId))
  1335. }
  1336. //删除库存为零的数据
  1337. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialBatchKCName, "KCCount=0")
  1338. }
  1339. if err == nil {
  1340. errinfo.Message = "审核成功!"
  1341. errinfo.Code = 0
  1342. this.Data["json"] = &errinfo
  1343. this.ServeJSON()
  1344. } else {
  1345. errinfo.Message = "审核失败!" + utils.AlertProcess(err.Error())
  1346. errinfo.Code = -1
  1347. this.Data["json"] = &errinfo
  1348. this.ServeJSON()
  1349. }
  1350. }
  1351. //出库单审核通过后修改库存信息 MaterialBatchKC
  1352. func (this *MaterialController) SubMaterialBatchKC(CKNo string, StoreHouseId string) {
  1353. where_CKNo := " CKNo='" + CKNo + "' "
  1354. var ckdetail []material.MaterialCKDetail
  1355. svc := material.GetMaterialService(utils.DBE)
  1356. //根据出库单号,获取出库详情表 MaterialCKDetail
  1357. svc.GetEntitysByWhere(this.User.AccCode+MaterialCKDetailName, where_CKNo, &ckdetail)
  1358. for i := 0; i < len(ckdetail); i++ {
  1359. where_kcinfo := " StoreHouseId=" + StoreHouseId + " and MaterialId=" + utils.ToStr(ckdetail[i].MaterialId) + " and BatchNo='" + ckdetail[i].BatchNo + "' "
  1360. svc.UpdatesubKCinfo(this.User.AccCode+MaterialBatchKCName, where_kcinfo, utils.ToStr(ckdetail[i].CKCount))
  1361. where_materialid := " Id=" + utils.ToStr(ckdetail[i].MaterialId)
  1362. svc.UpdatesubKCinfo(this.User.AccCode+MaterialInfoName, where_materialid, utils.ToStr(ckdetail[i].CKCount))
  1363. }
  1364. }
  1365. //调拨出库,出库单审核后生成入库单信息,并修改库存
  1366. func (this *MaterialController) MaterialYKOperation(CKNo, StoreHouseId, CKId string) {
  1367. svc := material.GetMaterialService(utils.DBE)
  1368. var ckhead material.MaterialCKHead
  1369. var storehouse materialstorehouse.MaterialStoreHouse
  1370. //出库主信息
  1371. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialCKHeadName, CKId, &ckhead)
  1372. //出库仓库信息
  1373. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialStoreHouseName, ckhead.StoreHouseId, &storehouse)
  1374. where_CKNo := " CKNo='" + CKNo + "' "
  1375. var ckdetail []material.MaterialCKDetail
  1376. //根据出库单号,获取出库详情表 MaterialCKDetail
  1377. svc.GetEntitysByWhere(this.User.AccCode+MaterialCKDetailName, where_CKNo, &ckdetail)
  1378. //------生成入库主单信息------------
  1379. var rkhead material.MaterialRKHead
  1380. rkhead.RKNo = utils.ToStr(GetRandomOrderNum())
  1381. rkhead.StoreHouseId = ckhead.ReceiveId
  1382. rkhead.RKType = 3
  1383. rkhead.RKTypeName = "调拨入库"
  1384. rkhead.TotalPrice = ckhead.TotalPrice
  1385. rkhead.RKDate = time.Now()
  1386. rkhead.RKPersionId = ckhead.CKPersionId
  1387. rkhead.RKPersion = ckhead.CKPersion
  1388. rkhead.SourceId = ckhead.StoreHouseId
  1389. rkhead.SourceName = storehouse.Name
  1390. rkhead.AuditorStatus = 1
  1391. rkhead.AuditorUserId, _ = utils.StrTo(this.User.Id).Int()
  1392. rkhead.AuditorBy = this.User.Realname
  1393. rkhead.Remark = "出库单号:" + CKNo
  1394. rkhead.CreateBy = this.User.Realname
  1395. rkhead.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1396. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialRKHeadName, &rkhead)
  1397. //-----生成入库详情信息--------------
  1398. for i := 0; i < len(ckdetail); i++ {
  1399. var kcinfo material.MaterialBatchKC
  1400. var rkdetail material.MaterialRKDetail
  1401. where_kcinfo := " StoreHouseId=" + StoreHouseId + " and MaterialId=" + utils.ToStr(ckdetail[i].MaterialId) + " and BatchNo='" + ckdetail[i].BatchNo + "' "
  1402. svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_kcinfo, &kcinfo)
  1403. rkdetail.RKNo = rkhead.RKNo
  1404. rkdetail.MaterialId = ckdetail[i].MaterialId
  1405. rkdetail.BatchNo = ckdetail[i].BatchNo
  1406. rkdetail.RKCount = utils.ToStr(ckdetail[i].CKCount)
  1407. rkdetail.Unit = ckdetail[i].Unit
  1408. rkdetail.UnitPrice = ckdetail[i].UnitPrice
  1409. rkdetail.TotalPrice = ckdetail[i].TotalPrice
  1410. rkdetail.ProductDate = kcinfo.ProductDate
  1411. rkdetail.ValidityDate = kcinfo.ValidityDate
  1412. rkdetail.Remark = ckdetail[i].Remark
  1413. rkdetail.CreateBy = this.User.Realname
  1414. rkdetail.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1415. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialRKDetailName, &rkdetail)
  1416. //执行出库操作
  1417. svc.UpdatesubKCinfo(this.User.AccCode+MaterialBatchKCName, where_kcinfo, utils.ToStr(ckdetail[i].CKCount))
  1418. }
  1419. //---------执行入库------------
  1420. var rkdetails []material.MaterialRKDetail
  1421. var batchkc material.MaterialBatchKC
  1422. where_RKNo := " RKNo='" + rkhead.RKNo + "' "
  1423. //根据入库单查询入库详情
  1424. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKDetailName, where_RKNo, &rkdetails)
  1425. for i := 0; i < len(rkdetails); i++ {
  1426. where_BatchKC := " StoreHouseId=" + utils.ToStr(rkhead.StoreHouseId) + " and MaterialId=" + utils.ToStr(rkdetails[i].MaterialId) + " and BatchNo='" + rkdetails[i].BatchNo + "' "
  1427. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_BatchKC, &batchkc)
  1428. if has {
  1429. rkcount, _ := utils.StrTo(rkdetails[i].RKCount).Float32()
  1430. batchkc.KCCount = batchkc.KCCount + rkcount
  1431. batchkc.RKDate = rkhead.RKDate
  1432. batchkc.ProductDate = rkdetails[i].ProductDate
  1433. batchkc.ValidityDate = rkdetails[i].ValidityDate
  1434. batchkc.Price = rkdetails[i].UnitPrice
  1435. batchkc.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1436. batchkc.ModifiedBy = this.User.Realname
  1437. var entityempty material.MaterialBatchKC
  1438. opdesc := "新增库存" + rkdetails[i].BatchNo
  1439. var cols []string = []string{"KCCount", "RKDate", "ProductDate", "ValidityDate", "Price", "ModifiedUserId", "ModifiedBy"}
  1440. _ = svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialBatchKCName, BaseOperationLogName, batchkc.Id, &batchkc, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1441. } else {
  1442. batchkc.StoreHouseId = rkhead.StoreHouseId
  1443. batchkc.MaterialId = rkdetails[i].MaterialId
  1444. batchkc.BatchNo = utils.ToStr(rkdetails[i].BatchNo)
  1445. batchkc.KCCount, _ = utils.StrTo(rkdetails[i].RKCount).Float32()
  1446. batchkc.RKDate = rkhead.RKDate
  1447. batchkc.ProductDate = rkdetails[i].ProductDate
  1448. batchkc.ValidityDate = rkdetails[i].ValidityDate
  1449. batchkc.Price = rkdetails[i].UnitPrice
  1450. batchkc.Remark = rkdetails[i].Remark
  1451. batchkc.CreateBy = this.User.Realname
  1452. batchkc.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1453. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialBatchKCName, &batchkc)
  1454. }
  1455. batchkc = material.MaterialBatchKC{}
  1456. }
  1457. var model material.MaterialCKHead
  1458. var entityempty material.MaterialCKHead
  1459. model.Remark = ckhead.Remark + " 入库单号:" + rkhead.RKNo
  1460. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1461. model.ModifiedBy = this.User.Realname
  1462. opdesc := "编辑出库单" + CKNo
  1463. var cols []string = []string{"Remark", "ModifiedUserId", "ModifiedBy"}
  1464. _ = svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKHeadName, BaseOperationLogName, CKId, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1465. }
  1466. // @Title 出库单审核撤销 MaterialCKHead
  1467. // @Success 200 {object} controllers.Request
  1468. // @router /cancelCKhead/:id [put]
  1469. func (this *MaterialController) CancelCKHeadById() {
  1470. id := this.Ctx.Input.Param(":id")
  1471. CKNo := this.GetString("CKNo")
  1472. var errinfo ErrorInfo
  1473. if id == "" {
  1474. errinfo.Message = "操作失败!请求信息不完整"
  1475. errinfo.Code = -2
  1476. this.Data["json"] = &errinfo
  1477. this.ServeJSON()
  1478. return
  1479. }
  1480. var model material.MaterialCKHead
  1481. var jsonblob = this.Ctx.Input.RequestBody
  1482. json.Unmarshal(jsonblob, &model)
  1483. var entityempty material.MaterialCKHead
  1484. svc := material.GetMaterialService(utils.DBE)
  1485. model.AuditorOn = time.Now()
  1486. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1487. model.ModifiedBy = this.User.Realname
  1488. opdesc := "撤销审核出库单" + CKNo
  1489. var cols []string = []string{"AuditorStatus", "AuditorOn", "ModifiedUserId", "ModifiedBy"}
  1490. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialCKHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1491. if err == nil {
  1492. if model.CKType == 3 && model.ReceiveId != 0 { //出库类型为调拨入库,生成入库信息并更改库存
  1493. this.CancelYKOperation(CKNo, utils.ToStr(model.StoreHouseId), id)
  1494. } else {
  1495. this.SubCancelBatchKC(CKNo, utils.ToStr(model.StoreHouseId), id)
  1496. }
  1497. //删除库存为零的数据
  1498. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialBatchKCName, "KCCount=0")
  1499. }
  1500. if err == nil {
  1501. errinfo.Message = "审核成功!"
  1502. errinfo.Code = 0
  1503. this.Data["json"] = &errinfo
  1504. this.ServeJSON()
  1505. } else {
  1506. errinfo.Message = "审核失败!" + utils.AlertProcess(err.Error())
  1507. errinfo.Code = -1
  1508. this.Data["json"] = &errinfo
  1509. this.ServeJSON()
  1510. }
  1511. }
  1512. //调拨出库,出库单审核撤销后删除入库单信息,并修改库存
  1513. func (this *MaterialController) CancelYKOperation(CKNo, StoreHouseId, CKId string) {
  1514. svc := material.GetMaterialService(utils.DBE)
  1515. var ckhead material.MaterialCKHead
  1516. //出库主信息
  1517. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialCKHeadName, CKId, &ckhead)
  1518. //根据出库单号,获取出库详情表 MaterialCKDetail
  1519. var ckdetail []material.MaterialCKDetail
  1520. where_CKNo := " CKNo='" + CKNo + "' "
  1521. svc.GetEntitysByWhere(this.User.AccCode+MaterialCKDetailName, where_CKNo, &ckdetail)
  1522. var rkhead []material.MaterialRKHead
  1523. where_rk := "RKType = 3 and Remark like '%" + CKNo + "%'"
  1524. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKHeadName, where_rk, &rkhead)
  1525. if len(rkhead) == 1 {
  1526. var rkdetail []material.MaterialRKDetail
  1527. where_rkdetail := "RKNo = " + rkhead[0].RKNo
  1528. svc.GetEntitysByWhere(this.User.AccCode+MaterialRKDetailName, where_rkdetail, &rkdetail)
  1529. fmt.Println("333333333333333333333", &rkdetail)
  1530. //------删除入库主单信息------------
  1531. where_head := "Id = " + strconv.Itoa(rkhead[0].Id)
  1532. svc.DeleteEntityBytbl(this.User.AccCode+MaterialRKHeadName, where_head)
  1533. //-----删除入库详情信息--------------
  1534. for i := 0; i < len(rkdetail); i++ {
  1535. where_detail := "Id = " + strconv.Itoa(rkdetail[i].Id)
  1536. svc.DeleteEntityBytbl(this.User.AccCode+MaterialRKDetailName, where_detail)
  1537. //撤销生成的入库单的新增库存
  1538. var batchkc material.MaterialBatchKC
  1539. where_BatchRK := " StoreHouseId=" + strconv.Itoa(rkhead[0].StoreHouseId) + " and MaterialId=" + strconv.Itoa(rkdetail[i].MaterialId) + " and BatchNo='" + rkdetail[i].BatchNo + "' "
  1540. svc.UpdatesubKCinfo(this.User.AccCode+MaterialBatchKCName, where_BatchRK, rkdetail[i].RKCount)
  1541. //还原出库减少的库存
  1542. where_BatchCK := " StoreHouseId=" + StoreHouseId + " and MaterialId=" + strconv.Itoa(ckdetail[i].MaterialId) + " and BatchNo='" + ckdetail[i].BatchNo + "' "
  1543. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_BatchCK, &batchkc)
  1544. fmt.Println("wwwwwwwwwwwwwwwww", &batchkc)
  1545. if has {
  1546. svc.UpdateaddKCinfo(this.User.AccCode+MaterialBatchKCName, where_BatchCK, utils.ToStr(ckdetail[i].CKCount))
  1547. } else {
  1548. batchkc.StoreHouseId = ckhead.StoreHouseId
  1549. batchkc.MaterialId = ckdetail[i].MaterialId
  1550. batchkc.BatchNo = utils.ToStr(ckdetail[i].BatchNo)
  1551. batchkc.KCCount = ckdetail[i].CKCount
  1552. batchkc.RKDate = rkhead[0].RKDate
  1553. batchkc.ProductDate = rkdetail[i].ProductDate
  1554. batchkc.ValidityDate = rkdetail[i].ValidityDate
  1555. batchkc.Price = ckdetail[i].UnitPrice
  1556. batchkc.CreateBy = this.User.Realname
  1557. batchkc.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1558. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialBatchKCName, &batchkc)
  1559. }
  1560. //删除库存为零的数据
  1561. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialBatchKCName, "KCCount=0")
  1562. }
  1563. }
  1564. }
  1565. //撤销出库单审核后修改库存信息 MaterialBatchKC
  1566. func (this *MaterialController) SubCancelBatchKC(CKNo, StoreHouseId, CKId string) {
  1567. where_CKNo := " CKNo='" + CKNo + "' "
  1568. var ckhead material.MaterialCKHead
  1569. var ckdetail []material.MaterialCKDetail
  1570. svc := material.GetMaterialService(utils.DBE)
  1571. //根据出库单号,获取出库详情表 MaterialCKDetail
  1572. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialCKHeadName, CKId, &ckhead)
  1573. svc.GetEntitysByWhere(this.User.AccCode+MaterialCKDetailName, where_CKNo, &ckdetail)
  1574. for i := 0; i < len(ckdetail); i++ {
  1575. where_materialid := " Id=" + utils.ToStr(ckdetail[i].MaterialId)
  1576. svc.UpdateaddKCinfo(this.User.AccCode+MaterialInfoName, where_materialid, utils.ToStr(ckdetail[i].CKCount))
  1577. var batchkc material.MaterialBatchKC
  1578. where_BatchKC := " StoreHouseId=" + StoreHouseId + " and MaterialId=" + utils.ToStr(ckdetail[i].MaterialId) + " and BatchNo='" + ckdetail[i].BatchNo + "' "
  1579. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_BatchKC, &batchkc)
  1580. if has {
  1581. svc.UpdateaddKCinfo(this.User.AccCode+MaterialBatchKCName, where_BatchKC, utils.ToStr(ckdetail[i].CKCount))
  1582. } else {
  1583. batchkc.StoreHouseId, _ = utils.StrTo(StoreHouseId).Int()
  1584. batchkc.MaterialId = ckdetail[i].MaterialId
  1585. batchkc.BatchNo = utils.ToStr(ckdetail[i].BatchNo)
  1586. batchkc.KCCount = ckdetail[i].CKCount
  1587. batchkc.RKDate = ckhead.CKDate
  1588. //batchkc.ProductDate = ckdetail[i].ProductDate
  1589. //batchkc.ValidityDate = ckdetail[i].ValidityDate
  1590. batchkc.Price = ckdetail[i].UnitPrice
  1591. batchkc.CreateBy = this.User.Realname
  1592. batchkc.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1593. _, _ = svc.InsertEntityBytbl(this.User.AccCode+MaterialBatchKCName, &batchkc)
  1594. }
  1595. }
  1596. }
  1597. // @Title 新增盘点单主信息 MaterialPDHead
  1598. // @Description
  1599. // @Success 200 {object} controllers.Request
  1600. // @router /addmaterialPDhead [post]
  1601. func (this *MaterialController) AddMaterialPDHead() {
  1602. var model material.MaterialPDHead
  1603. var jsonblob = this.Ctx.Input.RequestBody
  1604. json.Unmarshal(jsonblob, &model)
  1605. model.CreateBy = this.User.Realname
  1606. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1607. svc := material.GetMaterialService(utils.DBE)
  1608. _, err := svc.InsertEntityBytbl(this.User.AccCode+MaterialPDHeadName, &model)
  1609. var errinfo ErrorDataInfo
  1610. if err == nil {
  1611. errinfo.Message = "保存成功!"
  1612. errinfo.Code = 0
  1613. errinfo.Item = model.Id
  1614. this.Data["json"] = &errinfo
  1615. this.ServeJSON()
  1616. } else {
  1617. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1618. errinfo.Code = -1
  1619. this.Data["json"] = &errinfo
  1620. this.ServeJSON()
  1621. }
  1622. }
  1623. // @Title 盘点主信息列表 MaterialPDHead
  1624. // @Description get user by token
  1625. // @Success 200 {object} models.Userblood
  1626. // @router /getPDheadlist [get]
  1627. func (this *MaterialController) GetMaterialPDHeadList() {
  1628. page := this.GetPageInfoForm()
  1629. where := " 1=1 "
  1630. orderby := "Id"
  1631. asc := false
  1632. Order := this.GetString("Order")
  1633. Prop := this.GetString("Prop")
  1634. if Order != "" && Prop != "" {
  1635. orderby = Prop
  1636. if orderby == "StoreHouseName" {
  1637. orderby = "StoreHouseId"
  1638. }
  1639. if Order == "asc" {
  1640. asc = true
  1641. }
  1642. }
  1643. PDNo := this.GetString("PDNo")
  1644. if PDNo != "" {
  1645. where = where + " and PDNo like '%" + PDNo + "%' "
  1646. }
  1647. PDPersion := this.GetString("PDPersion")
  1648. if PDPersion != "" {
  1649. where = where + " and PDPersion like '%" + PDPersion + "%' "
  1650. }
  1651. PDDate := this.GetString("PDDate")
  1652. if PDDate != "" {
  1653. dates := strings.Split(PDDate, ",")
  1654. if len(dates) == 2 {
  1655. PDminDate := dates[0]
  1656. PDmaxDate := dates[1]
  1657. where = where + " and PDDate>='" + PDminDate + "' and PDDate<='" + PDmaxDate + "'"
  1658. }
  1659. }
  1660. AuditorStatus := this.GetString("AuditorStatus")
  1661. if AuditorStatus != "" {
  1662. where = where + " and AuditorStatus=" + AuditorStatus + " "
  1663. }
  1664. StoreHouseId := this.GetString("StoreHouseId")
  1665. if StoreHouseId != "" {
  1666. where = where + " and StoreHouseId =" + StoreHouseId + " "
  1667. }
  1668. svc := material.GetMaterialService(utils.DBE)
  1669. var list []material.MaterialPDHead
  1670. total := svc.GetPagingEntitiesWithOrderBytbl(this.User.AccCode, page.CurrentPage, page.Size, orderby, asc, &list, where)
  1671. var datainfo DataInfo
  1672. datainfo.Items = list
  1673. datainfo.CurrentItemCount = total
  1674. this.Data["json"] = &datainfo
  1675. this.ServeJSON()
  1676. }
  1677. // @Title 删除盘点主表信息 MaterialPDHead
  1678. // @Description
  1679. // @Success 200 {object} ErrorInfo
  1680. // @Failure 403 :id 为空
  1681. // @router /deletematerialPDhead/:id [delete]
  1682. func (this *MaterialController) MaterialPDHeadDelete() {
  1683. id := this.Ctx.Input.Param(":id")
  1684. PDNo := this.GetString("PDNo")
  1685. var errinfo ErrorInfo
  1686. if id == "" {
  1687. errinfo.Message = "操作失败!请求信息不完整"
  1688. errinfo.Code = -0
  1689. this.Data["json"] = &errinfo
  1690. this.ServeJSON()
  1691. return
  1692. }
  1693. var entity material.MaterialPDHead
  1694. var entityempty material.MaterialPDHead
  1695. opdesc := "删除盘点单-" + PDNo
  1696. svc := material.GetMaterialService(utils.DBE)
  1697. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialPDHeadName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1698. if err == nil {
  1699. where := " PDNo=" + PDNo
  1700. _ = svc.DeleteEntityBytbl(this.User.AccCode+MaterialPDDetailName, where)
  1701. }
  1702. if err == nil {
  1703. errinfo.Message = "删除成功"
  1704. errinfo.Code = 0
  1705. this.Data["json"] = &errinfo
  1706. this.ServeJSON()
  1707. } else {
  1708. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  1709. errinfo.Code = -1
  1710. this.Data["json"] = &errinfo
  1711. this.ServeJSON()
  1712. }
  1713. }
  1714. // @Title 根据盘点单Id 查询盘点单主信息 MaterialPDHead
  1715. // @Description get SampleType by token
  1716. // @Success 200
  1717. // @router /getmaterialPDheaddetail/:id [get]
  1718. func (this *MaterialController) GetMaterialPDHeadDetailById() {
  1719. id := this.Ctx.Input.Param(":id")
  1720. var model material.MaterialPDHead
  1721. svc := material.GetMaterialService(utils.DBE)
  1722. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialPDHeadName, id, &model)
  1723. var datainfo DataInfo
  1724. datainfo.Items = model
  1725. this.Data["json"] = &datainfo
  1726. this.ServeJSON()
  1727. }
  1728. // @Title 编辑盘点主单信息 MaterialPDHead
  1729. // @Success 200 {object} controllers.Request
  1730. // @router /editmaterialPDhead/:id [put]
  1731. func (this *MaterialController) EditMaterialPDHead() {
  1732. id := this.Ctx.Input.Param(":id")
  1733. PDNo := this.GetString("PDNo")
  1734. var errinfo ErrorInfo
  1735. if id == "" {
  1736. errinfo.Message = "操作失败!请求信息不完整"
  1737. errinfo.Code = -2
  1738. this.Data["json"] = &errinfo
  1739. this.ServeJSON()
  1740. return
  1741. }
  1742. var model material.MaterialPDHead
  1743. var jsonblob = this.Ctx.Input.RequestBody
  1744. json.Unmarshal(jsonblob, &model)
  1745. var entityempty material.MaterialPDHead
  1746. svc := material.GetMaterialService(utils.DBE)
  1747. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1748. model.ModifiedBy = this.User.Realname
  1749. opdesc := "编辑盘点单" + PDNo
  1750. var cols []string = []string{"PDDate", "StoreHouseId", "ShelfNo", "PDPersionId", "PDPersion", "Remark", "ModifiedUserId", "ModifiedBy"}
  1751. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialPDHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1752. if err == nil {
  1753. errinfo.Message = "保存成功!"
  1754. errinfo.Code = 0
  1755. this.Data["json"] = &errinfo
  1756. this.ServeJSON()
  1757. } else {
  1758. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1759. errinfo.Code = -1
  1760. this.Data["json"] = &errinfo
  1761. this.ServeJSON()
  1762. }
  1763. }
  1764. // @Title 新增盘点单详情,如果存在执行编辑操作 MaterialPDDetail
  1765. // @Description
  1766. // @Success 200 {object} controllers.Request
  1767. // @router /addmaterialPDdetail [post]
  1768. func (this *MaterialController) AddMaterialPDDetail() {
  1769. var model material.MaterialPDDetail
  1770. var entity material.MaterialPDDetail
  1771. var jsonblob = this.Ctx.Input.RequestBody
  1772. var err error
  1773. json.Unmarshal(jsonblob, &model)
  1774. svc := material.GetMaterialService(utils.DBE)
  1775. where := " PDNo='" + model.PDNo + "' and MaterialId=" + utils.ToStr(model.MaterialId) + " and BatchNo='" + model.BatchNo + "' "
  1776. svc.GetEntityByWhere(this.User.AccCode+MaterialPDDetailName, where, &entity)
  1777. if entity.Id > 0 {
  1778. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1779. model.ModifiedBy = this.User.Realname
  1780. var cols []string = []string{"Unit", "KCCount", "RealKCCount", "DiffCount", "Remark", "ModifiedUserId", "ModifiedBy"}
  1781. err = svc.UpdateSample(this.User.AccCode+MaterialPDDetailName, entity.Id, &model, cols)
  1782. } else {
  1783. model.CreateBy = this.User.Realname
  1784. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  1785. _, err = svc.InsertEntityBytbl(this.User.AccCode+MaterialPDDetailName, &model)
  1786. }
  1787. var errinfo ErrorDataInfo
  1788. if err == nil {
  1789. errinfo.Message = "保存成功!"
  1790. errinfo.Code = 0
  1791. errinfo.Item = model.Id
  1792. this.Data["json"] = &errinfo
  1793. this.ServeJSON()
  1794. } else {
  1795. errinfo.Message = "保存失败!" + utils.AlertProcess(err.Error())
  1796. errinfo.Code = -1
  1797. this.Data["json"] = &errinfo
  1798. this.ServeJSON()
  1799. }
  1800. }
  1801. // @Title 根据盘点单号,查询盘点单详情 MaterialPDDetail
  1802. // @Description get user by token
  1803. // @Success 200 {object} models.Userblood
  1804. // @router /getpagingPDdetaillistbyPDNo/:PDNo [get]
  1805. func (this *MaterialController) GetPagingPDDetailListByCKNo() {
  1806. page := this.GetPageInfoForm()
  1807. PDNo := this.Ctx.Input.Param(":PDNo")
  1808. where := " a.PDNo='" + PDNo + "' "
  1809. svc := material.GetMaterialService(utils.DBE)
  1810. total, list := svc.GetPagingMaterialPDDetailByWhere(this.User.AccCode+MaterialPDDetailName, this.User.AccCode+MaterialInfoName, page.CurrentPage, page.Size, " a.Id desc ", where)
  1811. var datainfo DataInfo
  1812. datainfo.Items = list
  1813. datainfo.CurrentItemCount = total
  1814. this.Data["json"] = &datainfo
  1815. this.ServeJSON()
  1816. }
  1817. // @Title 删除盘点单详情信息 MaterialPDDetail
  1818. // @Description
  1819. // @Success 200 {object} ErrorInfo
  1820. // @Failure 403 :id 为空
  1821. // @router /deletematerialPDdetail/:id [delete]
  1822. func (this *MaterialController) MaterialPDDetailDelete() {
  1823. id := this.Ctx.Input.Param(":id")
  1824. PDNo := this.GetString("PDNo")
  1825. var errinfo ErrorInfo
  1826. if id == "" {
  1827. errinfo.Message = "操作失败!请求信息不完整"
  1828. errinfo.Code = -2
  1829. this.Data["json"] = &errinfo
  1830. this.ServeJSON()
  1831. return
  1832. }
  1833. var entity material.MaterialPDDetail
  1834. var entityempty material.MaterialPDDetail
  1835. opdesc := "删除盘点单详情-" + PDNo
  1836. svc := material.GetMaterialService(utils.DBE)
  1837. err := svc.DeleteOperationAndWriteLogBytbl(this.User.AccCode+MaterialPDDetailName, BaseOperationLogName, id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1838. if err == nil {
  1839. errinfo.Message = "删除成功"
  1840. errinfo.Code = 0
  1841. this.Data["json"] = &errinfo
  1842. this.ServeJSON()
  1843. } else {
  1844. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  1845. errinfo.Code = -1
  1846. this.Data["json"] = &errinfo
  1847. this.ServeJSON()
  1848. }
  1849. }
  1850. // @Title 查询盘点单库存列表 MaterialBatchKC
  1851. // @Description get user by token
  1852. // @Success 200 {object} models.Userblood
  1853. // @router /materialKCandPDlist [get]
  1854. func (this *MaterialController) MaterialKCAndPDlist() {
  1855. page := this.GetPageInfoForm()
  1856. PDNo := this.GetString("PDNo")
  1857. where := " 1=1 "
  1858. BatchNo := this.GetString("BatchNo")
  1859. if BatchNo != "" {
  1860. where = where + " and a.BatchNo like '%" + BatchNo + "%' "
  1861. }
  1862. Code := this.GetString("Code")
  1863. if Code != "" {
  1864. where = where + " and b.Code like '%" + Code + "%' "
  1865. }
  1866. Name := this.GetString("Name")
  1867. if Name != "" {
  1868. where = where + " and (b.Name like '%" + Name + "%' or b.Symbol like '%" + Name + "%') "
  1869. }
  1870. Category := this.GetString("Category")
  1871. if Category != "" {
  1872. where = where + " and b.Category= " + Category
  1873. }
  1874. Brand := this.GetString("Brand")
  1875. if Brand != "" {
  1876. where = where + " and b.Brand like '%" + Brand + "%' "
  1877. }
  1878. Supplier := this.GetString("Supplier")
  1879. if Supplier != "" {
  1880. where = where + " and b.Supplier like '%" + Supplier + "%' "
  1881. }
  1882. StoreHouseId := this.GetString("StoreHouseId")
  1883. if StoreHouseId != "" {
  1884. where = where + " and a.StoreHouseId =" + StoreHouseId + " "
  1885. }
  1886. svc := material.GetMaterialService(utils.DBE)
  1887. total, list := svc.GetPagingMaterialKCAndPDinfoByWhere(this.User.AccCode+MaterialBatchKCName, this.User.AccCode+MaterialInfoName, this.User.AccCode+MaterialPDDetailName, page.CurrentPage, page.Size, " a.Id desc ", PDNo, where)
  1888. var datainfo DataInfo
  1889. datainfo.Items = list
  1890. datainfo.CurrentItemCount = total
  1891. this.Data["json"] = &datainfo
  1892. this.ServeJSON()
  1893. }
  1894. // @Title 盘点单审核 MaterialPDHead
  1895. // @Success 200 {object} controllers.Request
  1896. // @router /auditorPDhead/:id [put]
  1897. func (this *MaterialController) AuditorPDHeadById() {
  1898. id := this.Ctx.Input.Param(":id")
  1899. PDNo := this.GetString("PDNo")
  1900. var errinfo ErrorInfo
  1901. if id == "" {
  1902. errinfo.Message = "操作失败!请求信息不完整"
  1903. errinfo.Code = -2
  1904. this.Data["json"] = &errinfo
  1905. this.ServeJSON()
  1906. return
  1907. }
  1908. var model material.MaterialPDHead
  1909. var jsonblob = this.Ctx.Input.RequestBody
  1910. json.Unmarshal(jsonblob, &model)
  1911. var entityempty material.MaterialPDHead
  1912. svc := material.GetMaterialService(utils.DBE)
  1913. model.AuditorOn = time.Now()
  1914. model.AuditorUserId, _ = utils.StrTo(this.User.Id).Int()
  1915. model.AuditorBy = this.User.Realname
  1916. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  1917. model.ModifiedBy = this.User.Realname
  1918. opdesc := "审核盘点单-" + PDNo
  1919. var cols []string = []string{"PDDate", "StoreHouseId", "ShelfNo", "PDPersionId", "PDPersion",
  1920. "AuditorStatus", "AuditorOn", "AuditorUserId", "AuditorBy", "Remark", "ModifiedUserId", "ModifiedBy"}
  1921. err := svc.UpdateOperationAndWriteLogBytbl(this.User.AccCode+MaterialPDHeadName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "物料管理")
  1922. if err == nil {
  1923. this.ChangeMaterialBatchKC(PDNo, utils.ToStr(model.StoreHouseId))
  1924. }
  1925. if err == nil {
  1926. errinfo.Message = "审核成功!"
  1927. errinfo.Code = 0
  1928. this.Data["json"] = &errinfo
  1929. this.ServeJSON()
  1930. } else {
  1931. errinfo.Message = "审核失败!" + utils.AlertProcess(err.Error())
  1932. errinfo.Code = -1
  1933. this.Data["json"] = &errinfo
  1934. this.ServeJSON()
  1935. }
  1936. }
  1937. //盘点单审核通过后,修改库存信息 MaterialBatchKC
  1938. func (this *MaterialController) ChangeMaterialBatchKC(PDNo string, StoreHouseId string) {
  1939. where_PDNo := " PDNo='" + PDNo + "' "
  1940. var pddetail []material.MaterialPDDetail
  1941. svc := material.GetMaterialService(utils.DBE)
  1942. //根据出库单号,获取盘点详情表 MaterialPDDetail
  1943. svc.GetEntitysByWhere(this.User.AccCode+MaterialPDDetailName, where_PDNo, &pddetail)
  1944. for i := 0; i < len(pddetail); i++ {
  1945. var kcinfo material.MaterialBatchKC
  1946. where_pdinfo := " StoreHouseId=" + StoreHouseId + " and MaterialId=" + utils.ToStr(pddetail[i].MaterialId) + " and BatchNo='" + pddetail[i].BatchNo + "' "
  1947. has := svc.GetEntityByWhere(this.User.AccCode+MaterialBatchKCName, where_pdinfo, &kcinfo)
  1948. if has {
  1949. kcinfo.KCCount = pddetail[i].RealKCCount
  1950. var cols []string = []string{"KCCount"}
  1951. _ = svc.UpdateSample(this.User.AccCode+MaterialBatchKCName, kcinfo.Id, &kcinfo, cols)
  1952. where_materialid := " Id=" + utils.ToStr(pddetail[i].MaterialId)
  1953. svc.UpdateaddKCinfo(this.User.AccCode+MaterialInfoName, where_materialid, utils.ToStr(pddetail[i].DiffCount))
  1954. }
  1955. }
  1956. }
  1957. // @Title 获取入库月报
  1958. // @Description get user by token
  1959. // @Success 200 {object} models.Userblood
  1960. // @router /monthlyRKreport [get]
  1961. func (this *MaterialController) MaterialMonthlyRKReport() {
  1962. where := " 1=1 "
  1963. RKDate := this.GetString("RKDate")
  1964. if RKDate != "" {
  1965. where = where + " and b.RKDate like '%" + RKDate + "%' "
  1966. }
  1967. StoreHouseId := this.GetString("StoreHouseId")
  1968. if StoreHouseId != "" {
  1969. where = where + " and b.StoreHouseId =" + StoreHouseId + " "
  1970. }
  1971. svc := material.GetMaterialService(utils.DBE)
  1972. list := svc.MaterialRKMonthlyReport(this.User.AccCode, where)
  1973. var datainfo DataInfo
  1974. datainfo.Items = list
  1975. this.Data["json"] = &datainfo
  1976. this.ServeJSON()
  1977. }
  1978. // @Title 获取出库月报
  1979. // @Description get user by token
  1980. // @Success 200 {object} models.Userblood
  1981. // @router /monthlyCKreport [get]
  1982. func (this *MaterialController) MaterialMonthlyCKReport() {
  1983. where := " 1=1 "
  1984. CKDate := this.GetString("CKDate")
  1985. if CKDate != "" {
  1986. where = where + " and b.CKDate like '%" + CKDate + "%' "
  1987. }
  1988. StoreHouseId := this.GetString("StoreHouseId")
  1989. if StoreHouseId != "" {
  1990. where = where + " and b.StoreHouseId =" + StoreHouseId + " "
  1991. }
  1992. svc := material.GetMaterialService(utils.DBE)
  1993. list := svc.MaterialCKMonthlyReport(this.User.AccCode, where)
  1994. var datainfo DataInfo
  1995. datainfo.Items = list
  1996. this.Data["json"] = &datainfo
  1997. this.ServeJSON()
  1998. }
  1999. // @Title get 出入库月报导出到excel
  2000. // @Description get SampleType by token
  2001. // @Success 200 {object} sampletype.SampleType
  2002. // @router /exportexcel [get]
  2003. func (this *MaterialController) ExportExcel() {
  2004. var filetitle string //文件名
  2005. var selecttime string //查询时间
  2006. ExportFlag := this.GetString("ExportFlag")
  2007. svc := material.GetMaterialService(utils.DBE)
  2008. where := "1=1"
  2009. StoreHouseId := this.GetString("StoreHouseId")
  2010. if StoreHouseId != "" {
  2011. where = where + " and b.StoreHouseId =" + StoreHouseId + " "
  2012. }
  2013. var storehouse materialstorehouse.MaterialStoreHouse
  2014. svc.GetEntityByIdBytbl(this.User.AccCode+MaterialStoreHouseName, StoreHouseId, &storehouse)
  2015. var title []string
  2016. titlestring := "编码,名称,批号,品牌,厂家,规格,数量,单位"
  2017. f := xlsx.NewFile()
  2018. var ckdatas []material.MaterialCKMonthlyReportModel
  2019. var rkdatas []material.MaterialRKMonthlyReportModel
  2020. title = strings.Split(titlestring, ",")
  2021. if ExportFlag == "ckreport" { //出库
  2022. CKDate := this.GetString("CKDate")
  2023. if CKDate != "" {
  2024. where = where + " and b.CKDate like '%" + CKDate + "%' "
  2025. }
  2026. filetitle = storehouse.Name + "出库报表"
  2027. selecttime = CKDate
  2028. ckdatas = svc.MaterialCKMonthlyReport(this.User.AccCode, where)
  2029. this.DaySaveXlsx(filetitle, title, "ckreport", ckdatas, f)
  2030. } else if ExportFlag == "rkreport" { //入库
  2031. RKDate := this.GetString("RKDate")
  2032. if RKDate != "" {
  2033. where = where + " and b.RKDate like '%" + RKDate + "%' "
  2034. }
  2035. filetitle = storehouse.Name + "入库报表"
  2036. selecttime = RKDate
  2037. rkdatas = svc.MaterialRKMonthlyReport(this.User.AccCode, where)
  2038. this.DaySaveXlsx(filetitle, title, "rkreport", rkdatas, f)
  2039. }
  2040. dir := "static/file/excel/report/" + this.GetAccode()
  2041. SaveDirectory(dir)
  2042. path := dir + "/" + selecttime + filetitle + ".xlsx"
  2043. f.Save(path)
  2044. this.Data["json"] = this.Ctx.Request.Host + "/" + path
  2045. this.ServeJSON()
  2046. }
  2047. func (this *MaterialController) DaySaveXlsx(name string, title []string, exportflag string, datas interface{}, f *xlsx.File) {
  2048. var ckdatas []material.MaterialCKMonthlyReportModel
  2049. var rkdatas []material.MaterialRKMonthlyReportModel
  2050. sheet, _ := f.AddSheet(name)
  2051. rowhead := sheet.AddRow()
  2052. rowhead.WriteSlice(&title, -1)
  2053. if exportflag == "ckreport" { //出库
  2054. utils.AutoMap(&ckdatas, datas)
  2055. for _, ckdata := range ckdatas {
  2056. datastring := ckdata.Code + "," + ckdata.Name + "," + ckdata.BatchNo + "," + ckdata.Brand + "," + ckdata.Supplier + "," + ckdata.ProductSpec + "," + ckdata.Total + "," + ckdata.Unit
  2057. cellname := strings.Split(datastring, ",")
  2058. row := sheet.AddRow()
  2059. row.WriteSlice(&cellname, -1)
  2060. }
  2061. } else if exportflag == "rkreport" { //入库
  2062. utils.AutoMap(&rkdatas, datas)
  2063. for _, rkdata := range rkdatas {
  2064. datastring := rkdata.Code + "," + rkdata.Name + "," + rkdata.BatchNo + "," + rkdata.Brand + "," + rkdata.Supplier + "," + rkdata.ProductSpec + "," + rkdata.Total + "," + rkdata.Unit
  2065. cellname := strings.Split(datastring, ",")
  2066. row := sheet.AddRow()
  2067. row.WriteSlice(&cellname, -1)
  2068. }
  2069. }
  2070. for c, cl := 0, len(sheet.Cols); c < cl; c++ {
  2071. sheet.Cols[c].Width = 20
  2072. }
  2073. }