Преглед изворни кода

拉取今日消费 统计数量

he.dujuan пре 3 година
родитељ
комит
c0a58bc936

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/dm/statement/repository/DmHaveDinnerRepository.java

@@ -21,11 +21,11 @@ public interface DmHaveDinnerRepository extends JpaRepository<DmHaveDinner,Integ
 
     @Transactional
     @Modifying
-    @Query(value = "DROP VIEW if \\exists `zgyear`",nativeQuery = true)
+    @Query(value = "DROP VIEW if \\exists zgyear",nativeQuery = true)
     void dropByZgYear();
     @Transactional
     @Modifying
-    @Query(value = "DROP VIEW if \\exists `zdyear`",nativeQuery = true)
+    @Query(value = "DROP VIEW if \\exists zdyear",nativeQuery = true)
     void dropByZdYear();
 
     @Transactional
@@ -163,7 +163,7 @@ public interface DmHaveDinnerRepository extends JpaRepository<DmHaveDinner,Integ
             "SELECT @id \\:= @id+1 as id,zg_name,zg_num,time,null as money,null as zd_name,0 as zd_num,null as week_time from zgday a " +
             "WHERE 3> (SELECT COUNT(*) from (SELECT @id \\:=0) r,zgday b WHERE a.time = b.time and a.zg_num < b.zg_num))a ",
             countQuery="select count(*) from(" +
-                    "SELECT @id := @id+1 as id,zg_name,zg_num,time from (SELECT @id :=0) r,zgday a " +
+                    "SELECT @id \\:= @id+1 as id,zg_name,zg_num,time from (SELECT @id \\:=0) r,zgday a " +
                     "WHERE 3> (SELECT COUNT(*) from zgday b WHERE a.time = b.time and a.zg_num < b.zg_num)" +
                     ")a ",nativeQuery = true)
     Page<DmHaveDinner> selectByZgDay(Pageable pageable);
@@ -171,7 +171,7 @@ public interface DmHaveDinnerRepository extends JpaRepository<DmHaveDinner,Integ
             "SELECT @id \\:= @id+1 as id,zd_name,zd_num,time,money,null as zg_name,0 as zg_num,null as week_time from zdday a " +
             "WHERE 1> (SELECT COUNT(*) from (SELECT @id \\:=0) r,zdday b WHERE a.time = b.time and a.zd_num > b.zd_num))a ",
             countQuery="select count(*) from(" +
-                    "SELECT @id := @id+1 as id,zd_name,zd_num,time from (SELECT @id :=0) r,zdday a " +
+                    "SELECT @id \\:= @id+1 as id,zd_name,zd_num,time from (SELECT @id \\:=0) r,zdday a " +
                     "WHERE 1> (SELECT COUNT(*) from zdday b WHERE a.time = b.time and a.zd_num > b.zd_num)" +
                     ")a ",nativeQuery = true)
     Page<DmHaveDinner> selectByZdDay(Pageable pageable);

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/statement/service/impl/DmHaveDinnerServiceImpl.java

@@ -107,7 +107,7 @@ public class DmHaveDinnerServiceImpl implements DmHaveDinnerService {
         if (type.equals("year")){
             if (stateDate==null && endDate ==null){
                 calendar.setTime(cal);
-                calendar.add(Calendar.YEAR,-2);
+                calendar.add(Calendar.YEAR,-3);
                 dmHaveDinnerRepository.dropByZdYear();
                 dmHaveDinnerRepository.addZdYear(year.format(cal),year1.format(calendar.getTime()));
                 page = dmHaveDinnerRepository.selectByZdYear(pageable);

+ 3 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java

@@ -55,4 +55,7 @@ public interface DmUserRepository extends JpaRepository<DmUser, String>, JpaSpec
 
     @Query(value = "SELECT DISTINCT name FROM sys_dept WHERE dept_id in (?1)",nativeQuery = true)
     List selectDeptName(String deptId);
+
+    @Query(value = "SELECT u.* FROM dm_user as u left join sys_dept d on d.dept_id = u.dept_id where card_id = :cardId ",nativeQuery = true)
+    DmUser findUserByCardId(@Param("cardId") String cardId);
 }

+ 7 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java

@@ -18,6 +18,7 @@ package me.zhengjie.modules.dm.user.service;
 import me.zhengjie.modules.dm.user.domain.DmUser;
 import me.zhengjie.modules.dm.user.service.dto.DmUserDto;
 import me.zhengjie.modules.dm.user.service.dto.DmUserQueryCriteria;
+import me.zhengjie.modules.system.domain.Dept;
 import org.springframework.data.domain.Pageable;
 import java.util.Map;
 import java.util.List;
@@ -87,4 +88,10 @@ public interface DmUserService {
      * @return
      */
     List<DmUser> findNotBindUser(String userId);
+    /**
+     * 查询卡号对应的用户
+     * @param cardId
+     * @return
+     */
+    DmUser queryUserByCardId(String cardId);
 }

+ 5 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java

@@ -139,4 +139,9 @@ public class DmUserServiceImpl implements DmUserService {
         }
         return dmUserRepository.findNotBindUser(param);
     }
+
+    @Override
+    public DmUser queryUserByCardId(String cardId) {
+        return dmUserRepository.findUserByCardId(cardId);
+    }
 }

+ 37 - 14
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/CardRecordTask.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import lombok.val;
 import me.zhengjie.domain.Log;
 import me.zhengjie.modules.dm.food.domain.DmFood;
 import me.zhengjie.modules.dm.order.domain.DmOrderItem;
@@ -13,12 +14,17 @@ import me.zhengjie.modules.dm.order.repository.DmOrderRecordRepository;
 import me.zhengjie.modules.dm.order.service.DmOrderItemService;
 import me.zhengjie.modules.dm.order.service.DmOrderPaymentService;
 import me.zhengjie.modules.dm.order.service.DmOrderRecordService;
+import me.zhengjie.modules.dm.user.domain.DmUser;
+import me.zhengjie.modules.dm.user.service.DmUserService;
+import me.zhengjie.modules.dm.user.service.dto.DmUserQueryCriteria;
+import me.zhengjie.modules.system.domain.Dept;
 import me.zhengjie.repository.LogRepository;
 import me.zhengjie.utils.BeanMapUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -35,6 +41,7 @@ public class CardRecordTask {
     private final DmOrderPaymentService dmOrderPaymentService;
     private final LogRepository logRepository;
     private final DmOrderRecordRepository dmOrderRecordRepository;
+    private final DmUserService dmUserService;
 //    private final DmExpenseCalendarService dmExpenseCalendarService;
 
 //    public void run() throws ParseException, IOException {
@@ -190,25 +197,26 @@ public class CardRecordTask {
         SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat formater2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Calendar calendar = Calendar.getInstance();
+//        calendar.add(Calendar.DATE,-1);
         Date start = formater2.parse(formater.format(calendar.getTime())+ " 00:00:00");
         Date end = formater2.parse(formater.format(calendar.getTime())+ " 23:59:59");
         data.put("startTime",formater2.format(start));
         data.put("endTime",formater2.format(end));
+//        data.put("startTime","2022-02-28 00:00:00");
+//        data.put("endTime","2022-02-28 23:59:59");
         data.put("current",1);//当前页数
         data.put("size",limit);
-
         JSONObject generateProcDataJson = getData(url,data);
         System.out.println(generateProcDataJson);
-
         Integer total = generateProcDataJson.getJSONObject("data").getInteger("total");//总条数
         int pageTotal = (total / limit);
         if (total % limit != 0) {
             pageTotal++;
         }
 
-        for(int i = 1;i<=pageTotal;i++){//循环总页数
+        for(int i = 0;i<pageTotal;i++){//循环总页数
             //获取当前页数
-            data.put("current",i);//当前页数
+            data.put("current",i+1);//当前页数
             JSONObject newGenerateProcDataJson = getData(url,data);
             JSONObject dataJSON = newGenerateProcDataJson.getJSONObject("data");//第二层
             JSONArray arr2 = dataJSON.getJSONArray("records");//第三层集合数据
@@ -239,26 +247,41 @@ public class CardRecordTask {
                     dmExpenseCalendar.setUserCode(attendance.getString("mob"));
                     dmExpenseCalendar.setTel(attendance.getString("userPhone"));
                     dmExpenseCalendar.setCardProfile(attendance.getInteger("card_profile"));
-
+                    /**
+                     * 对方未有dept字段 需要手动去数据库中查询  根据卡号查对应的 用户
+                     */
+                    DmUser dmUser = dmUserService.queryUserByCardId(attendance.getString("card"));
+                    dmExpenseCalendar.setDept(dmUser.getDept());
                     String bh = UUID.randomUUID().toString();
-                    dmExpenseCalendar.setBh(bh);//关联编号
+                    dmExpenseCalendar.setBh(bh);//UUID 生成 与dm_order_item关联编号
                     JSONArray item = attendance.getJSONArray("details");
+                    /**
+                     * 生成个map来统计数量
+                     */
+                    Map<String,Integer> map = new HashMap<>();
+                    for (int q = 0; q < item.size(); q++) {
+                        JSONObject userData = item.getJSONObject(q);
+                        String name = userData.getString("name");
+                        Integer num = map.get(name) == null ?map.put(name,1):map.put(name, map.get(name)+1);
+                    }
                     for (int m = 0; m < item.size(); m++) {
                         JSONObject userData = item.getJSONObject(m);
                         DmOrderItem dmOrderItem = new DmOrderItem();
 //                        DmFood dmFood = new DmFood();
 //                        dmFood.setId(userData.getLong("pid"));
-                        dmOrderItem.setSeq(attendance.getLong("seq"));
-                        dmOrderItem.setFood(userData.getLong("pid"));
-                        dmOrderItem.setBh(bh);
-                        dmOrderItem.setName(userData.getString("name"));
-                        dmOrderItem.setPrice(userData.getString("price"));
-                        dmOrderItem.setAmt(userData.getDouble("amt"));
-                        dmOrderItem.setMoney(String.valueOf(userData.getDouble("amt")));
+                        dmOrderItem.setSeq(attendance.getLong("seq")); //序列号  流水号
+                        dmOrderItem.setFood(userData.getLong("pid"));//商品id
+                        dmOrderItem.setBh(bh);//uuid生成 与 dm_order_record关联编号
+                        dmOrderItem.setName(userData.getString("name"));//商品名称
+                        dmOrderItem.setPrice(userData.getString("price")); //单价
+                        dmOrderItem.setAmt(userData.getDouble("amt"));//商品售价
+                        dmOrderItem.setMoney(String.valueOf(userData.getDouble("amt")));//小计
                         dmOrderItem.setPjType("0");
+                        dmOrderItem.setNum(map.get(dmOrderItem.getName()));
                         dmOrderItemService.create(dmOrderItem);
                     }
                     JSONArray payment = attendance.getJSONArray("payments");
+
                     for (int n = 0; n < payment.size(); n++) {
                         JSONObject userData = payment.getJSONObject(n);
                         DmOrderPayment dmOrderPayment = new DmOrderPayment();
@@ -271,7 +294,7 @@ public class CardRecordTask {
                     }
                     dmOrderRecordService.create(dmExpenseCalendar);
                 }else {
-                    System.out.println("dmOrderRecord is null. seq:"+seq);
+                    log.info("dmOrderRecord is not null. seq:"+seq);
                 }
             }
         }