Browse Source

Merge remote-tracking branch 'origin/master'

luoyb 9 months ago
parent
commit
c7763a83ac

+ 8 - 0
ruoyi-api/ruoyi-api-consume/src/main/java/org/dromara/consume/api/RemoteConsumeService.java

@@ -60,4 +60,12 @@ public interface RemoteConsumeService {
     BigDecimal getUserTotalBalance(Long userId);
 
     BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance);
+
+    /**
+     * 根据设备编号和设备记录编号取消消费
+     * @param termNo 设备编号
+     * @param termRecordId 设备记录编号
+     * @return 是否成功
+     */
+    boolean cancleDeal(Long termNo,Integer termRecordId);
 }

+ 4 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -622,4 +622,8 @@ public class BaseBusiness {
             totalBoList.add(bo);
         }
     }
+
+    public boolean deleteOriginalRecord(Long termNo, Integer termRecordId) {
+        return originalService.deleteByTermNoAndTermRecordId(termNo, termRecordId);
+    }
 }

+ 12 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/dubbo/RemoteConsumeServiceImpl.java

@@ -115,4 +115,16 @@ public class RemoteConsumeServiceImpl implements RemoteConsumeService {
     public BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance) {
         return bagService.cacheUserTotalBalance(userId, balance);
     }
+
+    /**
+     * 根据设备编号和设备记录编号取消消费
+     *
+     * @param termNo       设备编号
+     * @param termRecordId 设备记录编号
+     * @return 是否成功
+     */
+    @Override
+    public boolean cancleDeal(Long termNo, Integer termRecordId) {
+        return baseBusiness.deleteOriginalRecord(termNo, termRecordId);
+    }
 }

+ 9 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/IConsumeDetailOriginalService.java

@@ -97,4 +97,13 @@ public interface IConsumeDetailOriginalService {
     XfConsumeDetailOriginalVo queryByConsumeDate(Long cardNo, Long termNo, Long termRecordId, Date consumeDate);
 
     List<XfConsumeDetailOriginalVo> queryListByConsumeDate(Date beginDate, Date endDate);
+
+    /**
+     * 根据设备机号和机器流水号删除原始消费记录。
+     *
+     * @param termNo       设备机号
+     * @param termRecordId 机器流水号
+     * @return 如果删除成功返回true,否则返回false
+     */
+    boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId);
 }

+ 13 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/ConsumeDetailOriginalServiceImpl.java

@@ -208,4 +208,17 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
             .gt(XfConsumeDetailOriginal::getConsumeDate, beginDate)
             .le(XfConsumeDetailOriginal::getConsumeDate,endDate));
     }
+
+    /**
+     * 根据设备机号和机器流水号删除原始消费记录。
+     *
+     * @param termNo       设备机号
+     * @param termRecordId 机器流水号
+     * @return 如果删除成功返回true,否则返回false
+     */
+    @Override
+    public boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId) {
+        return baseMapper.delete(new LambdaQueryWrapper<XfConsumeDetailOriginal>().eq(XfConsumeDetailOriginal::getTermNo, termNo)
+                                      .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)) > 0;
+    }
 }

+ 11 - 0
ruoyi-server/ruoyi-server-hik/src/main/java/org/dromara/server/hik/controller/TestController.java

@@ -181,6 +181,17 @@ public class TestController {
         return sendDeviceService.upLoadEmpToDevice(uploadEmpDto);
     }
 
+    /**
+     * 删除指定设备上的指定用户编号的员工信息
+     * @param termNo 设备编号
+     * @param userNo 员工编号
+     * @return 删除结果
+     */
+    @PostMapping("/emp/del/{termNo}/{userNo}")
+    public R<Void> deleteUserByUserNo(@PathVariable("termNo") Long termNo,@PathVariable("userNo") String userNo){
+        return sendDeviceService.deleteUserByUserNo(termNo,userNo);
+    }
+
     /**
      * 上传指定员工信息到指定设备。
      * <p>

+ 4 - 1
ruoyi-server/ruoyi-server-hik/src/main/java/org/dromara/server/hik/event/handler/ConsumptionEventHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.server.hik.event.handler;
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -90,7 +91,9 @@ public class ConsumptionEventHandler implements HikEventHandler {
              */
             Boolean cancel = consumptionEvent.getCancel();
             if(cancel !=null && cancel){
-                log.info("消费机消费请求确认事件,取消交易");
+                log.info("消费机消费请求确认事件,取消交易:{}", JSONUtil.toJsonStr(receive));
+                // 将原始记录标记为删除 termVo.getTermNo() consumptionEvent.getSerialNo() TermRecordId
+                remoteConsumeService.cancleDeal(termVo.getTermNo(), consumptionEvent.getSerialNo());
                 return rs;
             }
 

+ 2 - 0
ruoyi-server/ruoyi-server-hik/src/main/java/org/dromara/server/hik/service/ISendDeviceService.java

@@ -161,6 +161,8 @@ public interface ISendDeviceService {
      */
     R<Void> upLoadEmpToDevice(UploadEmpDto uploadEmpDto);
 
+    R<Void> deleteUserByUserNo(Long termNo,String userNo);
+
     /**
      * 上传所有员工信息到指定设备。
      * <p>

+ 14 - 0
ruoyi-server/ruoyi-server-hik/src/main/java/org/dromara/server/hik/service/impl/SendDeviceServiceImpl.java

@@ -826,6 +826,20 @@ public class SendDeviceServiceImpl implements ISendDeviceService {
         return R.ok(MessageFormat.format("[上传人员信息成功]-[设备IP:{0}, 人员信息:{1}]", device.getDeviceIp(), strEmpInfo));
     }
 
+    @Override
+    public R<Void> deleteUserByUserNo(Long termNo, String userNo) {
+        DeviceDto deviceDto = getDeviceDto(termNo);
+        EmpInfoDto empDto = new EmpInfoDto();
+        empDto.setEmployeeNo(userNo);
+        empDto.setDeleteUser(true);
+        R<Void> check = this.createOperatorEmpInfo(deviceDto, empDto);
+        if (R.isError(check)) {
+            return R.fail(
+                MessageFormat.format("[上传人员信息失败]-[设备IP:{0}, 人员信息:{1}, 错误信息:{2}", deviceDto.getDeviceIp(), userNo, check.getMsg()));
+        }
+        return R.ok(MessageFormat.format("[上传人员信息成功]-[设备IP:{0}, 人员信息:{1}]", deviceDto.getDeviceIp(), userNo));
+    }
+
     @Override
     public R<Void> upLoadEmpToDevice(Long termNo) {
         DeviceDto deviceDto = getDeviceDto(termNo);