paymentinfo.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. package oilsupplier
  2. import (
  3. "dashoo.cn/backend/api/business/auditsetting"
  4. "dashoo.cn/backend/api/business/oilsupplier/annualaudit"
  5. "dashoo.cn/backend/api/business/oilsupplier/oilactivity"
  6. "dashoo.cn/backend/api/business/oilsupplier/paymentbankinfo"
  7. "dashoo.cn/backend/api/business/oilsupplier/suppliercertappend"
  8. "dashoo.cn/backend/api/business/oilsupplier/suppliercertsub"
  9. "dashoo.cn/backend/api/business/oilsupplier/supplierfile"
  10. "dashoo.cn/backend/api/business/register"
  11. "dashoo.cn/backend/api/business/workflow"
  12. "dashoo.cn/business2/parameter"
  13. "dashoo.cn/business2/userRole"
  14. "encoding/json"
  15. "fmt"
  16. "strconv"
  17. "strings"
  18. "time"
  19. "dashoo.cn/backend/api/business/bankapi"
  20. "dashoo.cn/backend/api/business/oilsupplier/supplier"
  21. "dashoo.cn/backend/api/business/oilsupplier/suppliercert"
  22. "dashoo.cn/backend/api/business/paymentinfo"
  23. . "dashoo.cn/backend/api/controllers"
  24. "dashoo.cn/business2/permission"
  25. "dashoo.cn/utils"
  26. //"wayne-master/src/backend/util/integer"
  27. )
  28. type PaymentInfoController struct {
  29. BaseController
  30. }
  31. // @Title 获取列表
  32. // @Description get user by token
  33. // @Success 200 {object} []paymentinfo.PaymentinfoList
  34. // @router /list [get]
  35. func (this *PaymentInfoController) GetEntityList() {
  36. //获取分页信息
  37. page := this.GetPageInfoForm()
  38. orderby := "p.Id"
  39. where := " 1=1 "
  40. asc := " DESC"
  41. SupplierTypeCode := this.GetString("SupplierTypeCode")
  42. SupplierName := this.GetString("SupplierName")
  43. IsPay := this.GetString("IsPay")
  44. if IsPay != "" {
  45. if IsPay == "0" {
  46. where = where + " and (p.IsPay = '" + IsPay + "' or p.IsPay = '1') "
  47. } else {
  48. where = where + " and p.IsPay = '" + IsPay + "'"
  49. }
  50. }
  51. if SupplierTypeCode != "" {
  52. where = where + " and c.SupplierTypeCode like '%" + SupplierTypeCode + "%'"
  53. }
  54. if SupplierName != "" {
  55. where = where + " and s.SupplierName like '%" + SupplierName + "%'"
  56. }
  57. //svc := suppliercert.GetOilSupplierCertService(utils.DBE)
  58. //var list []suppliercert.OilSupplierCert
  59. svcPerm := permission.GetPermissionService(utils.DBE)
  60. var registerUser register.OilCorporateInfo
  61. sql := " UserName='" + this.User.Username + "'"
  62. svcPerm.GetEntity(&registerUser, sql)
  63. isauth := svcPerm.IsAuthorized(this.User.Id, "oil_supplier.PaymentInfo.AllRecord")
  64. if !svcPerm.IsAdmin(this.User.Id) && !isauth {
  65. where = where + " and (p.CreateUserId = '" + this.User.Id + "' or s.CommercialNo='" + registerUser.CommercialNo + "') "
  66. }
  67. var paylist []paymentinfo.PaymentinfoList
  68. svc := paymentinfo.GetPaymentService(utils.DBE)
  69. total := svc.GetPaymentinfoList(page.CurrentPage, page.Size, orderby, asc, &paylist, where)
  70. //total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where)
  71. var datainfo DataInfo
  72. datainfo.Items = paylist
  73. datainfo.CurrentItemCount = total
  74. datainfo.PageIndex = page.CurrentPage
  75. datainfo.ItemsPerPage = page.Size
  76. this.Data["json"] = &datainfo
  77. this.ServeJSON()
  78. }
  79. // @Title 获取列表
  80. // @Description get user by token
  81. // @Success 200 {object} []paymentinfo.PaymentinfoList
  82. // @router /get-bill-list [post]
  83. func (this *PaymentInfoController) GetBillList() {
  84. var icbcBillQueryParam bankapi.ICBCBillQueryParam
  85. var jsonBlob = this.Ctx.Input.RequestBody
  86. json.Unmarshal(jsonBlob, &icbcBillQueryParam)
  87. var supplierEntity supplier.OilSupplier
  88. supplierSvc := supplier.GetOilSupplierService(utils.DBE)
  89. supplierWhere := "1=1 and CommercialNo='" + icbcBillQueryParam.CommercialNo + "'" // IsPay=1
  90. supplierSvc.DBE.Where(supplierWhere).Get(&supplierEntity)
  91. var billList []paymentinfo.OilPaymentInfo
  92. billWhere := "1=1 and IsPay='1' and SupplierId='" + strconv.Itoa(supplierEntity.Id) + "'"
  93. svc := paymentinfo.GetPaymentService(utils.DBE)
  94. svc.DBE.Where(billWhere).OrderBy("Id DESC").Find(&billList)
  95. //获取分页信息
  96. //page := this.GetPageInfoForm()
  97. var datainfo DataInfo
  98. datainfo.Items = billList
  99. //datainfo.CurrentItemCount = integer.Int2Int64(len(billList))
  100. // datainfo.CurrentItemCount = 10
  101. datainfo.CurrentItemCount = int64(len(billList))
  102. datainfo.PageIndex = 1
  103. datainfo.ItemsPerPage = 1000
  104. this.Data["json"] = &datainfo
  105. this.ServeJSON()
  106. }
  107. // @Title 获取实体
  108. // @Description 获取实体
  109. // @Success 200 {object} paymentinfo.PaymentinfoList
  110. // @router /get/:id [get]
  111. func (this *PaymentInfoController) GetEntity() {
  112. Id := this.Ctx.Input.Param(":id")
  113. var model []paymentinfo.PaymentinfoList
  114. svc := paymentinfo.GetPaymentService(utils.DBE)
  115. svc.GetPaymentinfoById(Id, &model)
  116. this.Data["json"] = &model[0]
  117. this.ServeJSON()
  118. }
  119. // @Title 修改实体
  120. // @Description 修改实体
  121. // @Param body body paymentinfo.Paymentinfo
  122. // @Success 200 {object} controllers.Request
  123. // @router /update/:id [post]
  124. func (this *PaymentInfoController) UpdateEntity() {
  125. id := this.Ctx.Input.Param(":id")
  126. var errinfo ErrorInfo
  127. if id == "" {
  128. errinfo.Message = "操作失败!请求信息不完整"
  129. errinfo.Code = -2
  130. this.Data["json"] = &errinfo
  131. this.ServeJSON()
  132. return
  133. }
  134. var model paymentinfo.OilPaymentInfo
  135. svc := paymentinfo.GetPaymentService(utils.DBE)
  136. var jsonBlob = this.Ctx.Input.RequestBody
  137. json.Unmarshal(jsonBlob, &model)
  138. model.ModifiedOn = time.Now()
  139. model.ModifiedBy = this.User.Realname
  140. model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
  141. cols := []string{
  142. "IsPay",
  143. "PayMode",
  144. "PayDate",
  145. "BankSerialNum",
  146. "BankName",
  147. "Remark",
  148. "ModifiedOn",
  149. "ModifiedUserId",
  150. "ModifiedBy",
  151. }
  152. _, err := svc.UpdateEntityByIdCols(id, &model, cols)
  153. if model.IsPay == "2" {
  154. var certentity suppliercert.OilSupplierCert
  155. certentity.Status = suppliercert.STOREING_STATUS
  156. certentity.Step = 5
  157. cols = []string{
  158. "Status",
  159. "Step",
  160. }
  161. _, err = svc.UpdateEntityByIdCols(strconv.Itoa(model.SupplierCertId), &certentity, cols)
  162. }
  163. if err == nil {
  164. errinfo.Message = "修改成功!"
  165. errinfo.Code = 0
  166. this.Data["json"] = &errinfo
  167. this.ServeJSON()
  168. } else {
  169. errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
  170. errinfo.Code = -1
  171. this.Data["json"] = &errinfo
  172. this.ServeJSON()
  173. }
  174. }
  175. // @Title 修改金额
  176. // @Description 修改实体
  177. // @Param body body paymentinfo.Paymentinfo
  178. // @Success 200 {object} controllers.Request
  179. // @router /updateAmount/:id [post]
  180. func (this *PaymentInfoController) UpdateAmount() {
  181. id := this.Ctx.Input.Param(":id")
  182. var errinfo ErrorInfo
  183. if id == "" {
  184. errinfo.Message = "操作失败!请求信息不完整"
  185. errinfo.Code = -2
  186. this.Data["json"] = &errinfo
  187. this.ServeJSON()
  188. return
  189. }
  190. var model paymentinfo.OilPaymentInfo
  191. svc := paymentinfo.GetPaymentService(utils.DBE)
  192. var jsonBlob = this.Ctx.Input.RequestBody
  193. json.Unmarshal(jsonBlob, &model)
  194. cols := []string{
  195. "Amount",
  196. }
  197. _, err := svc.UpdateEntityByIdCols(id, &model, cols)
  198. if err == nil {
  199. errinfo.Message = "修改成功!"
  200. errinfo.Code = 0
  201. this.Data["json"] = &errinfo
  202. this.ServeJSON()
  203. } else {
  204. errinfo.Message = "修改失败!" + utils.AlertProcess(err.Error())
  205. errinfo.Code = -1
  206. this.Data["json"] = &errinfo
  207. this.ServeJSON()
  208. }
  209. }
  210. type BillInfoSure struct {
  211. SupplierEntity supplier.OilSupplier
  212. DataInfos [2]DataInfo
  213. AmountList [2]float64
  214. }
  215. // @Title 获取实体
  216. // @Description 获取实体
  217. // @Success 200 {object} BillInfoSure
  218. // @router /getbillinfo [get]
  219. func (this *PaymentInfoController) GetBillInfo() {
  220. regSvc := register.GetOilCorporateInfoService(utils.DBE)
  221. supplierSvc := supplier.GetOilSupplierService(utils.DBE)
  222. commercialNo := this.GetString("commercialNo")
  223. fmt.Println(commercialNo)
  224. if this.User.IsCompanyUser == 1 {
  225. var corporateInfo register.OilCorporateInfo
  226. regSvc.GetEntity(&corporateInfo, "UserId='"+this.User.Id+"'")
  227. commercialNo = corporateInfo.CommercialNo
  228. }
  229. var supplierEntity supplier.OilSupplier
  230. supplierSvc.GetEntity(&supplierEntity, "CommercialNo='"+commercialNo+"'")
  231. billInfoSure := new(BillInfoSure)
  232. billInfoSure.SupplierEntity = supplierEntity
  233. page := this.GetPageInfoForm()
  234. orderby := "p.Id"
  235. where := "p.SupplierId='" + strconv.Itoa(supplierEntity.Id) + "' and p.IsPay='0' "
  236. var paylist []paymentinfo.PaymentinfoList
  237. svc := paymentinfo.GetPaymentService(utils.DBE)
  238. total := svc.GetPaymentinfoList(page.CurrentPage, page.Size, orderby, " ASC", &paylist, where)
  239. //total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where)
  240. var datainfo DataInfo
  241. datainfo.Items = paylist
  242. datainfo.CurrentItemCount = total
  243. datainfo.PageIndex = page.CurrentPage
  244. datainfo.ItemsPerPage = page.Size
  245. amount1 := 0.0
  246. for _, payItem := range paylist {
  247. tmpAmount, _ := strconv.ParseFloat(payItem.Amount, 64)
  248. amount1 += tmpAmount
  249. }
  250. orderby2 := "p.Id"
  251. where2 := "p.SupplierId='" + strconv.Itoa(supplierEntity.Id) + "' and p.IsPay='1' "
  252. var paylist2 []paymentinfo.PaymentinfoList
  253. svc2 := paymentinfo.GetPaymentService(utils.DBE)
  254. total2 := svc2.GetPaymentinfoList(page.CurrentPage, page.Size, orderby2, " ASC", &paylist2, where2)
  255. //total := svc.GetPagingEntitiesWithOrderBytbl("", page.CurrentPage, page.Size, orderby, asc, &list, where)
  256. var datainfo2 DataInfo
  257. datainfo2.Items = paylist2
  258. datainfo2.CurrentItemCount = total2
  259. datainfo2.PageIndex = page.CurrentPage
  260. datainfo2.ItemsPerPage = page.Size
  261. amount2 := 0.0
  262. for _, payItem := range paylist2 {
  263. tmpAmount, _ := strconv.ParseFloat(payItem.Amount, 64)
  264. amount2 += tmpAmount
  265. }
  266. billInfoSure.DataInfos[0] = datainfo
  267. billInfoSure.DataInfos[1] = datainfo2
  268. billInfoSure.AmountList[0] = amount1
  269. billInfoSure.AmountList[1] = amount2
  270. this.Data["json"] = &billInfoSure
  271. this.ServeJSON()
  272. }
  273. type BillSure struct {
  274. Ids string `json:"ids"`
  275. }
  276. // @Title 确认缴费单
  277. // @Description 确认缴费单
  278. // @Success 200 {object} controllers.Request
  279. // @router /bill-sure [post]
  280. func (this *PaymentInfoController) SureEntity() {
  281. svc := paymentinfo.GetPaymentService(utils.DBE)
  282. var billSure BillSure
  283. var jsonBlob = this.Ctx.Input.RequestBody
  284. json.Unmarshal(jsonBlob, &billSure)
  285. strIds := strings.Trim(billSure.Ids, ",")
  286. sql := "update OilPaymentInfo set IsPay = 1, "
  287. sql += "SureBatchNo='" + strconv.FormatInt(time.Now().UnixNano(), 10) + "', "
  288. sql += "ModifiedOn='" + time.Now().Format("2006-01-02 15:04:05") + "', "
  289. sql += "ModifiedBy='" + this.User.Realname + "', "
  290. sql += "ModifiedUserId='" + this.User.Id + "' "
  291. sql += " where id in (" + strIds + ") and IsPay = 0"
  292. svc.DBE.Query(sql)
  293. var errinfo ErrorInfo
  294. errinfo.Message = "修改成功!"
  295. errinfo.Code = 0
  296. this.Data["json"] = &errinfo
  297. this.ServeJSON()
  298. }
  299. // @Title 确认缴费单--回调
  300. // @Description 确认缴费单
  301. // @Success 200 {object} controllers.Request
  302. // @router /receive-money-bill-list [post]
  303. func (this *PaymentInfoController) ReceiveMoneyBillList() {
  304. var errinfo ErrorInfo
  305. svc := paymentinfo.GetPaymentService(utils.DBE)
  306. var billParams bankapi.BillReceiveMoneyParams
  307. var jsonBlob = this.Ctx.Input.RequestBody
  308. json.Unmarshal(jsonBlob, &billParams)
  309. //已有的银行流水号说明是重复调用,将被丢弃
  310. cntWhere := " 1= 1 and BankSerialNum = '" + billParams.BankSerialNum + "' "
  311. var paymentInfoCnt []paymentinfo.OilPaymentInfo
  312. svc.GetEntities(&paymentInfoCnt, cntWhere)
  313. if paymentInfoCnt != nil && len(paymentInfoCnt) > 0 {
  314. errinfo.Message = "重复调用"
  315. errinfo.Code = -1
  316. this.Data["json"] = &errinfo
  317. this.ServeJSON()
  318. return
  319. }
  320. strIds := strings.Trim(billParams.Ids, ",")
  321. sqlList := "id in (" + strIds + ") and IsPay = '1'"
  322. var paymentInfos []paymentinfo.OilPaymentInfo
  323. svc.GetEntities(&paymentInfos, sqlList)
  324. t := time.Now()
  325. sql := "update OilPaymentInfo set IsPay = '2', "
  326. sql += "BankName='" + billParams.BankName + "', "
  327. sql += "BankSerialNum='" + billParams.BankSerialNum + "', "
  328. sql += "PayDate='" + billParams.PayDate.Format("2006-01-02 15:04:05") + "', "
  329. sql += "PayMode='" + billParams.PayMode + "', "
  330. sql += "ModifiedOn='" + t.Format("2006-01-02 15:04:05") + "', "
  331. sql += "ModifiedBy='" + this.User.Realname + "', "
  332. sql += "ModifiedUserId='" + this.User.Id + "' "
  333. sql += " where Id in (" + strIds + ") and IsPay = '1'"
  334. svc.DBE.Query(sql)
  335. for _, payItem := range paymentInfos {
  336. if payItem.PayType == "1" { //准入
  337. var cert suppliercert.OilSupplierCert
  338. svc.GetEntityById(payItem.SupplierCertId,&cert)
  339. svcActiviti := workflow.GetActivitiService(utils.DBE)
  340. businessKey := strconv.Itoa(payItem.SupplierCertId)
  341. result := "1"
  342. userIds := ""
  343. var userlist []userRole.Base_User
  344. var setting auditsetting.Base_OilAuditSetting
  345. usvc := userRole.GetUserService(utils.DBE)
  346. where := "AuditStepCode='" + workflow.PROF_REGULATION + "'"
  347. svc.GetEntity(&setting, where)
  348. ids := usvc.GetUserIdsByRoleId(strconv.Itoa(setting.RoleId))
  349. tempstr := strings.Join(ids, ",")
  350. uids := strings.Replace(tempstr, "uid_", "", -1)
  351. uids = strings.Trim(uids, ",")
  352. paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
  353. topid := paramSvc.GetBaseparameterMessage("", "paramset", "CENT_AUDIT")
  354. if uids != "" {
  355. where := "Id in (" + uids + ")" + " and UnitId=" + topid
  356. paramSvc.GetEntities(&userlist, where)
  357. }
  358. for _, tmpUser := range userlist {
  359. userIds += strconv.Itoa(tmpUser.Id) + "," //strconv.FormatInt(tmpUser.Id, 10) + ","
  360. }
  361. userIds = strings.Trim(userIds, ",")
  362. processInstanceId := svcActiviti.StartProcess2(workflow.OIL_SUPPLIER_INSTORE, businessKey, userIds, result, cert.SupplierTypeCode, payItem.SupplierName)
  363. //var ActiComplete workflow.ActiCompleteVM
  364. //ActiComplete.ProcessKey = workflow.OIL_SUPPLIER_INSTORE
  365. //ActiComplete.BusinessKey = businessKey
  366. //ActiComplete.UserNames = userIds
  367. //ActiComplete.UserId = this.User.Id
  368. //ActiComplete.Result = "1"
  369. //ActiComplete.Remarks = ""
  370. //ActiComplete.CallbackUrl = ""
  371. //
  372. //res := svcActiviti.TaskComplete(ActiComplete)
  373. //fmt.Println(res)
  374. var activity oilactivity.OilActivity
  375. activity.EntityId = payItem.SupplierCertId
  376. activity.ActType = oilactivity.STORAGE
  377. activity.WorkflowId = processInstanceId
  378. activity.BusinessKey = businessKey
  379. activity.ProcessKey = workflow.OIL_SUPPLIER_INSTORE
  380. activity.CreateOn = time.Now()
  381. svc.InsertEntityBytbl(OilActivityName, &activity)
  382. var certentity suppliercert.OilSupplierCert
  383. certentity.Status = suppliercert.STOREING_STATUS
  384. certentity.Step = 5
  385. cols := []string{
  386. "Status",
  387. "Step",
  388. }
  389. svc.UpdateEntityByIdCols(strconv.Itoa(payItem.SupplierCertId), &certentity, cols)
  390. } else if payItem.PayType == "2" { //年审
  391. //TODO: 修改年审时间
  392. annuasvc := annualaudit.GetOilAnnualAuditService(utils.DBE)
  393. var annualentities []annualaudit.OilAnnualAudit
  394. annwhere := " SupplierId = " + utils.ToStr(payItem.SupplierId) + " and CerId = " + utils.ToStr(payItem.SupplierCertId) + " and Status = '6'"
  395. svc.GetEntitysByWhere(OilAnnualAuditName, annwhere, &annualentities)
  396. if len(annualentities) > 0 {
  397. //更新年审表时间
  398. var annmodel annualaudit.OilAnnualAudit
  399. annmodel.Status = suppliercert.ALL_PASE_STATUS
  400. annmodel.ApplyTime = annualentities[0].ApplyTime.AddDate(1, 0, 0)
  401. annuasvc.UpdateEntityBywheretbl(OilAnnualAuditName, &annmodel, []string{"ApplyTime", "Status"}, annwhere)
  402. //更新准入表时间
  403. var certmodel suppliercert.OilSupplierCert
  404. certmodel.ApplyTime = annualentities[0].ApplyTime.AddDate(1, 0, 0)
  405. certmodel.InFlag = "1"
  406. svc.UpdateEntityByIdCols(strconv.Itoa(payItem.SupplierCertId), &certmodel, []string{"ApplyTime", "InFlag"})
  407. }
  408. } else if payItem.PayType == "3" { //增项
  409. appsvc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
  410. //更新准入项表
  411. appendwhere := " SupplierId = " + utils.ToStr(payItem.SupplierId) + " and SupplierCertId = " + utils.ToStr(payItem.SupplierCertId) + " and Type = '2'"
  412. var appendsubmodel suppliercertsub.OilSupplierCertSub
  413. appendsubmodel.Type = "3"
  414. appsvc.UpdateEntityBywheretbl(OilSupplierCertSubName, &appendsubmodel, []string{"Type"}, appendwhere)
  415. //更新资质表
  416. appendfilewhere := " SupplierId = " + utils.ToStr(payItem.SupplierId) + " and SupType = 2"
  417. var appendsubfilemodel supplierfile.OilSupplierFile
  418. appendsubfilemodel.SupType = 3
  419. appsvc.UpdateEntityBywheretbl(OilSupplierCertSubName, &appendsubfilemodel, []string{"SupType"}, appendfilewhere)
  420. //更新增项表
  421. appdwhere := " SupplierId = " + utils.ToStr(payItem.SupplierId) + " and SupplierCertId = " + utils.ToStr(payItem.SupplierCertId) + " and Status = '6'"
  422. var appendmodel suppliercertappend.OilSupplierCertAppend
  423. appendmodel.Status = suppliercert.ALL_PASE_STATUS
  424. appsvc.UpdateEntityBywheretbl(OilSupplierCertAppendName, &appendmodel, []string{"Status"}, appdwhere)
  425. }
  426. }
  427. //记录对账日志
  428. paymentBankInfo := new(paymentbankinfo.OilPaymentBankInfo)
  429. paymentBankInfo.BillIds = billParams.Ids
  430. paymentBankInfo.PayMode = billParams.PayMode
  431. paymentBankInfo.PayDate = billParams.PayDate
  432. paymentBankInfo.BankSerialNum = billParams.BankSerialNum
  433. paymentBankInfo.ReceiveAmount = billParams.ReceiveAmount
  434. paymentBankInfo.BankName = billParams.BankName
  435. paymentBankInfo.CreateUserId = 0
  436. paymentBankInfo.CreateOn = time.Now()
  437. paymentBankInfo.ModifiedUserId = 0
  438. paymentBankInfo.ModifiedOn = time.Now()
  439. paymentBankInfo.WriteInType = "1" //初次回调
  440. payBankSvc := paymentbankinfo.GetPaymentSelectService(utils.DBE)
  441. payBankSvc.InsertEntity(paymentBankInfo)
  442. errinfo.Message = "修改成功!"
  443. errinfo.Code = 0
  444. this.Data["json"] = &errinfo
  445. this.ServeJSON()
  446. }
  447. // @Title 对账后有未更改状态的,再次确认缴费单--回调
  448. // @Description 确认缴费单
  449. // @Success 200 {object} controllers.Request
  450. // @router /receive-money-again-list [post]
  451. func (this *PaymentInfoController) ReceiveMoneyAgainList() {
  452. var errinfo ErrorInfo
  453. svc := paymentinfo.GetPaymentService(utils.DBE)
  454. var billParams []bankapi.BillReceiveMoneyAgainParams
  455. var jsonBlob = this.Ctx.Input.RequestBody
  456. json.Unmarshal(jsonBlob, &billParams)
  457. for _, billItem := range billParams {
  458. t := time.Now()
  459. sql := "update OilPaymentInfo set IsPay = 2, "
  460. sql += "BankName='" + billItem.BankName + "', "
  461. sql += "BankSerialNum='" + billItem.BankSerialNum + "', "
  462. sql += "PayDate='" + billItem.PayDate.Format("2006-01-02 15:04:05") + "', "
  463. sql += "PayMode='" + billItem.PayMode + "', "
  464. sql += "ModifiedOn='" + t.Format("2006-01-02 15:04:05") + "', "
  465. sql += "ModifiedBy='" + this.User.Realname + "', "
  466. sql += "ModifiedUserId='" + this.User.Id + "' "
  467. sql += " where id = " + billItem.BillId + " and IsPay = '1'"
  468. svc.DBE.Query(sql)
  469. strIds := strings.Trim(billItem.BillId, ",")
  470. sqlList := " 1=1 and Id in (" + strIds + ") and IsPay = '1'"
  471. var paymentInfo paymentinfo.OilPaymentInfo
  472. utils.DBE.Find(&paymentInfo, sqlList)
  473. if paymentInfo.PayType == "1" { //准入
  474. var certentity suppliercert.OilSupplierCert
  475. certentity.Status = suppliercert.STOREING_STATUS
  476. certentity.Step = 5
  477. cols := []string{
  478. "Status",
  479. "Step",
  480. }
  481. svc.UpdateEntityByIdCols(strconv.Itoa(paymentInfo.SupplierCertId), &certentity, cols)
  482. } else if paymentInfo.PayType == "2" { //年审
  483. //TODO: 修改年审时间
  484. } else if paymentInfo.PayType == "3" { //增项
  485. }
  486. //记录对账日志
  487. paymentBankInfo := new(paymentbankinfo.OilPaymentBankInfo)
  488. paymentBankInfo.BillIds = billItem.BillId
  489. paymentBankInfo.PayMode = billItem.PayMode
  490. paymentBankInfo.PayDate = billItem.PayDate
  491. paymentBankInfo.BankSerialNum = billItem.BankSerialNum
  492. paymentBankInfo.ReceiveAmount = billItem.ReceiveAmount
  493. paymentBankInfo.BankName = billItem.BankName
  494. paymentBankInfo.CreateUserId = 0
  495. paymentBankInfo.CreateOn = time.Now()
  496. paymentBankInfo.ModifiedUserId = 0
  497. paymentBankInfo.ModifiedOn = time.Now()
  498. paymentBankInfo.WriteInType = "2" //对账发现未修改成功时的回调
  499. payBankSvc := paymentbankinfo.GetPaymentSelectService(utils.DBE)
  500. payBankSvc.InsertEntity(paymentBankInfo)
  501. }
  502. errinfo.Message = "修改成功!"
  503. errinfo.Code = 0
  504. this.Data["json"] = &errinfo
  505. this.ServeJSON()
  506. }
  507. // @Title 对账
  508. // @Description 对账
  509. // @Success 200 {object} controllers.Request
  510. // @router /check-money-list [post]
  511. func (this *PaymentInfoController) CheckMoneyList() {
  512. svc := paymentinfo.GetPaymentService(utils.DBE)
  513. var checkMoneyParams bankapi.BillCheckMoneyParams
  514. var jsonBlob = this.Ctx.Input.RequestBody
  515. json.Unmarshal(jsonBlob, &checkMoneyParams)
  516. checkRet := new(bankapi.BillCheckMoneyRet)
  517. paymentWhere := "1=1 and IsPay='2' "
  518. paymentWhere += " and PayDate >= '" + checkMoneyParams.StartTime.Format("2006-01-02 15:04:05") + "'"
  519. paymentWhere += " and PayDate <= '" + checkMoneyParams.EndTime.Format("2006-01-02 15:04:05") + "'"
  520. svc.GetEntities(&(checkRet.PaymentInfos), paymentWhere)
  521. bankWhere := "1=1"
  522. bankWhere += " and PayDate >= '" + checkMoneyParams.StartTime.Format("2006-01-02 15:04:05") + "'"
  523. bankWhere += " and PayDate <= '" + checkMoneyParams.EndTime.Format("2006-01-02 15:04:05") + "'"
  524. svc.GetEntities(&(checkRet.PaymentBankInfos), bankWhere)
  525. var datainfo DataInfo
  526. datainfo.Items = checkRet
  527. this.Data["json"] = &datainfo
  528. this.ServeJSON()
  529. }
  530. // @Title 删除单条信息
  531. // @Description
  532. // @Success 200 {object} ErrorInfo
  533. // @Failure 403 :id 为空
  534. // @router /delete/:Id [delete]
  535. func (this *PaymentInfoController) DeleteEntity() {
  536. Id := this.Ctx.Input.Param(":Id")
  537. var errinfo ErrorInfo
  538. if Id == "" {
  539. errinfo.Message = "操作失败!请求信息不完整"
  540. errinfo.Code = -2
  541. this.Data["json"] = &errinfo
  542. this.ServeJSON()
  543. return
  544. }
  545. var emptyModel paymentinfo.OilPaymentInfo
  546. var model paymentinfo.OilPaymentInfo
  547. svc := paymentinfo.GetPaymentService(utils.DBE)
  548. svc.GetEntityById(Id, &model)
  549. // where := "Id=" + Id
  550. // err := svc.DeleteEntityBytbl(OilPaymentInfoName, where)
  551. err := svc.DeleteEntityAndBackup(Id, &model, &emptyModel, utils.ToStr(this.User.Id), this.User.Username)
  552. if err != nil {
  553. errinfo.Message = "删除失败!"
  554. errinfo.Code = -1
  555. this.Data["json"] = &errinfo
  556. this.ServeJSON()
  557. return
  558. }
  559. if err == nil {
  560. var cert suppliercert.OilSupplierCert
  561. cert.Status = suppliercert.STOREING_STATUS
  562. cols := []string{"Status"}
  563. where := "Id=" + strconv.Itoa(model.SupplierCertId)
  564. svc.UpdateEntityBywheretbl(OilSupplierCertName, &cert, cols, where)
  565. errinfo.Message = "删除成功"
  566. errinfo.Code = 0
  567. this.Data["json"] = &errinfo
  568. this.ServeJSON()
  569. } else {
  570. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  571. errinfo.Code = -1
  572. this.Data["json"] = &errinfo
  573. this.ServeJSON()
  574. }
  575. }
  576. // @Title 修改金额
  577. // @Description 修改实体
  578. // @Param body body paymentinfo.Paymentinfo
  579. // @Success 200 {object} controllers.Request
  580. // @router /addpayinfo [post]
  581. func (this *PaymentInfoController) AddPayInfo() {
  582. supplierId := this.GetString("SupplierId")
  583. payType := this.GetString("PayType")
  584. amount := this.GetString("Amount")
  585. supplierTypeCode := this.GetString("SupplierTypeCode")
  586. var supp supplier.OilSupplier
  587. svc := paymentinfo.GetPaymentService(utils.DBE)
  588. has := svc.GetEntityById(supplierId, &supp)
  589. var errinfo ErrorInfo
  590. if !has {
  591. errinfo.Message = "没有相关企业信息!"
  592. errinfo.Code = -2
  593. this.Data["json"] = &errinfo
  594. this.ServeJSON()
  595. return
  596. }
  597. var cert []suppliercert.OilSupplierCert
  598. wherec := "SupplierId=" + supplierId + " and SupplierTypeCode='" + supplierTypeCode + "'"
  599. svc.GetEntities(&cert, wherec)
  600. if cert == nil {
  601. errinfo.Message = "没有相关企业信息!"
  602. errinfo.Code = -2
  603. this.Data["json"] = &errinfo
  604. this.ServeJSON()
  605. return
  606. }
  607. where := "SupplierId=" + strconv.Itoa(supp.Id) + " and USCCode='" + supp.CommercialNo + "' and PayType='" + payType + "' and SupplierCertId=" + strconv.Itoa(cert[0].Id)
  608. var model1 paymentinfo.OilPaymentInfo
  609. has = svc.GetEntity(&model1, where)
  610. if has {
  611. errinfo.Message = "已经存在相关交费记录,不能重复添加!"
  612. errinfo.Code = -2
  613. this.Data["json"] = &errinfo
  614. this.ServeJSON()
  615. return
  616. }
  617. var model paymentinfo.OilPaymentInfo
  618. model.SupplierId,_ = strconv.Atoi(supplierId)
  619. model.SupplierCertId = cert[0].Id
  620. model.SupplierName = supp.SupplierName
  621. model.USCCode = supp.CommercialNo
  622. model.PayType = payType
  623. model.IsPay = "0"
  624. model.Amount = amount
  625. model.CreateOn = time.Now()
  626. model.CreateBy = this.User.Realname
  627. model.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
  628. _,err := svc.InsertEntity(&model)
  629. if err == nil {
  630. errinfo.Message = "添加成功!"
  631. errinfo.Code = 0
  632. this.Data["json"] = &errinfo
  633. this.ServeJSON()
  634. } else {
  635. errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
  636. errinfo.Code = -1
  637. this.Data["json"] = &errinfo
  638. this.ServeJSON()
  639. }
  640. }
  641. // @Title 获取字典列表
  642. // @Description get user by token
  643. // @Success 200 {object} map[string]interface{}
  644. // @router /dictlist [get]
  645. func (this *PaymentInfoController) GetDictList() {
  646. dictList := make(map[string]interface{})
  647. svcPerm := permission.GetPermissionService(utils.DBE)
  648. isallowdel := svcPerm.IsAuthorized(this.User.Id, "oil_supplier.PaymentInfo.CanDelete")
  649. dictList["IsAllowDel"] = isallowdel
  650. var datainfo DataInfo
  651. datainfo.Items = dictList
  652. this.Data["json"] = &datainfo
  653. this.ServeJSON()
  654. }
  655. // @Title 银行对账单
  656. // @Description 银行对账单
  657. // @Success 200 {object} controllers.Request
  658. // @router /receive-verify-bill-list [post]
  659. func (this *PaymentInfoController) ReceiveVerifyBillList() {
  660. var VerifyBills []paymentinfo.OilVerifyBill
  661. var jsonBlob = this.Ctx.Input.RequestBody
  662. json.Unmarshal(jsonBlob, &VerifyBills)
  663. fmt.Println(VerifyBills)
  664. svc := paymentinfo.GetPaymentService(utils.DBE)
  665. for _,item := range VerifyBills {
  666. var Oilverifybill paymentinfo.OilVerifyBill
  667. Oilverifybill.BillIds = strings.Trim(item.BillIds, ",")
  668. Oilverifybill.BankSerialNum = item.BankSerialNum
  669. Oilverifybill.ReceiveAmount = item.ReceiveAmount
  670. Oilverifybill.VerifyDate = item.VerifyDate
  671. Oilverifybill.PayDate = item.PayDate
  672. Oilverifybill.CreateOn = time.Now()
  673. svc.InsertEntity(&Oilverifybill)
  674. ids := strings.Split(item.BillIds, ",")
  675. for _,id := range ids {
  676. var payinfo paymentinfo.OilPaymentInfo
  677. //where := "Id= " + id + " and BankSerialNum='" + item.BankSerialNum +"'" + " and IsPay='2'"
  678. //has := svc.GetEntity(&payinfo, where)
  679. cols := []string{"IsPay", "IsVerify", "VerifyDate", "BankSerialNum"}
  680. payinfo.IsPay = "2"
  681. payinfo.IsVerify = "1"
  682. payinfo.BankSerialNum = item.BankSerialNum
  683. payinfo.VerifyDate = item.PayDate
  684. svc.UpdateEntityByIdCols(id, &payinfo, cols)
  685. }
  686. }
  687. var errinfo ErrorInfo
  688. errinfo.Message = "对账完成!"
  689. errinfo.Code = 0
  690. this.Data["json"] = &errinfo
  691. this.ServeJSON()
  692. }