1. 派单记录

This commit is contained in:
zhaowenyuan 2024-07-04 10:36:00 +08:00
parent 129c2f4b01
commit 321132766b
15 changed files with 300 additions and 39 deletions

View File

@ -117,4 +117,10 @@ public class TerminalQuery extends CommonParam {
*/ */
@Condition(name = "`project_id`", type = Condition.ConditionType.eq, tableName = "p") @Condition(name = "`project_id`", type = Condition.ConditionType.eq, tableName = "p")
private Long projectId; private Long projectId;
/**
* 用户id
*/
@Condition(name = "`user_id`", type = Condition.ConditionType.eq, tableName = "i")
private Long userId;
} }

View File

@ -2,6 +2,7 @@ package com.chushang.inspection.terminal.vo;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import com.alibaba.excel.annotation.format.DateTimeFormat; import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.chushang.common.dict.annotation.DictFormat; import com.chushang.common.dict.annotation.DictFormat;
import lombok.Data; import lombok.Data;
@ -200,5 +201,35 @@ public class StoreTerminalVO {
private String deptName; private String deptName;
/**
* 上次服务结果
*/
@DictFormat(dictType = "service_results")
private Integer serviceResult;
/**
* 审核通过次数
*/
private Integer timesPass;
/**
* 地理位置信息地址
*/
private String geographicAddress;
/**
* 巡检位置信息
*/
private String workLocation;
/**
* 地理位置信息
*/
private String geographicLocation;
/**
* 地理位置信息地址
*/
private String workAddress;
} }

View File

@ -0,0 +1,34 @@
package com.chushang.inspection.work.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.*;
/**
* @auther: zhao
* @date: 2024/7/4 10:13
*/
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "wrk_info_dispatch")
@Builder
public class WrkInfoDispatch extends BaseEntity {
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
@TableField("wrk_id")
private Long wrkId;
@TableField("user_id")
private Long userId;
@TableField("dept_id")
private Long deptId;
/**
* 派单状态
*/
@TableField("dis_status")
private Integer disStatus;
}

View File

@ -29,10 +29,11 @@ public class TerminalController {
TerminalService terminalService; TerminalService terminalService;
/** /**
* // 之前在这里是派单
* 商户终端池 * 商户终端池
* @param query 条件 * @param query 条件
*/ */
@SysLog(value = "终端", businessType = BusinessType.QUERY) @SysLog(value = "终端", businessType = BusinessType.QUERY)
@GetMapping("/page") @GetMapping("/page")
@RequiresPermissions("ins:terminal:page") @RequiresPermissions("ins:terminal:page")
public AjaxResult pageList(@Validated TerminalQuery query) { public AjaxResult pageList(@Validated TerminalQuery query) {

View File

@ -1,12 +1,42 @@
package com.chushang.inspection.work.controller; package com.chushang.inspection.work.controller;
import com.chushang.common.core.web.AjaxResult;
import com.chushang.common.log.annotation.SysLog;
import com.chushang.common.log.enums.BusinessType;
import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.work.service.WrkInfoTerminalRecordService;
import com.chushang.security.annotation.RequiresPermissions;
import com.chushang.security.utils.SecurityUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/** /**
* 工单终端信息(wrk_info_terminal_record)表控制层 * 工单终端信息(wrk_info_terminal_record)表控制层
* *
* @author xxxxx * @author xxxxx
*/ */
@RestController @RestController
@RequestMapping("/wrk_info_terminal_record") @RequestMapping("/wrk/info/terminal")
public class WrkInfoTerminalRecordController { public class WrkInfoTerminalRecordController {
/**
* 我的终端池
*/
@Resource
private WrkInfoTerminalRecordService terminalRecordService;
/**
* 商户终端池
* @param query 条件
*/
@SysLog(value = "我的终端池", businessType = BusinessType.QUERY)
@GetMapping("/mine/page")
@RequiresPermissions("ins:terminal:mine")
public AjaxResult minePageList(@Validated TerminalQuery query) {
// 获取当前用户的
query.setUserId(SecurityUtils.getUserId());
return AjaxResult.success(terminalRecordService.minePageList(query));
}
} }

View File

@ -0,0 +1,11 @@
package com.chushang.inspection.work.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chushang.inspection.work.po.WrkInfoDispatch;
/**
* @auther: zhao
* @date: 2024/7/4 10:16
*/
public interface WrkInfoDispatchMapper extends BaseMapper<WrkInfoDispatch> {
}

View File

@ -1,11 +1,21 @@
package com.chushang.inspection.work.mapper; package com.chushang.inspection.work.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.chushang.datascope.annotation.DataScope;
import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.terminal.vo.StoreTerminalVO;
import com.chushang.inspection.work.po.WrkInfoTerminalRecord; import com.chushang.inspection.work.po.WrkInfoTerminalRecord;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @auther: zhao * @auther: zhao
* @date: 2024/6/26 17:13 * @date: 2024/6/26 17:13
*/ */
public interface WrkInfoTerminalRecordMapper extends BaseMapper<WrkInfoTerminalRecord> { public interface WrkInfoTerminalRecordMapper extends BaseMapper<WrkInfoTerminalRecord> {
@DataScope(deptAlias = "i")
List<StoreTerminalVO> minePageList(@Param("query") TerminalQuery query,
Page<StoreTerminalVO> page);
} }

View File

@ -1,26 +1,26 @@
package com.chushang.inspection.work.service; //package com.chushang.inspection.work.service;
//
import cn.hutool.core.bean.BeanUtil; //import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil; //import cn.hutool.core.util.IdUtil;
import com.chushang.inspection.work.dto.DispatchDTO; //import com.chushang.inspection.work.dto.DispatchDTO;
import com.chushang.inspection.work.po.WrkInfo; //import com.chushang.inspection.work.po.WrkInfo;
import com.chushang.inspection.work.query.DispatchQuery; //import com.chushang.inspection.work.query.DispatchQuery;
//
import java.util.List; //import java.util.List;
//
public interface WrkInfoDispatch { //public interface WrkInfoDispatch {
//
List<WrkInfo> dispatch(DispatchQuery query, List<DispatchDTO> dispatch); // List<WrkInfo> dispatch(DispatchQuery query, List<DispatchDTO> dispatch);
//
default WrkInfo construct(DispatchQuery query, DispatchDTO record, String nickName, Long userId) { // default WrkInfo construct(DispatchQuery query, DispatchDTO record, String nickName, Long userId) {
WrkInfo info = WrkInfo.builder().endTime(query.getEndTime() == null ? null : query.getEndTime()) // WrkInfo info = WrkInfo.builder().endTime(query.getEndTime() == null ? null : query.getEndTime())
.wrkStatus(1).workType(query.getWorkType()) // .wrkStatus(1).workType(query.getWorkType())
.workNo(IdUtil.getSnowflake().nextId()) // .workNo(IdUtil.getSnowflake().nextId())
.remark(query.getRemark()).workSort(query.getWorkSort()) // .remark(query.getRemark()).workSort(query.getWorkSort())
.userId(userId).workSource(query.getWorkSource()) // .userId(userId).workSource(query.getWorkSource())
// 业务员名称 不随着用户表名称变化而变化 // // 业务员名称 不随着用户表名称变化而变化
.userName(nickName).build(); // .userName(nickName).build();
BeanUtil.copyProperties(record, info); // BeanUtil.copyProperties(record, info);
return info; // return info;
} // }
} //}

View File

@ -0,0 +1,11 @@
package com.chushang.inspection.work.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chushang.inspection.work.po.WrkInfoDispatch;
/**
* @auther: zhao
* @date: 2024/7/4 10:31
*/
public interface WrkInfoDispatchService extends IService<WrkInfoDispatch> {
}

View File

@ -1,12 +1,15 @@
package com.chushang.inspection.work.service; package com.chushang.inspection.work.service;
import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.work.po.WrkInfoTerminalRecord; import com.chushang.inspection.work.po.WrkInfoTerminalRecord;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/**
* @auther: zhao
* @date: 2024/6/26 17:13
*/
public interface WrkInfoTerminalRecordService extends IService<WrkInfoTerminalRecord>{
/**
* @auther: zhao
* @date: 2024/6/26 17:13
*/
public interface WrkInfoTerminalRecordService extends IService<WrkInfoTerminalRecord> {
PageResult minePageList(TerminalQuery query);
} }

View File

@ -0,0 +1,17 @@
package com.chushang.inspection.work.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.inspection.work.mapper.WrkInfoDispatchMapper;
import com.chushang.inspection.work.po.WrkInfoDispatch;
import com.chushang.inspection.work.service.WrkInfoDispatchService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @auther: zhao
* @date: 2024/7/4 10:34
*/
@Slf4j
@Service
public class WrkInfoDispatchServiceImpl extends ServiceImpl<WrkInfoDispatchMapper, WrkInfoDispatch> implements WrkInfoDispatchService {
}

View File

@ -308,13 +308,14 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
tempStorageTerminalInsRecord.setInspectionStatus(1); tempStorageTerminalInsRecord.setInspectionStatus(1);
tempStorageTerminalInsRecord.setInspectionTime(now); tempStorageTerminalInsRecord.setInspectionTime(now);
// 这块 可能为新增商户以及终端信息
// 更新商户 信息, 同时 也需要更新 // 更新商户 信息, 同时 也需要更新
// 更新商户状态 // 更新商户状态
storeService.updateById(store); storeService.saveOrUpdate(store);
// 更新终端状态 // 更新终端状态
terminalService.updateById(terminal); terminalService.saveOrUpdate(terminal);
// 更新终端巡检时间以及审核通过次数等 // 更新终端巡检时间以及审核通过次数等
terminalInsService.updateById(terminalIns); terminalInsService.saveOrUpdate(terminalIns);
// 还需要 更改 记录表对应的数据. // 还需要 更改 记录表对应的数据.
} }
// 需要初审 // 需要初审
@ -497,7 +498,8 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
wrkInfoStoreRecordService.save(wrkInfoStoreRecord); wrkInfoStoreRecordService.save(wrkInfoStoreRecord);
} }
} }
}else if(method.equals(1) || method.equals(2)){ }
else if(method.equals(1) || method.equals(2)){
Assert.notNull(query.getUserId(), "需要指定业务员"); Assert.notNull(query.getUserId(), "需要指定业务员");
Result<SysUser> result = userFeignService.getInfoById(query.getUserId(), SecurityConstants.INNER); Result<SysUser> result = userFeignService.getInfoById(query.getUserId(), SecurityConstants.INNER);
if(result.isSuccess()){ if(result.isSuccess()){
@ -522,5 +524,6 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
} }
} }
} }
//
} }
} }

View File

@ -1,16 +1,54 @@
package com.chushang.inspection.work.service.impl; package com.chushang.inspection.work.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chushang.common.core.constant.SecurityConstants;
import com.chushang.common.mybatis.page.CommonParam;
import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.common.mybatis.utils.WrapperUtils;
import com.chushang.inspection.terminal.query.TerminalQuery;
import com.chushang.inspection.terminal.vo.StoreTerminalVO;
import com.chushang.inspection.work.service.WrkInfoTerminalRecordService; import com.chushang.inspection.work.service.WrkInfoTerminalRecordService;
import com.chushang.system.feign.RemoteDeptService;
import lombok.extern.slf4j.Slf4j;
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.work.mapper.WrkInfoTerminalRecordMapper; import com.chushang.inspection.work.mapper.WrkInfoTerminalRecordMapper;
import com.chushang.inspection.work.po.WrkInfoTerminalRecord; import com.chushang.inspection.work.po.WrkInfoTerminalRecord;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @auther: zhao * @auther: zhao
* @date: 2024/6/26 17:13 * @date: 2024/6/26 17:13
*/ */
@Slf4j
@Service @Service
public class WrkInfoTerminalRecordServiceImpl extends ServiceImpl<WrkInfoTerminalRecordMapper, WrkInfoTerminalRecord> implements WrkInfoTerminalRecordService { public class WrkInfoTerminalRecordServiceImpl extends ServiceImpl<WrkInfoTerminalRecordMapper, WrkInfoTerminalRecord> implements WrkInfoTerminalRecordService {
@Resource
private RemoteDeptService remoteDeptService;
/**
* 我的终端池
*/
@Override
public PageResult minePageList(TerminalQuery query) {
WrapperUtils.buildSql(query);
CommonParam commonParam = CommonParam.buildPageRequest();
Page<StoreTerminalVO> page = new Page<>(commonParam.getPage(), commonParam.getLimit());
List<StoreTerminalVO> terminalVOS = baseMapper.minePageList(query, page);
if (CollectionUtil.isNotEmpty(terminalVOS)){
Set<Long> deptIds =
terminalVOS.stream().map(StoreTerminalVO::getDeptId).collect(Collectors.toSet());
Map<Long, String> deptNameByIds
= remoteDeptService.getDeptNameByIds(deptIds, SecurityConstants.INNER);
if (CollectionUtil.isNotEmpty(deptNameByIds)){
terminalVOS.forEach(s-> s.setDeptName(deptNameByIds.get(s.getDeptId())));
}
}
return new PageResult(terminalVOS, page);
}
} }

View File

@ -110,7 +110,7 @@
ti.geographic_address AS geographicAddress, ti.geographic_address AS geographicAddress,
ti.geographic_location AS geographicLocation, ti.geographic_location AS geographicLocation,
ti.work_location AS workLocation, ti.work_location AS workLocation,
ti.work_adderss AS workAdderss ti.work_adderss AS workAddress
FROM st_terminal t FROM st_terminal t
INNER JOIN st_store s ON t.store_id = s.store_id INNER JOIN st_store s ON t.store_id = s.store_id
INNER JOIN st_terminal_ins ti ON t.terminal_id = ti.terminal_id INNER JOIN st_terminal_ins ti ON t.terminal_id = ti.terminal_id

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.chushang.inspection.work.mapper.WrkInfoTerminalRecordMapper">
<select id="minePageList" resultType="com.chushang.inspection.terminal.vo.StoreTerminalVO">
SELECT
pt.project_id AS projectId,
p.project_name AS projectName,
pt.id AS task_id,
pt.`name` AS taskName,
s.lower_task_id AS lowerTaskId,
s.dept_id AS deptId,
s.store_id AS storeId,
s.store_no AS storeNo,
s.store_name AS storeName,
s.store_contact AS storeContact,
s.store_phone AS storePhone,
s.shop_name AS shopName,
s.special_num AS specialNum,
s.store_address AS storeAddress,
s.store_type AS storeType,
s.products AS products,
s.tip_tool AS tipTool,
s.register_time AS registerTime,
s.register_address AS registerAddress,
s.legal_name AS legalName,
s.create_by AS createBy,
s.create_time AS createTime,
s.state AS storeState,
s.ins_fre AS insFre,
s.account_phone AS accountPhone,
s.account_manager AS accountManager,
t.terminal_id AS terminalId,
t.terminal_no AS terminalNo,
t.terminal_sn AS terminalSn,
t.terminal_type AS terminalType,
t.terminal_model AS terminalModel,
t.terminal_version AS terminalVersion,
t.terminal_address AS terminalAddress,
t.terminal_source AS terminalSource,
t.occupy AS occupy,
t.terminal_status AS terminalStatus,
ti.deviation AS deviation,
ti.operator_id AS operatorId,
ti.inspection_status AS inspectionStatus,
ti.inspection_time AS inspectionTime,
ti.times_pass AS timesPass,
ti.service_result AS serviceResult,
ti.geographic_address AS geographicAddress,
ti.geographic_location AS geographicLocation,
ti.work_location AS workLocation,
ti.work_adderss AS workAddress
FROM wrk_info i
INNER JOIN wrk_info_store_record s ON i.wrk_id = s.wrk_id
INNER JOIN wrk_info_terminal_record t ON i.wrk_id = t.wrk_id
INNER JOIN wrk_info_terminal_ins_record ti ON i.wrk_id = ti.wrk_id
INNER JOIN ta_polling_task pt ON i.task_id = pt.id
INNER JOIN wrk_project p ON pt.project_id = p.project_id
<where>
<if test="1 == 1">
${query.sqlParam.get('sqlWhere')}
</if>
</where>
ORDER BY #{query.orderBy} #{query.isAsc}
</select>
</mapper>