TCoinOrderController.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. package com.szwl.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.gexin.fastjson.JSON;
  8. import com.szwl.constant.ResponseCodesEnum;
  9. import com.szwl.feign.EsFeign;
  10. import com.szwl.feign.SzwlFeign;
  11. import com.szwl.feign.bean.TAdminParam;
  12. import com.szwl.model.bean.CoinOrderVO;
  13. import com.szwl.model.bo.JsonMessage;
  14. import com.szwl.model.bo.R;
  15. import com.szwl.model.bo.ResponseModel;
  16. import com.szwl.model.entity.TAdmin;
  17. import com.szwl.model.entity.TCoinOrder;
  18. import com.szwl.model.entity.TEquipment;
  19. import com.szwl.model.query.OrderStatisticsDTO;
  20. import com.szwl.model.query.Pageable;
  21. import com.szwl.model.utils.JsonUtils;
  22. import com.szwl.service.TAdminService;
  23. import com.szwl.service.TCoinOrderService;
  24. import com.szwl.service.TEquipmentService;
  25. import com.szwl.service.es.EsTCoinOrderService;
  26. import io.swagger.annotations.ApiOperation;
  27. import org.apache.commons.lang.StringUtils;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.web.bind.annotation.*;
  30. import javax.annotation.Resource;
  31. import java.math.BigDecimal;
  32. import java.text.ParseException;
  33. import java.text.SimpleDateFormat;
  34. import java.util.Date;
  35. import java.util.List;
  36. /**
  37. * <p>
  38. * 前端控制器
  39. * </p>
  40. *
  41. * @author wuhs
  42. * @since 2023-08-23
  43. */
  44. @RestController
  45. @RequestMapping("/tCoinOrder")
  46. public class TCoinOrderController {
  47. @Resource
  48. SzwlFeign szwlFeign;
  49. @Autowired
  50. EsTCoinOrderService esTCoinOrderService;
  51. @Autowired
  52. TCoinOrderService coinOrderService;
  53. // @Resource
  54. // EsFeign esFeign;
  55. @Resource
  56. TAdminService adminService;
  57. @Resource
  58. TEquipmentService equipmentService;
  59. @ApiOperation(value = "测试feign")
  60. @GetMapping("/testFeign")
  61. public ResponseModel<List> testFeign(String name) {
  62. List list = R.getDataIfSuccess(szwlFeign.testList(new TAdminParam().setName(name)));
  63. return R.ok(list);
  64. }
  65. // @ApiOperation(value = "同步订单到es中")
  66. // @PostMapping("/saveOrderAbroadToEs")
  67. // public ResponseModel<?> saveToEs(@RequestBody TCoinOrder coinOrder){
  68. // if(coinOrder==null){
  69. // return R.fail(ResponseCodesEnum.A0001);
  70. // }
  71. // esFeign.saveOrderAbroadToEs(coinOrder);
  72. // return R.ok("同步es成功");
  73. // }
  74. /**
  75. * 保存 线下+海外 订单
  76. * @param coinOrderVO
  77. * @return
  78. */
  79. @PostMapping("/saveCoinOrder")
  80. @ResponseBody
  81. public Object saveCoinOrder(@RequestBody CoinOrderVO coinOrderVO) {
  82. String clientId = coinOrderVO.getClientId();
  83. String name = coinOrderVO.getName();
  84. Integer payType = coinOrderVO.getPayType();
  85. BigDecimal price = coinOrderVO.getPrice();
  86. String sn = coinOrderVO.getSn();
  87. TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
  88. // System.out.println("设备信息》》》" + equipment);
  89. String machineType = equipment.getMachineType(); // 设备类型
  90. Long adminId = equipment.getAdminId();
  91. if (adminId == null) {
  92. return JsonMessage.error("找不到设备商家");
  93. }
  94. // 根据 adminId 获取admin信息中的公司类型
  95. TAdmin byId = adminService.getById(adminId);
  96. String companyType = byId.getCompanyType();
  97. TCoinOrder coinOrder = new TCoinOrder();
  98. coinOrder.setType(null);
  99. coinOrder.setClientId(clientId);
  100. coinOrder.setAdminId(adminId);
  101. coinOrder.setProductName(name);
  102. coinOrder.setPayType(payType);
  103. coinOrder.setPrice(price);
  104. coinOrder.setProductNo(coinOrderVO.getNo());
  105. coinOrder.setSn(sn);
  106. coinOrder.setStatus("1"); // 线下纸币器订单都是已付款
  107. coinOrder.setIsAir("0"); // 非空中云汇
  108. // 设备类型0或null是棉花糖,1是爆米花
  109. if ("1".equals(machineType)) {
  110. coinOrder.setMachineType("1");
  111. }
  112. // 如果是七云
  113. if ("1".equals(companyType)) {
  114. coinOrder.setCompanyType("1");
  115. }
  116. if(coinOrderVO.getProductNumber()==null||coinOrderVO.getProductNumber()==0){
  117. coinOrderVO.setProductNumber(1);
  118. }else {
  119. coinOrder.setProductNumber(coinOrderVO.getProductNumber());
  120. }
  121. if(StringUtils.isNotEmpty(coinOrderVO.getCreateDate())){
  122. java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
  123. Date date1 = null;
  124. try {
  125. date1 = formatter.parse(coinOrderVO.getCreateDate());
  126. } catch (ParseException e) {
  127. e.printStackTrace();
  128. }
  129. coinOrder.setCreateDate(date1);
  130. coinOrder.setModifyDate(date1);
  131. coinOrder.setPayDate(date1);
  132. }else{
  133. coinOrder.setCreateDate(new Date());
  134. coinOrder.setModifyDate(new Date());
  135. coinOrder.setPayDate(new Date());
  136. }
  137. coinOrderService.save(coinOrder);
  138. try {
  139. esTCoinOrderService.insertData(coinOrder);
  140. }catch (Exception e) {
  141. e.printStackTrace();
  142. }
  143. return JsonMessage.success("添加线下订单成功");
  144. }
  145. //设备查询线下订单记录
  146. @RequestMapping(value = "/findCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
  147. @ResponseBody
  148. public String list(String clientId, String sn, String productName, Integer payType, Date begin, Date end, Pageable pageable) {
  149. LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
  150. if (StringUtils.isNotEmpty(sn)) {
  151. query.eq(TCoinOrder::getSn,sn);
  152. }
  153. if (StringUtils.isNotEmpty(productName)) {
  154. query.eq(TCoinOrder::getProductName,productName);
  155. }
  156. if (payType != null) {
  157. query.eq(TCoinOrder::getPayType,payType);
  158. }
  159. if (begin != null && end != null) {
  160. query.gt(TCoinOrder::getPayDate,begin);
  161. query.lt(TCoinOrder::getPayDate,end);
  162. }
  163. query.eq(TCoinOrder::getClientId,clientId);
  164. int size = pageable.getPageSize();
  165. int current = pageable.getPageNumber();
  166. Page<TCoinOrder> page = new Page<>(current, size, true);
  167. IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
  168. long total = page.getTotal();
  169. JSONObject jsonObject = new JSONObject();
  170. jsonObject.put("total", total);
  171. jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords()));
  172. return jsonObject.toJSONString();
  173. }
  174. //设备查询线下订单记录
  175. @RequestMapping(value = "/newFindCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
  176. @ResponseBody
  177. public String newFindCoinOrder(String clientId, String sn, String productName, Integer payType, String begin,String end, Pageable pageable) {
  178. LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
  179. java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
  180. Date date1 = null;
  181. Date date2 = null;
  182. try {
  183. date1 = formatter.parse(begin);
  184. date2 = formatter.parse(end);
  185. } catch (ParseException e) {
  186. e.printStackTrace();
  187. }
  188. if (StringUtils.isNotEmpty(sn)) {
  189. query.eq(TCoinOrder::getSn,sn);
  190. }
  191. if (StringUtils.isNotEmpty(productName)) {
  192. query.eq(TCoinOrder::getProductName,productName);
  193. }
  194. if (payType != null) {
  195. query.eq(TCoinOrder::getPayType,payType);
  196. }
  197. if (begin != null && end != null) {
  198. query.gt(TCoinOrder::getPayDate,begin);
  199. query.lt(TCoinOrder::getPayDate,end);
  200. }
  201. query.eq(TCoinOrder::getClientId,clientId);
  202. int size = pageable.getPageSize();
  203. int current = pageable.getPageNumber();
  204. Page<TCoinOrder> page = new Page<>(current, size, true);
  205. IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
  206. long total = page.getTotal();
  207. JSONObject jsonObject = new JSONObject();
  208. jsonObject.put("total", total);
  209. jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords()));
  210. return jsonObject.toJSONString();
  211. }
  212. //设备查看线下汇总统计
  213. @RequestMapping(value = "/listCoin", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
  214. @ResponseBody
  215. public Object findByTime(String clientId, String startTime, String endTime) {
  216. java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
  217. Date date1 = null;
  218. Date date2 = null;
  219. try {
  220. date1 = formatter.parse(startTime);
  221. date2 = formatter.parse(endTime);
  222. } catch (ParseException e) {
  223. e.printStackTrace();
  224. }
  225. List<OrderStatisticsDTO> list = coinOrderService.findTotalByTime(clientId, date1, date2);
  226. JSONObject jsonObject = new JSONObject();
  227. jsonObject.put("code", 0);
  228. jsonObject.put("data", JsonUtils.toJson(list));
  229. jsonObject.put("errmsg", "");
  230. return jsonObject;
  231. }
  232. }