123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- package com.szwl.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.gexin.fastjson.JSON;
- import com.szwl.feign.SzwlFeign;
- import com.szwl.feign.bean.TAdminParam;
- import com.szwl.model.bean.CoinOrderVO;
- import com.szwl.model.bo.JsonMessage;
- import com.szwl.model.bo.R;
- import com.szwl.model.bo.ResponseModel;
- import com.szwl.model.entity.*;
- import com.szwl.model.query.OrderStatisticsDTO;
- import com.szwl.model.query.Pageable;
- import com.szwl.model.query.TCoinOrderParam;
- import com.szwl.model.utils.JsonUtils;
- import com.szwl.service.*;
- import com.szwl.service.es.EsTCoinOrderService;
- import com.szwl.util.HuifuUtils;
- import com.szwl.util.IDGenerator;
- import io.swagger.annotations.ApiOperation;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author wuhs
- * @since 2023-08-29
- */
- @Slf4j
- @RestController
- @RequestMapping("/tCoinOrder")
- public class TCoinOrderController {
- @Resource
- SzwlFeign szwlFeign;
- @Autowired
- EsTCoinOrderService esTCoinOrderService;
- @Autowired
- TCoinOrderService coinOrderService;
- @Autowired
- TOrderDetailsService orderDetailsService;
- @Autowired
- TNameDictionaryService nameDictionaryService;
- // @Resource
- // EsFeign esFeign;
- @Resource
- TAdminService adminService;
- @Resource
- TEquipmentService equipmentService;
- @ApiOperation(value = "测试feign")
- @GetMapping("/testFeign")
- public ResponseModel<List> testFeign(String name) {
- List list = R.getDataIfSuccess(szwlFeign.testList(new TAdminParam().setName(name)));
- return R.ok(list);
- }
- // @ApiOperation(value = "同步订单到es中")
- // @PostMapping("/saveOrderAbroadToEs")
- // public ResponseModel<?> saveToEs(@RequestBody TCoinOrder coinOrder){
- // if(coinOrder==null){
- // return R.fail(ResponseCodesEnum.A0001);
- // }
- // esFeign.saveOrderAbroadToEs(coinOrder);
- // return R.ok("同步es成功");
- // }
- @ApiOperation(value = "上传线下/海外纸币器订单")
- @PostMapping("/newSaveCoinOrder")
- @ResponseBody
- public Object newSaveCoinOrder(@RequestBody CoinOrderVO coinOrderVO) {
- String clientId = coinOrderVO.getClientId();
- String name = coinOrderVO.getName();
- Integer payType = coinOrderVO.getPayType();
- BigDecimal price = coinOrderVO.getPrice();
- String sn = coinOrderVO.getSn();
- // no: 商品名称-编号-数量,玫瑰精灵-A01-1,雪糕-I01-1
- String no = coinOrderVO.getNo();
- LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TCoinOrder::getSn, sn);
- List<TCoinOrder> coinOrders = coinOrderService.list(queryWrapper);
- if (coinOrders.size() > 0) {
- try {
- esTCoinOrderService.insertData(coinOrders.get(0));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JsonMessage.success("添加线下订单成功");
- }
- TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
- String machineType = equipment.getMachineType(); // 设备类型
- Long adminId = equipment.getAdminId();
- if (adminId == null) {
- return JsonMessage.error("找不到设备商家");
- }
- String adminIdStr = String.valueOf(adminId);
- // 根据 adminId 获取admin信息中的公司类型
- TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminIdStr));
- String companyType = admin.getCompanyType();
- TCoinOrder coinOrder = new TCoinOrder();
- coinOrder.setId(IDGenerator.coinOrderID());
- coinOrder.setType(null);
- coinOrder.setClientId(clientId);
- coinOrder.setAdminId(adminId);
- coinOrder.setProductName(name);
- coinOrder.setPayType(payType);
- coinOrder.setPrice(price);
- coinOrder.setSn(sn);
- // 线下纸币器订单都是已付款
- coinOrder.setStatus(1);
- // 0或null 非空中云汇
- coinOrder.setIsAir("0");
- coinOrder.setEquipmentId(equipment.getId());
- // 保存订单明细
- TOrderDetails tOrderDetails = new TOrderDetails();
- tOrderDetails.setOrderSn(sn);
- tOrderDetails.setEquipmentId(equipment.getId());
- tOrderDetails.setRefundStatus("1");
- tOrderDetails.setAdminId(adminId);
- // 设备类型
- if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
- coinOrder.setMachineType("0");
- tOrderDetails.setMachineType("0");
- } else {
- coinOrder.setMachineType(machineType);
- tOrderDetails.setMachineType(machineType);
- }
- // 公司平台
- if (StringUtils.isNotEmpty(companyType) && companyType.equals("1")) {
- coinOrder.setCompanyType(companyType);
- tOrderDetails.setCompanyType(companyType);
- } else {
- coinOrder.setCompanyType("0");
- tOrderDetails.setCompanyType("0");
- }
- // 商品数量
- if (coinOrderVO.getProductNumber() == null || coinOrderVO.getProductNumber() == 0) {
- coinOrderVO.setProductNumber(1);
- } else {
- coinOrder.setProductNumber(coinOrderVO.getProductNumber());
- }
- if (StringUtils.isNotEmpty(coinOrderVO.getCreateDate())) {
- java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date1 = null;
- try {
- date1 = formatter.parse(coinOrderVO.getCreateDate());
- } catch (ParseException e) {
- e.printStackTrace();
- }
- coinOrder.setCreateDate(date1);
- coinOrder.setModifyDate(date1);
- coinOrder.setPayDate(date1);
- tOrderDetails.setCreateDate(date1);
- } else {
- coinOrder.setCreateDate(new Date());
- coinOrder.setModifyDate(new Date());
- coinOrder.setPayDate(new Date());
- tOrderDetails.setCreateDate(new Date());
- }
- coinOrderService.save(coinOrder);
- try {
- String[] split = no.split(",");
- for (String s : split) {
- String[] strings = s.split("-");
- // 商品名称
- String goodName = strings[0];
- // 商品编号
- String goodNo = strings[1];
- // 商品数量
- Integer productNumber = Integer.valueOf(strings[2]);
- tOrderDetails.setId(HuifuUtils.initDetailsId());
- tOrderDetails.setProductNumber(productNumber);
- tOrderDetails.setProductName(goodName);
- tOrderDetails.setProductNo(goodNo);
- orderDetailsService.save(tOrderDetails);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- // 推送微信订单
- // 判断是否开启订单推送功能
- if (admin != null && StringUtils.isNotEmpty(admin.getOrderNotice()) && admin.getOrderNotice().equals("1")) {
- String openId = R.getDataIfSuccess(szwlFeign.getOpenId(adminId));
- // 获取openId
- if (StringUtils.isNotEmpty(openId)) {
- coinOrderService.sendWechatMessage(openId, equipment, coinOrder, admin.getCompanyType());
- }
- }
- esTCoinOrderService.insertData(coinOrder);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JsonMessage.success("添加线下订单成功");
- }
- /**
- * 保存 线下/海外纸币器 订单
- *
- * @param coinOrderVO
- * @return
- */
- @PostMapping("/saveCoinOrder")
- @ResponseBody
- public Object saveCoinOrder(@RequestBody CoinOrderVO coinOrderVO) {
- String clientId = coinOrderVO.getClientId();
- String name = coinOrderVO.getName();
- Integer payType = coinOrderVO.getPayType();
- BigDecimal price = coinOrderVO.getPrice();
- String sn = coinOrderVO.getSn();
- LambdaQueryWrapper<TCoinOrder> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(TCoinOrder::getSn, sn);
- List<TCoinOrder> coinOrders = coinOrderService.list(queryWrapper);
- if (coinOrders.size() > 0) {
- try {
- esTCoinOrderService.insertData(coinOrders.get(0));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JsonMessage.success("添加线下订单成功");
- }
- TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
- String machineType = equipment.getMachineType(); // 设备类型
- Long adminId = equipment.getAdminId();
- if (adminId == null) {
- return JsonMessage.error("找不到设备商家");
- }
- String adminIdStr = String.valueOf(adminId);
- // 根据 adminId 获取admin信息中的公司类型
- TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminIdStr));
- String companyType = admin.getCompanyType();
- TCoinOrder coinOrder = new TCoinOrder();
- coinOrder.setId(IDGenerator.coinOrderID());
- coinOrder.setType(null);
- coinOrder.setClientId(clientId);
- coinOrder.setAdminId(adminId);
- coinOrder.setProductName(name);
- coinOrder.setPayType(payType);
- coinOrder.setPrice(price);
- coinOrder.setSn(sn);
- // 线下纸币器订单都是已付款
- coinOrder.setStatus(1);
- // 0或null 非空中云汇
- coinOrder.setIsAir("0");
- coinOrder.setEquipmentId(equipment.getId());
- // 保存订单明细
- TOrderDetails tOrderDetails = new TOrderDetails();
- tOrderDetails.setOrderSn(sn);
- tOrderDetails.setEquipmentId(equipment.getId());
- tOrderDetails.setRefundStatus("1");
- tOrderDetails.setAdminId(adminId);
- // 设备类型
- if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
- coinOrder.setMachineType("0");
- tOrderDetails.setMachineType("0");
- } else {
- coinOrder.setMachineType(machineType);
- tOrderDetails.setMachineType(machineType);
- }
- // 公司平台
- if (StringUtils.isNotEmpty(companyType) && companyType.equals("1")) {
- coinOrder.setCompanyType(companyType);
- tOrderDetails.setCompanyType(companyType);
- } else {
- coinOrder.setCompanyType("0");
- tOrderDetails.setCompanyType("0");
- }
- // 商品数量
- if (coinOrderVO.getProductNumber() == null || coinOrderVO.getProductNumber() == 0) {
- coinOrderVO.setProductNumber(1);
- } else {
- coinOrder.setProductNumber(coinOrderVO.getProductNumber());
- }
- if (StringUtils.isNotEmpty(coinOrderVO.getCreateDate())) {
- java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date1 = null;
- try {
- date1 = formatter.parse(coinOrderVO.getCreateDate());
- } catch (ParseException e) {
- e.printStackTrace();
- }
- coinOrder.setCreateDate(date1);
- coinOrder.setModifyDate(date1);
- coinOrder.setPayDate(date1);
- tOrderDetails.setCreateDate(date1);
- } else {
- coinOrder.setCreateDate(new Date());
- coinOrder.setModifyDate(new Date());
- coinOrder.setPayDate(new Date());
- tOrderDetails.setCreateDate(new Date());
- }
- coinOrderService.save(coinOrder);
- try {
- if (name.contains("-")) {
- HashMap<String, Integer> map = new HashMap<>();
- String[] split = name.split(",");
- for (String s : split) {
- String[] strings = s.split("-");
- map.put(strings[0], Integer.valueOf(strings[1]));
- }
- for (String key : map.keySet()) {
- // key:"A01",value:"1"
- // 找到商品名称对应设备的商品信息
- Integer productNumber = map.get(key);
- tOrderDetails.setId(HuifuUtils.initDetailsId());
- tOrderDetails.setProductNumber(productNumber);
- tOrderDetails.setProductName(key);
- TProduct product = R.getDataIfSuccess(szwlFeign.getProduct(String.valueOf(equipment.getId()), key));
- if (product == null) {
- // 找到对应的商品名称的字典
- LambdaQueryWrapper<TNameDictionary> wrapper = Wrappers.lambdaQuery();
- wrapper.eq(TNameDictionary::getName, key);
- List<TNameDictionary> list = nameDictionaryService.list(wrapper);
- if (list.size() > 0) {
- tOrderDetails.setProductNo(list.get(0).getNo());
- } else {
- tOrderDetails.setProductNo("A01");
- }
- } else {
- tOrderDetails.setProductNo(product.getNo());
- }
- orderDetailsService.save(tOrderDetails);
- }
- } else {
- tOrderDetails.setId(HuifuUtils.initDetailsId());
- tOrderDetails.setProductName(name);
- tOrderDetails.setProductNumber(1);
- if (name.contains("DIY")) {
- tOrderDetails.setProductNo("A99");
- } else {
- TProduct product = R.getDataIfSuccess(szwlFeign.getProduct(String.valueOf(equipment.getId()), name));
- if (product == null) {
- // 找到对应的商品名称的字典
- LambdaQueryWrapper<TNameDictionary> wrapper = Wrappers.lambdaQuery();
- wrapper.eq(TNameDictionary::getName, name);
- List<TNameDictionary> list = nameDictionaryService.list(wrapper);
- if (list.size() > 0) {
- tOrderDetails.setProductNo(list.get(0).getNo());
- } else {
- tOrderDetails.setProductNo("A01");
- }
- } else {
- tOrderDetails.setProductNo(product.getNo());
- }
- }
- orderDetailsService.save(tOrderDetails);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- // 推送微信订单
- // 判断是否开启订单推送功能
- if (admin != null && StringUtils.isNotEmpty(admin.getOrderNotice()) && admin.getOrderNotice().equals("1")) {
- String openId = R.getDataIfSuccess(szwlFeign.getOpenId(adminId));
- // 获取openId
- if (StringUtils.isNotEmpty(openId)) {
- coinOrderService.sendWechatMessage(openId, equipment, coinOrder, admin.getCompanyType());
- }
- }
- esTCoinOrderService.insertData(coinOrder);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JsonMessage.success("添加线下订单成功");
- }
- //设备查询线下订单记录
- @RequestMapping(value = "/findCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
- @ResponseBody
- public String list(String clientId, String sn, String productName, Integer payType, Date begin, Date end, Pageable pageable) {
- LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
- if (StringUtils.isNotEmpty(sn)) {
- query.eq(TCoinOrder::getSn, sn);
- }
- if (StringUtils.isNotEmpty(productName)) {
- query.eq(TCoinOrder::getProductName, productName);
- }
- if (payType != null) {
- query.eq(TCoinOrder::getPayType, payType);
- }
- if (begin != null && end != null) {
- query.gt(TCoinOrder::getPayDate, begin);
- query.lt(TCoinOrder::getPayDate, end);
- }
- query.eq(TCoinOrder::getClientId, clientId);
- int size = pageable.getPageSize();
- int current = pageable.getPageNumber();
- Page<TCoinOrder> page = new Page<>(current, size, true);
- IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
- long total = page.getTotal();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("total", total);
- jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords()));
- return jsonObject.toJSONString();
- }
- //设备查询线下订单记录
- @RequestMapping(value = "/newFindCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
- @ResponseBody
- public String newFindCoinOrder(String clientId, String sn, String productName, Integer payType, String begin, String end, Pageable pageable) {
- LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
- java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date1 = null;
- Date date2 = null;
- try {
- date1 = formatter.parse(begin);
- date2 = formatter.parse(end);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (StringUtils.isNotEmpty(sn)) {
- query.eq(TCoinOrder::getSn, sn);
- }
- if (StringUtils.isNotEmpty(productName)) {
- query.eq(TCoinOrder::getProductName, productName);
- }
- if (payType != null) {
- query.eq(TCoinOrder::getPayType, payType);
- }
- if (begin != null && end != null) {
- query.gt(TCoinOrder::getPayDate, begin);
- query.lt(TCoinOrder::getPayDate, end);
- }
- query.eq(TCoinOrder::getClientId, clientId);
- int size = pageable.getPageSize();
- int current = pageable.getPageNumber();
- Page<TCoinOrder> page = new Page<>(current, size, true);
- IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
- long total = page.getTotal();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("total", total);
- jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords()));
- return jsonObject.toJSONString();
- }
- //设备查看线下汇总统计
- @RequestMapping(value = "/listCoin", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
- @ResponseBody
- public Object findByTime(String clientId, String startTime, String endTime) {
- java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date1 = null;
- Date date2 = null;
- try {
- date1 = formatter.parse(startTime);
- date2 = formatter.parse(endTime);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- List<OrderStatisticsDTO> list = coinOrderService.findTotalByTime(clientId, date1, date2);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("code", 0);
- jsonObject.put("data", JsonUtils.toJson(list));
- jsonObject.put("errmsg", "");
- return jsonObject;
- }
- @PostMapping("/fixOrder")
- public ResponseModel<?> fixOrder(@RequestBody TCoinOrderParam param) {
- LambdaQueryWrapper<TCoinOrder> query = Wrappers.lambdaQuery();
- query.gt(TCoinOrder::getCreateDate, param.getCreateDate_start());
- query.lt(TCoinOrder::getCreateDate, param.getCreateDate_end());
- List<TCoinOrder> list = coinOrderService.list(query);
- ArrayList<String> snList = new ArrayList<>();
- for (TCoinOrder coinOrder : list) {
- String sn = coinOrder.getSn();
- if (!snList.contains(sn)) {
- LambdaQueryWrapper<TCoinOrder> snQuery = Wrappers.lambdaQuery();
- snQuery.eq(TCoinOrder::getSn, sn);
- query.gt(TCoinOrder::getCreateDate, param.getCreateDate_start());
- query.lt(TCoinOrder::getCreateDate, param.getCreateDate_end());
- List<TCoinOrder> coinOrderList = coinOrderService.list(snQuery);
- if (coinOrderList.size() > 1) {
- snList.add(sn);
- }
- }
- }
- if (snList.size() > 0) {
- for (String s : snList) {
- try {
- LambdaQueryWrapper<TCoinOrder> snQuery = Wrappers.lambdaQuery();
- snQuery.eq(TCoinOrder::getSn, s);
- List<TCoinOrder> coinOrderList = coinOrderService.list(snQuery);
- if (coinOrderList.size() > 1) {
- for (int i = 1; i < coinOrderList.size(); i++) {
- TCoinOrder coinOrder = coinOrderList.get(i);
- Long id = coinOrder.getId();
- coinOrderService.removeById(id);
- esTCoinOrderService.deleteTableById(String.valueOf(id));
- }
- }
- } catch (Exception e) {
- log.error("ElasticsearchRunner deleteData 发生错误:{}", e);
- }
- }
- }
- return R.ok(snList);
- }
- }
|