waybill.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. package dto
  2. import (
  3. "cold-delivery/app/admin/model"
  4. dto2 "cold-delivery/common/dto"
  5. common "cold-delivery/common/model"
  6. model2 "cold-delivery/common/model"
  7. "time"
  8. )
  9. // 运单
  10. type WaybillGetPageReq struct {
  11. dto2.Pagination `search:"-"`
  12. WaybillNo string `form:"waybillNo" search:"type:contains;column:waybill_no;table:waybill"` // 运单编号
  13. OrderNo string `form:"orderNo" search:"type:contains;column:order_no;table:waybill"` // 订单编号
  14. ConsigneeAddressName string `form:"Consignee_address_name" search:"type:contains;column:consignee_address_name;table:waybill"` // 患者名称
  15. ConsigneeAddressPhone string `form:"Consignee_address_phone" search:"type:contains;column:consignee_address_phone;table:waybill"` // 患者手机号
  16. DeliveryName string `form:"delivery_name" search:"type:contains;column:delivery_name;table:waybill"` // 配送员
  17. Status int `form:"status" search:"type:exact;column:status;table:waybill"` // 状态
  18. AssignmentStatus int `form:"assignment_status" search:"type:exact;column:assignment_status;table:waybill"` //分配状态 1 未分配 2已分配
  19. OrderStartTime string `form:"orderStartTime" search:"type:gte;column:order_time;table:waybill"` // 下单开始时间
  20. OrderEndTime string `form:"orderEndTime" search:"type:lte;column:order_time;table:waybill"` // 下单结束时间
  21. WaybillOrder
  22. }
  23. type WaybillOrder struct {
  24. CreatedAtOrder string `search:"type:order;column:created_at;table:waybill" form:"createdAtOrder" default:"desc"`
  25. }
  26. func (m *WaybillGetPageReq) GetNeedSearch() interface{} {
  27. return *m
  28. }
  29. type WaybillGetCustomerPageReq struct {
  30. dto2.Pagination `search:"-"`
  31. WaybillNo string `form:"waybillNo" search:"type:contains;column:waybill_no;table:waybill"` // 运单编号
  32. OrderNo string `form:"orderNo" search:"type:contains;column:order_no;table:waybill"` // 运单编号
  33. Status int `form:"status" search:"-"` // 状态
  34. OrderStartTime string `form:"orderStartTime" search:"type:gte;column:order_time;table:waybill"` // 下单开始时间
  35. OrderEndTime string `form:"orderEndTime" search:"type:lte;column:order_time;table:waybill"` // 下单结束时间
  36. CustomerId int `form:"customerId" search:"type:exact;column:customer_id;table:waybill" swaggerignore:"true"` // 客户id
  37. WaybillOrder
  38. }
  39. func (m *WaybillGetCustomerPageReq) GetNeedSearch() interface{} {
  40. return *m
  41. }
  42. type WaybillInsertReq struct {
  43. Id int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  44. No string `json:"no" swaggerignore:"true"` //单号
  45. OrderNo string `json:"orderNo"` // 订单号
  46. Status int `json:"status" swaggerignore:"true"` //订单状态:1-待处理;102-待装车 103-运输中 104-已签收
  47. SaveConsigneeAddress bool `json:"SaveConsigneeAddress"` //保存收货地址
  48. ConsigneeAddressDetails string `json:"consigneeAddressDetails"` //收发货地址详情
  49. ConsigneeAddressName string `json:"consigneeAddressName"` //收发货地址名称
  50. ConsigneeAddressPhone string `json:"consigneeAddressPhone" vd:"regexp('^1[3-9]\\d{9}$');msg:'收件人电话格式不正确'"` //收发货地址电话
  51. DeliveryName string `json:"deliveryName"` // 配送姓名
  52. DeliveryPhone string `json:"deliveryPhone"` // 配送电话
  53. DeliveryId int `json:"deliveryId"` // 配送人id
  54. ReCheckId int `json:"reCheckId"` // 复核人id
  55. Quantity int `json:"quantity"` // 药品数量
  56. Remark string `json:"remark"` // 运输备注
  57. TamperProofLabel string `json:"tamperProofLabel"` // 防拆码标签
  58. TamperProofLabelImg string `json:"tamperProofLabelImg"` // 防拆码标签图片
  59. CoolerBoxId int `json:"coolerBoxId"` // 保温箱id
  60. IsSecondaryDistribution bool `json:"is_secondary_distribution"` //是否二次分配
  61. Drugs []model.Drug `json:"drugs"` //药品信息
  62. IsPhone bool `json:"is_phone"` //是否手机添加订单
  63. Prescription model2.StringList `json:"prescription"`
  64. AskForTime model2.Time `json:"askForTime" gorm:"comment:客户要求时间"` //客户要求时间
  65. DeliveryType string `json:"deliveryType" gorm:"size:128;comment:配送方式"` // 配送方式
  66. model2.ControlBy `swaggerignore:"true"`
  67. model2.DeptBy
  68. }
  69. func (s *WaybillInsertReq) Generate(m *model.Waybill) {
  70. if s.Id != 0 {
  71. m.Id = s.Id
  72. }
  73. m.Status = 1
  74. m.ConsigneeAddressDetails = s.ConsigneeAddressDetails
  75. m.ConsigneeAddressName = s.ConsigneeAddressName
  76. m.ConsigneeAddressPhone = s.ConsigneeAddressPhone
  77. m.DeliveryName = s.DeliveryName
  78. m.DeliveryPhone = s.DeliveryPhone
  79. m.DeliveryId = s.DeliveryId
  80. m.ReCheckId = s.ReCheckId
  81. m.Quantity = s.Quantity
  82. m.Remark = s.Remark
  83. m.TamperProofLabel = s.TamperProofLabel
  84. m.TamperProofLabelImg = s.TamperProofLabelImg
  85. m.CoolerBoxId = s.CoolerBoxId
  86. m.IsSecondaryDistribution = s.IsSecondaryDistribution
  87. m.Prescription = s.Prescription
  88. m.OrderTime = model2.Time(time.Now())
  89. m.AskForTime = s.AskForTime
  90. m.DeliveryType = s.DeliveryType
  91. if s.ControlBy.UpdateBy != 0 {
  92. m.UpdateBy = s.UpdateBy
  93. }
  94. if s.ControlBy.CreateBy != 0 {
  95. m.CreateBy = s.CreateBy
  96. }
  97. if s.DeptBy.DeptId != 0 {
  98. m.DeptId = s.DeptId
  99. }
  100. }
  101. func (s *WaybillInsertReq) GetId() interface{} {
  102. return s.Id
  103. }
  104. type WaybillAssignment struct {
  105. WaybillNo string `json:"waybillNo" comment:"运单号" swaggerignore:"true"` // 编码
  106. OrderNo string `json:"orderNo"` // 订单号
  107. Status int `json:"status" swaggerignore:"true"` //订单状态:1-待处理;102-待装车 103-运输中 104-已签收
  108. SaveConsigneeAddress bool `json:"SaveConsigneeAddress"` //保存收货地址
  109. ConsigneeAddressDetails string `json:"consigneeAddressDetails"` //收发货地址详情
  110. ConsigneeAddressName string `json:"consigneeAddressName"` //收发货地址名称
  111. ConsigneeAddressPhone string `json:"consigneeAddressPhone" vd:"regexp('^1[3-9]\\d{9}$');msg:'收件人电话格式不正确'"` //收发货地址电话
  112. DeliveryName string `json:"deliveryName"` // 配送姓名
  113. DeliveryPhone string `json:"deliveryPhone"` // 配送电话
  114. DeliveryId int `json:"deliveryId"` // 配送人id
  115. ReCheckId int `json:"reCheckId"` // 复核人id
  116. Quantity int `json:"quantity"` // 药品数量
  117. Remark string `json:"remark"` // 运输备注
  118. TamperProofLabel string `json:"tamperProofLabel"` // 防拆码标签
  119. TamperProofLabelImg string `json:"tamperProofLabelImg"` // 防拆码标签图片
  120. CoolerBoxId int `json:"coolerBoxId"` // 保温箱id
  121. IsSecondaryDistribution bool `json:"is_secondary_distribution"` //是否二次分配
  122. Drugs []model.Drug `json:"drugs"` //药品信息
  123. Prescription model2.StringList `json:"prescription"`
  124. model2.ControlBy `swaggerignore:"true"`
  125. model2.DeptBy
  126. }
  127. func (s *WaybillAssignment) Generate(m *model.Waybill) {
  128. m.ConsigneeAddressDetails = s.ConsigneeAddressDetails
  129. m.ConsigneeAddressName = s.ConsigneeAddressName
  130. m.ConsigneeAddressPhone = s.ConsigneeAddressPhone
  131. m.DeliveryName = s.DeliveryName
  132. m.DeliveryPhone = s.DeliveryPhone
  133. m.DeliveryId = s.DeliveryId
  134. m.ReCheckId = s.ReCheckId
  135. m.Quantity = s.Quantity
  136. m.Remark = s.Remark
  137. m.TamperProofLabel = s.TamperProofLabel
  138. m.TamperProofLabelImg = s.TamperProofLabelImg
  139. m.CoolerBoxId = s.CoolerBoxId
  140. m.IsSecondaryDistribution = s.IsSecondaryDistribution
  141. m.OrderTime = model2.Time(time.Now())
  142. m.Prescription = s.Prescription
  143. if s.ControlBy.UpdateBy != 0 {
  144. m.UpdateBy = s.UpdateBy
  145. }
  146. if s.ControlBy.CreateBy != 0 {
  147. m.CreateBy = s.CreateBy
  148. }
  149. if s.DeptBy.DeptId != 0 {
  150. m.DeptId = s.DeptId
  151. }
  152. }
  153. type WaybillUpdateReq struct {
  154. Id int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  155. OrderNo string `json:"orderNo"`
  156. ConsigneeAddressDetails string `json:"consigneeAddressDetails"` //收发货地址详情
  157. ConsigneeAddressName string `json:"consigneeAddressName"` //收发货地址名称
  158. ConsigneeAddressPhone string `json:"consigneeAddressPhone"` //收发货地址电话
  159. DeliveryName string `json:"deliveryName"` // 配送姓名
  160. DeliveryPhone string `json:"deliveryPhone"` // 配送电话
  161. DeliveryId int `json:"deliveryId"` // 配送id
  162. ReCheckId int `json:"reCheckId"` // 复核人id
  163. TamperProofLabel string `json:"tamperProofLabel"` //防拆标签
  164. TamperProofLabelImg string `json:"tamperProofLabelImg"` //防拆码标签图片
  165. DeliveryCondition string `json:"deliveryCondition"` //配送要求
  166. Quantity int `json:"quantity"` //药品数量
  167. Remark string `json:"remark"` //运输备注
  168. CoolerBoxId int `json:"coolerBoxId"` //保温箱id
  169. Prescription model2.StringList `json:"prescription"`
  170. Drugs []model.Drug `json:"drugs"` //药品信息
  171. AskForTime model2.Time `json:"askForTime" gorm:"comment:客户要求时间"` //客户要求时间
  172. DeliveryType string `json:"deliveryType" gorm:"size:128;comment:配送方式"` // 配送方式
  173. IsSecondaryDistribution bool `json:"is_secondary_distribution"` //是否二次分配
  174. model2.ControlBy `swaggerignore:"true"`
  175. model2.DeptBy `swaggerignore:"true"`
  176. }
  177. type WaybillUpdateReqaudit struct {
  178. Id int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  179. OrderNo string `json:"orderNo"`
  180. Status int `json:"status"` // 状态
  181. PrescriptionIsAudit int `json:"prescriptionIssue" gorm:"size:128;default:1"` // 处方是否审核 1 未审核 2已审核
  182. InvoiceIsAudit int `json:"invoiceIssue" gorm:"size:128;default:1"` // 发票是否审核 1 未审核 2已审核
  183. InspectionReportIsAudit int `json:"inspectionReportIssue" gorm:"size:128;default:1"` // 检验报告是否审核 1 未审核 2已审核
  184. DispensingMedicinesIsAudit int `json:"dispensingMedicinesIssue" gorm:"size:128;default:1"` // 调配药品信息是否审核 1 未审核 2已审核
  185. IsCold int `json:"isCold" gorm:"size:128;default:1"` // 是否冷链 1 否 2 是
  186. AuditRemark string `json:"audit_remark" gorm:"size:255;default:''"` //驳回原因
  187. model2.ControlBy `swaggerignore:"true"`
  188. model2.DeptBy `swaggerignore:"true"`
  189. }
  190. type WaybillAdmin struct {
  191. Id int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  192. AdminAuditRemark string `json:"admin_audit_remark"` //管理员审核备注
  193. model2.ControlBy `swaggerignore:"true"`
  194. model2.DeptBy `swaggerignore:"true"`
  195. }
  196. func (s *WaybillUpdateReq) Generate(m *model.Waybill) {
  197. if s.Id != 0 {
  198. m.Id = s.Id
  199. }
  200. m.OrderNo = s.OrderNo
  201. m.ConsigneeAddressDetails = s.ConsigneeAddressDetails
  202. m.ConsigneeAddressName = s.ConsigneeAddressName
  203. m.ConsigneeAddressPhone = s.ConsigneeAddressPhone
  204. m.DeliveryName = s.DeliveryName
  205. m.DeliveryPhone = s.DeliveryPhone
  206. m.DeliveryId = s.DeliveryId
  207. m.ReCheckId = s.ReCheckId
  208. m.Quantity = s.Quantity
  209. m.Remark = s.Remark
  210. m.TamperProofLabel = s.TamperProofLabel
  211. m.TamperProofLabelImg = s.TamperProofLabelImg
  212. m.Prescription = s.Prescription
  213. m.Drugs = s.Drugs
  214. m.AskForTime = s.AskForTime
  215. m.IsSecondaryDistribution = s.IsSecondaryDistribution
  216. m.DeliveryType = s.DeliveryType
  217. if s.CoolerBoxId > 0 {
  218. m.CoolerBoxId = s.CoolerBoxId
  219. }
  220. if s.ControlBy.UpdateBy != 0 {
  221. m.UpdateBy = s.UpdateBy
  222. }
  223. if s.ControlBy.CreateBy != 0 {
  224. m.CreateBy = s.CreateBy
  225. }
  226. }
  227. func (s *WaybillAdmin) Generate(m *model.Waybill) {
  228. if s.Id != 0 {
  229. m.Id = s.Id
  230. }
  231. m.AdminAuditRemark = s.AdminAuditRemark
  232. if s.ControlBy.UpdateBy != 0 {
  233. m.UpdateBy = s.UpdateBy
  234. }
  235. if s.ControlBy.CreateBy != 0 {
  236. m.CreateBy = s.CreateBy
  237. }
  238. }
  239. func (s *WaybillUpdateReqaudit) Generate(m *model.Waybill) {
  240. if s.Id != 0 {
  241. m.Id = s.Id
  242. }
  243. m.OrderNo = s.OrderNo
  244. m.PrescriptionIsAudit = s.PrescriptionIsAudit
  245. m.InvoiceIsAudit = s.InvoiceIsAudit
  246. m.InspectionReportIsAudit = s.InspectionReportIsAudit
  247. m.DispensingMedicinesIsAudit = s.DispensingMedicinesIsAudit
  248. m.IsCold = s.IsCold
  249. m.Status = s.Status
  250. }
  251. func (s *WaybillUpdateReq) GetId() interface{} {
  252. return s.Id
  253. }
  254. func (s *WaybillUpdateReqaudit) GetId() interface{} {
  255. return s.Id
  256. }
  257. func (s *WaybillAdmin) GetId() interface{} {
  258. return s.Id
  259. }
  260. type WaybillUpdateStatusReq struct {
  261. Id int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  262. Status int `json:"status"` //订单状态
  263. model2.ControlBy `swaggerignore:"true"`
  264. model2.DeptBy `swaggerignore:"true"`
  265. }
  266. type UpdateStatusReq struct {
  267. Id []int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  268. Status int `json:"status"`
  269. model2.ControlBy `swaggerignore:"true"`
  270. model2.DeptBy `swaggerignore:"true"`
  271. }
  272. type WaybillUpdateStatusReqList struct {
  273. Id []int `json:"id" comment:"编码" swaggerignore:"true"` // 编码
  274. Status int `json:"status"` //订单状态
  275. model2.ControlBy `swaggerignore:"true"`
  276. model2.DeptBy `swaggerignore:"true"`
  277. }
  278. //func (s *WaybillUpdateStatusReq) Generate(m *model.Waybill) {
  279. // if s.Id != 0 {
  280. // m.Id = s.Id
  281. // }
  282. // m.Status = s.Status
  283. //
  284. // if s.ControlBy.UpdateBy != 0 {
  285. // m.UpdateBy = s.UpdateBy
  286. // }
  287. // if s.ControlBy.CreateBy != 0 {
  288. // m.CreateBy = s.CreateBy
  289. // }
  290. //}
  291. func (s *WaybillUpdateStatusReq) GetId() interface{} {
  292. return s.Id
  293. }
  294. func (s *UpdateStatusReq) GetId() interface{} {
  295. return s.Id
  296. }
  297. type WaybillDeliveryReq struct {
  298. WaybillIds []int `json:"waybillIds"` // 运单id
  299. DeliveryId int `json:"deliveryId"` // 配送人id
  300. CoolerBoxId int `json:"coolerBoxId"` // 保温箱id
  301. IceRaftCode []string `json:"iceRaftCode"` // 冰排code
  302. Status int `json:"status"` // 配送状态
  303. OldIceRaftCode []string `json:"oldIceRaftCode" swaggerignore:"true"` // 旧的冰排code
  304. TamperProofLabel string `json:"tamperProofLabel" gorm:"size:128"` // 防拆标签
  305. TamperProofLabelImg string `json:"tamperProofLabelImg" gorm:"size:text"` // 防拆标签图片
  306. model2.ControlBy `swaggerignore:"true"`
  307. model2.DeptBy `swaggerignore:"true"`
  308. }
  309. func (s *WaybillDeliveryReq) GetId() interface{} {
  310. return s.WaybillIds
  311. }
  312. type WaybillGetReq struct {
  313. Id int `uri:"id"`
  314. }
  315. func (s *WaybillGetReq) GetId() interface{} {
  316. return s.Id
  317. }
  318. type WaybillDeleteReq struct {
  319. Id int `json:"id"`
  320. common.ControlBy `swaggerignore:"true"`
  321. }
  322. func (s *WaybillDeleteReq) GetId() interface{} {
  323. return s.Id
  324. }
  325. // 运单出入库/上下车
  326. type WaybillInOutReq struct {
  327. StartTime model2.Time `json:"startTime"`
  328. WaybillNoList []string `json:"waybillNoList"` // 订单编号
  329. }
  330. // 运单签收
  331. type WaybillReceiptReq struct {
  332. Status int `json:"status"` // 5 已签收 6 已拒收
  333. RejectionReason string `json:"rejectionReason"` // 拒收原因
  334. WaybillNo string `json:"waybillNo"` // 订单编号
  335. ReceiptImg string `json:"receiptImg"` // 签收图片凭证
  336. Receiptsign string `json:"receiptsign"` // 签收图片签字
  337. PaymentStatus int `json:"paymentStatus"` //支付状态 1 结清 2 未结清 3 支付完成
  338. PaymentType int `json:"paymentType"` //支付方式 1现金 2线上支付 3银行卡 4医保 5其他
  339. PaymentRemark string `json:"paymentremark"` //支付备注
  340. AssessStar int `json:"assessStar"` // 评价星星
  341. AssessContent string `json:"assessContent"` // 评价内容
  342. }
  343. type WaybillGetAppletPageReq struct {
  344. dto2.Pagination `search:"-"`
  345. WaybillNo string `form:"waybillNo" search:"type:contains;column:waybill_no;table:waybill_logistics"` // 运单编号
  346. Status int `form:"status" search:"type:exact;column:status;table:waybill_logistics"` // 状态
  347. WaybillOrder
  348. }
  349. type WaybillGetAppletPageOrder struct {
  350. CreatedAtOrder string `search:"type:order;column:created_at;table:waybill_logistics" form:"createdAtOrder" default:"desc"`
  351. }
  352. func (m *WaybillGetAppletPageReq) GetNeedSearch() interface{} {
  353. return *m
  354. }
  355. type WaybillImportReq struct {
  356. CustomerName string `form:"customerName"` //下单客户名称
  357. }
  358. type WaybillStatsReq struct {
  359. Date string `form:"date"` // 日期
  360. Type string `form:"type"` // 类型 month-月 year-年
  361. }
  362. type WaybillUserStatsReq struct {
  363. Date string `form:"date"` // 日期
  364. Type string `form:"type"` // 类型 month-月 year-年
  365. UserType string `form:"userType"` // 配送员 delivery-配送员 reCheck-复核员
  366. UserIds []int `form:"userId"` // 用户id
  367. }
  368. type WaybillStats struct {
  369. Date string `json:"date"` // 日期 2024-01-01
  370. Num int64 `json:"num"` // 数量
  371. }
  372. type WaybillUserStats struct {
  373. Name string
  374. Stats []WaybillStats `json:"stats"`
  375. }
  376. type WaybillStatsRes struct {
  377. TodayNum int64 `json:"todayNum"` // 今日总运单数
  378. WaitDeliveryNum int64 `json:"waitDeliveryNum"` // 已下单
  379. ReceiptNum int64 `json:"receiptNum"` // 已签收
  380. RejectionNum int64 `json:"rejectionNum"` // 已拒收
  381. InDeliveryNum int64 `json:"inDeliveryNum"` // 运送中
  382. ThisMonthNum int64 `json:"thisMonthNum"` // 本月运单数
  383. LastMonthNum int64 `json:"lastMonthNum"` // 上月运单数
  384. ThisYearNum int64 `json:"thisYearNum"` // 本年运单数
  385. LastYearNum int64 `json:"lastYearNum"` // 上年运单数
  386. Stats []WaybillStats `json:"stats"`
  387. }
  388. type WaybillGetByWaybillNoReq struct {
  389. WaybillNo string `form:"waybillNo" vd:"len($)>0;msg:'订单编号不能为空'"` // 运单编号-必填
  390. }
  391. type WaybillGetByWaybillPdfReq struct {
  392. WaybillNo string `form:"waybillNo" vd:"len($)>0;msg:'订单编号不能为空'"` // 运单编号-必填
  393. HumidityShow bool `form:"humidityShow" vd:""` // 湿度显示
  394. //TemplateShow bool `form:"templateShow" vd:""` // 湿度显示
  395. }
  396. type WaybillTurnarounds struct {
  397. WaybillNo string `json:"waybillNo" vd:"len($)>0;msg:'订单编号不能为空'"` // 运单编号-必填
  398. DeptId int `json:"deptId"` // 门店id
  399. }