1. 终端,

This commit is contained in:
zhaowenyuan 2024-06-26 15:27:28 +08:00
parent 4cfe7c1436
commit d2cac150a1
19 changed files with 674 additions and 122 deletions

View File

@ -1,6 +1,7 @@
package com.chushang.common.dict.utils; package com.chushang.common.dict.utils;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.chushang.common.core.web.Result; import com.chushang.common.core.web.Result;
@ -22,9 +23,7 @@ public class DictUtils {
private static final RemoteDictDataService remoteService = SpringUtil.getBean(RemoteDictDataService.class); private static final RemoteDictDataService remoteService = SpringUtil.getBean(RemoteDictDataService.class);
private static final RedissonClient redissonClient = SpringUtil.getBean(RedissonClient.class); private static final RedissonClient redissonClient = SpringUtil.getBean(RedissonClient.class);
private static final String DICT_MAP_KEY = "dict_map_key:"; private static final String DICT_MAP_KEY = "dict_map_key:";
private static final String DICT_MAP_LABEL = "dict_map_label:";
private static final Map<String, Map<String, String>> DICT_CACHE = MapUtil.newConcurrentHashMap(25);
/** /**
* 远程调用 * 远程调用
*/ */
@ -37,14 +36,7 @@ public class DictUtils {
return new HashMap<>(); return new HashMap<>();
} }
/** private static Map<String, String> getDictMap(String dictType){
* 根据字段值获取字典标签
*
* @param dictType 字典类型
* @param value 字典值
* @return 字典标签
*/
public static String getDictLabel(String dictType, String value) {
RBucket<Map<String, String>> bucket = redissonClient.getBucket(DICT_MAP_KEY + dictType); RBucket<Map<String, String>> bucket = redissonClient.getBucket(DICT_MAP_KEY + dictType);
Map<String, String> dictMap = bucket.get(); Map<String, String> dictMap = bucket.get();
if (CollUtil.isEmpty(dictMap)) { if (CollUtil.isEmpty(dictMap)) {
@ -54,6 +46,37 @@ public class DictUtils {
} }
bucket.set(dictMap); bucket.set(dictMap);
} }
return dictMap;
}
/**
* 根据字段值获取字典标签
*
* @param dictType 字典类型
* @param value 字典值
* @return 字典标签
*/
public static String getDictLabel(String dictType, String value) {
Map<String, String> dictMap = getDictMap(dictType);
assert dictMap != null;
return dictMap.get(value); return dictMap.get(value);
} }
/**
* 根据字典标签获取字段值
*
* @param dictType 字典类型
* @param label 字典标签
* @return 字典值
*/
public static String getDictValue(String dictType, String label) {
Map<String, String> dictMap = getDictMap(dictType);
assert dictMap != null;
if (CollUtil.isEmpty(dictMap)){
return null;
}
return dictMap.values().stream().filter(value -> value.equals(label))
.findFirst().orElse(null);
}
} }

View File

@ -83,6 +83,11 @@
<!--nacos 心跳 INFO 屏蔽--> <!--nacos 心跳 INFO 屏蔽-->
<logger name="com.alibaba.cloud.nacos" level="info"> <logger name="com.alibaba.cloud.nacos" level="info">
</logger> </logger>
<logger name="org.redisson.connection.SentinelConnectionManager" level="OFF" />
<logger name="org.redisson.connection.MasterSlaveEntry" level="OFF" />
<logger name="org.redisson.connection.pool.PubSubConnectionPool" level="OFF" />
<logger name="org.redisson.connection.pool.SlaveConnectionPool" level="OFF" />
<logger name="org.redisson.connection.balancer.LoadBalancerManager" level="OFF" />
<!-- 使用kafka启用下面配置 --> <!-- 使用kafka启用下面配置 -->
<!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">--> <!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">-->

View File

@ -83,6 +83,11 @@
<!--nacos 心跳 INFO 屏蔽--> <!--nacos 心跳 INFO 屏蔽-->
<logger name="com.alibaba.cloud.nacos" level="info"> <logger name="com.alibaba.cloud.nacos" level="info">
</logger> </logger>
<logger name="org.redisson.connection.SentinelConnectionManager" level="OFF" />
<logger name="org.redisson.connection.MasterSlaveEntry" level="OFF" />
<logger name="org.redisson.connection.pool.PubSubConnectionPool" level="OFF" />
<logger name="org.redisson.connection.pool.SlaveConnectionPool" level="OFF" />
<logger name="org.redisson.connection.balancer.LoadBalancerManager" level="OFF" />
<!-- 使用kafka启用下面配置 --> <!-- 使用kafka启用下面配置 -->
<!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">--> <!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">-->
@ -108,4 +113,6 @@
<!-- 输出plumelog --> <!-- 输出plumelog -->
<!-- <appender-ref ref="redisPlumelog"/>--> <!-- <appender-ref ref="redisPlumelog"/>-->
</root> </root>
</configuration> </configuration>

View File

@ -111,7 +111,7 @@ public class PollingTask extends BaseEntity {
private LocalDateTime endTime; private LocalDateTime endTime;
/** /**
* 任务状态 * 任务状态 false 未使用, 1 已启用
*/ */
@TableField(value = "enabled") @TableField(value = "enabled")
private Boolean enabled; private Boolean enabled;

View File

@ -0,0 +1,101 @@
package com.chushang.inspection.project.vo;
import com.chushang.common.dict.annotation.DictFormat;
import com.chushang.inspection.terminal.vo.StoreVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TerminalApp implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long terminalId;
/**
* id
*/
private Long storeId;
/**
* id
*/
private Long lowerTaskId;
/**
* 终端sn号
*/
private String terminalSn;
/**
* 终端编号
*/
private String terminalNo;
/**
* 终端类型
*/
@DictFormat(dictType = "terminal_type")
private Integer terminalType;
/**
* 终端型号
*/
private String terminalModel;
/**
* 终端版本号
*/
private String terminalVersion;
/**
* 终端地址
*/
private String terminalAddress;
/**
* 终端来源
*/
@DictFormat(dictType = "terminal_source")
private Integer terminalSource;
/**
* 机构名称
* taskId
*/
private String taskName;
/**
* 商户信息
* storeId
*/
private StoreVO store;
/**
* 上次工单处理时间
* wrk_info_ id
* (state = :state) order by dispose_time desc limit 1
*/
private LocalDateTime processingTime;
/**
* 上次服务结果
* wrk_info id
* (state = :state) order by dispose_time desc limit 1
*/
@DictFormat(dictType = "service_results")
private Integer serviceResults;
}

View File

@ -0,0 +1,78 @@
package com.chushang.inspection.project.vo;
import com.chushang.common.dict.annotation.DictFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TerminalAppVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Long terminalId;
/**
* 商户名称
*/
private String storeName;
/**
* 商户联系人
*/
private String storeContact;
/**
* 商户地址
*/
private String storeAddress;
/**
* 终端地址
*/
private String terminalAddress;
/**
* 巡检频次
*/
@DictFormat(dictType = "ins_fre")
private Integer insFre;
/**
* 上次工单处理时间
*/
private LocalDateTime inspectionTime;
/**
* 上次服务结果
*/
@DictFormat(dictType = "service_results")
private Integer serviceResults;
/**
* 审核通过次数
*/
private Integer timesPass;
/**
* 机构名称
*/
private String taskName;
/**
* 终端编号
*/
private String terminalNo;
}

View File

@ -128,99 +128,5 @@ public class Terminal extends BaseEntity {
@TableField(value = "remark") @TableField(value = "remark")
private String remark; private String remark;
/**
* 银行资产管理码
*/
@TableField(value = "management_code")
private String managementCode;
/**
* 地理位置信息
*/
@TableField(value = "geographic_location")
private String geographicLocation;
/**
* 地理位置信息地址
*/
@TableField(value = "geographic_address")
private String geographicAddress;
/**
* 巡检位置信息
*/
@TableField(value = "work_location")
private String workLocation;
/**
* 巡检位置信息
*/
@TableField(value = "work_address")
private String workAddress;
/**
* 偏差直线距离
*/
@TableField(value = "deviation")
private Long deviation;
/**
* 入库时间
*/
@TableField(value = "storage_time")
private LocalDateTime storageTime;
/**
* 出库时间
*/
@TableField(value = "delivery_time")
private LocalDateTime deliveryTime;
/**
* 出库原因
*/
@TableField(value = "reason_for_shipment")
private Integer reasonForShipment;
/**
* 操作员编号
*/
@TableField(value = "operator_id")
private String operatorId;
/**
* 预制码编码
*/
@TableField(value = "pre_code_encoding")
private String preCodeEncoding;
/**
* 是否为业务员录入1是 2否
*/
@TableField(value = "is_enter")
private Integer isEnter;
/**
* 上次服务结果
*/
@TableField(value = "service_result")
private Integer serviceResult;
/**
* 审核通过次数
*/
@TableField(value = "times_pass")
private Integer timesPass;
/**
* 巡检状态 1 已巡检 2 未巡检
*/
@TableField(value = "inspection_status")
private Integer inspectionStatus;
/**
* 巡检时间上次业务员处理时间
*/
@TableField(value = "inspection_time")
private LocalDateTime inspectionTime;
} }

View File

@ -0,0 +1,152 @@
package com.chushang.inspection.terminal.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chushang.common.mybatis.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @auther: zhao
* @date: 2024/6/26 15:25
* 终端 工单表
*/
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "st_terminal_ins")
public class TerminalIns extends BaseEntity {
/**
* 主键
*/
@TableId(value = "terminal_id", type = IdType.ASSIGN_ID)
private Long terminalId;
/**
* 租户id
*/
@TableField(value = "dept_id")
private Long deptId;
/**
* 任务id
*/
@TableField(value = "task_id")
private Long taskId;
/**
* 下级任务id
*/
@TableField(value = "lower_task_id")
private Long lowerTaskId;
/**
* 所属商户id
*/
@TableField(value = "store_id")
private Long storeId;
/**
* 银行资产管理码
*/
@TableField(value = "management_code")
private String managementCode;
/**
* 地理位置信息
*/
@TableField(value = "geographic_location")
private String geographicLocation;
/**
* 地理位置信息地址
*/
@TableField(value = "geographic_address")
private String geographicAddress;
/**
* 巡检位置信息
*/
@TableField(value = "work_location")
private String workLocation;
/**
* 巡检位置信息
*/
@TableField(value = "work_address")
private String workAddress;
/**
* 偏差直线距离
*/
@TableField(value = "deviation")
private Long deviation;
/**
* 入库时间
*/
@TableField(value = "storage_time")
private LocalDateTime storageTime;
/**
* 出库时间
*/
@TableField(value = "delivery_time")
private LocalDateTime deliveryTime;
/**
* 出库原因
*/
@TableField(value = "reason_for_shipment")
private Integer reasonForShipment;
/**
* 操作员编号
*/
@TableField(value = "operator_id")
private String operatorId;
/**
* 预制码编码
*/
@TableField(value = "pre_code_encoding")
private String preCodeEncoding;
/**
* 是否为业务员录入1是 2否
*/
@TableField(value = "is_enter")
private Integer isEnter;
/**
* 上次服务结果
*/
@TableField(value = "service_result")
private Integer serviceResult;
/**
* 审核通过次数
*/
@TableField(value = "times_pass")
private Integer timesPass;
/**
* 巡检状态 1 已巡检 2 未巡检
*/
@TableField(value = "inspection_status")
private Integer inspectionStatus;
/**
* 巡检时间上次业务员处理时间
*/
@TableField(value = "inspection_time")
private LocalDateTime inspectionTime;
}

View File

@ -24,7 +24,7 @@ public class TerminalAppQuery extends CommonParam {
/** /**
* 商户编号 * 商户编号
*/ */
@Condition(name = "no") @Condition(name = "store_no")
@Size(max = 64, message = "商户编号不能超过64个字符") @Size(max = 64, message = "商户编号不能超过64个字符")
private String storeNo; private String storeNo;

View File

@ -1,5 +1,6 @@
package com.chushang.inspection.project.service; package com.chushang.inspection.project.service;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.inspection.project.dto.TaskDTO; import com.chushang.inspection.project.dto.TaskDTO;
@ -8,6 +9,7 @@ import com.chushang.inspection.project.dto.TaskQuery;
import com.chushang.inspection.project.po.PollingTask; import com.chushang.inspection.project.po.PollingTask;
import com.chushang.inspection.project.vo.ConfigVO; import com.chushang.inspection.project.vo.ConfigVO;
import com.chushang.inspection.project.vo.TaskVO; import com.chushang.inspection.project.vo.TaskVO;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
@ -35,4 +37,6 @@ public interface PollingTaskService extends IService<PollingTask>{
void importSave(List<TaskExcelDTO> taskExcel, Long parentId); void importSave(List<TaskExcelDTO> taskExcel, Long parentId);
PollingTask getTopTask(Long taskId);
} }

View File

@ -32,6 +32,8 @@ import com.chushang.task.enums.TaskTypeEnum;
import com.chushang.task.feign.RemoteTaskService; import com.chushang.task.feign.RemoteTaskService;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.inspection.project.mapper.PollingTaskMapper; import com.chushang.inspection.project.mapper.PollingTaskMapper;
@ -51,6 +53,7 @@ import java.util.stream.Collectors;
*/ */
@Slf4j @Slf4j
@Service @Service
@CacheConfig(cacheNames = "task")
public class PollingTaskServiceImpl extends ServiceImpl<PollingTaskMapper, PollingTask> implements PollingTaskService { public class PollingTaskServiceImpl extends ServiceImpl<PollingTaskMapper, PollingTask> implements PollingTaskService {
/** /**
* 通过远程调用的方式进行入库 * 通过远程调用的方式进行入库
@ -220,6 +223,21 @@ public class PollingTaskServiceImpl extends ServiceImpl<PollingTaskMapper, Polli
); );
} }
@Override
@Cacheable(key = "'top-one:' + #taskId")
public PollingTask getTopTask(Long taskId) {
PollingTask task = baseMapper.selectById(taskId);
Assert.notNull(task, "此任务不存在");
if (task.getParentId() == 0) {
return task;
}
String searchNum = task.getSearchNum().split("-")[0] + "-";
LambdaQueryWrapper<PollingTask> taskSql = WrapperUtils.builder();
taskSql.eq(PollingTask::getSearchNum, searchNum)
.last(Operator.LIMIT_ONE.getCharacter());
return baseMapper.selectOne(taskSql);
}
@Transactional @Transactional
public Result<Boolean> importTask(String params) public Result<Boolean> importTask(String params)
{ {

View File

@ -12,6 +12,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
/** /**
* 终端信息表(st_terminal)表控制层 * 终端信息表(st_terminal)表控制层
@ -49,5 +50,27 @@ public class TerminalController {
return AjaxResult.success(terminalService.queryPageApp(query)); return AjaxResult.success(terminalService.queryPageApp(query));
} }
/**
* 查询终端
*/
@SysLog(value = "终端详情", businessType = BusinessType.QUERY)
@PostMapping("/info/{terminalId}")
@RequiresPermissions("terminal:info")
public AjaxResult info(@PathVariable Long terminalId) {
return AjaxResult.success(terminalService.getById(terminalId));
}
/**
* 查询终端app
*/
@SysLog(value = "终端详情app", businessType = BusinessType.QUERY)
@PostMapping("/info/app/{terminalId}")
@RequiresPermissions("terminal:info:app")
public AjaxResult infoApp(@PathVariable Long terminalId,
@RequestParam("taskId") Long taskId) {
return AjaxResult.success(terminalService.getAppById(terminalId, taskId));
}
} }

View File

@ -3,8 +3,10 @@ package com.chushang.inspection.terminal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.datascope.annotation.DataScope; import com.chushang.datascope.annotation.DataScope;
import com.chushang.inspection.project.vo.TerminalAppVO;
import com.chushang.inspection.terminal.po.Store; import com.chushang.inspection.terminal.po.Store;
import com.chushang.inspection.terminal.po.Terminal; import com.chushang.inspection.terminal.po.Terminal;
import com.chushang.inspection.terminal.query.TerminalAppQuery;
import com.chushang.inspection.terminal.query.TerminalQuery; import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.terminal.vo.TerminalVO; import com.chushang.inspection.terminal.vo.TerminalVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -16,7 +18,9 @@ import java.util.List;
* @date: 2024/6/21 16:39 * @date: 2024/6/21 16:39
*/ */
public interface TerminalMapper extends BaseMapper<Terminal> { public interface TerminalMapper extends BaseMapper<Terminal> {
@DataScope(deptAlias = "t")
List<TerminalVO> pageList(@Param("query") TerminalQuery query, List<TerminalVO> pageList(@Param("query") TerminalQuery query,
Page<Store> page); Page<TerminalVO> page);
@DataScope(deptAlias = "t")
List<TerminalAppVO> selectPageApp(@Param("query") TerminalAppQuery query, Page<TerminalAppVO> page);
} }

View File

@ -2,6 +2,7 @@ package com.chushang.inspection.terminal.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chushang.common.mybatis.utils.PageResult; import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.inspection.project.vo.TerminalApp;
import com.chushang.inspection.terminal.po.Terminal; import com.chushang.inspection.terminal.po.Terminal;
import com.chushang.inspection.terminal.query.TerminalAppQuery; import com.chushang.inspection.terminal.query.TerminalAppQuery;
import com.chushang.inspection.terminal.query.TerminalQuery; import com.chushang.inspection.terminal.query.TerminalQuery;
@ -24,4 +25,12 @@ public interface TerminalService extends IService<Terminal>{
* 查询终端app * 查询终端app
*/ */
PageResult queryPageApp(TerminalAppQuery query); PageResult queryPageApp(TerminalAppQuery query);
/**
* 终端详情app id
* @param terminalId
* @param taskId
* @return
*/
TerminalApp getAppById(Long terminalId, Long taskId);
} }

View File

@ -1,21 +1,30 @@
package com.chushang.inspection.terminal.service.impl; package com.chushang.inspection.terminal.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.common.dict.utils.DictUtils;
import com.chushang.common.mybatis.enums.Operator;
import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.common.mybatis.utils.PageResult; import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.common.mybatis.utils.WrapperUtils; import com.chushang.common.mybatis.utils.WrapperUtils;
import com.chushang.datascope.annotation.DataScope; import com.chushang.datascope.annotation.DataScope;
import com.chushang.inspection.project.vo.TerminalApp;
import com.chushang.inspection.project.vo.TerminalAppVO;
import com.chushang.inspection.terminal.po.Store; import com.chushang.inspection.terminal.po.Store;
import com.chushang.inspection.terminal.po.Terminal; import com.chushang.inspection.terminal.po.Terminal;
import com.chushang.inspection.terminal.query.TerminalAppQuery; import com.chushang.inspection.terminal.query.TerminalAppQuery;
import com.chushang.inspection.terminal.query.TerminalQuery; import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.terminal.service.StoreService;
import com.chushang.inspection.terminal.service.TerminalService; import com.chushang.inspection.terminal.service.TerminalService;
import com.chushang.inspection.terminal.vo.TerminalVO; import com.chushang.inspection.terminal.vo.TerminalVO;
import com.chushang.inspection.utils.TaskConfigUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.inspection.terminal.mapper.TerminalMapper; import com.chushang.inspection.terminal.mapper.TerminalMapper;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
/** /**
@ -24,18 +33,44 @@ import java.util.List;
*/ */
@Service @Service
public class TerminalServiceImpl extends ServiceImpl<TerminalMapper, Terminal> implements TerminalService { public class TerminalServiceImpl extends ServiceImpl<TerminalMapper, Terminal> implements TerminalService {
@Resource
private StoreService storeService;
@Override @Override
@DataScope(deptAlias = "t")
public PageResult pageList(TerminalQuery query) { public PageResult pageList(TerminalQuery query) {
CommonParam commonParam = CommonParam.buildPageRequest(); CommonParam commonParam = CommonParam.buildPageRequest();
Page<Store> page = new Page<>(commonParam.getPage(), commonParam.getLimit()); Page<TerminalVO> page = new Page<>(commonParam.getPage(), commonParam.getLimit());
List<TerminalVO> terminalVOS = baseMapper.pageList(query, page); List<TerminalVO> terminalVOS = baseMapper.pageList(query, page);
return new PageResult(terminalVOS, page); return new PageResult(terminalVOS, page);
} }
@Override @Override
public PageResult queryPageApp(TerminalAppQuery query) { public PageResult queryPageApp(TerminalAppQuery query) {
CommonParam commonParam = CommonParam.buildPageRequest();
Page<TerminalAppVO> page = new Page<>(commonParam.getPage(), commonParam.getLimit());
List<TerminalAppVO> terminalVOS = baseMapper.selectPageApp(query, page);
return new PageResult(terminalVOS, page);
}
/**
* TODO 终端app
* @param terminalId
* @param taskId
* @return
*/
@Override
public TerminalApp getAppById(Long terminalId, Long taskId) {
String label = TaskConfigUtils.reviewMethod(taskId) == 3 ? "复审通过" : "初审通过";
String wrkStatus = DictUtils.getDictValue("wrk_status", label);
Integer state = Convert.toInt(wrkStatus);
LambdaQueryWrapper<Terminal> terminalSql = new LambdaQueryWrapper<Terminal>()
.eq(Terminal::getTerminalId, terminalId)
.eq(Terminal::getTaskId, taskId).last(Operator.LIMIT_ONE.getCharacter());
Terminal terminal = getOne(terminalSql);
if (ObjectUtil.isNotEmpty(terminal)){
Store store = storeService.getById(terminal.getStoreId());
}
return null; return null;
} }
} }

View File

@ -0,0 +1,76 @@
package com.chushang.inspection.utils;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.extra.spring.SpringUtil;
import com.chushang.inspection.project.po.PollingTask;
import com.chushang.inspection.project.service.PollingTaskService;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TaskConfigUtils {
private static final PollingTaskService TASK_SERVICE = SpringUtil.getBean(PollingTaskService.class);
/**
* 获取巡检任务
*
* @param taskId 任务id
* @return 任务信息
*/
public static PollingTask getConfig(Long taskId) {
PollingTask config = TASK_SERVICE.getTopTask(taskId);
Assert.isTrue(config.getEnabled(), "此任务未开通");
if (config.getEndTime() != null && config.getStartTime() != null) {
Assert.isTrue(LocalDateTimeUtil.isIn(LocalDateTime.now(), config.getStartTime(), config.getEndTime()),
"此任务不在执行日期内");
}
return config;
}
/**
* 是否复审
*
* @param taskId 任务id
*/
public static Integer reviewMethod(Long taskId) {
Integer isRecheck = getConfig(taskId).getReviewMethod();
Assert.notNull(isRecheck, "未指定审核方式");
return isRecheck;
}
/**
* 是否重复派单
*
* @param taskId 任务id
*/
public static boolean isRepeat(Long taskId) {
Integer isRepeat = getConfig(taskId).getIsRepeat();
return isRepeat != null && isRepeat == 1;
}
/**
* 是否有巡检单
*
* @param taskId 任务id
*/
public static boolean isisInspection(Long taskId) {
Integer isRepeat = getConfig(taskId).getIsInspection();
return isRepeat != null && isRepeat == 1;
}
/**
* 巡检方式
*
* @param taskId 任务id
*/
public static Integer dispatchMethod(Long taskId) {
Integer method = getConfig(taskId).getDispatchMethod();
return method == null ? 0 : method;
}
}

View File

@ -100,12 +100,48 @@
<!-- </appender>--> <!-- </appender>-->
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="info"> <!-- <root level="info">-->
<appender-ref ref="console"/> <!-- <appender-ref ref="console"/>-->
<appender-ref ref="info"/> <!-- <appender-ref ref="info"/>-->
<appender-ref ref="debug"/> <!-- <appender-ref ref="debug"/>-->
<appender-ref ref="error"/> <!-- <appender-ref ref="error"/>-->
<!-- 输出plumelog --> <!-- &lt;!&ndash; 输出plumelog &ndash;&gt;-->
<!-- <appender-ref ref="redisPlumelog"/>--> <!-- &lt;!&ndash; <appender-ref ref="redisPlumelog"/>&ndash;&gt;-->
<!-- </root>-->
<!--开发环境:打印控制台-->
<springProfile name="dev">
<!--可以输出项目中的debug日志包括mybatis的sql日志-->
<logger name="com.chushang" level="DEBUG"/>
<logger name="org.redisson.connection.SentinelConnectionManager" level="OFF" />
<logger name="org.redisson.connection.MasterSlaveEntry" level="OFF" />
<logger name="org.redisson.connection.pool.PubSubConnectionPool" level="OFF" />
<logger name="org.redisson.connection.pool.SlaveConnectionPool" level="OFF" />
<logger name="org.redisson.connection.balancer.LoadBalancerManager" level="OFF" />
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root> </root>
</springProfile>
<!--测试环境:打印控制台-->
<springProfile name="test">
<!--可以输出项目中的debug日志包括mybatis的sql日志-->
<logger name="com.chushang" level="INFO"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</springProfile>
<!--测试环境:打印控制台-->
<springProfile name="prod">
<!--可以输出项目中的debug日志包括mybatis的sql日志-->
<logger name="com.chushang" level="INFO"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="plumelog"/>
</root>
</springProfile>
</configuration> </configuration>

View File

@ -166,4 +166,66 @@
</where> </where>
ORDER BY #{query.orderBy} #{query.isAsc} ORDER BY #{query.orderBy} #{query.isAsc}
</select> </select>
<select id="selectPageApp" resultType="com.chushang.inspection.project.vo.TerminalAppVO">
SELECT
t.terminal_id,
t.terminal_no,
t.terminal_address,
t.inspection_status,
t.inspection_time,
t.times_pass,
t.service_result,
s.store_contact,
s.store_address,
s.ins_fre,
s.store_name,
pt.`name` AS taskName
FROM
st_terminal t
LEFT JOIN ta_polling_task pt on pt.id = t.lower_task_id
INNER JOIN st_store s ON s.store_id = t.store_id
<where>
<if test="query.taskId != null">
AND t.task_id = #{query.taskId}
</if>
<if test="query.storeNo != null">
AND t.store_no = #{query.storeNo}
</if>
<if test="query.terminalNo != null">
AND t.terminal_no = #{query.terminalNo}
</if>
<if test="query.terminalSn != null">
AND t.terminal_no = #{query.terminalSn}
</if>
<if test="query.terminalAddress != null and query.terminalAddress != ''">
AND t.terminal_address like concat('%',#{query.terminalAddress},'%')
</if>
<if test="query.occupy != null ">
AND t.occupy = #{query.occupy}
</if>
<if test="query.storeState != null">
AND t.state = #{query.storeState}
</if>
<if test="query.shopName != null and query.shopName != ''">
AND s.shop_name like concat('%',#{query.shopName},'%')
</if>
<if test="query.lowerTaskName != null and query.lowerTaskName != ''">
AND pt.name like concat('%',#{query.lowerTaskName},'%')
</if>
<if test="query.storeName != null and query.storeName != ''">
AND s.store_name like concat('%',#{query.storeName},'%')
</if>
<if test="query.storeContact != null and query.storeContact != ''">
AND s.store_contact like concat('%',#{query.storeContact},'%')
</if>
<if test="query.storeAddress != null and query.storeAddress != ''">
AND s.store_address like concat('%',#{query.storeAddress},'%')
</if>
<if test="1 == 1">
${query.sqlParam.get('dataScope')}
</if>
</where>
ORDER BY t.create_time DESC
</select>
</mapper> </mapper>

View File

@ -81,9 +81,12 @@
</appender> </appender>
<!--nacos 心跳 INFO 屏蔽--> <!--nacos 心跳 INFO 屏蔽-->
<logger name="com.alibaba.cloud.nacos" level="info"> <logger name="com.alibaba.cloud.nacos" level="info" />
</logger> <logger name="org.redisson.connection.SentinelConnectionManager" level="OFF" />
<logger name="org.redisson.connection.MasterSlaveEntry" level="OFF" />
<logger name="org.redisson.connection.pool.PubSubConnectionPool" level="OFF" />
<logger name="org.redisson.connection.pool.SlaveConnectionPool" level="OFF" />
<logger name="org.redisson.connection.balancer.LoadBalancerManager" level="OFF" />
<!-- 使用kafka启用下面配置 --> <!-- 使用kafka启用下面配置 -->
<!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">--> <!-- <appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender">-->
<!-- <appName>${spring.application.name}</appName>--> <!-- <appName>${spring.application.name}</appName>-->
@ -108,4 +111,14 @@
<!-- 输出plumelog --> <!-- 输出plumelog -->
<!-- <appender-ref ref="redisPlumelog"/>--> <!-- <appender-ref ref="redisPlumelog"/>-->
</root> </root>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<!--可以输出项目中的debug日志包括mybatis的sql日志-->
<logger name="com.chushang" level="DEBUG"/>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
</configuration> </configuration>