Ver código fonte

循环机过期添加预扣款,
职级预设记录

mac 2 anos atrás
pai
commit
ce236887ed

+ 1 - 1
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/config/TaskExecutorConfiguration.java

@@ -47,7 +47,7 @@ public class TaskExecutorConfiguration implements AsyncConfigurer {
 		taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
 		taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
 		taskExecutor.setAwaitTerminationSeconds(awaitTerminationSeconds.orElse(60));
-		taskExecutor.setThreadNamePrefix("PIG-Thread-");
+		taskExecutor.setThreadNamePrefix("KXS-Thread-");
 		taskExecutor.initialize();
 		return taskExecutor;
 	}

+ 27 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/config/KxsOldConfigProperties.java

@@ -0,0 +1,27 @@
+package com.kxs.product.biz.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+
+import java.util.List;
+
+
+/**
+ * 关于老平台的配置文件
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-15
+ */
+@Data
+@RefreshScope
+@ConfigurationProperties("kxs.old")
+public class KxsOldConfigProperties {
+
+
+	/**
+	 * 是否开启循环过期扣款
+	 */
+	private Boolean recycleEnable;
+
+}

+ 3 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/admin/SysMachineDeductController.java

@@ -13,7 +13,9 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.*;
 import java.util.List;
 
 /**
@@ -57,10 +59,10 @@ public class SysMachineDeductController {
     @PostMapping("/import")
 //    @PreAuthorize("@pms.hasPermission('sys_machine_deduct_import')")
     public R importData(@RequestExcel List<MachineDeductExcelVo> machineDeductExcelVos, BindingResult bindingResult) {
+
         return kxsMachineDeductService.importData(machineDeductExcelVos, bindingResult);
     }
 
-
     /**
      * 机具管理-循环机已扣款-删除
      *

+ 1 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsTicketTransferServiceImpl.java

@@ -181,6 +181,7 @@ public class KxsTicketTransferServiceImpl extends ServiceImpl<KxsTicketTransferM
         //查询券码集合
         List<KxsTicketTransferInfo> list = kxsTicketTransferInfoService.list(Wrappers.<KxsTicketTransferInfo>lambdaQuery().eq(KxsTicketTransferInfo::getOrderSn, kxsTicketTransfer.getOrderSn()));
         List<String> ticketCodes = list.stream().map(KxsTicketTransferInfo::getTicketCode).collect(Collectors.toList());
+        transferDetailVO.setTicketType(ticketType);
         transferDetailVO.setTicketCodes(ticketCodes);
 
         return transferDetailVO;

+ 47 - 40
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/task/KxsProductTask.java

@@ -2,21 +2,27 @@ package com.kxs.product.biz.task;
 
 import cn.hutool.crypto.symmetric.AES;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.nacos.api.config.annotation.NacosValue;
 import com.kxs.common.core.util.R;
 import com.kxs.product.api.model.KxsMachine;
 import com.kxs.product.api.model.KxsMachineDeduct;
+import com.kxs.product.biz.config.KxsOldConfigProperties;
 import com.kxs.product.biz.mapper.KxsMachineDeductMapper;
 import com.kxs.product.biz.mapper.KxsMachineMapper;
 import com.kxs.system.api.feign.RemoteOldService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -29,13 +35,16 @@ import java.util.List;
  * @author 没秃顶的码农
  * @date 2024-03-13
  */
-@Configuration
+@Component
 @EnableAsync
 @EnableScheduling
 @RequiredArgsConstructor
 @Slf4j
+@EnableConfigurationProperties(KxsOldConfigProperties.class)
 public class KxsProductTask {
 
+    private final KxsOldConfigProperties kxsOldConfigProperties;
+
     private final KxsMachineMapper kxsMachineMapper;
 
     private final KxsMachineDeductMapper kxsMachineDeductMapper;
@@ -50,47 +59,45 @@ public class KxsProductTask {
 
     private final AES cryptoOldAes;
 
-    @Value("${kxs.old.url}")
-    private String url;
-
     /**
      * 循环过期机具添加预扣款
+     * 一个小时执行一次
      *
      */
-//    @Async(value = "getAsyncExecutor")
-//    @Scheduled(cron = "0 0 */1 * * ?")
-//    public void recycleMachineSchedule() {
-//        Boolean lock = false;
-//        try {
-//            //分布式锁
-//            lock = redisTemplate.opsForValue().setIfAbsent(KEY, LOCK);
-//            if (Boolean.TRUE.equals(lock)) {
-//
-//                LocalDateTime endDay = LocalDate.now().minusDays(30).atStartOfDay();
-//                List<KxsMachine> machines = kxsMachineMapper.selectExpireDeductList(endDay);
-//
-//                for (KxsMachine machine : machines) {
-//                    HashMap<String, Object> param = new HashMap<>();
-//                    HashMap<String, Object> data = new HashMap<>();
-//                    data.put("PosSn", machine.getPosSn());
-////                    String body  = cryptoOldAes.encryptHex(JSON.toJSONString(data));
-//                    param.put("value", JSON.toJSONString(data));
-//                    R result = remoteOldService.savePosAdvance(param);
-//                    if(result.getStatus() == 1){
-//                        log.info("查询数据:{}", machines);
-//
-//                        KxsMachineDeduct machineDeduct = new KxsMachineDeduct();
-//                        machineDeduct.setPosSn(machine.getPosSn());
-//                        machineDeduct.setRemark("已添加预扣款");
-//                        kxsMachineDeductMapper.insert(machineDeduct);
-//                    }
-//                }
-//
-//            }
-//        } finally {
-//            if (Boolean.TRUE.equals(lock)) {
-//                redisTemplate.delete(KEY);
-//            }
-//        }
-//    }
+    @Async(value = "getAsyncExecutor")
+    @Scheduled(fixedDelay = 1000 * 60 * 60 )
+    @RefreshScope
+    public void recycleMachineSchedule() {
+        Boolean lock = false;
+        try {
+            //分布式锁
+            lock = redisTemplate.opsForValue().setIfAbsent(KEY, LOCK);
+            if (Boolean.TRUE.equals(lock) && kxsOldConfigProperties.getRecycleEnable()) {
+
+                LocalDateTime endDay = LocalDate.now().minusDays(30).atStartOfDay();
+                List<KxsMachine> machines = kxsMachineMapper.selectExpireDeductList(endDay);
+
+                for (KxsMachine machine : machines) {
+                    HashMap<String, Object> param = new HashMap<>();
+                    HashMap<String, Object> data = new HashMap<>();
+                    data.put("PosSn", machine.getPosSn());
+//                    String body  = cryptoOldAes.encryptHex(JSON.toJSONString(data));
+                    param.put("value", JSON.toJSONString(data));
+                    R result = remoteOldService.savePosAdvance(param);
+                    if(result.getStatus() == 1){
+                        log.info("查询数据:{}", machines);
+
+                        KxsMachineDeduct machineDeduct = new KxsMachineDeduct();
+                        machineDeduct.setPosSn(machine.getPosSn());
+                        machineDeduct.setRemark("已添加预扣款");
+                        kxsMachineDeductMapper.insert(machineDeduct);
+                    }
+                }
+            }
+        } finally {
+            if (Boolean.TRUE.equals(lock)) {
+                redisTemplate.delete(KEY);
+            }
+        }
+    }
 }

+ 1 - 1
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml

@@ -194,7 +194,7 @@
           and a.bind_status = 0
           and a.recycle_end_time &lt; #{endDay}
           order by recycle_end_time desc
-          limit 1
+          limit 1000
     </select>
 
 </mapper>

+ 19 - 1
kxs-transfer/src/main/resources/import.txt

@@ -197,4 +197,22 @@ SELECT  a.Id as id, a.UserId as user_id, a.CreateDate as create_time, a.UpdateDa
 case a.status when -1 then 0 when 1 then 1 end as status, a.SeoDescription as remark, a.MerchantId as merchant_id,
  a.ChangeFee as ratio, a.sort as brand_id, a.PosId as machine_id,
 a.PosSn as pos_sn
-FROM PosMachinesFeeChangeRecord a
+FROM PosMachinesFeeChangeRecord a
+//机具券
+SELECT  a.Id as id, a.UserId as user_id, a.CreateDate as create_time, a.UpdateDate as update_time,
+LeaderUserId as leader_id, OpId as partner_id, ExchangeCode as ticket_code,
+CASE when IsUse = 1 then 1 when IsLock = 1 then 2 ELSE 0 end status,
+a.QueryCount-1 as ticket_type
+FROM PosCoupons a
+//机具券划拨订单
+SELECT a.Id as id, a.CreateDate as create_time, a.UpdateDate as update_time,
+a.FromUserId as send_user_id, a.ToUserId as to_user_id, a.ChangeCount as transfer_num, a.QueryCount-1 as ticket_type, a.OrderNo as order_sn,
+u.RealName as send_user_name, u.MakerCode as send_user_code,
+uu.RealName as to_user_name, uu.MakerCode as to_user_code
+FROM PosCouponOrders a
+left join Users u on u.id = a.FromUserId
+left join Users uu on uu.id = a.ToUserId
+//机具券划拨订单明细
+SELECT a.Id as id, a.CreateDate as create_time, a.UpdateDate as update_time,
+a.PosCouponId as ticket_id,a.OrderNo as order_sn, b.ExchangeCode as ticket_code
+FROM PosCouponRecord a left join PosCoupons b on a.PosCouponId = b.id