TRX hai 1 ano
pai
achega
e7e01c9bbd

+ 7 - 0
src/main/java/com/zswl/dataservice/dao/CollectionIdDao.java

@@ -0,0 +1,7 @@
+package com.zswl.dataservice.dao;
+
+import com.zswl.dataservice.dao.extend.CollectionIdDaoExtend;
+import com.zswl.dataservice.domain.user.CollectionId;
+
+public interface CollectionIdDao extends MongoDao<CollectionId>, CollectionIdDaoExtend {
+}

+ 7 - 0
src/main/java/com/zswl/dataservice/dao/extend/CollectionIdDaoExtend.java

@@ -0,0 +1,7 @@
+package com.zswl.dataservice.dao.extend;
+
+public interface CollectionIdDaoExtend {
+    Long getNextId(String collectionName);
+
+    Long getNextId(String oid, String collectionName);
+}

+ 41 - 0
src/main/java/com/zswl/dataservice/dao/impl/CollectionIdDaoImpl.java

@@ -0,0 +1,41 @@
+package com.zswl.dataservice.dao.impl;
+
+import com.zswl.dataservice.dao.extend.CollectionIdDaoExtend;
+import com.zswl.dataservice.domain.user.CollectionId;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.FindAndModifyOptions;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+
+public class CollectionIdDaoImpl implements CollectionIdDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Override
+    public Long getNextId(String collectionName) {
+        Query query = new Query(Criteria.where("collectionName").is(collectionName));
+        Update update = new Update();
+        update.inc("aid", 1);
+        FindAndModifyOptions options = new FindAndModifyOptions();
+        options.upsert(true);
+        options.returnNew(true);
+        CollectionId collectionId = mongoTemplate.findAndModify(query, update, options, CollectionId.class);
+        return collectionId.getAid();
+    }
+
+    @Override
+    public Long getNextId(String oid, String collectionName) {
+        Query query = new Query(Criteria.where("collectionName").is(collectionName).and("epId").is(oid));
+        Update update = new Update();
+        update.inc("aid", 1);
+        //update.set("epId",epId);
+        FindAndModifyOptions options = new FindAndModifyOptions();
+        options.upsert(true);
+        options.returnNew(true);
+        CollectionId collectionId = mongoTemplate.findAndModify(query, update, options, CollectionId.class);
+        return collectionId.getAid();
+    }
+}

+ 17 - 0
src/main/java/com/zswl/dataservice/domain/user/CollectionId.java

@@ -0,0 +1,17 @@
+package com.zswl.dataservice.domain.user;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.mapping.Field;
+
+@Document(collection = "collectionId")
+@Data
+public class CollectionId extends SuperEntity {
+
+    @Field("collectionName")
+    private String collectionName;
+
+    // 自增id
+    private Long aid;
+}

+ 1 - 1
src/main/java/com/zswl/dataservice/model/hxz/OrderQueryResult.java

@@ -15,7 +15,7 @@ import lombok.NoArgsConstructor;
 public class OrderQueryResult {
 
     @Schema(description = "1:成功; 0:失败")
-    private Integer Status;
+    private Integer Status = 0;
 
     @Schema(description = "错误消息(Status为0时屏幕显示此内容,最多不超过8个汉字)")
     private String Msg;

+ 41 - 0
src/main/java/com/zswl/dataservice/model/hxz/QRCodeTransactionModel.java

@@ -0,0 +1,41 @@
+package com.zswl.dataservice.model.hxz;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QRCodeTransactionModel implements Serializable {
+
+    @JsonProperty("Mode:交易模式(0:扣费 1:充值3:信息查询)")
+    private String Mode;
+
+    @JsonProperty("PayType: 扣费类型(0:手动 1:菜单 2:定值 3:取餐 4:计时)")
+    private Integer PayType;
+
+    @JsonProperty("Amount: 消费金额(Mode为3时,此字段传入值可能为0)")
+    private String Amount;
+
+    @JsonProperty("扫描到的二维码字符串(最大长度为200)")
+    private String QR;
+
+    @JsonProperty("Menus")
+    private Menus[] Menus;
+
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class Menus {
+        @JsonProperty("MenuID")
+        private String MenuID;
+
+        @JsonProperty("Count")
+        private String Count;
+    }
+}
+

+ 24 - 0
src/main/java/com/zswl/dataservice/model/hxz/QRCodeTransactionResult.java

@@ -0,0 +1,24 @@
+package com.zswl.dataservice.model.hxz;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QRCodeTransactionResult {
+    @Schema(description = "1:成功;0:失败(非支付成功,而是请求服务器成功)")
+    private Integer Status;
+
+    @Schema(description = "错误消息(Status为1时屏幕显示此内容,最多不超过8个汉字)")
+    private String Msg;
+
+    @Schema(description = "订单号")
+    private String Qrorder;
+}

+ 18 - 0
src/main/java/com/zswl/dataservice/model/hxz/TransactionInquiryModel.java

@@ -0,0 +1,18 @@
+package com.zswl.dataservice.model.hxz;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TransactionInquiryModel {
+    @Schema(description = "二维码交易订单号(该值来自于第六及第七接口返回的QROrder)")
+    private String QROrder;
+}

+ 51 - 0
src/main/java/com/zswl/dataservice/model/hxz/TransactionInquiryResult.java

@@ -0,0 +1,51 @@
+package com.zswl.dataservice.model.hxz;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TransactionInquiryResult {
+    @Schema(description = "1:成功;0:失败")
+    private Integer Status = 0;
+
+    @Schema(description = "错误消息(Status为0时屏幕显示此内容,最多不超过8个汉字)")
+    private String Msg;
+
+    @Schema(description = "人员姓名")
+    private String Name;
+    @Schema(description = "10进制卡序列号(实体卡号或虚拟卡号)")
+    private String CardNo;
+    @Schema(description = "现金余额(允许两位小数点")
+    private String Money;
+    @Schema(description = "补贴余额(允许两位小数点)")
+    private String Subsidy;
+    @Schema(description = "剩余次数")
+    private String Times;
+    @Schema(description = "赠送余额(允许两位小数点)")
+    private String Integral;
+    @Schema(description = "入场时间(固定值””)")
+    private String InTime;
+
+    @Schema(description = "出场时间(固定值””)")
+    private String OutTime;
+
+    @Schema(description = "累计使用时间:天时分秒")
+    private String CumulativeTime;
+
+    @Schema(description = "实际扣费金额(信息模式下返回为0)")
+    private String Amount;
+
+    @Schema(description = "语音段")
+    private String VoiceID;
+
+    @Schema(description = "自定义显示文本(Status为1时传入,屏幕显示此值,内容内使用\\r\\n换行,最多支持4行,每行不超过8个汉字)")
+    private String Text;
+}

+ 1 - 1
src/main/java/com/zswl/dataservice/service/artemis/OperationMessageService.java

@@ -345,7 +345,7 @@ public class OperationMessageService {
         String reMsg = "响应成功";
         Boolean reIsSuccess = Boolean.TRUE;
         try {
-            mqClient.sendObject(reTopic, JSONUtil.toJsonStr(jsonObject));
+            mqClient.sendObject(reTopic, JSONUtil.toJsonStr(jsonObject), entity.getDataId());
         } catch (Exception e) {
             e.printStackTrace();
             reIsSuccess = Boolean.FALSE;

+ 73 - 0
src/main/java/com/zswl/dataservice/service/other/CollectionIdService.java

@@ -0,0 +1,73 @@
+package com.zswl.dataservice.service.other;
+
+import com.zswl.dataservice.dao.CollectionIdDao;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author TRX
+ * @date 2024/6/28
+ */
+@Slf4j
+@Service
+public class CollectionIdService {
+
+    @Autowired
+    ApplicationContext applicationContext;
+
+    @Autowired
+    CollectionIdDao collectionIdDao;
+
+    private final static SimpleDateFormat shortSdf = new SimpleDateFormat("yyyyMMdd");
+
+    /**
+     * 生成编码 (每天从 0001开始)
+     *
+     * @param sign 开头,如:XS
+     * @return 如:XS202303290001
+     */
+    public String getNextNo(String sign) {
+        String collectionName = sign + shortSdf.format(new Date());
+        Long no = collectionIdDao.getNextId(collectionName);
+        if (no != null) {
+            return String.format("%s%s%04d", sign, shortSdf.format(new Date()), no);
+        }
+        return "";
+    }
+
+    /**
+     * 生成编码 (每天从 0001开始)
+     *
+     * @param oid  企业ID
+     * @param sign 开头,如:XS
+     * @return 如:XS202303290001
+     */
+    public String getNo(String oid, String sign) {
+        String collectionName = sign + shortSdf.format(new Date());
+        Long no = collectionIdDao.getNextId(oid, collectionName);
+        if (no != null) {
+            return String.format("%s%s%04d", sign, shortSdf.format(new Date()), no);
+        }
+        return "";
+    }
+
+    /**
+     * 生成编码 (一直累加)
+     *
+     * @param oid  企业ID
+     * @param sign 开头,如:XS
+     * @return 如:XS202303290001
+     */
+    public String getNextNo(String oid, String sign) {
+        Long no = collectionIdDao.getNextId(oid, sign);
+        if (no != null) {
+            return String.format("%s%s%04d", sign, shortSdf.format(new Date()), no);
+        }
+        return "";
+    }
+}

+ 30 - 3
src/main/java/com/zswl/dataservice/service/payment/HxzService.java

@@ -8,8 +8,7 @@ import com.zswl.dataservice.domain.mqtt.DeviceInfo;
 import com.zswl.dataservice.httpRequest.ApiRequestService;
 import com.zswl.dataservice.httpRequest.apiConf.APIResponseModel;
 import com.zswl.dataservice.httpRequest.conf.FullCardAPIConfig;
-import com.zswl.dataservice.model.hxz.ConsumTransactionsModel;
-import com.zswl.dataservice.model.hxz.ConsumTransactionsResult;
+import com.zswl.dataservice.model.hxz.*;
 import com.zswl.dataservice.model.payment.ServerTimeModel;
 import com.zswl.dataservice.model.payment.ServerTimeResult;
 import com.zswl.dataservice.service.base.SuperService;
@@ -103,7 +102,7 @@ public class HxzService extends SuperService {
 
         // 刷卡消费
         log.info("consumTransactions : {} - {} - {}", params.getOrder(), cardNumber, amount);
-         ret = new ConsumTransactionsResult()
+        ret = new ConsumTransactionsResult()
                 .setStatus(1)
                 .setCardNo(params.getCardNo())
                 .setMoney(amount)
@@ -113,4 +112,32 @@ public class HxzService extends SuperService {
         return ResultContent.buildSuccess(ret);
     }
 
+    @ExecuteAnnotationServiceMethod(value = "orderQuery", remark = "云版消费机 用户刷卡消费结果查询接口")
+    public ResultContent<Object> orderQuery(String dataStr) {
+        OrderQueryResult result = new OrderQueryResult();
+
+        return ResultContent.buildSuccess(result);
+    }
+
+    @ExecuteAnnotationServiceMethod(value = "qrcodeconsum", remark = "云版消费机 用户刷卡消费结果查询接口")
+    public ResultContent<Object> qrcodeconsum(String dataStr) {
+        OrderQueryResult result = new OrderQueryResult();
+
+        return ResultContent.buildSuccess(result);
+    }
+
+    @ExecuteAnnotationServiceMethod(value = "QRCodeTransaction", remark = "云版消费机 付款码(二维码)支付接口")
+    public ResultContent<Object> QRCodeTransaction(String dataStr) {
+        QRCodeTransactionResult result = new QRCodeTransactionResult();
+
+        return ResultContent.buildSuccess(result);
+    }
+
+    @ExecuteAnnotationServiceMethod(value = "TransactionInquiry", remark = "云版消费机 2.8.二维码支付结果查询接口")
+    public ResultContent<Object> TransactionInquiry(String dataStr) {
+        TransactionInquiryResult result = new TransactionInquiryResult();
+
+        return ResultContent.buildSuccess(result);
+    }
+
 }

+ 24 - 3
src/main/java/com/zswl/dataservice/utils/mqtt/mqttConfig/client/MQClient.java

@@ -1,12 +1,15 @@
 package com.zswl.dataservice.utils.mqtt.mqttConfig.client;
 
 import com.zswl.dataservice.helper.JsonHelper;
-import jakarta.jms.Destination;
-import jakarta.jms.Topic;
+import jakarta.jms.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.core.JmsTemplate;
+import org.springframework.jms.core.MessagePostProcessor;
 import org.springframework.stereotype.Component;
 
+import java.util.UUID;
+
 @Component
 public class MQClient {
 
@@ -22,9 +25,27 @@ public class MQClient {
      */
     public void sendObject(String topic, Object parm) {
         jmsTemplate.convertAndSend(topic, parm);
-//        jmsTemplate.convertAndSend(new ActiveMQTopic(topic), this.jsonHelper.toJson(parm));
     }
 
+    public void sendObject(String topic, Object parm, String messageId) {
+        if (StringUtils.isEmpty(messageId)) {
+            messageId = UUID.randomUUID().toString().replaceAll("-", "");
+        }
+        String finalMessageId = messageId;
+        jmsTemplate.convertAndSend(topic, parm, new MessagePostProcessor() {
+            @Override
+            public Message postProcessMessage(Message message) throws JMSException {
+                message.setJMSMessageID("ID:" + finalMessageId);
+                if (message instanceof TextMessage) {
+                    TextMessage textMessage = (TextMessage) message;
+                    textMessage.setJMSMessageID("ID:your-custom-message-id");
+                    return textMessage;
+                }
+                message.setJMSCorrelationID("11111111111111");
+                return message;
+            }
+        });
+    }
 
     /**
      * 发送文本消息