【admin】新增&优化# 1、新增小程序巡检单详情 2、小程序新增常见问题管理 3、数据大屏新增获取每个省份设备最多的前五名 4、优化小程序巡检单列表 5、优化设备新增 6、新增巡检单工单池 7、新增数据大屏人员统计

dev
renfan 2024-08-22 22:47:47 +08:00
parent fafdef8b99
commit 8d37c44448
37 changed files with 955 additions and 99 deletions

View File

@ -64,8 +64,8 @@ public class EquipmentController {
@Log(title = "设备管理新增") @Log(title = "设备管理新增")
@PostMapping("/add") @PostMapping("/add")
public Object add(@Validated(value = EquipmentParam.create.class) @RequestBody EquipmentParam equipmentParam) { public Object add(@Validated(value = EquipmentParam.create.class) @RequestBody EquipmentParam equipmentParam) {
if (!iEquipmentService.checkEquipmentNumberUnique(equipmentParam)) { if (iEquipmentService.checkEquipmentNumberUnique(equipmentParam)) {
return AjaxResult.success("新增设备失败,设备编号已存在"); return AjaxResult.success(300,"","新增设备失败,设备编号已存在");
} }
iEquipmentService.add(equipmentParam); iEquipmentService.add(equipmentParam);
return AjaxResult.success(); return AjaxResult.success();
@ -81,7 +81,7 @@ public class EquipmentController {
@Log(title = "设备管理编辑") @Log(title = "设备管理编辑")
@PostMapping("/edit") @PostMapping("/edit")
public Object edit(@Validated(value = EquipmentParam.update.class) @RequestBody EquipmentParam equipmentParam) { public Object edit(@Validated(value = EquipmentParam.update.class) @RequestBody EquipmentParam equipmentParam) {
if (!iEquipmentService.checkEquipmentNumberUnique(equipmentParam)) { if (iEquipmentService.checkEquipmentNumberUnique(equipmentParam)) {
return AjaxResult.success("修改设备失败,设备编号已存在"); return AjaxResult.success("修改设备失败,设备编号已存在");
} }
iEquipmentService.edit(equipmentParam); iEquipmentService.edit(equipmentParam);

View File

@ -3,6 +3,8 @@ package com.hcy.admin.controller.largeDataScreen;
import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService; import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService;
import com.hcy.admin.vo.client.EquipmentLargeDataVo; import com.hcy.admin.vo.client.EquipmentLargeDataVo;
import com.hcy.common.core.AjaxResult; import com.hcy.common.core.AjaxResult;
import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -39,7 +41,33 @@ public class LargeDataScreenController {
*/ */
@GetMapping("/clientEquipment") @GetMapping("/clientEquipment")
public Object clientEquipment() { public Object clientEquipment() {
List<EquipmentLargeDataVo> list = iLargeDataScreenService.clientEquipmentList(); List<ClientLargeDataDto> list = iLargeDataScreenService.clientEquipmentList();
return AjaxResult.success(list); return AjaxResult.success(list);
} }
/**
*
*
* @author hcy
* @return Object
*/
@GetMapping("/provinceEquipment")
public Object provinceEquipment() {
List<ClientLargeDataDto> list = iLargeDataScreenService.provinceEquipment();
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @return Object
*/
@GetMapping("/personnelStatistics")
public Object personnelStatistics() {
AdminLargeDataDto adminLargeDataDto = iLargeDataScreenService.personnelStatistics();
return AjaxResult.success(adminLargeDataDto);
}
} }

View File

@ -324,16 +324,15 @@ public class EquipmentServiceImpl implements IEquipmentService {
*/ */
@Override @Override
public Boolean checkEquipmentNumberUnique(EquipmentParam bo) { public Boolean checkEquipmentNumberUnique(EquipmentParam bo) {
List<Equipment> equipment = equipmentMapper.selectList(new LambdaQueryWrapper<Equipment>() Equipment model = equipmentMapper.selectOne(
.eq(Equipment::getNumber, bo.getNumber()) new QueryWrapper<Equipment>()
.ne(ObjectUtil.isNotNull(bo.getId()), Equipment::getId, bo.getId())); .eq("number", bo.getNumber())
boolean exist = true; .eq("is_delete", 0)
if(equipment != null){ .last("limit 1"));
exist = true;
}else{
exist = false;
}
return !exist;
}
if (model != null){
return true;
}
return false;
}
} }

View File

@ -1,8 +1,8 @@
package com.hcy.admin.service.largeDataScreen; package com.hcy.admin.service.largeDataScreen;
import com.hcy.admin.vo.client.EquipmentLargeDataVo; import com.hcy.admin.vo.client.EquipmentLargeDataVo;
import com.hcy.admin.vo.sparePart.SparePartListVo; import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.core.PageResult; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import java.util.List; import java.util.List;
@ -21,5 +21,18 @@ public interface ILargeDataScreenService {
* 5 * 5
* @return * @return
*/ */
List<EquipmentLargeDataVo> clientEquipmentList(); List<ClientLargeDataDto> clientEquipmentList();
/**
*
* @return
*/
List<ClientLargeDataDto> provinceEquipment();
/**
*
*
* @return
*/
AdminLargeDataDto personnelStatistics();
} }

View File

@ -3,16 +3,18 @@ package com.hcy.admin.service.largeDataScreen.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService; import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService;
import com.hcy.admin.vo.client.EquipmentLargeDataVo; import com.hcy.admin.vo.client.EquipmentLargeDataVo;
import com.hcy.admin.vo.sparePart.SparePartListVo; import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.core.PageResult; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.dto.ClientLargeDataDto;
import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.client.Equipment;
import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.equipment.EquipmentStateEnum;
import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper; import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -27,6 +29,9 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
@Resource @Resource
ClientMapper clientMapper; ClientMapper clientMapper;
@Resource
SystemAuthAdminMapper systemAuthAdminMapper;
/** /**
* *
* *
@ -66,11 +71,40 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
* @return * @return
*/ */
@Override @Override
public List<EquipmentLargeDataVo> clientEquipmentList() { public List<ClientLargeDataDto> clientEquipmentList() {
List<ClientLargeDataDto> clientLargeDataDtos = clientMapper.clientEquipmentList(); return clientMapper.clientEquipmentList();
for (ClientLargeDataDto clientLargeDataDto : clientLargeDataDtos) {
}
return null;
} }
/**
*
*
* @return
*/
@Override
public List<ClientLargeDataDto> provinceEquipment() {
List<ClientLargeDataDto> clientLargeDataDtos = equipmentMapper.provinceEquipment();
int number = 0;
List<ClientLargeDataDto> list = new ArrayList<>();
for (ClientLargeDataDto clientLargeDataDto : clientLargeDataDtos) {
ClientLargeDataDto vo = new ClientLargeDataDto();
BeanUtils.copyProperties(clientLargeDataDto, vo);
number = number + 1;
vo.setNumber(number);
list.add(vo);
}
return list;
}
/**
*
*
*
* @return
*/
@Override
public AdminLargeDataDto personnelStatistics() {
return systemAuthAdminMapper.personnelStatistics();
}
} }

View File

@ -32,9 +32,9 @@ public class EquipmentLargeDataVo implements Serializable {
private String deviceCode; // 设备码 private String deviceCode; // 设备码
private String createTime; // 创建时间 private String createTime; // 创建时间
private String clientName; // 客户名称 private String clientName; // 客户名称
private Integer normalCount; //正常数量 private Integer normalCount; //正常数量
private Integer underOverhaulCount; //检修中数量 private Integer underOverhaulCount; //检修中数量
private Integer underWarrantyCount; //报修中数量 private Integer underWarrantyCount; //报修中数量
} }

View File

@ -1,25 +0,0 @@
package com.hcy.common.dto;
import lombok.Data;
import java.io.Serializable;
/**
* ClientVo
*/
@Data
public class ClientLargeDataDto implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Integer number; //序号
private String clientName; // 客户名称
private Integer equipmentCount; // 设备总数
private Integer normalCount; //正常数量
private Integer underOverhaulCount; //检修中数量
private Integer underWarrantyCount; //报修中数量
}

View File

@ -3,6 +3,7 @@ package com.hcy.common.dto;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Data @Data
@ -26,9 +27,15 @@ public class RoutingInspectionOrderDto implements Serializable {
private String createTime; // 创建时间 private String createTime; // 创建时间
private Long faultId; // 故障id private Long faultId; // 故障id
private String familiarFaultName; //故障类型 private String familiarFaultName; //故障类型
private String faultDescription; // 故障描述
private Long orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检 private Long orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检
private Long receiverId; // 接单人id private Long receiverId; // 接单人id
private String receiverName; // 接单人名称 private String receiverName; // 接单人名称
private Date receiverTime; // 接单时间 private Date receiverTime; // 接单时间
private String likeWork; // 模糊查询(工单编号/客户名称/设备编号) private String likeWork; // 模糊查询(工单编号/客户名称/设备编号)
private String inspectionPhoto; //巡检照片
private double longitude; //经度
private double latitude; //纬度
private BigDecimal orderDistance; // 订单距离
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
} }

View File

@ -0,0 +1,17 @@
package com.hcy.common.dto.largeDataDto;
import lombok.Data;
import java.io.Serializable;
@Data
public class AdminLargeDataDto implements Serializable {
private static final long serialVersionUID = 1L;
private Integer maintenanceCount; //检修员总数
private Integer vacationCount; //休假/停止接单中总数
private Integer workingCount; //作业中总数
private Integer availableCount; //可接单总数
}

View File

@ -0,0 +1,26 @@
package com.hcy.common.dto.largeDataDto;
import lombok.Data;
import java.io.Serializable;
/**
* ClientVo
*/
@Data
public class ClientLargeDataDto implements Serializable {
private static final long serialVersionUID = 1L;
private int number; // 序号
private String clientNo; // 客户编号
private String clientName; // 客户名称
private String province; //省
private Integer equipmentCount; // 设备总数
private Integer normalCount; // 正常数量
private Integer underOverhaulCount; // 检修中数量
private Integer underWarrantyCount; // 报修中数量
}

View File

@ -53,4 +53,6 @@ public class RoutingInspectionOrder implements Serializable {
private Long maintenanceId; //检修单id private Long maintenanceId; //检修单id
private Integer inspectionResult; //巡检结果0=正常 1=异常) private Integer inspectionResult; //巡检结果0=正常 1=异常)
private String inspectionPhoto; //巡检照片 private String inspectionPhoto; //巡检照片
private String inspectionResultRemark; //巡检结果备注
} }

View File

@ -1,12 +1,9 @@
package com.hcy.common.mapper.client; package com.hcy.common.mapper.client;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.ClientLargeDataDto; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.dto.RoutingInspectionOrderDto;
import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Client;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;

View File

@ -1,13 +1,23 @@
package com.hcy.common.mapper.client; package com.hcy.common.mapper.client;
import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.client.Equipment;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* Mapper * Mapper
*/ */
@Mapper @Mapper
public interface EquipmentMapper extends IBaseMapper<Equipment> { public interface EquipmentMapper extends IBaseMapper<Equipment> {
/**
*
* @return
*/
List<ClientLargeDataDto> provinceEquipment();
} }

View File

@ -8,6 +8,8 @@ import com.hcy.common.entity.order.RoutingInspectionOrder;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* Mapper * Mapper
*/ */
@ -29,4 +31,6 @@ public interface RoutingInspectionOrderMapper extends IBaseMapper<RoutingInspect
* @return * @return
*/ */
Page<RoutingInspectionOrderDto> frontPageList(@Param("page") Page page, @Param("form") RoutingInspectionOrderDto form); Page<RoutingInspectionOrderDto> frontPageList(@Param("page") Page page, @Param("form") RoutingInspectionOrderDto form);
List<RoutingInspectionOrderDto> list(@Param("form") RoutingInspectionOrderDto form);
} }

View File

@ -3,6 +3,7 @@ package com.hcy.common.mapper.system;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.SystemAuthAdminDto; import com.hcy.common.dto.SystemAuthAdminDto;
import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.system.SystemAuthAdmin;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -14,4 +15,10 @@ import org.apache.ibatis.annotations.Param;
public interface SystemAuthAdminMapper extends IBaseMapper<SystemAuthAdmin> { public interface SystemAuthAdminMapper extends IBaseMapper<SystemAuthAdmin> {
Page<SystemAuthAdminDto> list(Page page, @Param("param") SystemAuthAdminDto param); Page<SystemAuthAdminDto> list(Page page, @Param("param") SystemAuthAdminDto param);
/**
*
* @return
*/
AdminLargeDataDto personnelStatistics();
} }

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.order.RoutingInspectionOrderMapper"> <mapper namespace="com.hcy.common.mapper.client.ClientMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.client.Client"> <resultMap id="BaseResultMap" type="com.hcy.common.entity.client.Client">
</resultMap> </resultMap>
<select id="clientEquipmentList" resultType="com.hcy.common.dto.ClientLargeDataDto"> <select id="clientEquipmentList" resultType="com.hcy.common.dto.largeDataDto.ClientLargeDataDto">
SELECT SELECT
c.client_name,COUNT(e.client_id) AS equipmentCount, c.client_no,c.client_name,COUNT(e.client_id) AS equipmentCount,
SUM(CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END) AS normalCount, SUM(CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END) AS normalCount,
SUM(CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END) AS underOverhaulCount, SUM(CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END) AS underOverhaulCount,
SUM(CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END) AS underWarrantyCount SUM(CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END) AS underWarrantyCount
@ -19,7 +19,7 @@
GROUP BY GROUP BY
c.id c.id
ORDER BY ORDER BY
total_devices DESC equipmentCount DESC
LIMIT 5; LIMIT 5;
</select> </select>
</mapper> </mapper>

View File

@ -0,0 +1,27 @@
<?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.hcy.common.mapper.client.EquipmentMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.client.Equipment">
</resultMap>
<select id="provinceEquipment" resultType="com.hcy.common.dto.largeDataDto.ClientLargeDataDto">
SELECT
dr.name as province,
COUNT( e.province_id ) AS equipmentCount,
SUM( CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END ) AS normalCount,
SUM( CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END ) AS underOverhaulCount,
SUM( CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END ) AS underWarrantyCount
FROM
la_equipment AS e
JOIN la_dev_region as dr on e.province_id = dr.id
where
e.is_delete = 0
GROUP BY
e.province_id
ORDER BY
equipmentCount DESC
LIMIT 5;
</select>
</mapper>

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.order.MaintenanceOrderMapper"> <mapper namespace="com.hcy.common.mapper.order.MaintenanceOrderMapper">
<select id="pageList" resultType="com.hcy.common.dto.order.MaintenanceOrderDto"> <select id="list" resultType="com.hcy.common.dto.order.MaintenanceOrderDto">
SELECT SELECT
lmo.*, lmo.*,
lf.`name` as faultName, lf.`name` as faultName,

View File

@ -2,8 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.order.RoutingInspectionOrderMapper"> <mapper namespace="com.hcy.common.mapper.order.RoutingInspectionOrderMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.order.RoutingInspectionOrder"> <!--<resultMap id="BaseResultMap" type="com.hcy.common.entity.order.RoutingInspectionOrder">
</resultMap> </resultMap>-->
<select id="pageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto"> <select id="pageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT SELECT
@ -40,17 +40,21 @@
<if test="form.orderStatus != null"> <if test="form.orderStatus != null">
and i.order_status = #{form.orderStatus} and i.order_status = #{form.orderStatus}
</if> </if>
ORDER BY i.id DESC ORDER BY create_time DESC
</select> </select>
<select id="frontPageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto"> <select id="frontPageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT SELECT
i.*, i.*,
c.client_name, c.client_name,
e.number as equipmentNo,e.name as equipmentName,e.detailed_address, e.number as equipmentNo,
e.name as equipmentName,
e.detailed_address,
a.nickname as creatorName, a.nickname as creatorName,
f.`name` as familiarFaultName, f.`name` as familiarFaultName,
u.nickname as receiverName u.nickname as receiverName,
e.longitude,
e.latitude
FROM FROM
la_routing_inspection_order AS i la_routing_inspection_order AS i
LEFT JOIN la_client AS c ON i.client_id = c.id LEFT JOIN la_client AS c ON i.client_id = c.id
@ -60,6 +64,7 @@
LEFT JOIN la_user as u on i.receiver_id = u.id LEFT JOIN la_user as u on i.receiver_id = u.id
WHERE WHERE
i.is_delete = 0 i.is_delete = 0
and i.receiver_id = #{form.receiverId}
<if test="form.likeWork != null and form.likeWork != ''"> <if test="form.likeWork != null and form.likeWork != ''">
and i.order_no like concat('%', #{form.likeWork}, '%') and i.order_no like concat('%', #{form.likeWork}, '%')
</if> </if>
@ -75,6 +80,43 @@
<if test="form.orderStatus == null"> <if test="form.orderStatus == null">
and i.order_status in (1,2,5) and i.order_status in (1,2,5)
</if> </if>
ORDER BY i.id DESC ORDER BY create_time DESC
</select>
<select id="list" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT
i.*,
c.client_name,
e.number as equipmentNo,
e.name as equipmentName,
e.detailed_address,
a.nickname as creatorName,
f.`name` as familiarFaultName,
u.nickname as receiverName,
e.longitude,
e.latitude
FROM
la_routing_inspection_order AS i
LEFT JOIN la_client AS c ON i.client_id = c.id
LEFT JOIN la_equipment AS e ON i.equipment_id = e.id
LEFT JOIN la_system_auth_admin AS a ON i.creator_id = a.id
LEFT JOIN la_fault AS f ON i.fault_id = f.id
LEFT JOIN la_user as u on i.receiver_id = u.id
WHERE
i.is_delete = 0
and i.receiver_id = #{form.receiverId}
<if test="form.likeWork != null and form.likeWork != ''">
and i.order_no like concat('%', #{form.likeWork}, '%')
</if>
<if test="form.likeWork != null and form.likeWork != ''">
OR c.client_name LIKE concat('%', #{form.likeWork}, '%')
</if>
<if test="form.likeWork != null and form.likeWork != ''">
OR e.number LIKE concat('%', #{form.likeWork}, '%')
</if>
<if test="form.orderStatus != null">
and i.order_status = #{form.orderStatus}
</if>
ORDER BY create_time DESC
</select> </select>
</mapper> </mapper>

View File

@ -28,4 +28,23 @@
t.id DESC, t.id DESC,
t.sort DESC t.sort DESC
</select> </select>
<select id="personnelStatistics" resultType="com.hcy.common.dto.largeDataDto.AdminLargeDataDto">
SELECT
COUNT( aa.role ) AS maintenanceCount,
SUM( CASE WHEN u.receive_order_status = 0 THEN 1 ELSE 0 END ) AS vacationCount,
SUM( CASE WHEN u.receive_order_status = 1 THEN 1 ELSE 0 END ) AS workingCount,
SUM( CASE WHEN u.receive_order_status = 2 THEN 1 ELSE 0 END ) AS availableCount
FROM
la_system_auth_admin AS aa
JOIN la_system_auth_role AS ar ON aa.role = ar.id
join la_user as u on aa.user_id = u.id
WHERE
aa.is_delete = 0
AND u.is_delete = 0 and aa.role = 6
GROUP BY
aa.role
ORDER BY
maintenanceCount DESC
</select>
</mapper> </mapper>

View File

@ -0,0 +1,25 @@
<?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.hcy.common.mapper.client.ClientMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.client.Client">
</resultMap>
<select id="clientEquipmentList" resultType="com.hcy.common.dto.largeDataDto.ClientLargeDataDto">
SELECT
c.client_no,c.client_name,COUNT(e.client_id) AS equipmentCount,
SUM(CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END) AS normalCount,
SUM(CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END) AS underOverhaulCount,
SUM(CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END) AS underWarrantyCount
FROM
la_client as c
JOIN
la_equipment as e ON e.client_id = c.id
where c.is_delete = 0 and e.is_delete = 0
GROUP BY
c.id
ORDER BY
equipmentCount DESC
LIMIT 5;
</select>
</mapper>

View File

@ -0,0 +1,27 @@
<?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.hcy.common.mapper.client.EquipmentMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.client.Equipment">
</resultMap>
<select id="provinceEquipment" resultType="com.hcy.common.dto.largeDataDto.ClientLargeDataDto">
SELECT
dr.name as province,
COUNT( e.province_id ) AS equipmentCount,
SUM( CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END ) AS normalCount,
SUM( CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END ) AS underOverhaulCount,
SUM( CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END ) AS underWarrantyCount
FROM
la_equipment AS e
JOIN la_dev_region as dr on e.province_id = dr.id
where
e.is_delete = 0
GROUP BY
e.province_id
ORDER BY
equipmentCount DESC
LIMIT 5;
</select>
</mapper>

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.order.MaintenanceOrderMapper"> <mapper namespace="com.hcy.common.mapper.order.MaintenanceOrderMapper">
<select id="pageList" resultType="com.hcy.common.dto.order.MaintenanceOrderDto"> <select id="list" resultType="com.hcy.common.dto.order.MaintenanceOrderDto">
SELECT SELECT
lmo.*, lmo.*,
lf.`name` as faultName, lf.`name` as faultName,

View File

@ -2,8 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.order.RoutingInspectionOrderMapper"> <mapper namespace="com.hcy.common.mapper.order.RoutingInspectionOrderMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hcy.common.entity.order.RoutingInspectionOrder"> <!--<resultMap id="BaseResultMap" type="com.hcy.common.entity.order.RoutingInspectionOrder">
</resultMap> </resultMap>-->
<select id="pageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto"> <select id="pageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT SELECT
@ -40,17 +40,21 @@
<if test="form.orderStatus != null"> <if test="form.orderStatus != null">
and i.order_status = #{form.orderStatus} and i.order_status = #{form.orderStatus}
</if> </if>
ORDER BY i.id DESC ORDER BY create_time DESC
</select> </select>
<select id="frontPageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto"> <select id="frontPageList" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT SELECT
i.*, i.*,
c.client_name, c.client_name,
e.number as equipmentNo,e.name as equipmentName,e.detailed_address, e.number as equipmentNo,
e.name as equipmentName,
e.detailed_address,
a.nickname as creatorName, a.nickname as creatorName,
f.`name` as familiarFaultName, f.`name` as familiarFaultName,
u.nickname as receiverName u.nickname as receiverName,
e.longitude,
e.latitude
FROM FROM
la_routing_inspection_order AS i la_routing_inspection_order AS i
LEFT JOIN la_client AS c ON i.client_id = c.id LEFT JOIN la_client AS c ON i.client_id = c.id
@ -60,6 +64,7 @@
LEFT JOIN la_user as u on i.receiver_id = u.id LEFT JOIN la_user as u on i.receiver_id = u.id
WHERE WHERE
i.is_delete = 0 i.is_delete = 0
and i.receiver_id = #{form.receiverId}
<if test="form.likeWork != null and form.likeWork != ''"> <if test="form.likeWork != null and form.likeWork != ''">
and i.order_no like concat('%', #{form.likeWork}, '%') and i.order_no like concat('%', #{form.likeWork}, '%')
</if> </if>
@ -75,6 +80,43 @@
<if test="form.orderStatus == null"> <if test="form.orderStatus == null">
and i.order_status in (1,2,5) and i.order_status in (1,2,5)
</if> </if>
ORDER BY i.id DESC ORDER BY create_time DESC
</select>
<select id="list" resultType="com.hcy.common.dto.RoutingInspectionOrderDto">
SELECT
i.*,
c.client_name,
e.number as equipmentNo,
e.name as equipmentName,
e.detailed_address,
a.nickname as creatorName,
f.`name` as familiarFaultName,
u.nickname as receiverName,
e.longitude,
e.latitude
FROM
la_routing_inspection_order AS i
LEFT JOIN la_client AS c ON i.client_id = c.id
LEFT JOIN la_equipment AS e ON i.equipment_id = e.id
LEFT JOIN la_system_auth_admin AS a ON i.creator_id = a.id
LEFT JOIN la_fault AS f ON i.fault_id = f.id
LEFT JOIN la_user as u on i.receiver_id = u.id
WHERE
i.is_delete = 0
and i.receiver_id = #{form.receiverId}
<if test="form.likeWork != null and form.likeWork != ''">
and i.order_no like concat('%', #{form.likeWork}, '%')
</if>
<if test="form.likeWork != null and form.likeWork != ''">
OR c.client_name LIKE concat('%', #{form.likeWork}, '%')
</if>
<if test="form.likeWork != null and form.likeWork != ''">
OR e.number LIKE concat('%', #{form.likeWork}, '%')
</if>
<if test="form.orderStatus != null">
and i.order_status = #{form.orderStatus}
</if>
ORDER BY create_time DESC
</select> </select>
</mapper> </mapper>

View File

@ -28,4 +28,23 @@
t.id DESC, t.id DESC,
t.sort DESC t.sort DESC
</select> </select>
<select id="personnelStatistics" resultType="com.hcy.common.dto.largeDataDto.AdminLargeDataDto">
SELECT
COUNT( aa.role ) AS maintenanceCount,
SUM( CASE WHEN u.receive_order_status = 0 THEN 1 ELSE 0 END ) AS vacationCount,
SUM( CASE WHEN u.receive_order_status = 1 THEN 1 ELSE 0 END ) AS workingCount,
SUM( CASE WHEN u.receive_order_status = 2 THEN 1 ELSE 0 END ) AS availableCount
FROM
la_system_auth_admin AS aa
JOIN la_system_auth_role AS ar ON aa.role = ar.id
join la_user as u on aa.user_id = u.id
WHERE
aa.is_delete = 0
AND u.is_delete = 0 and aa.role = 6
GROUP BY
aa.role
ORDER BY
maintenanceCount DESC
</select>
</mapper> </mapper>

View File

@ -0,0 +1,87 @@
package com.hcy.front.controller.fault;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.fault.IFaultService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.fault.FaultParam;
import com.hcy.front.vo.fault.FaultDetailVo;
import com.hcy.front.vo.fault.FaultListVo;
import lombok.extern.java.Log;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
*
*/
@RestController
@RequestMapping("api/fault")
public class FaultController {
@Resource
IFaultService iFaultService;
/**
*
*
* @param pageParam
* @param faultParam
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam, FaultParam faultParam) {
PageResult<FaultListVo> list = iFaultService.list(pageParam, faultParam);
return AjaxResult.success(list);
}
/**
*
*
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
FaultDetailVo detail = iFaultService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @param faultParam
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = FaultParam.create.class) @RequestBody FaultParam faultParam) {
iFaultService.add(faultParam);
return AjaxResult.success();
}
/**
*
*
* @param faultParam
* @return Object
*/
@PostMapping("/edit")
public Object edit(@Validated(value = FaultParam.update.class) @RequestBody FaultParam faultParam) {
iFaultService.edit(faultParam);
return AjaxResult.success();
}
/**
*
*
* @param faultParam
* @return Object
*/
@PostMapping("/del")
public Object del(@Validated(value = FaultParam.delete.class) @RequestBody FaultParam faultParam) {
iFaultService.del(faultParam.getId());
return AjaxResult.success();
}
}

View File

@ -6,6 +6,7 @@ import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust; import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.order.IRoutingInspectionOrderService; import com.hcy.front.service.order.IRoutingInspectionOrderService;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam; import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo; import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
@ -39,6 +40,18 @@ public class RoutingInspectionOrderController {
PageResult<RoutingInspectionOrderListVo> list = iRoutingInspectionOrderService.list(pageParam, params); PageResult<RoutingInspectionOrderListVo> list = iRoutingInspectionOrderService.list(pageParam, params);
return AjaxResult.success(list); return AjaxResult.success(list);
} }
/**
*
*
* @param routingInspectionOrderParam
* @return Object
*/
@GetMapping("/inspectionList")
public Object list(RoutingInspectionOrderParam routingInspectionOrderParam) {
return AjaxResult.success(iRoutingInspectionOrderService.inspectionList(routingInspectionOrderParam));
}
/** /**
* *
* *
@ -52,6 +65,19 @@ public class RoutingInspectionOrderController {
return AjaxResult.success(detail); return AjaxResult.success(detail);
} }
/**
*
*
* @author hcy
* @param routingInspectionOrderParam
* @return Object
*/
@PostMapping("/grabTheOrder")
public Object grabTheOrder(@RequestBody RoutingInspectionOrderParam routingInspectionOrderParam) {
iRoutingInspectionOrderService.grabTheOrder(routingInspectionOrderParam);
return AjaxResult.success();
}
/** /**
* *
* *
@ -90,4 +116,5 @@ public class RoutingInspectionOrderController {
iRoutingInspectionOrderService.faultDetect(routingInspectionOrderParam); iRoutingInspectionOrderService.faultDetect(routingInspectionOrderParam);
return AjaxResult.success(); return AjaxResult.success();
} }
} }

View File

@ -0,0 +1,53 @@
package com.hcy.front.service.fault;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.fault.FaultParam;
import com.hcy.front.vo.fault.FaultDetailVo;
import com.hcy.front.vo.fault.FaultListVo;
/**
*
*/
public interface IFaultService {
/**
*
*
* @param pageParam
* @param faultParam
* @return PageResult<FaultVo>
*/
PageResult<FaultListVo> list(PageParam pageParam, FaultParam faultParam);
/**
*
*
* @param id ID
* @return Fault
*/
FaultDetailVo detail(Integer id);
/**
*
*
* @param faultParam
*/
void add(FaultParam faultParam);
/**
*
*
* @param faultParam
*/
void edit(FaultParam faultParam);
/**
*
*
* @param id ID
*/
void del(Long id);
}

View File

@ -0,0 +1,146 @@
package com.hcy.front.service.fault.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.fault.Fault;
import com.hcy.common.mapper.fault.FaultMapper;
import com.hcy.front.service.fault.IFaultService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.fault.FaultParam;
import com.hcy.front.vo.fault.FaultDetailVo;
import com.hcy.front.vo.fault.FaultListVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;
/**
*
*/
@Service
public class FaultServiceImpl implements IFaultService {
@Resource
FaultMapper faultMapper;
/**
*
*
* @param pageParam
* @param faultParam
* @return PageResult<FaultListVo>
*/
@Override
public PageResult<FaultListVo> list(PageParam pageParam, FaultParam faultParam) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
Long faultType = faultParam.getFaultType();
String name = faultParam.getName();
Integer status = faultParam.getStatus();
LambdaQueryWrapper<Fault> wrapper = new LambdaQueryWrapper<Fault>()
.eq(Fault::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(faultType != null, Fault::getFaultType, faultType)
.like(name != null, Fault::getName, name)
.eq(status != null, Fault::getStatus, status)
.orderByAsc(Fault::getSort)
.orderByDesc(Fault::getCreateTime);
IPage<Fault> iPage = faultMapper.selectPage(new Page<>(page, limit), wrapper);
List<FaultListVo> list = new LinkedList<>();
for(Fault item : iPage.getRecords()) {
FaultListVo vo = new FaultListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(item.getCreateTime());
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @param id
* @return Fault
*/
@Override
public FaultDetailVo detail(Integer id) {
Fault model = faultMapper.selectOne(
new QueryWrapper<Fault>()
.eq("id", id)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
FaultDetailVo vo = new FaultDetailVo();
BeanUtils.copyProperties(model, vo);
return vo;
}
/**
*
*
* @param faultParam
*/
@Override
public void add(FaultParam faultParam) {
Fault model = new Fault();
model.setFaultType(faultParam.getFaultType());
model.setSort(faultParam.getSort());
model.setName(faultParam.getName());
model.setStatus(faultParam.getStatus());
model.setDescription(faultParam.getDescription());
faultMapper.insert(model);
}
/**
*
*
* @param faultParam
*/
@Override
public void edit(FaultParam faultParam) {
Fault model = faultMapper.selectOne(
new QueryWrapper<Fault>()
.eq("id", faultParam.getId())
.eq("is_delete", GlobalConstant.NOT_DELETE)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
BeanUtils.copyProperties(faultParam,model);
faultMapper.updateById(model);
}
/**
*
*
* @param id ID
*/
@Override
public void del(Long id) {
Fault model = faultMapper.selectOne(
new QueryWrapper<Fault>()
.eq("id", id)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setIsDelete(GlobalConstant.DELETE);
faultMapper.updateById(model);
}
}

View File

@ -3,9 +3,11 @@ package com.hcy.front.service.order;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam; import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo; import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -49,4 +51,17 @@ public interface IRoutingInspectionOrderService {
* @param routingInspectionOrderParam * @param routingInspectionOrderParam
*/ */
void faultDetect(RoutingInspectionOrderParam routingInspectionOrderParam); void faultDetect(RoutingInspectionOrderParam routingInspectionOrderParam);
/**
*
* @param routingInspectionOrderParam
*/
void grabTheOrder(RoutingInspectionOrderParam routingInspectionOrderParam);
/**
*
* @param routingInspectionOrderParam
* @return
*/
List<RoutingInspectionOrderListVo> inspectionList(RoutingInspectionOrderParam routingInspectionOrderParam);
} }

View File

@ -4,18 +4,29 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.dto.RoutingInspectionOrderDto; import com.hcy.common.dto.RoutingInspectionOrderDto;
import com.hcy.common.dto.order.MaintenanceOrderDto;
import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Client;
import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.client.Equipment;
import com.hcy.common.entity.fault.Fault;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.entity.order.RoutingInspectionOrder;
import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.enums.order.OrderStateEnum;
import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper; import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.common.mapper.fault.FaultMapper;
import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; import com.hcy.common.mapper.order.RoutingInspectionOrderMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IRoutingInspectionOrderService; import com.hcy.front.service.order.IRoutingInspectionOrderService;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam; import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo; import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -24,10 +35,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.math.BigDecimal;
import java.util.LinkedList; import java.text.DecimalFormat;
import java.util.List; import java.util.*;
import java.util.Map; import java.util.stream.Collectors;
/** /**
* *
@ -45,7 +56,13 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
ClientMapper clientMapper; ClientMapper clientMapper;
@Resource @Resource
SystemAuthAdminMapper systemAuthAdminMapper; UserMapper userMapper;
@Resource
FaultMapper faultMapper;
private final DecimalFormat df = new DecimalFormat ("#.#");
/** /**
* *
@ -67,10 +84,9 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
inspectionOrderDto.setOrderStatus(Long.valueOf(params.get("orderStatus"))); inspectionOrderDto.setOrderStatus(Long.valueOf(params.get("orderStatus")));
} }
inspectionOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue()); //只查询当前用户的巡检单
Page<RoutingInspectionOrderDto> iPage = routingInspectionOrderMapper.frontPageList(page, inspectionOrderDto); Page<RoutingInspectionOrderDto> iPage = routingInspectionOrderMapper.frontPageList(page, inspectionOrderDto);
List<RoutingInspectionOrderListVo> list = new LinkedList<>(); List<RoutingInspectionOrderListVo> list = new LinkedList<>();
for(RoutingInspectionOrderDto item : iPage.getRecords()) { for(RoutingInspectionOrderDto item : iPage.getRecords()) {
RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo(); RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo();
@ -116,15 +132,25 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
vo.setEquipmentNo(equipment.getNumber()); vo.setEquipmentNo(equipment.getNumber());
vo.setEquipmentName(equipment.getName()); vo.setEquipmentName(equipment.getName());
vo.setDetailedAddress(equipment.getDetailedAddress()); vo.setDetailedAddress(equipment.getDetailedAddress());
vo.setModel(equipment.getModel());
vo.setManufacturers(equipment.getManufacturers());
vo.setSpecification(equipment.getSpecification());
//接单人 //接单人
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( User username = userMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>() new QueryWrapper<User>()
.eq("id", model.getReceiverId()) .eq("id", model.getReceiverId())
.last("limit 1")); .last("limit 1"));
if(authAdmin != null){ if(username != null){
vo.setReceiverName(authAdmin.getUsername()); vo.setReceiverName(username.getUsername());
}
//故障类型
Fault id1 = faultMapper.selectOne(
new QueryWrapper<Fault>()
.eq("id", model.getFaultId())
.last("limit 1"));
if(id1 != null){
vo.setFamiliarFaultName(id1.getName());
} }
return vo; return vo;
} }
@ -186,11 +212,86 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
model.setFaultId(routingInspectionOrderParam.getFaultId()); // 故障id model.setFaultId(routingInspectionOrderParam.getFaultId()); // 故障id
model.setFaultDescription(routingInspectionOrderParam.getFaultDescription()); // 故障描述 model.setFaultDescription(routingInspectionOrderParam.getFaultDescription()); // 故障描述
model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果0=正常 1=异常) model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果0=正常 1=异常)
String inspectionResultRemark = routingInspectionOrderParam.getInspectionResultRemark();//巡检结果备注 model.setInspectionResultRemark(routingInspectionOrderParam.getInspectionResultRemark());//巡检结果备注
model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片 model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片
model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成 model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成
model.setOrderAccomplishTime(new Date()); //订单完成时间
routingInspectionOrderMapper.updateById(model); routingInspectionOrderMapper.updateById(model);
} }
/**
*
*
* @param routingInspectionOrderParam
*/
@Override
public void grabTheOrder(RoutingInspectionOrderParam routingInspectionOrderParam) {
RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne(
new QueryWrapper<RoutingInspectionOrder>()
.eq("id", routingInspectionOrderParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
if(model.getOrderStatus() == OrderStateEnum.WAITING_LIST.getStatus()){
model.setReceiverId(FrontThreadLocal.getUserId().longValue());
model.setOrderStatus(OrderStateEnum.PENDING_ORDER.getStatus());
model.setReceiverTime(new Date());
routingInspectionOrderMapper.updateById(model);
}else{
throw new OperateException("订单已被其他人抢走");
}
}
/**
*
*
* @param routingInspectionOrderParam
* @return
*/
@Override
public List<RoutingInspectionOrderListVo> inspectionList(RoutingInspectionOrderParam routingInspectionOrderParam) {
RoutingInspectionOrderDto inspectionOrderDto = new RoutingInspectionOrderDto();
BeanUtils.copyProperties(routingInspectionOrderParam,inspectionOrderDto);
List<RoutingInspectionOrderDto> routingInspectionOrderDto = routingInspectionOrderMapper.list(inspectionOrderDto);
List<RoutingInspectionOrderListVo> returnData = new LinkedList<>();
for (RoutingInspectionOrderDto item : routingInspectionOrderDto) {
//判断抢单距离大于订单距离则返回订单
double distance = ToolsUtil.getDistance(item.getLongitude(), item.getLatitude()
, routingInspectionOrderParam.getLongitude(), routingInspectionOrderParam.getLatitude());
if(item.getOrderDistance().compareTo(BigDecimal.valueOf((distance / 1000))) >= 0){
// 计算距离
RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(String.valueOf(distance));
returnData.add(vo);
}
}
if(routingInspectionOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
//按距离排序
returnData = returnData.stream()
.sorted(Comparator.comparing(RoutingInspectionOrderListVo::getDistance))
.collect(Collectors.toList());
//将米数转换为km
for (RoutingInspectionOrderListVo inspectionOrderListVo : returnData) {
double distance = Double.parseDouble(inspectionOrderListVo.getDistance());
if(distance < 1000){
inspectionOrderListVo.setDistance(distance + "米");
}else{
double km = distance / 1000;
inspectionOrderListVo.setDistance(df.format(km) + "km");
}
}
}
return returnData;
}
} }

View File

@ -0,0 +1,35 @@
package com.hcy.front.validate.fault;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class FaultParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
private Long faultType;
private Long sort;
private String name;
private String description;
private Integer status;
}

View File

@ -8,6 +8,7 @@ import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.DecimalMin; import javax.validation.constraints.DecimalMin;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
/** /**
* *
@ -68,4 +69,17 @@ public class RoutingInspectionOrderParam implements Serializable {
private String inspectionResultRemark; //巡检结果备注 private String inspectionResultRemark; //巡检结果备注
private String inspectionPhoto; //巡检照片 private String inspectionPhoto; //巡检照片
private Date orderAccomplishTime; // 订单完成时间
private String clientName; // 客户名称
private String equipmentNo; //设备编号
private String equipmentName; //设备名称
private String detailedAddress; // 设备详细地址
private String creatorName; //创建人名称
private String createTime; // 创建时间
private String familiarFaultName; //故障类型
private String receiverName; // 接单人名称
private String likeWork; // 模糊查询(工单编号/客户名称/设备编号)
private double longitude; //经度
private double latitude; //纬度
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
} }

View File

@ -0,0 +1,22 @@
package com.hcy.front.vo.fault;
import lombok.Data;
import java.io.Serializable;
/**
* FaultVo
*/
@Data
public class FaultDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long faultType; // 问题类型 1-常见问题 2-常见维修结论描述
private Long sort; // 序号
private String name; // 故障名称
private String description; // 故障描述
private Integer status; // 状态 0-正常 1-停用
}

View File

@ -0,0 +1,25 @@
package com.hcy.front.vo.fault;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* FaultVo
*/
@Data
public class FaultListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long faultType; // 问题类型 1-常见问题 2-常见维修结论描述
private Long sort; // 序号
private String name; // 故障名称
private String description; // 故障描述
private Integer status; // 状态 0-正常 1-停用
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
}

View File

@ -15,22 +15,28 @@ public class RoutingInspectionOrderDetailVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Long id; // 主键id private Long id; // 主键id
private String orderNo; // 订单编号
private Integer orderSource; // 订单来源 1-系统创建4-客服创建
private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检 private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检
private String orderNo; // 订单编号
private Long clientId; // 客户id private Long clientId; // 客户id
private Long equipmentId; // 设备id
private Long receiverId; // 接单人id
private Date receiverTime; // 接单时间
private String remark; // 备注
private Integer creatorId; // 创建人id
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private String clientName; // 客户名称 private String clientName; // 客户名称
private String equipmentNo; //设备编号 private Long equipmentId; // 设备id
private String equipmentName; //设备名称 private String equipmentName; //设备名称
private String equipmentNo; //设备编号
private String detailedAddress; // 设备详细地址 private String detailedAddress; // 设备详细地址
private String model; // 设备型号
private String manufacturers; // 设备厂家
private String specification; // 设备规格
private Long receiverId; // 接单人id
private String receiverName; // 接单人名称 private String receiverName; // 接单人名称
private Date receiverTime; // 接单时间
private Long faultId; // 故障id
private String familiarFaultName; //故障类型
private String faultDescription; // 故障描述
private Date createTime; // 创建时间
private Date orderAccomplishTime; // 订单完成时间
private String inspectionPhoto; //巡检照片
private Integer inspectionResult; //巡检结果0=正常 1=异常)
private String inspectionResultRemark; //巡检结果备注
private Integer creatorId; // 创建人id
} }

View File

@ -3,6 +3,7 @@ package com.hcy.front.vo.order;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -24,4 +25,8 @@ public class RoutingInspectionOrderListVo implements Serializable {
private String detailedAddress; // 设备详细地址 private String detailedAddress; // 设备详细地址
private String createTime; // 创建时间 private String createTime; // 创建时间
private Long orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检 private Long orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检
private String distance; //距离
private BigDecimal orderDistance; // 订单距离
} }