yangys
2024-09-27 444b1808d73d21f9df361e64f44381b910947792
去掉tdedgine,去掉一部分rocketmq,去掉dmplog模块
已添加2个文件
已修改27个文件
已删除26个文件
3362 ■■■■ 文件已修改
smart-man-boot/pom.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/cache/cps/WorkstationCache.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/config/MdcMqttConfig.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/config/SwaggerConfiguration.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/constant/WorkstationConstant.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/mqtt/MqttMessageSender.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/auth/endpoint/OuterAppScanEndpoint.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/auth/service/OuterAppScanService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/message/producer/InsertWorkstationProducer.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/IWorkstationService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/EmployeeServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/WorkstationServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/ConfigVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/constant/DmpLogSyncConstant.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/controller/DmpLogController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/dto/DmpLogMessage.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalFlowLog.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalLog.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalMethodTimeLog.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/enums/LogTypeEnum.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/jobHandler/DmpLogRegularCleanJob.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalFlowMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMethodTimeMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/message/consumer/DmpLogSyncConsumer.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/service/IDmpLogService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/service/impl/DmpLogServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogDetailVO.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogSearchVO.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogVo.java 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/controller/WorkstationFeedbackController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/entity/WorkstationCollectData.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/mapper/SuperProcessParameterMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IProcessParameterService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IWorkstationFeedbackDetailService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IWorkstationFeedbackService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/WorkstationAnalysisServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/WorkstationFeedbackServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/notify/jobHandler/BusinessNotifyJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/OuterAppConfigController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/QyWechatEventCallBackController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/QyWechatSyncController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/IWechatCallbackService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/IWechatSyncService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/impl/WechatCallbackServiceImpl.java 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/impl/WechatSyncServiceImpl.java 609 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/impl/BasCoderuleServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/application-dev.yml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalFlowMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMapper.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMethodTimeMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/mdc/mapper/SuperAggregateStateFeedbackMapper.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/mdc/mapper/SuperProcessParameterMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/pom.xml
@@ -19,8 +19,9 @@
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <flowable.version>6.4.2</flowable.version>
        <!--
        <tdengine.version>3.0.2</tdengine.version>
-->
        <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
        <spring.platform.version>Cairo-SR8</spring.platform.version>
@@ -332,6 +333,11 @@
            <artifactId>rocketmq-client</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
        </dependency>
        <!--  å›½é™…化 -->
        <dependency>
            <groupId>com.qianwen</groupId>
@@ -349,11 +355,13 @@
        </dependency>
        <!--  tdengine é©±åЍ -->
        <!--
        <dependency>
            <groupId>com.taosdata.jdbc</groupId>
            <artifactId>taos-jdbcdriver</artifactId>
            <version>${tdengine.version}</version>
        </dependency>
        -->
        <!-- iotdb -->
        <dependency>
            <groupId>org.apache.iotdb</groupId>
smart-man-boot/src/main/java/com/qianwen/smartman/common/cache/cps/WorkstationCache.java
@@ -40,6 +40,7 @@
import com.qianwen.smartman.modules.mdc.dto.WorkstationDmpDTO;
import com.qianwen.smartman.modules.mdc.entity.WorkstationCollectData;
import com.qianwen.smartman.modules.mdc.mapper.SuperProcessParameterMapper;
import com.qianwen.smartman.modules.mdc.service.IProcessParameterService;
public class WorkstationCache {
    public static final String CRC = "crc:";
@@ -64,7 +65,8 @@
    private static final IGlobalWcsService WCS_SERVICE = (IGlobalWcsService) SpringUtil.getBean(IGlobalWcsService.class);
    private static final IWorkstationWcsService WORKSTATION_WCS_SERVICE = (IWorkstationWcsService) SpringUtil.getBean(IWorkstationWcsService.class);
    private static final SuperProcessParameterMapper superProcessParameterMapper = (SuperProcessParameterMapper) SpringUtil.getBean(SuperProcessParameterMapper.class);
    private static final IProcessParameterService processParameterService =  SpringUtil.getBean(IProcessParameterService.class);
    public static List<WorkstationWcsDmpDTO> getWorkstationWcsList(String workstationId) {
        String redisKey = CommonUtil.getReallyCacheName(ExtCacheConstant.CPS_CACHE, WORKSTATION_WCS, "", workstationId);
        SetOperations<String, Object> setOps = BLADE_REDIS.getSetOps();
@@ -138,7 +140,10 @@
        String cacheName = CommonUtil.getReallyCacheName(ExtCacheConstant.CPS_CACHE, WORKSTATION_REAL_TIME, "", workstationId);
        Map<String, Object> resultMapping = BLADE_REDIS.hGetAll(cacheName);
        if (Func.isEmpty(resultMapping)) {
            List<WorkstationCollectData> workstationCollectData = superProcessParameterMapper.queryLastParameter(workstationId);
            //
            //List<WorkstationCollectData> workstationCollectData = superProcessParameterMapper.queryLastParameter(workstationId);
            Long wid = Long.parseLong(workstationId);
            List<WorkstationCollectData> workstationCollectData = processParameterService.queryLastParameter(wid);
            if (Func.isNotEmpty(workstationCollectData)) {
                resultMapping = workstationCollectData.stream().collect(Collectors.toMap((v0) -> {
                    return v0.getN();
@@ -149,6 +154,7 @@
                    return result;
                }));
            }
        }
        return resultMapping;
    }
smart-man-boot/src/main/java/com/qianwen/smartman/common/config/MdcMqttConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package com.qianwen.smartman.common.config;
import java.util.Arrays;
import java.util.Random;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.core.MessageProducer;
import org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory;
import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter;
import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler;
import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageHandler;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
@Configuration
public class MdcMqttConfig {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Value("${mqtt.host}")
    private String mqttHost;
    @Value("${mqtt.username:}")
    private String mqttUserName;
    @Value("${mqtt.password:}")
    private String mqttPassword;
    public static final String DEFAULT_TOPIC = "mdc";
    /**
     * åé¦ˆåˆ›å»ºçš„topic(mdc中),本应用接收并处理
     */
    public static final String FEEDBACK_TOPIC = "mdc/feedback";
    public static final String WOCKSTATION_CREATE_TOPIC = "mdc/workstation-create";
    @Bean
    public MqttPahoClientFactory mqttClientFactory() {
        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
        MqttConnectOptions options = new MqttConnectOptions();
        options.setServerURIs(new String[] { mqttHost});//"tcp://82.156.1.83:1884"
        if(ObjectUtil.isNotEmpty(mqttUserName)) {
            options.setUserName(mqttUserName);
            options.setPassword(mqttPassword.toCharArray());
        }
        factory.setConnectionOptions(options);
        return factory;
    }
    @Bean
    public MessageChannel mqttInputChannel() {
        return new DirectChannel();
    }
    /**
     *
     * @return
     */
    /*
    @Bean
    public MessageProducer inbound() {
        MqttPahoMessageDrivenChannelAdapter adapter =
                new MqttPahoMessageDrivenChannelAdapter("spring-boot-mqtt-client-inbound",
                        mqttClientFactory(), COLLECT_DATA_TOPIC, FEEDBACK_TOPIC,WOCKSTATION_CREATE_TOPIC);//最后一个参数允许多个topic参数
        adapter.setCompletionTimeout(5000);
        adapter.setConverter(new DefaultPahoMessageConverter());
        adapter.setQos(1);
        adapter.setOutputChannel(mqttInputChannel());
        return adapter;
    }
    */
    /**
     * å…¥ç«™æ¶ˆæ¯å¤„理
     * @return
     */
    @Bean
    @ServiceActivator(inputChannel = "mqttInputChannel")
    public MessageHandler handler() {
        return message -> {
            String topic = String.valueOf(message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC));
            if(FEEDBACK_TOPIC.equals(topic) ) {
            }
        };
    }
    @Bean
    public MessageChannel mqttOutboundChannel() {
        return new DirectChannel();
    }
    @Bean
    @ServiceActivator(inputChannel = "mqttOutboundChannel")
    public MessageHandler mqttOutbound() {
        Random numList = new Random();
        MqttPahoMessageHandler messageHandler =
                new MqttPahoMessageHandler("spring-boot-mqtt-client-outbound-mdc"+numList.nextInt(50), mqttClientFactory());
        messageHandler.setAsync(true);
        messageHandler.setDefaultTopic(DEFAULT_TOPIC);
        return messageHandler;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/common/config/SwaggerConfiguration.java
@@ -13,7 +13,7 @@
import com.qianwen.core.swagger.EnableSwagger;
import com.qianwen.core.swagger.SwaggerProperties;
import com.qianwen.core.swagger.SwaggerUtil;
import com.qianwen.smartman.modules.dmpLog.constant.DmpLogSyncConstant;
//import com.qianwen.smartman.modules.dmpLog.constant.DmpLogSyncConstant;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
@@ -110,11 +110,12 @@
    public Docket syncDocket() {
        return docket("sync", Collections.singletonList("com.qianwen.smartman.modules.sync"));
    }
    /*
    @Bean
    public Docket dmpLogDocket() {
        return docket(DmpLogSyncConstant.DMP_LOG_TOPIC, Collections.singletonList("com.qianwen.smartman.modules.dmpLog"));
    }
    */
    @Bean
    public Docket toolDocket() {
smart-man-boot/src/main/java/com/qianwen/smartman/common/constant/WorkstationConstant.java
@@ -1,7 +1,8 @@
package com.qianwen.smartman.common.constant;
public interface WorkstationConstant {
    public static final String WORKSTATION_CREATE_TOPIC = "workstation-create-data";
    //public static final String WORKSTATION_CREATE_TOPIC = "workstation-create-data";
    public static final String WORKSTATION_CREATE_TOPIC = "mdc/workstation-create";
    public static final int COLLECT_SWITCH_ON = 1;
    public static final int LINK_WAY_CREAT = 1;
    public static final int LINK_WAY_QUOTE = 0;
smart-man-boot/src/main/java/com/qianwen/smartman/common/mqtt/MqttMessageSender.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.qianwen.smartman.common.mqtt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;
@Service
public class MqttMessageSender {
    @Autowired
    private MessageChannel mqttOutboundChannel;
    public void sendMessage(String topic, String payload) {
        mqttOutboundChannel.send(MessageBuilder.withPayload(payload)
                .setHeader(MqttHeaders.TOPIC, topic)
                .build());
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/auth/endpoint/OuterAppScanEndpoint.java
@@ -36,11 +36,12 @@
        String userId = this.dingSyncService.getDingUserId(code);
        return this.outerAppScanService.loginByOuterUserId(userId);
    }
    /*
    @ApiLog("员工企业微信扫码登录回调接口")
    @GetMapping({"/qy-wechat/token"})
    @ApiOperation(value = "员工企业微信扫码登录回调接口", notes = "传入扫码授权code")
    public R<Kv> scanLogin(@RequestParam("clientId") String clientId, @RequestParam("code") String authCode) {
        return this.outerAppScanService.qyScanLogin(clientId, authCode);
    }
    */
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/auth/service/OuterAppScanService.java
@@ -18,7 +18,7 @@
import com.qianwen.smartman.modules.sync.entity.QyUser;
import com.qianwen.smartman.modules.sync.enums.SseEventEnum;
import com.qianwen.smartman.modules.sync.message.sse.SseEmitterServer;
import com.qianwen.smartman.modules.sync.service.impl.WechatSyncServiceImpl;
//import com.qianwen.smartman.modules.sync.service.impl.WechatSyncServiceImpl;
import com.qianwen.smartman.modules.sync.util.CodeUtil;
import com.qianwen.smartman.modules.system.entity.UserInfo;
import com.qianwen.smartman.modules.system.entity.UserOauth;
@@ -32,15 +32,15 @@
    private final IUserOauthService userOauthService;
    private final IEmployeeService employeeService;
    private final IUserService userServices;
    private final WechatSyncServiceImpl wechatSyncService;
    //private final WechatSyncServiceImpl wechatSyncService;
    private final SseEmitterServer sseEmitterServer;
    public OuterAppScanService(IUserOauthService userOauthService, IEmployeeService employeeService, IUserService userServices, WechatSyncServiceImpl wechatSyncService, SseEmitterServer sseEmitterServer) {
    //WechatSyncServiceImpl wechatSyncService,
    public OuterAppScanService(IUserOauthService userOauthService, IEmployeeService employeeService, IUserService userServices,  SseEmitterServer sseEmitterServer) {
        this.userOauthService = userOauthService;
        this.employeeService = employeeService;
        this.userServices = userServices;
        this.wechatSyncService = wechatSyncService;
        //this.wechatSyncService = wechatSyncService;
        this.sseEmitterServer = sseEmitterServer;
    }
@@ -92,7 +92,7 @@
        return R.data(TokenUtil.createAuthInfo(userInfo));
        */
    }
    /*
    public R<Kv> qyScanLogin(String clientId, String code) {
        
        if (CodeUtil.verifyLoginCodeExpire(clientId).booleanValue()) {
@@ -102,17 +102,18 @@
        }
        QyUser scanUser = this.wechatSyncService.getScanUser(code, clientId);
        String appUserMsg = MessageUtils.message("sys.outer.user.not.exist", new Object[0]);
        if (Objects.isNull(scanUser)) {
            this.sseEmitterServer.sendMsg(clientId, appUserMsg, SseEventEnum.ERROR_MSG_ID.getEventId());
            throw new ServiceException(appUserMsg);
        }
        }*
        UserOauth userOauth = this.userOauthService.getOne(Wrappers.<UserOauth>lambdaQuery().eq(UserOauth::getUuid, scanUser.getUserid()).eq(UserOauth::getSource,QyWechatConstant.QY_SOURCE));
        
        if (Func.isEmpty(userOauth)) {
            this.sseEmitterServer.sendMsg(clientId, appUserMsg, SseEventEnum.ERROR_MSG_ID.getEventId());
            throw new ServiceException(appUserMsg);
        }
        Employee employee = this.wechatSyncService.createOrModifyEmployee(scanUser, userOauth);
        //Employee employee = this.wechatSyncService.createOrModifyEmployee(scanUser, userOauth);
        String userBingMsg = MessageUtils.message("sys.outer.user.not.bind.account", new Object[0]);
        if (StrUtil.isEmpty(employee.getUserId())) {
            this.sseEmitterServer.sendMsg(clientId, userBingMsg, SseEventEnum.ERROR_MSG_ID.getEventId());
@@ -129,4 +130,5 @@
        CodeUtil.failureCode(cacheKey);
        return R.data(authInfo);
    }
*/
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/message/producer/InsertWorkstationProducer.java
@@ -1,20 +1,27 @@
package com.qianwen.smartman.modules.cps.message.producer;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
//import org.apache.rocketmq.spring.core.RocketMQTemplate;
import com.qianwen.smartman.common.constant.WorkstationConstant;
import com.qianwen.smartman.common.mqtt.MqttMessageSender;
import com.qianwen.smartman.modules.cps.dto.WorkstationCreateMessageDTO;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
@Component
public class InsertWorkstationProducer {
    private final RocketMQTemplate rocketMQTemplate;
    //private final RocketMQTemplate rocketMQTemplate;
    @Autowired
    private MqttMessageSender mqttMsgSender;
    /*
    public InsertWorkstationProducer(final RocketMQTemplate rocketMQTemplate) {
        this.rocketMQTemplate = rocketMQTemplate;
    }
    }*/
    public void sendInsertWorkstationMessage(WorkstationCreateMessageDTO dto) {
        this.rocketMQTemplate.syncSend(WorkstationConstant.WORKSTATION_CREATE_TOPIC, MessageBuilder.withPayload(dto).build());
    public void sendInsertWorkstationMessage(Long workstationId) {
        //this.rocketMQTemplate.syncSend(WorkstationConstant.WORKSTATION_CREATE_TOPIC, MessageBuilder.withPayload(dto).build());
        mqttMsgSender.sendMessage(WorkstationConstant.WORKSTATION_CREATE_TOPIC, String.valueOf(workstationId));
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/IWorkstationService.java
@@ -62,6 +62,12 @@
    BladeFile exportWorkstation(String keyWord, Long groupId, HttpServletResponse response);
    /**
     * èŽ·å–å·¥ä½å®žæ—¶çŠ¶æ€æ•°æ®ï¼Œå®žæ—¶çœ‹æ¿ä½¿ç”¨
     * @param dto
     * @param query
     * @return
     */
    IPage<WorkstationRealTimeStatusVO> getRealTimeStatus(WorkstationRealTimeStatusDTO dto, Query query);
    List<RealTimeStatusVO> getRealTimeProperties(Long workstationId, Long machineId);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/EmployeeServiceImpl.java
@@ -108,11 +108,7 @@
    }
    private void validMobile(EmployeeSubmitVO employeeSubmitVO, Boolean isUpdate, Boolean isMobile) {
        SFunction<Employee, String> column = isMobile.booleanValue() ? (v0) -> {
            return v0.getTel();
        } : (v0) -> {
            return v0.getEmail();
        };
        SFunction<Employee, String> column = isMobile ?Employee::getTel : Employee:: getEmail;
        String conditionValue = isMobile.booleanValue() ? employeeSubmitVO.getTel() : employeeSubmitVO.getEmail();
        
        LambdaQueryWrapper<Employee> wrapper = Wrappers.<Employee>lambdaQuery().eq(column, conditionValue).ne(isUpdate.booleanValue(), Employee::getId, employeeSubmitVO.getId());
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/WorkstationServiceImpl.java
@@ -23,6 +23,7 @@
import org.apache.commons.collections.MapUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -58,6 +59,7 @@
import com.qianwen.smartman.common.enums.DictEnum;
import com.qianwen.smartman.common.enums.StatusType;
import com.qianwen.smartman.common.enums.WcsDataTypeEnums;
import com.qianwen.smartman.common.mqtt.MqttMessageSender;
import com.qianwen.smartman.common.utils.Lambda;
import com.qianwen.smartman.common.utils.LocalDateTimeUtils;
import com.qianwen.smartman.common.utils.MessageUtils;
@@ -141,7 +143,9 @@
    private final IWorkstationWorkbenchService workbenchService;
    private final IDncWsRelationTdService wsRelationTdService;
    private final IDncFixedSpaceService dncFixedSpaceService;
    private final InsertWorkstationProducer workstationProducer;
    @Autowired
    private InsertWorkstationProducer workstationProducer;
    private final IWorkstationDynamicCollectService dynamicCollectService;
    private final String NAME = "默认工作台";
    private final Integer SORT = 1;
@@ -150,9 +154,10 @@
    private final String ALL_WORKSTATION_GROUP = CommonGroupConstant.ALL_NAME;
    private final Integer FTP_CORRELATION_DIRECTORY = 1;
    private final Integer FTP_SAME_DIRECTORY = 2;
    @Autowired
    private MqttMessageSender mqttMsgSender;
    public WorkstationServiceImpl(final IMachineService machineService, final IWorkstationOfMachineService workstationOfMachineService, final IWorkstationWcsService workstationWcsService, final ICommonGroupOfItemService commonGroupOfItemService, final ICommonGroupService commonGroupService, final ICalendarService calendarService, final WorkstationMapper workstationMapper, final OssBuilder ossBuilder, final IDmpVariablesService dmpVariablesService, final ITransferDirectoryService transferDirectoryService, final ITransferDirectoryGroupService transferDirectoryGroupService, final IWorkstationWorkbenchService workbenchService, final IDncWsRelationTdService wsRelationTdService, final IDncFixedSpaceService dncFixedSpaceService, final InsertWorkstationProducer workstationProducer, final IWorkstationDynamicCollectService dynamicCollectService) {
    public WorkstationServiceImpl(final IMachineService machineService, final IWorkstationOfMachineService workstationOfMachineService, final IWorkstationWcsService workstationWcsService, final ICommonGroupOfItemService commonGroupOfItemService, final ICommonGroupService commonGroupService, final ICalendarService calendarService, final WorkstationMapper workstationMapper, final OssBuilder ossBuilder, final IDmpVariablesService dmpVariablesService, final ITransferDirectoryService transferDirectoryService, final ITransferDirectoryGroupService transferDirectoryGroupService, final IWorkstationWorkbenchService workbenchService, final IDncWsRelationTdService wsRelationTdService, final IDncFixedSpaceService dncFixedSpaceService,final IWorkstationDynamicCollectService dynamicCollectService) {
        this.machineService = machineService;
        this.workstationOfMachineService = workstationOfMachineService;
        this.workstationWcsService = workstationWcsService;
@@ -167,7 +172,7 @@
        this.workbenchService = workbenchService;
        this.wsRelationTdService = wsRelationTdService;
        this.dncFixedSpaceService = dncFixedSpaceService;
        this.workstationProducer = workstationProducer;
        //this.workstationProducer = workstationProducer;
        this.dynamicCollectService = dynamicCollectService;
    }
@@ -234,9 +239,12 @@
        CacheUtil.clear(redisKey, Boolean.FALSE);
        WorkstationVO workstationVO = WorkstationConvert.INSTANCE.convertSaveVO(workstationSubmitVO);
        workstationVO.setId(workstation.getId());
        if (Func.isNull(workstationSubmitVO.getId())) {
            WorkstationCreateMessageDTO dto = WorkstationCreateMessageDTO.builder().workstationId(workstation.getId().toString()).operationTime(DateUtil.now()).build();
            this.workstationProducer.sendInsertWorkstationMessage(dto);
        if (Func.isNull(workstationSubmitVO.getId())) {//新增工位,发送消息,post应用打固定点
            //WorkstationCreateMessageDTO dto = WorkstationCreateMessageDTO.builder().workstationId(workstation.getId().toString()).operationTime(DateUtil.now()).build();
            //this.workstationProducer.sendInsertWorkstationMessage(dto);
            workstationProducer.sendInsertWorkstationMessage(workstation.getId());
        }
        return workstationVO;
    }
@@ -1059,9 +1067,11 @@
    }
    public List<CommonGroup> getCommonGroupIds(List<String> idList, List<CommonGroup> list) {
        /*
        List<CommonGroup> commonGroupList = this.commonGroupService.list(Lambda.in((v0) -> {
            return v0.getParentId();
        }, idList));
        }, idList));*/
        List<CommonGroup> commonGroupList = this.commonGroupService.list(Lambda.<CommonGroup>in(CommonGroup::getParentId, idList));
        if (Func.isEmpty(commonGroupList)) {
            return list;
        }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/ConfigVO.java
@@ -18,9 +18,9 @@
    @Value("${oss.secret-key}")
    @ApiModelProperty("secret-key")
    private String secretKey;
    @Value("${spring.datasource.dynamic.datasource.tdengine.url}")
    @ApiModelProperty("tdengine配置")
    private String tdengineUrl;
   // @Value("${spring.datasource.dynamic.datasource.tdengine.url}")
    //@ApiModelProperty("tdengine配置")
    //private String tdengineUrl;
    @Value("${spring.datasource.dynamic.datasource.master.url}")
    @ApiModelProperty("数据库配置")
    private String mysqlUrl;
@@ -96,8 +96,8 @@
            return this;
        }
        public ConfigVO build() {
            return new ConfigVO(this.ossUrl, this.accessKey, this.secretKey, this.tdengineUrl, this.mysqlUrl, this.driverClassName, this.database, this.type, this.url);
        public ConfigVO build() {// this.tdengineUrl,
            return new ConfigVO(this.ossUrl, this.accessKey, this.secretKey,this.mysqlUrl, this.driverClassName, this.database, this.type, this.url);
        }
        public String toString() {
@@ -116,11 +116,11 @@
    public void setSecretKey(final String secretKey) {
        this.secretKey = secretKey;
    }
    /*
    public void setTdengineUrl(final String tdengineUrl) {
        this.tdengineUrl = tdengineUrl;
    }
    */
    public void setMysqlUrl(final String mysqlUrl) {
        this.mysqlUrl = mysqlUrl;
    }
@@ -175,6 +175,7 @@
                } else if (!this$secretKey.equals(other$secretKey)) {
                    return false;
                }
                /*
                Object this$tdengineUrl = getTdengineUrl();
                Object other$tdengineUrl = other.getTdengineUrl();
                if (this$tdengineUrl == null) {
@@ -183,7 +184,7 @@
                    }
                } else if (!this$tdengineUrl.equals(other$tdengineUrl)) {
                    return false;
                }
                }*/
                Object this$mysqlUrl = getMysqlUrl();
                Object other$mysqlUrl = other.getMysqlUrl();
                if (this$mysqlUrl == null) {
@@ -240,10 +241,13 @@
        int result2 = (result * 59) + ($accessKey == null ? 43 : $accessKey.hashCode());
        Object $secretKey = getSecretKey();
        int result3 = (result2 * 59) + ($secretKey == null ? 43 : $secretKey.hashCode());
        /*
        Object $tdengineUrl = getTdengineUrl();
        int result4 = (result3 * 59) + ($tdengineUrl == null ? 43 : $tdengineUrl.hashCode());
        */
        Object $mysqlUrl = getMysqlUrl();
        int result5 = (result4 * 59) + ($mysqlUrl == null ? 43 : $mysqlUrl.hashCode());
        //int result5 = (result4 * 59) + ($mysqlUrl == null ? 43 : $mysqlUrl.hashCode());
        int result5 = ($mysqlUrl == null ? 43 : $mysqlUrl.hashCode());
        Object $driverClassName = getDriverClassName();
        int result6 = (result5 * 59) + ($driverClassName == null ? 43 : $driverClassName.hashCode());
        Object $database = getDatabase();
@@ -254,8 +258,8 @@
        return (result8 * 59) + ($url == null ? 43 : $url.hashCode());
    }
    public String toString() {
        return "ConfigVO(ossUrl=" + getOssUrl() + ", accessKey=" + getAccessKey() + ", secretKey=" + getSecretKey() + ", tdengineUrl=" + getTdengineUrl() + ", mysqlUrl=" + getMysqlUrl() + ", driverClassName=" + getDriverClassName() + ", database=" + getDatabase() + ", type=" + getType() + ", url=" + getUrl() + ")";
    public String toString() {//+ ", tdengineUrl=" + getTdengineUrl()
        return "ConfigVO(ossUrl=" + getOssUrl() + ", accessKey=" + getAccessKey() + ", secretKey=" + getSecretKey()  + ", mysqlUrl=" + getMysqlUrl() + ", driverClassName=" + getDriverClassName() + ", database=" + getDatabase() + ", type=" + getType() + ", url=" + getUrl() + ")";
    }
    public static ConfigVOBuilder builder() {
@@ -264,12 +268,12 @@
    public ConfigVO() {
    }
    public ConfigVO(final String ossUrl, final String accessKey, final String secretKey, final String tdengineUrl, final String mysqlUrl, final String driverClassName, final String database, final String type, final String url) {
// final String tdengineUrl,
    public ConfigVO(final String ossUrl, final String accessKey, final String secretKey, final String mysqlUrl, final String driverClassName, final String database, final String type, final String url) {
        this.ossUrl = ossUrl;
        this.accessKey = accessKey;
        this.secretKey = secretKey;
        this.tdengineUrl = tdengineUrl;
        //this.tdengineUrl = tdengineUrl;
        this.mysqlUrl = mysqlUrl;
        this.driverClassName = driverClassName;
        this.database = database;
@@ -288,10 +292,10 @@
    public String getSecretKey() {
        return this.secretKey;
    }
    /*
    public String getTdengineUrl() {
        return this.tdengineUrl;
    }
    }*/
    public String getMysqlUrl() {
        return this.mysqlUrl;
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/constant/DmpLogSyncConstant.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/controller/DmpLogController.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/dto/DmpLogMessage.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalFlowLog.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalLog.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/entity/SignalMethodTimeLog.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/enums/LogTypeEnum.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/jobHandler/DmpLogRegularCleanJob.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalFlowMapper.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMapper.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMethodTimeMapper.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/message/consumer/DmpLogSyncConsumer.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/service/IDmpLogService.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/service/impl/DmpLogServiceImpl.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogDetailVO.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogSearchVO.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/dmpLog/vo/DmpLogVo.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/controller/WorkstationFeedbackController.java
@@ -87,13 +87,18 @@
        return R.data(WorkstationFeedbackWrapper.build().entityVO(feedback));
    }
    /**
     * çŠ¶æ€åé¦ˆç•Œé¢åˆ†é¡µæŸ¥è¯¢
     * @param query
     * @param queryDTO
     * @return
     */
    @PostMapping({"/page"})
    @ApiOperationSupport
    @ApiOperation("工位反馈分页列表查询")
    public R<IPage<WorkstationFeedBackDetailVO>> page(Query query, @RequestBody WorkstationFeedBackQueryDTO queryDTO) {
        IPage<WorkstationFeedbackDetail> page = this.detailService.page(Condition.getPage(query), 
                Lambda.eq(WorkstationFeedbackDetail::getStatus, Integer.valueOf(FeedbackDetailStatus.EFFECTED.getValue()))
                Lambda.eq(WorkstationFeedbackDetail::getStatus, FeedbackDetailStatus.EFFECTED.getValue())
                .eq(WorkstationFeedbackDetail::getCancel, Boolean.FALSE)
                .in(Func.isNotEmpty(queryDTO.getWorkstationGroupId()), WorkstationFeedbackDetail::getWorkstationId, this.workstationService
                  .getWorkstationByGroupIds(ListUtil.toList(new String[] { queryDTO.getWorkstationGroupId() })).stream().map(WorkstationVO::getId).collect(Collectors.toList()))
@@ -143,6 +148,11 @@
        return R.data(page);
    }
    /**
     * åº”该是直接录入一个状态(不录入起止时间),起始时间为当前时间,如果有现存的即时状态,则直接更新其结束时间为当前时间
     * @param immediateFeedBackDTO
     * @return
     */
    @PostMapping({"/start-feedback-by-immediate"})
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "H5: çŠ¶æ€å³æ—¶åé¦ˆç™»è®°", notes = "工位即时反馈, è¿›è¡Œä¸­çš„反馈")
@@ -150,6 +160,11 @@
        return R.status(this.wcsFeedbackService.startFeedbackByImmediate(immediateFeedBackDTO));
    }
    /**
     * ä¿å­˜äººå·¥åé¦ˆçš„状态(状态记录界面)
     * @param noImmediateFeedBackDTO
     * @return
     */
    @PostMapping({"/start-feedback-by-no-immediate"})
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "H5: æ—¶é—´æ®µåé¦ˆ", notes = "时间段反馈")
@@ -160,11 +175,16 @@
        return R.status(this.wcsFeedbackService.startFeedbackByNoImmediate(noImmediateFeedBackDTO));
    }
    /**
     * çŠ¶æ€æäº¤å‰æ£€æŸ¥
     * @param noImmediateFeedBackDTO
     * @return
     */
    @PostMapping({"/overwrite-feedback-check"})
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "查询是否有覆盖的反馈", notes = "data true: ä¼šè¦†ç›–反馈,提示 false: ä¸ä¼šè¦†ç›–反馈,不提示直接提交")
    public R<Boolean> overwriteFeedback(@Validated @RequestBody WorkstationNoImmediateFeedBackDTO noImmediateFeedBackDTO) {
        return R.data(Boolean.valueOf(this.detailService.overwriteFeedbackCheck(noImmediateFeedBackDTO)));
        return R.data(this.detailService.overwriteFeedbackCheck(noImmediateFeedBackDTO));
    }
    @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL)
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/entity/WorkstationCollectData.java
@@ -8,9 +8,17 @@
    private String n;
    private String v;
    private Long workstationId;
    private String device;
    
    public static class WorkstationCollectDataBuilder {
    public String getDevice() {
        return device;
    }
    public void setDevice(String device) {
        this.device = device;
    }
    public static class WorkstationCollectDataBuilder {
        private Long ts;
        private String n;
        private String v;
@@ -44,7 +52,7 @@
        }
        public String toString() {
            return "WorkstationCollectData.WorkstationCollectDataBuilder(ts=" + this.ts + ", n=" + this.n + ", v=" + this.v + ", workstationId=" + this.workstationId + ")";
            return "WorkstationCollectData.WorkstationCollectDataBuilder(tsd=" + this.ts + ", n=" + this.n + ", v=" + this.v + ", workstationId=" + this.workstationId + ")";
        }
    }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/mapper/SuperProcessParameterMapper.java
@@ -15,14 +15,14 @@
@DS("iotdb")
@InterceptorIgnore(tenantLine = FmsConstant.AUTOMATIC)
public interface SuperProcessParameterMapper {
    @Deprecated
    List<WorkstationCollectData> queryLastParameter(@Param("workstationId") String workstationId);
    //这个在ProcessParameterService中实现了,mp对此有bug
    //List<WorkstationCollectData> queryLastParameter(@Param("workstationId") String workstationId);
    /**
     * æŸ¥è¯¢å·¥ä½æœ€æ–°å‚æ•°
     * æŸ¥è¯¢å·¥ä½æœ€æ–°å‚数,yys增加,可能需要使用queryLastParameter了(如果没问题)
     * @param workstationId
     * @return
     */
    LastProcessParam getLastParameters(@Param("workstationId") String workstationId);
    //LastProcessParam getLastParameters(@Param("workstationId") String workstationId);
    
    List<ProcessParameterVO> queryProcessParameter(@Param("workstationId") String workstationId, @Param("collectItems") List<String> collectItems, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IProcessParameterService.java
@@ -53,5 +53,12 @@
     * @param workstationId å·¥ä½id
     * @return å‚数值列表(n,v)
     */
    List<WorkstationCollectData> lastParameter(long workstationId);
    //List<WorkstationCollectData> lastParameter(long workstationId);
    /**
     * æŸ¥è¯¢å·¥ä½æœ€æ–°å‚数集合(iotdb使用mybatis查询有问题,自己实现)
     * @param workstationId
     * @return
     */
    List<WorkstationCollectData> queryLastParameter(long workstationId);
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IWorkstationFeedbackDetailService.java
@@ -12,6 +12,11 @@
    @Cacheable(cacheNames = {ExtCacheConstant.WORK_FEEDBACK_DETAIL}, key = "'list:cancel:workstationId:'.concat(#workstationId).concat(':').concat(#queryDate.toString())")
    List<WorkstationFeedbackDetail> cancelFeedback(final LocalDate queryDate, final Long workstationId);
    /**
     * æ‰¹é‡æ’¤é”€åé¦ˆ
     * @param ids
     * @return
     */
    boolean cancelWorkstationFeedbacks(final List<String> ids);
    WorkstationFeedbackDetail latestFeedbackByWorkstationId(final Long workstationId);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/IWorkstationFeedbackService.java
@@ -20,7 +20,14 @@
import org.springframework.cache.annotation.Caching;
public interface IWorkstationFeedbackService extends IService<WorkstationFeedback> {
    /**
     * ä¸€å¤©ç¼“å­˜ blade:feedback#86400
     */
    public static final String WORK_FEEDBACK_EXP = "blade:feedback#86400";
    /**
     * 3天缓存 blade:feedback#259200
     */
    public static final String WORK_FEEDBACK_EXP3 = "blade:feedback#259200";
    IPage<WorkstationFeedbackInfoVO> workstationPage(Query query, boolean excludeImmediate);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/ProcessParameterServiceImpl.java
@@ -3,12 +3,15 @@
import cn.hutool.core.lang.Tuple;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -74,25 +77,36 @@
import com.qianwen.smartman.modules.mdc.vo.WorkstationShiftSearchVO;
import com.qianwen.smartman.modules.mdc.vo.excel.ProcessParamExcelVO;
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@Service
public class ProcessParameterServiceImpl implements IProcessParameterService {
    private static final Logger log = LoggerFactory.getLogger(ProcessParameterServiceImpl.class);
    private final SuperCollectJsonMapper collectJsonMapper;
    private final IWorkstationService workstationService;
    private final OssBuilder ossBuilder;
    private final SuperProcessParameterMapper parameterMapper;
    private final ICalendarService calendarService;
    @Autowired
    private SuperCollectJsonMapper collectJsonMapper;
    @Autowired
    private IWorkstationService workstationService;
    @Autowired
    private OssBuilder ossBuilder;
    @Autowired
    private SuperProcessParameterMapper parameterMapper;
    @Autowired
    private ICalendarService calendarService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /*
    public ProcessParameterServiceImpl(final SuperCollectJsonMapper collectJsonMapper, final IWorkstationService workstationService, final OssBuilder ossBuilder, final SuperProcessParameterMapper parameterMapper, final ICalendarService calendarService) {
        this.collectJsonMapper = collectJsonMapper;
        this.workstationService = workstationService;
        this.ossBuilder = ossBuilder;
        this.parameterMapper = parameterMapper;
        this.calendarService = calendarService;
    }
    }*/
    @Override
    public ProcessParameterResVO queryProcessParameterChart(ProcessParameterSearchVO vo) {
@@ -652,6 +666,7 @@
        return vos;
    }
    /*
    @Override
    public List<WorkstationCollectData> lastParameter(long workstationId) {
        //yys
@@ -672,7 +687,7 @@
        });
        
        return result;
    }
    }*/
    
    /**
     * èŽ·å–å·¥ä½æœ€æ–°å‚æ•°å€¼
@@ -731,4 +746,21 @@
        
        return vo;
    }
    @DS("iotdb")
    @Override
    public List<WorkstationCollectData> queryLastParameter(long workstationId) {
        String sql ="select max_time(n) as ts,last_value(n) as n,last_value(v) as v,last_value(workstation_id) as workstationId from root.f2.process_param_"+workstationId+"_* align by device";
        List<WorkstationCollectData> list =  jdbcTemplate.query(sql, new RowMapper<WorkstationCollectData>() {
            @Override
            public WorkstationCollectData mapRow(ResultSet rs, int rowNum) throws SQLException {
                WorkstationCollectData data =  WorkstationCollectData.builder().ts(rs.getLong("ts")).n(rs.getString("n")).v(rs.getString("v")).workstationId(workstationId).build();
                return data;
            }
        });
        return list;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/WorkstationAnalysisServiceImpl.java
@@ -17,6 +17,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -42,7 +43,6 @@
import com.qianwen.smartman.modules.mdc.entity.WorkstationCollectData;
import com.qianwen.smartman.modules.mdc.mapper.SuperAggregateStateMapper;
import com.qianwen.smartman.modules.mdc.mapper.SuperAlarmMapper;
import com.qianwen.smartman.modules.mdc.mapper.SuperProcessParameterMapper;
import com.qianwen.smartman.modules.mdc.service.IProcessParameterService;
import com.qianwen.smartman.modules.mdc.service.IWorkstationAnalysisService;
import com.qianwen.smartman.modules.mdc.vo.AlarmAnalysisWorkstationVO;
@@ -55,15 +55,20 @@
public class WorkstationAnalysisServiceImpl implements IWorkstationAnalysisService {
    private static final Logger log = LoggerFactory.getLogger(WorkstationAnalysisServiceImpl.class);
    public static final String STATUS = "STATUS";
    private final SuperAggregateStateMapper superAggregateStateMapper;
    private final SuperAlarmMapper superAlarmMapper;
    private final IGlobalWcsService globalWcsService;
    private final WorkstationMapper workstationMapper;
    private final SuperProcessParameterMapper superProcessParameterMapper;
    private final IWorkstationService workstationService;
    @Autowired
    private  SuperAggregateStateMapper superAggregateStateMapper;
    @Autowired
    private  SuperAlarmMapper superAlarmMapper;
    @Autowired
    private  IGlobalWcsService globalWcsService;
    @Autowired
    private  WorkstationMapper workstationMapper;
    //private final SuperProcessParameterMapper superProcessParameterMapper;
    @Autowired
    private IWorkstationService workstationService;
    @Autowired
    private IProcessParameterService processParameterService;
    /*
    public WorkstationAnalysisServiceImpl(final SuperAggregateStateMapper superAggregateStateMapper, final SuperAlarmMapper superAlarmMapper, final IGlobalWcsService globalWcsService, final WorkstationMapper workstationMapper, final SuperProcessParameterMapper superProcessParameterMapper, final IWorkstationService workstationService,IProcessParameterService aProcessParameterService) {
        this.superAggregateStateMapper = superAggregateStateMapper;
        this.superAlarmMapper = superAlarmMapper;
@@ -72,7 +77,7 @@
        this.superProcessParameterMapper = superProcessParameterMapper;
        this.workstationService = workstationService;
        this.processParameterService = aProcessParameterService;
    }
    }*/
    @Override 
    public List<StatusAnalysisWorkstationVO> statusByWorkstation(String workstationId) {
@@ -209,7 +214,7 @@
            //this error
            //List<WorkstationCollectData> workstationCollectData = this.superProcessParameterMapper.queryLastParameter(wId);//该工位最新的last(ts),last(v)
            
            List<WorkstationCollectData> workstationCollectData = processParameterService.lastParameter(Long.parseLong(wId));
            List<WorkstationCollectData> workstationCollectData = processParameterService.queryLastParameter(Long.parseLong(wId));
            if (Func.isNotEmpty(workstationCollectData)) {
                //resultMapping ,key:n ï¼Œvalue:TelemetryDataResponseDTO{last(ts),last(v)}
                Map<String, Object> resultMapping = workstationCollectData.stream().collect(Collectors.toMap((v0) -> {
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/WorkstationFeedbackServiceImpl.java
@@ -130,7 +130,7 @@
    @Override 
    public WorkstationFeedback getImmediateFeedback(Serializable workstationId) {
        return getOne(Lambda.eq(WorkstationFeedback::getWorkstationId, workstationId)
                .eq(WorkstationFeedback::getFeedbackType, Integer.valueOf(FeedbackType.IMMEDIATE.getValue()))
                .eq(WorkstationFeedback::getFeedbackType, FeedbackType.IMMEDIATE.getValue())
                .isNull(WorkstationFeedback::getEndTime));
        /*
        return (WorkstationFeedback) getOne((Wrapper) ((ExtraLambdaQueryWrapper) Lambda.eq((v0) -> {
@@ -165,7 +165,7 @@
                } else {
                    addFeedback.setFeedUser(getEmployeeById().getId());
                }
                addFeedback.setFeedbackType(Integer.valueOf(FeedbackType.IMMEDIATE.getValue()));
                addFeedback.setFeedbackType(FeedbackType.IMMEDIATE.getValue());
                addFeedback.setStatus(FeedbackStatus.WAIT_SYNC.getValue());
                addFeedback.setRemark(dto.getDescription());
                addFeedback.setWcs(dto.getWcs());
@@ -188,28 +188,34 @@
            this.redisLockClient.lockFair(ExtCacheConstant.WORK_FEEDBACK.concat(":").concat(workstationId), 30L, 100L, () -> {
                existTimeOverImmediateFeedbackException(dto);
                WorkstationFeedback addFeedback = new WorkstationFeedback();
                addFeedback.setWorkstationId(Long.valueOf(Long.parseLong(workstationId)));
                addFeedback.setWorkstationId(Long.parseLong(workstationId));
                addFeedback.setStartTime(dto.getStartTime());
                addFeedback.setEndTime(dto.getEndTime());
                addFeedback.setFeedbackTime(new Date());
                if (Func.isNotEmpty(dto.getFeedUser())) {
                    addFeedback.setFeedUser(Long.valueOf(Long.parseLong(dto.getFeedUser())));
                    addFeedback.setEndFeedUser(Long.valueOf(Long.parseLong(dto.getFeedUser())));
                    addFeedback.setFeedUser(Long.parseLong(dto.getFeedUser()));
                    addFeedback.setEndFeedUser(Long.parseLong(dto.getFeedUser()));
                } else {
                    addFeedback.setFeedUser(getEmployeeById().getId());
                    addFeedback.setEndFeedUser(getEmployeeById().getId());
                }
                addFeedback.setFeedbackType(Integer.valueOf(FeedbackType.TIME_RANGE.getValue()));
                addFeedback.setFeedbackType(FeedbackType.TIME_RANGE.getValue());
                addFeedback.setStatus(FeedbackStatus.WAIT_SYNC.getValue());
                addFeedback.setRemark(dto.getDescription());
                addFeedback.setWcs(dto.getWcs());
                return Boolean.valueOf(save(addFeedback));
                return save(addFeedback);//保存到mysql
            });
        }
        evictFeedback(dto.getStartTime(), dto.getEndTime(), dto.getWorkstationIds());
        return true;
    }
    /**
     * æ‰¹é‡æ¸…除 åé¦ˆ
     * @param startTime
     * @param endTime
     * @param workstationIds
     */
    private void evictFeedback(final Date startTime, final Date endTime, List<String> workstationIds) {
        LocalDate start = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate end = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
@@ -218,16 +224,26 @@
        });
    }
    private void evictFeedback(final LocalDate start, final LocalDate end, final Serializable workstationId) {
        long distance = ChronoUnit.DAYS.between(start, end);
    /**
     * å•个清楚缓存中的反馈,从catcheName=WORK_FEEDBACK_EXP3缓存中删除 å®žé™…key为 group:feedback:list:blade:feedback#259200${workstationId}:yyyy-MM-dd HH:mm:ss
     * @param start
     * @param end
     * @param workstationId
     */
    private void evictFeedback(final LocalDate start, final LocalDate end, final String workstationId) {
        long distance = ChronoUnit.DAYS.between(start, end);//一共limit几天(就是取几个数)
        Stream.iterate(start, d -> {
            return d.plusDays(1L);
        }).limit(distance + 1).forEach(date -> {
            String key = String.valueOf(workstationId).concat(":").concat(Func.formatDate(date));
            String key = workstationId.concat(":").concat(Func.formatDate(date));
            CacheUtil.evict(IWorkstationFeedbackService.WORK_FEEDBACK_EXP3, GROUP_FEEDBACK_CACHE_KEY, key, false);
        });
    }
    /**
     * æ£€æŸ¥æ˜¯å¦æœ‰æ­£åœ¨è¿›è¡Œä¸­çš„状态反馈
     * @param dto
     */
    private void existTimeOverImmediateFeedbackException(WorkstationNoImmediateFeedBackDTO dto) {
        if (dto.getWorkstationIds().stream().map(this.selfService::getImmediateFeedback).filter(Objects::nonNull).anyMatch(feedback -> 
        (dto.getStartTime().getTime() >= feedback.getStartTime().getTime() || dto.getEndTime().getTime() >= feedback.getStartTime().getTime())))
smart-man-boot/src/main/java/com/qianwen/smartman/modules/notify/jobHandler/BusinessNotifyJob.java
@@ -45,7 +45,7 @@
        this.maintainProjectService = maintainProjectService;
    }
    @XxlJob("maintain-overdueJobHandler")
    @XxlJob("maintain-overdueJobHandler")//维护任务通知??
    public ReturnT<String> maintainOverdueJobHandler(String param) {
        XxlJobLogger.log("定时发送开始,:{}", new Object[]{param});
        LocalDateTime now = LocalDateTime.now();
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/OuterAppConfigController.java
@@ -16,7 +16,7 @@
import com.qianwen.smartman.modules.sync.entity.OuterAppConfig;
import com.qianwen.smartman.modules.sync.service.IDingSyncService;
import com.qianwen.smartman.modules.sync.service.IOuterAppConfigService;
import com.qianwen.smartman.modules.sync.service.IWechatSyncService;
//import com.qianwen.smartman.modules.sync.service.IWechatSyncService;
import com.qianwen.smartman.modules.sync.vo.OuterAppConfigVO;
import com.qianwen.smartman.modules.sync.vo.OuterAppStatusVO;
import com.qianwen.smartman.modules.sync.vo.SyncResultVO;
@@ -35,12 +35,13 @@
@RestController
public class OuterAppConfigController extends BladeController {
    private IOuterAppConfigService outerAppConfigService;
    private final IWechatSyncService wechatSyncService;
    //private final IWechatSyncService wechatSyncService;
    private final IDingSyncService dingSyncService;
    public OuterAppConfigController(final IOuterAppConfigService outerAppConfigService, final IWechatSyncService wechatSyncService, final IDingSyncService dingSyncService) {
    //, final IWechatSyncService wechatSyncService,
    public OuterAppConfigController(final IOuterAppConfigService outerAppConfigService, final IDingSyncService dingSyncService) {
        this.outerAppConfigService = outerAppConfigService;
        this.wechatSyncService = wechatSyncService;
       // this.wechatSyncService = wechatSyncService;
        this.dingSyncService = dingSyncService;
    }
@@ -84,7 +85,8 @@
    public R<SyncResultVO> submit(@Valid @RequestBody OuterAppConfigVO outerAppConfigVO) {
        this.outerAppConfigService.submit(outerAppConfigVO);
        if (outerAppConfigVO.getAppType().equals(OuterAppConfigConstant.QY_WECHAT)) {
            return R.data(this.wechatSyncService.syncOrganization());
            //yangys注释掉了
            //return R.data(this.wechatSyncService.syncOrganization());
        }
        return R.data(this.dingSyncService.syncImmediately());
    }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/QyWechatEventCallBackController.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/controller/QyWechatSyncController.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/IWechatCallbackService.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/IWechatSyncService.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/impl/WechatCallbackServiceImpl.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/sync/service/impl/WechatSyncServiceImpl.java
ÎļþÒÑɾ³ý
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/impl/BasCoderuleServiceImpl.java
@@ -53,15 +53,16 @@
    private final IMetaObjectTypeService metaObjectTypeService;
    private final IMetaObjectTypeFieldService metaObjectTypeFieldService;
    private final CodeHistoryMapper codeHistoryMapper;
    private final ConfigVO configVO;
    //private final ConfigVO configVO;
    public BasCoderuleServiceImpl(final IBasCoderuleEntryService basCoderuleEntryService, final IMetaObjectTypeService metaObjectTypeService, final IMetaObjectTypeFieldService metaObjectTypeFieldService, final CodeHistoryMapper codeHistoryMapper, final ConfigVO configVO) {
    //public BasCoderuleServiceImpl(final IBasCoderuleEntryService basCoderuleEntryService, final IMetaObjectTypeService metaObjectTypeService, final IMetaObjectTypeFieldService metaObjectTypeFieldService, final CodeHistoryMapper codeHistoryMapper, final ConfigVO configVO) {
    public BasCoderuleServiceImpl(final IBasCoderuleEntryService basCoderuleEntryService, final IMetaObjectTypeService metaObjectTypeService, final IMetaObjectTypeFieldService metaObjectTypeFieldService, final CodeHistoryMapper codeHistoryMapper) {
        this.basCoderuleEntryService = basCoderuleEntryService;
        this.metaObjectTypeService = metaObjectTypeService;
        this.metaObjectTypeFieldService = metaObjectTypeFieldService;
        this.codeHistoryMapper = codeHistoryMapper;
        this.configVO = configVO;
        //this.configVO = configVO;
    }
    @Override
smart-man-boot/src/main/resources/application-dev.yml
@@ -42,12 +42,6 @@
# rocketmq
rocketmq-name-server: localhost:9876
# tdengine
tdengine:
  driver: com.taosdata.jdbc.TSDBDriver
  url: jdbc:TAOS://localhost:6030/iot_data?charset=UTF-8&locale=en_US.UTF-8&cfgdir=taos.cfg
  username: root
  password: taosdata
iotdb:
  driver: org.apache.iotdb.jdbc.IoTDBDriver
@@ -56,7 +50,20 @@
  maxSize: 10
  username: root
  password: root
mqtt:
  host: tcp://82.156.1.83:1884
  #username=admin #MQTT-服务端用户名
  #password=public #MQTT-服务端密码
  cleansession: false #MQTT-是否清理session
  #MQTT-当前客户端的唯一标识
  clientid: mqtt_publish
  default_topic: TEST #当前客户端的默认主题(大多数时候没什么用)
  #发送超时时间
  mqtt.timeout: 1000
  #心跳时间
  keepalive: 10
  connectionTimeout: 3000 #连接超时时间
xxl:
  job:
    admin:
smart-man-boot/src/main/resources/application.yml
@@ -47,11 +47,6 @@
          username: ${datasource.username}
          password: ${datasource.password}
          driver-class-name: ${datasource.driver-class-name}
        tdengine:
          driver-class-name: ${tdengine.driver}
          url: ${tdengine.url}
          username: ${tdengine.username}
          password: ${tdengine.password}
        iotdb:
          driver-class-name: ${iotdb.driver}
          url: jdbc:iotdb://${iotdb.host}:${iotdb.port}/
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalFlowMapper.xml
ÎļþÒÑɾ³ý
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMapper.xml
ÎļþÒÑɾ³ý
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/dmpLog/mapper/DmpLogSignalMethodTimeMapper.xml
ÎļþÒÑɾ³ý
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/mdc/mapper/SuperAggregateStateFeedbackMapper.xml
@@ -23,14 +23,6 @@
        feedback_id as feedbackId
    </sql>
    <!-- ä¿®æ”¹sql开始 -->
    
    <sql id="aggregateStateColumnSql">
@@ -48,14 +40,15 @@
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
        is_plan as isPlan,
        feedback_id as feedbackId
    </sql>
    
    <!-- ç”±äºŽè¡¨æ•°æ®ä¸€æ ·ï¼ˆiot_data.super_aggregate_state_with_feedback),我们也没有反馈,所以暂时都查一个表 -->
    <select id="getStatusData" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        from root.f2.aggregate_state_with_feedback_*
        where is_deleted = false
        and wcs > 0
        and time <![CDATA[>=]]> #{startDate} and time <![CDATA[<=]]> #{endDate}
@@ -72,7 +65,7 @@
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select 
        <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        from root.f2.aggregate_state_with_feedback_*
        where factory_date <![CDATA[>=]]> #{startFactoryDate} and factory_date <![CDATA[<=]]> #{endFactoryDate}
        and wcs > 0 and is_deleted = false
        <if test="workstationIds != null and workstationIds.size() > 0">
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/mdc/mapper/SuperProcessParameterMapper.xml
@@ -3,11 +3,15 @@
<mapper namespace="com.qianwen.smartman.modules.mdc.mapper.SuperProcessParameterMapper">
    <resultMap id="BaseResultMap" type="com.qianwen.smartman.modules.mdc.entity.WorkstationCollectData">
        <id column="ts" jdbcType="TIMESTAMP" property="ts"/>
        <result column="n" jdbcType="NVARCHAR" property="n"/>
        <result column="v" jdbcType="NVARCHAR" property="v"/>
        <id column="ts" jdbcType="BIGINT" property="ts"/>
        <result column="n" jdbcType="VARCHAR" property="n"/>
        <result column="v" jdbcType="VARCHAR" property="v"/>
        <result column="workstation_id" jdbcType="BIGINT" property="workstationId"/>
    </resultMap>
    <!--
    <select id="queryLastParameter" resultType="com.qianwen.smartman.modules.mdc.entity.WorkstationCollectData">
        select last(ts),  n, last(v),workstation_id from super_collect_data
        <where>
@@ -15,7 +19,7 @@
        </where>
        group by workstation_id,n
    </select>
  -->
     
    
    <select id="queryProcessParameter" resultType="com.qianwen.smartman.modules.mdc.dto.ProcessParameterVO">
@@ -137,10 +141,16 @@
     -->
    
    <!-- sql修改开始 -->
    <!--  queryLastParameter è¿™ä¸ªæ˜¯æ ¹æ®åŽŸå§‹sql改的,mp有问题,改在service中实现了
    <select id="queryLastParameter" resultMap="BaseResultMap">
        select max_time(n) as ts,last_value(n) as n,last_value(v) as v,last_value(workstation_id) as workstationId from root.f2.process_param_${workstationId}_*  align by device
    </select>
    -->
    <!--
    <select id="getLastParameters" resultType="com.qianwen.smartman.modules.mdc.entity.LastProcessParam">
        select workstation_id as workstationId,update_time as updateTime, param_json as paramJson from root.f2.last_process_param where workstation_id = #{workstationId}
    </select>
     -->
    
  
     <!-- æ ¹æ®oldFirstStatue æ”¹é€ çš„-->