Sfoglia il codice sorgente

feat:“新增传商品编号的订单上传接口“

soobin 1 anno fa
parent
commit
feddf41cbc

+ 173 - 0
src/main/java/com/szwl/controller/TCoinOrderController.java

@@ -16,12 +16,14 @@ 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.*;
@@ -30,6 +32,7 @@ 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;
@@ -42,6 +45,7 @@ import java.util.List;
  * @author wuhs
  * @since 2023-08-29
  */
+@Slf4j
 @RestController
 @RequestMapping("/tCoinOrder")
 public class TCoinOrderController {
@@ -81,6 +85,131 @@ public class TCoinOrderController {
 //        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 byId = R.getDataIfSuccess(szwlFeign.getAdmin(adminIdStr));
+        String companyType = byId.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.isNotEmpty(machineType) && machineType.equals("1")) {
+            coinOrder.setMachineType(machineType);
+            tOrderDetails.setMachineType(machineType);
+        } else {
+            coinOrder.setMachineType("0");
+            tOrderDetails.setMachineType("0");
+        }
+        // 公司平台
+        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 {
+            esTCoinOrderService.insertData(coinOrder);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return JsonMessage.success("添加线下订单成功");
+    }
+
     /**
      * 保存 线下/海外纸币器 订单
      *
@@ -339,5 +468,49 @@ public class TCoinOrderController {
         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);
+    }
+
+
+
 }
 

+ 3 - 23
src/main/java/com/szwl/controller/TOrderController.java

@@ -78,7 +78,7 @@ public class TOrderController {
     @Autowired
     TOrderDetailsService orderDetailsService;
 
-    // 获取订单列表
+    @ApiOperation(value = "订单列表")
     @GetMapping("/pageOrder")
     public ResponseModel<IPage<?>> pageOrder(String equipmentId, String adminId, String adminType,
                                              String type, String sn, String status, String userName,
@@ -789,12 +789,6 @@ public class TOrderController {
                         .setMessage("SUCCESS"));
     }
 
-    /**
-     * 统计 机器销售排行
-     *
-     * @param param
-     * @return
-     */
     @ApiOperation(value = "机器销售排行统计")
     @PostMapping("/getEquipmentStatistics")
     public ResponseEntity<?> getEquipmentStatistics(@RequestBody StatisticsParam param) {
@@ -982,7 +976,6 @@ public class TOrderController {
                         .setMessage("SUCCESS"));
     }
 
-    //查询线上订单
     @ApiOperation(value = "查询国内线上订单")
     @RequestMapping(value = "/findOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
     @ResponseBody
@@ -1055,9 +1048,6 @@ public class TOrderController {
         return jsonObject.toJSONString();
     }
 
-    /**
-     * 订单数据导出
-     */
     @ApiOperation(value = "订单数据导出-查询")
     @RequestMapping(value = "/orderSelect", method = RequestMethod.GET)
     public ResponseModel<?> orderSelect(String type, String clientId, String username, String ifForeign,
@@ -1199,9 +1189,7 @@ public class TOrderController {
         return R.ok(page0);
     }
 
-    /**
-     * 订单数据导出
-     */
+
     @ApiOperation(value = "订单数据导出-导出")
     @RequestMapping(value = "/onlineExport", method = RequestMethod.GET)
     @LogAnnotation(module = "模块名称:订单", operator = "操作参数:导出订单数据")
@@ -1748,15 +1736,7 @@ public class TOrderController {
         return R.ok("同步es成功");
     }
 
-    /**
-     * 线上通过时间分组
-     *
-     * @param clientId
-     * @param startTime
-     * @param endTime
-     * @param unit
-     * @return
-     */
+    @ApiOperation(value = "线上通过时间分组")
     @RequestMapping(value = "/getStatisticsByClientId", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
     @ResponseBody
     public Object getStatisticsByClientId(String clientId, String startTime, String endTime, Integer unit) {