李天标 преди 2 години
родител
ревизия
4fdd4e6751

+ 297 - 24
src/main/java/com/szwl/controller/TOrderController.java

@@ -54,10 +54,7 @@ import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * <p>
@@ -86,7 +83,7 @@ public class TOrderController {
     @Autowired
     SzwlFeign szwlFeign;
     @GetMapping("/pageOrder")
-    public ResponseModel<IPage<?>> pageOrder(String adminId,String adminType,String type,String userName,String payType,String productNo,String clientId,String dateType, Date startDate, Date endDate, long current, long size ) {
+    public ResponseModel<IPage<?>> pageOrder(String adminId,String adminType,String type,String sn,String status,String userName,String payType,String productNo,String clientId,String trxNo,String dateType, String startDate, String endDate, long current, long size ) {
         //判断当前账号状态
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(adminId));
         //类型
@@ -95,7 +92,7 @@ public class TOrderController {
             LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
             //adminType="all"时,代表查全部下级  子账户没有这个权限  公司人员默认查所有人
             if(StringUtils.isNotEmpty(adminType)){
-                if(admin.getIsAdmined().equals("0")&&admin.getType()>1){
+                if(admin.getIsAdmined()&&admin.getType()>1){
                     if(admin.getType()>1){
                         if(adminType.equals("all")){
                             //查找所有下级
@@ -125,7 +122,7 @@ public class TOrderController {
                     //商家 判断是否子账户
                     if(admin.getIsAdmined()){
                         //商家自己
-                        query.eq(TOrder::getAdminId,adminId);
+//                        query.eq(TOrder::getAdminId,adminId);
                     }else {
                         //商家 子账户
                         //登录账户为子账户 不查下级 只查对应机器的订单
@@ -142,7 +139,7 @@ public class TOrderController {
                     }
                 }
             }
-            if(StringUtils.isNotEmpty(userName)){
+            if(StringUtils.isNotEmpty(userName)&&!userName.equals("admin")){
                 ResponseModel<TAdmin> adminByUsername = szwlFeign.getAdminByUsername(userName);
                 TAdmin data = adminByUsername.getData();
                 if(data==null||data.getId()==null){
@@ -156,6 +153,15 @@ public class TOrderController {
             if(StringUtils.isNotEmpty(productNo)){
                 query.eq(TOrder::getProductNo,productNo);
             }
+            if(StringUtils.isNotEmpty(sn)){
+                query.like(TOrder::getSn,sn);
+            }
+            if(StringUtils.isNotEmpty(trxNo)){
+                query.like(TOrder::getTrxNo,trxNo);
+            }
+            if(StringUtils.isNotEmpty(status)){
+                query.eq(TOrder::getStatus,status);
+            }
             if(StringUtils.isNotEmpty(clientId)){
                 TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));
                 //判断机器是否属于这个登陆账号
@@ -169,25 +175,60 @@ public class TOrderController {
                 }
             }
             if(StringUtils.isNotEmpty(dateType)){
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 if(dateType.equals("0")){
                     //创建时间
-                    if(startDate!=null){
-                        query.gt(TOrder::getCreateDate,startDate);
+                    if(StringUtils.isNotEmpty(startDate)){
+                        try {
+                            query.gt(TOrder::getCreateDate,simpleDateFormat.parse(startDate));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+
                     }
-                    if(endDate!=null){
-                        query.lt(TOrder::getCreateDate,endDate);
+                    if(StringUtils.isNotEmpty(endDate)){
+                        try {
+                            query.lt(TOrder::getCreateDate,simpleDateFormat.parse(endDate));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    if(StringUtils.isEmpty(startDate)&&StringUtils.isEmpty(endDate)){
+                        try {
+                            query.gt(TOrder::getCreateDate,getStartTime(new Date()));
+                            query.lt(TOrder::getCreateDate,getEndTime(new Date()));
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
                     }
                 }
                 if(dateType.equals("1")){
                     //退款时间
-                    if(startDate!=null){
-                        query.gt(TOrder::getRefundDate,startDate);
+                    if(StringUtils.isNotEmpty(startDate)){
+                        try {
+                            query.gt(TOrder::getRefundDate,simpleDateFormat.parse(startDate));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
                     }
-                    if(endDate!=null){
-                        query.lt(TOrder::getRefundDate,endDate);
+                    if(StringUtils.isNotEmpty(endDate)){
+                        try {
+                            query.lt(TOrder::getRefundDate,simpleDateFormat.parse(startDate));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    if(StringUtils.isEmpty(startDate)&&StringUtils.isEmpty(endDate)){
+                        try {
+                            query.gt(TOrder::getRefundDate,getStartTime(new Date()));
+                            query.lt(TOrder::getRefundDate,getEndTime(new Date()));
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
                     }
                 }
             }
+            query.orderByDesc(TOrder::getCreateDate);
             Page<TOrder> page = new Page<>(current, size, true);
             IPage<TOrder> iPage = orderService.page(page, query);
             return R.ok(iPage);
@@ -228,7 +269,7 @@ public class TOrderController {
                     //商家 判断是否子账户
                     if(admin.getIsAdmined()){
                         //商家自己
-                        query.eq(TCoinOrder::getAdminId,adminId);
+//                        query.eq(TCoinOrder::getAdminId,adminId);
                     }else {
                         //商家 子账户
                         //登录账户为子账户 不查下级 只查对应机器的订单
@@ -277,6 +318,29 @@ public class TOrderController {
             if(endDate!=null){
                 query.lt(TCoinOrder::getPayDate,endDate);
             }
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if(StringUtils.isNotEmpty(startDate)){
+                try {
+                    query.gt(TCoinOrder::getPayDate,simpleDateFormat.parse(startDate));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+            if(StringUtils.isNotEmpty(endDate)){
+                try {
+                    query.lt(TCoinOrder::getPayDate,simpleDateFormat.parse(endDate));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+            if(StringUtils.isEmpty(startDate)&&StringUtils.isEmpty(endDate)){
+                try {
+                    query.gt(TCoinOrder::getPayDate,getStartTime(new Date()));
+                    query.lt(TCoinOrder::getPayDate,getEndTime(new Date()));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
             Page<TCoinOrder> page = new Page<>(current, size, true);
             IPage<TCoinOrder> iPage = coinOrderService.page(page, query);
             return R.ok(iPage);
@@ -318,7 +382,7 @@ public class TOrderController {
         return R.fail(ResponseCodesEnum.A0001);
     }
     /**
-     * 判断查询用户是否为外国
+     * 获取首页数据统计
      * @return
      */
     private String isForeignUser(String userId){
@@ -349,6 +413,178 @@ public class TOrderController {
                 //补全clientId
                 TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
                 param.setClientId(tEquipment.getClientId());
+//                param.setClientId(tEquipment.getClientId());
+            }
+        }else {
+            if(admin.getType()==2){
+                //商家
+                if(param.getEquipmentId()!=null&&param.getEquipmentId()!=""){
+                    //查机器
+                    TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
+                    param.setClientId(equipment.getClientId());
+
+                }
+                if(StringUtils.isNotEmpty(param.getClientId())){
+                    param.setAdminId(null);
+                    //判断是否是这个商家的
+                    TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
+                    if(tEquipment.getAdminId().toString().equals(admin.getId().toString())){
+                        param.setClientId(tEquipment.getClientId());
+                        param.setEquipmentId(String.valueOf(tEquipment.getId()));
+                    }
+                }
+            }
+            if(admin.getType()==3){
+                //子账户只能查相对的机器的订单
+                //商家子账户
+                if(param.getEquipmentId()!=null){
+                    //查机器
+                    TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
+                    param.setClientId(equipment.getClientId());
+
+                }else{
+                    TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
+                    if(adminEquipment.getType().equals("0")){
+                        TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
+                        param.setAdminId(admin1.getId().toString());
+                    }else {
+                        List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
+                        param.setClientIds(list);
+                    }
+                }
+                if(StringUtils.isNotEmpty(param.getClientId())){
+                    param.setAdminId(null);
+                    //判断是否是这个子账号的
+                    TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
+
+                    TAdminEquipment adminEquipment = R.getDataIfSuccess(szwlFeign.getClientIdList(String.valueOf(admin.getId())));
+                    if(adminEquipment.getType().equals("0")){
+                        TAdmin admin1 = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(admin.getParentId())));
+                        if(tEquipment.getAdminId().toString().equals(admin1.getId())){
+                            param.setAdminId(null);
+                            param.setClientId(tEquipment.getClientId());
+                            param.setEquipmentId(String.valueOf(tEquipment.getId()));
+                        }
+                    }else {
+                        int i = 0;
+                        List<String> list = R.getDataIfSuccess(szwlFeign.getClientIds(param.getAdminId()));
+                        if(list.size()>0){
+                            for(String clientID:list){
+                                if(clientID.equals(tEquipment.getClientId())){
+                                    i++;
+                                }
+                            }
+                        }
+                        if(i>0){
+                            param.setClientId(tEquipment.getClientId());
+                            param.setEquipmentId(String.valueOf(tEquipment.getId()));
+                        }
+
+                    }
+                }
+            }
+
+        }
+        if(StringUtils.isNotEmpty(param.getUsername())){
+            if(param.getUsername().equals("all")){
+                //商家查全部
+                //判断是不是商家账户
+                if(admin.getType()==3){
+                    //查下级账户id集合
+                    List<Long> list = R.getDataIfSuccess(szwlFeign.getAdminIdList(param.getAdminId()));
+                    if(list.size()>0){
+                        param.setAdminIds(list);
+                        param.setAdminId(null);
+                    }
+                }
+            }
+        }
+        FgObjectUtil.objectNullOrEmptySel(param, "chartType$");
+        ChartColumn chartColumn = new ChartColumn();
+        if(StringUtils.isNotEmpty(param.getIfForeign())&&param.getIfForeign().equals("1")){
+            if(StringUtils.isNotEmpty(param.getPayType())&&param.getPayType().equals("all")){
+                param.setPayType(null);
+            }
+            //国外查MYSQL
+
+            chartColumn  = orderService.getStatistics(param);
+        }else{
+            //查去年的数据找数据库
+            String endDate = param.getEndDate();
+            String toYear = "2022-01-01 00:00:00";
+            Date date =null;
+            Date year = null;
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            try {
+                //使用SimpleDateFormat的parse()方法生成Date
+                date = sf.parse(endDate);
+                year = sf.parse(toYear);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+            if(date.getTime()<year.getTime()){
+                chartColumn  = orderService.getStatistics(param);
+            }else {
+                if (ElasticsearchRunner.ES_RUNNING) {
+                    try {
+                        // 查es
+                        chartColumn = esTOrderService.getStatistics(param);
+                    }catch (Exception e){
+                        log.error("使用es 查询发生错误:{}",e);
+                        // 查 mysql
+//                    chartColumn  = tOrderService.getStatistics(param);
+                    }
+                }else{
+                    // 查 mysql
+//                chartColumn  = tOrderService.getStatistics(param);
+                }
+            }
+
+        }
+//		if (ElasticsearchRunner.ES_RUNNING) {
+//			try {
+//				// 查es
+//				chartColumn = esTOrderService.getStatistics(param);
+//			}catch (Exception e){
+//				log.error("使用es 查询发生错误:{}",e);
+//				// 查 mysql
+//				chartColumn  = tOrderService.getStatistics(param);
+//			}
+//		}else{
+//			// 查 mysql
+//			chartColumn  = tOrderService.getStatistics(param);
+//		}
+        return ResponseEntity
+                .status(HttpStatus.OK)
+                .body(new ResultMessage()
+                        .setCode(true)
+                        .setData(chartColumn)
+                        .setMessage("SUCCESS"));
+    }
+    /**
+     *
+     * @return
+     */
+    @ApiOperation(value = "机器获取数据统计")
+    @PostMapping("/getStatisticsByClientId")
+    public ResponseEntity<?> getStatisticsByClientId(@RequestBody StatisticsParam param) {
+        TEquipment equipment0 = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
+        param.setAdminId(String.valueOf(equipment0.getAdminId()));
+        //  判断是否为外国
+        param.setIfForeign(isForeignUser(param.getAdminId()));
+        log.info("param:{}", param);
+        TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(param.getAdminId()));
+        if(admin.getType()<2){
+            param.setAdminId(null);
+            if(param.getEquipmentId()!=null){
+                //查机器
+                TEquipment equipment = R.getDataIfSuccess(szwlFeign.findById(param.getEquipmentId()));
+                param.setClientId(equipment.getClientId());
+            }
+            if(StringUtils.isNotEmpty(param.getClientId())){
+                //补全clientId
+                TEquipment tEquipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(param.getClientId()));
+                param.setClientId(tEquipment.getClientId());
                 param.setClientId(tEquipment.getClientId());
             }
         }else {
@@ -600,7 +836,7 @@ public class TOrderController {
     @ApiOperation(value = "查询线上订单")
     @RequestMapping(value = "/findOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
     @ResponseBody
-    public Object findOrder(String clientId, String sn, String productName, String status, Date begin, Date end, Pageable pageable) {
+    public Object findOrder(String clientId, String sn, String productName, String status, String begin, String end, int pageNumber) {
 
         LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
         if (StringUtils.isNotEmpty(sn)) {
@@ -620,14 +856,21 @@ public class TOrderController {
                 query.eq(TOrder::getStatus,3);
             }
         }
-        if (begin != null && end != null) {
-            query.gt(TOrder::getCreateDate,begin);
-            query.lt(TOrder::getCreateDate,end);
+        if (StringUtils.isNotEmpty(begin)&&StringUtils.isNotEmpty(end)) {
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+            try {
+                //使用SimpleDateFormat的parse()方法生成Date
+                query.gt(TOrder::getCreateDate,sf.parse(begin));
+                query.lt(TOrder::getCreateDate,sf.parse(end));
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+
         }
         query.like(TOrder::getClientId,clientId);
 
-        int size = pageable.getPageSize();
-        int current = pageable.getPageNumber();
+        int size = 20;
+        int current =pageNumber;
         Page<TOrder> page = new Page<>(current, size, true);
         IPage<TOrder> iPage = orderService.page(page, query);
         long total = page.getTotal();
@@ -1182,5 +1425,35 @@ public class TOrderController {
 
         return JsonMessage.success("导出错误");
     }
+
+    /**
+     * 获取每天的开始时间 00:00:00:00
+     *
+     * @param date
+     * @return
+     */
+    public static Date getStartTime(Date date) {
+        Calendar dateStart = Calendar.getInstance();
+        dateStart.setTime(date);
+        dateStart.set(Calendar.HOUR_OF_DAY, 0);
+        dateStart.set(Calendar.MINUTE, 0);
+        dateStart.set(Calendar.SECOND, 0);
+        return dateStart.getTime();
+    }
+
+    /**
+     * 获取每天的开始时间 23:59:59:999
+     *
+     * @param date
+     * @return
+     */
+    public static Date getEndTime(Date date) {
+        Calendar dateEnd = Calendar.getInstance();
+        dateEnd.setTime(date);
+        dateEnd.set(Calendar.HOUR_OF_DAY, 23);
+        dateEnd.set(Calendar.MINUTE, 59);
+        dateEnd.set(Calendar.SECOND, 59);
+        return dateEnd.getTime();
+    }
 }
 

+ 7 - 0
src/main/java/com/szwl/model/entity/TOrder.java

@@ -128,4 +128,11 @@ public class TOrder implements Serializable {
 
     @ApiModelProperty(value = "支付流水号;")
     private String wxId;
+
+    //'订单状态;0:排队中,1:正在制作,2:已制作',
+    private String orderStatus;
+
+    private BigDecimal marketingAmount;
+
+    private BigDecimal refundMarketingAmount;
 }

+ 3 - 0
src/main/java/com/szwl/service/es/EsTOrderService.java

@@ -195,6 +195,9 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
             if(StringUtils.isNotEmpty(param.getEquipmentId())){ // 设备id
                 tOrderParam.setEquipmentId(Long.parseLong(param.getEquipmentId()));
             }
+            if(StringUtils.isNotEmpty(param.getPayType())){ // 支付方式
+                tOrderParam.setFrpCode(param.getPayType());
+            }
             if (null != param.getAgencyId()){
                 tOrderParam.setAgencyId(param.getAgencyId());
                 tOrderParam.setType_gt(1);