diff --git a/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java b/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java index 685697a..25b263c 100644 --- a/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java +++ b/admin/src/main/java/com/hcy/admin/controller/largeDataScreen/LargeDataScreenController.java @@ -1,16 +1,32 @@ package com.hcy.admin.controller.largeDataScreen; +import com.hcy.admin.service.client.IClientService; +import com.hcy.admin.service.client.IEquipmentService; import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService; -import com.hcy.admin.vo.client.EquipmentLargeDataVo; +import com.hcy.admin.service.order.IMaintenanceOrderService; +import com.hcy.admin.service.order.IRoutingInspectionOrderService; +import com.hcy.admin.validate.common.PageParam; +import com.hcy.admin.validate.order.MaintenanceOrderParam; +import com.hcy.admin.vo.client.ClientListVo; +import com.hcy.admin.vo.client.EquipmentListVo; +import com.hcy.admin.vo.largeData.EquipmentLargeDataVo; +import com.hcy.admin.vo.largeData.LargeDataVo; +import com.hcy.admin.vo.largeData.UserLargeDataVo; +import com.hcy.admin.vo.order.MaintenanceOrderListVo; +import com.hcy.admin.vo.order.RoutingInspectionOrderListVo; import com.hcy.common.core.AjaxResult; +import com.hcy.common.core.PageResult; import com.hcy.common.dto.largeDataDto.AdminLargeDataDto; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; +import java.util.Map; /** * 数据大屏 @@ -21,6 +37,18 @@ public class LargeDataScreenController { @Resource ILargeDataScreenService iLargeDataScreenService; + @Resource + IClientService iClientService; + + @Resource + IEquipmentService iEquipmentService; + + @Resource + IRoutingInspectionOrderService iRoutingInspectionOrderService; + + @Resource + IMaintenanceOrderService iMaintenanceOrderService; + /** * 获取所有设备对应状态的数量 * @@ -69,5 +97,93 @@ public class LargeDataScreenController { return AjaxResult.success(adminLargeDataDto); } + /** + * 获取客户总数、设备总数、工单总数、今日工单总数 + * + * @author hcy + * @return Object + */ + @GetMapping("/allNumber") + public Object allNumber() { + LargeDataVo largeDataVo = iLargeDataScreenService.allNumber(); + return AjaxResult.success(largeDataVo); + } + /** + * 客户列表 + * + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/clientList") + public Object list(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iClientService.list(pageParam, params); + return AjaxResult.success(list); + } + + /** + * 设备列表 + * + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/equipmentList") + public Object equipmentList(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iEquipmentService.list(pageParam, params); + return AjaxResult.success(list); + } + + /** + * 获取检修员列表 + * @return Object + */ + @GetMapping("/reconditionList") + public Object reconditionList() { + List list = iLargeDataScreenService.reconditionList(); + return AjaxResult.success(list); + } + + /** + * 巡检订单列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/routingInspectionOrderList") + public Object routingInspectionOrderList(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iRoutingInspectionOrderService.list(pageParam, params); + return AjaxResult.success(list); + } + + /** + * 检修订单列表 + * + * @param pageParam 分页参数 + * @param maintenanceOrderParam 搜索参数 + * @return Object + */ + @GetMapping("/maintenanceOrderList") + public Object maintenanceOrderList(@Validated PageParam pageParam, MaintenanceOrderParam maintenanceOrderParam) { + PageResult list = iMaintenanceOrderService.list(pageParam, maintenanceOrderParam); + return AjaxResult.success(list); + } + + /** + * 巡检订单统计 + * + * @author hcy + * @return Object + */ + @GetMapping("/routingInspectionOrderStats") + public Object routingInspectionOrdeStatsr(int orderStastic) { + LargeDataVo largeDataVo = iLargeDataScreenService.routingInspectionOrdeStatsr(orderStastic); + return AjaxResult.success(largeDataVo); + } } diff --git a/admin/src/main/java/com/hcy/admin/service/client/impl/ClientServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/client/impl/ClientServiceImpl.java index 3967eee..62c34f9 100644 --- a/admin/src/main/java/com/hcy/admin/service/client/impl/ClientServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/client/impl/ClientServiceImpl.java @@ -14,8 +14,10 @@ import com.hcy.admin.vo.client.ClientDetailVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; import com.hcy.common.entity.client.Client; +import com.hcy.common.entity.client.Equipment; import com.hcy.common.exception.OperateException; import com.hcy.common.mapper.client.ClientMapper; +import com.hcy.common.mapper.client.EquipmentMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -36,6 +38,9 @@ public class ClientServiceImpl implements IClientService { @Resource private IDevRegionService regionService; + @Resource + EquipmentMapper equipmentMapper; + /** * 客户列表 * @@ -48,10 +53,12 @@ public class ClientServiceImpl implements IClientService { Integer page = pageParam.getPageNo(); Integer limit = pageParam.getPageSize(); + String clientId = params.get("id"); String clientNo = params.get("clientNo"); String clientName = params.get("clientName"); QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotEmpty(clientId),"id", clientId); queryWrapper.eq("is_delete", 0); queryWrapper.like(StringUtils.isNotEmpty(clientNo),"client_no",clientNo); queryWrapper.like(StringUtils.isNotEmpty(clientName),"client_name",clientName); @@ -84,6 +91,12 @@ public class ClientServiceImpl implements IClientService { vo.setProvince(regionMap.get(vo.getProvinceId())); vo.setCity(regionMap.get(vo.getCityId())); vo.setDistrict(regionMap.get(vo.getDistrictId())); + //获取客户所有设备 + List equipment = equipmentMapper.selectList( + new QueryWrapper() + .eq("client_id", item.getId()) + .eq("is_delete", GlobalConstant.NOT_DELETE)); + vo.setEquipmentList(equipment); list.add(vo); } diff --git a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java index cd85589..2cdeb42 100644 --- a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java +++ b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/ILargeDataScreenService.java @@ -1,6 +1,8 @@ package com.hcy.admin.service.largeDataScreen; -import com.hcy.admin.vo.client.EquipmentLargeDataVo; +import com.hcy.admin.vo.largeData.EquipmentLargeDataVo; +import com.hcy.admin.vo.largeData.LargeDataVo; +import com.hcy.admin.vo.largeData.UserLargeDataVo; import com.hcy.common.dto.largeDataDto.AdminLargeDataDto; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto; @@ -35,4 +37,23 @@ public interface ILargeDataScreenService { * @return */ AdminLargeDataDto personnelStatistics(); + + /** + * 获取客户总数、设备总数、工单总数、今日工单总数 + * @return + */ + LargeDataVo allNumber(); + + /** + * 获取检修员列表 + * @return + */ + List reconditionList(); + + /** + * 巡检订单统计 + * @param orderStastic + * @return + */ + LargeDataVo routingInspectionOrdeStatsr(int orderStastic); } diff --git a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java index 3ff7f6e..fb1cb8a 100644 --- a/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/largeDataScreen/impl/LargeDataScreenServiceImpl.java @@ -2,19 +2,34 @@ package com.hcy.admin.service.largeDataScreen.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService; -import com.hcy.admin.vo.client.EquipmentLargeDataVo; +import com.hcy.admin.vo.client.EquipmentListVo; +import com.hcy.admin.vo.largeData.EquipmentLargeDataVo; +import com.hcy.admin.vo.largeData.LargeDataVo; +import com.hcy.admin.vo.largeData.UserLargeDataVo; import com.hcy.common.dto.largeDataDto.AdminLargeDataDto; import com.hcy.common.dto.largeDataDto.ClientLargeDataDto; +import com.hcy.common.dto.result.UserLargeDataDto; +import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.order.MaintenanceOrder; +import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.client.EquipmentMapper; +import com.hcy.common.mapper.order.MaintenanceOrderMapper; +import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; +import com.hcy.common.mapper.user.UserMapper; +import com.hcy.common.utils.TimeUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -32,6 +47,16 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService { @Resource SystemAuthAdminMapper systemAuthAdminMapper; + @Resource + RoutingInspectionOrderMapper routingInspectionOrderMapper; + + @Resource + MaintenanceOrderMapper maintenanceOrderMapper; + + @Resource + UserMapper userMapper; + + /** * 获取所有设备对应状态的数量 * @@ -106,5 +131,97 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService { return systemAuthAdminMapper.personnelStatistics(); } + /** + * 获取客户总数、设备总数、工单总数、今日工单总数 + * + * @return + */ + @Override + public LargeDataVo allNumber() { + LargeDataVo vo = new LargeDataVo(); + //客户总数 + Integer clientCount = clientMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0)); + //设备总数 + Integer equipmentCount = equipmentMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0)); + //工单总数=检修单总数+维修单总数+巡检单总数 + //巡检单总数 + Integer routingInspectionOrderCount = routingInspectionOrderMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0)); + //检修单总数 + Integer maintenanceOrderCount = maintenanceOrderMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0)); + + //今日工单总数=今日检修单总数+今日维修单总数+今日巡检单总数 + LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX); + //今日检修单总数 + Integer todayRoutingInspectionOrderCount = routingInspectionOrderMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0) + .ge("create_time", Timestamp.valueOf(startTime)) // 开始时间 + .le("create_time", Timestamp.valueOf(endTime))); // 结束时间 + //今日检修单总数 + Integer todayMaintenanceOrderCount = maintenanceOrderMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0) + .ge("create_time", Timestamp.valueOf(startTime)) // 开始时间 + .le("create_time", Timestamp.valueOf(endTime))); // 结束时间 + vo.setClientSum(clientCount); + vo.setEquipmentSum(equipmentCount); + vo.setOrderSum(routingInspectionOrderCount + maintenanceOrderCount); + vo.setTodayOrderSum(todayRoutingInspectionOrderCount + todayMaintenanceOrderCount); + return vo; + } + + /** + * 获取检修员列表 + * + * @return + */ + @Override + public List reconditionList() { + List userLargeDataDtos = userMapper.reconditionList(); + List list = new ArrayList<>(); + for (UserLargeDataDto userLargeDataDto : userLargeDataDtos) { + UserLargeDataVo vo = new UserLargeDataVo(); + BeanUtils.copyProperties(userLargeDataDto, vo); + list.add(vo); + } + return list; + } + + /** + * 巡检订单统计 + * + * @param orderStastic + * @return + */ + @Override + public LargeDataVo routingInspectionOrdeStatsr(int orderStastic) { + //orderStastic 工单统计 0=日 1=月 2=年 + //今日 + LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX); + //当月 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime monthStartTime = now.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0); + LocalDateTime monthEndTime = now.withHour(23).withMinute(59).withSecond(59); + + //获取巡检订单总数 + Integer routingInspectionOrderCount = routingInspectionOrderMapper.selectCount( + new QueryWrapper() + .eq("is_delete", 0)); + //获取已完成订单总数 + //获取检修中订单总数 + //获取保修中订单总数 + return null; + } + } diff --git a/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java index 1f55244..1f96640 100644 --- a/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.admin.AdminThreadLocal; import com.hcy.admin.service.order.IRoutingInspectionOrderService; +import com.hcy.admin.service.region.IDevRegionService; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.order.RoutingInspectionOrderParam; +import com.hcy.admin.vo.client.EquipmentListVo; import com.hcy.admin.vo.order.RoutingInspectionOrderListVo; import com.hcy.admin.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.common.constant.GlobalConstant; @@ -14,12 +16,15 @@ import com.hcy.common.core.PageResult; import com.hcy.common.dto.RoutingInspectionOrderDto; import com.hcy.common.entity.client.Client; 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.system.SystemAuthAdmin; +import com.hcy.common.entity.user.User; import com.hcy.common.enums.order.OrderStateEnum; import com.hcy.common.mapper.client.ClientMapper; 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.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; @@ -53,6 +58,12 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde @Resource UserMapper userMapper; + @Resource + FaultMapper faultMapper; + + @Resource + private IDevRegionService regionService; + /** * 巡检订单列表 * @@ -80,14 +91,10 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde Page iPage = routingInspectionOrderMapper.pageList(page, inspectionOrderDto); - - List list = new LinkedList<>(); for(RoutingInspectionOrderDto item : iPage.getRecords()) { RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo(); BeanUtils.copyProperties(item, vo); - vo.setCreateTime(String.valueOf(item.getCreateTime())); - list.add(vo); } @@ -119,23 +126,42 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde .eq("id", model.getClientId()) .last("limit 1")); vo.setClientName(client.getClientName()); - //设备编号、名称、地址 + //设备信息 + Map regionMap = regionService.getRegionMap(); Equipment equipment = equipmentMapper.selectOne( new QueryWrapper() .eq("id", model.getEquipmentId()) .last("limit 1")); - vo.setEquipmentNo(equipment.getNumber()); - vo.setEquipmentName(equipment.getName()); - vo.setDetailedAddress(equipment.getDetailedAddress()); + EquipmentListVo equipmentListVo = new EquipmentListVo(); + equipmentListVo.setProvince(regionMap.get(equipment.getProvinceId())); + equipmentListVo.setCity(regionMap.get(equipment.getCityId())); + equipmentListVo.setDistrict(regionMap.get(equipment.getDistrictId())); + BeanUtils.copyProperties(equipment, equipmentListVo); + vo.setEquipment(equipmentListVo); //设备信息 //接单人 - SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( - new QueryWrapper() + User user = userMapper.selectOne( + new QueryWrapper() .eq("id", model.getReceiverId()) .last("limit 1")); - if(authAdmin != null){ - vo.setReceiverName(authAdmin.getUsername()); + if(user != null){ + vo.setReceiverName(user.getUsername()); + } + //故障类别 + Fault fault = faultMapper.selectOne( + new QueryWrapper() + .eq("id", model.getFaultId()) + .last("limit 1")); + if(fault != null){ + vo.setFaultName(fault.getName()); + } + //创建人名称 + SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( + new QueryWrapper() + .eq("id", model.getCreatorId()) + .last("limit 1")); + if(authAdmin != null){ + vo.setCreatorName(authAdmin.getUsername()); } - return vo; } @@ -279,6 +305,10 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde Assert.notNull(model, "数据不存在!"); model.setReceiverId(routingInspectionOrderParam.getReceiverId()); + //如果是退单状态,重新派工后状态改为待接单 + if(model.getOrderStatus() == OrderStateEnum.RETURNED_ORDER.getStatus()){ + model.setOrderStatus(OrderStateEnum.PENDING_ORDER.getStatus()); + } routingInspectionOrderMapper.updateById(model); } diff --git a/admin/src/main/java/com/hcy/admin/vo/client/ClientListVo.java b/admin/src/main/java/com/hcy/admin/vo/client/ClientListVo.java index f56013f..325ac7d 100644 --- a/admin/src/main/java/com/hcy/admin/vo/client/ClientListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/client/ClientListVo.java @@ -1,12 +1,14 @@ package com.hcy.admin.vo.client; import com.hcy.admin.validate.client.ClientParam; +import com.hcy.common.entity.client.Equipment; import lombok.Data; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * ClientVo @@ -39,5 +41,5 @@ public class ClientListVo implements Serializable { private Long creatorId; // 创建人id private Date createTime; // 创建时间 private Date updateTime; // 更新时间 - + private List equipmentList; //设备列表 } diff --git a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java index 8a3e00e..7df0644 100644 --- a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/client/EquipmentListVo.java @@ -26,6 +26,9 @@ public class EquipmentListVo implements Serializable { private Long provinceId; // 省id private Long districtId; // 区id private Long cityId; // 市id + private String province; //省 + private String city; //市 + private String district; //区 private String detailedAddress; // 详细地址 private Integer inspectionCycle; // 巡检周期方式(0=天数间隔,1=固定日期) private Integer dailyAudit; // 每隔几天巡检 diff --git a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentLargeDataVo.java b/admin/src/main/java/com/hcy/admin/vo/largeData/EquipmentLargeDataVo.java similarity index 97% rename from admin/src/main/java/com/hcy/admin/vo/client/EquipmentLargeDataVo.java rename to admin/src/main/java/com/hcy/admin/vo/largeData/EquipmentLargeDataVo.java index 0549789..9976e7d 100644 --- a/admin/src/main/java/com/hcy/admin/vo/client/EquipmentLargeDataVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/largeData/EquipmentLargeDataVo.java @@ -1,4 +1,4 @@ -package com.hcy.admin.vo.client; +package com.hcy.admin.vo.largeData; import lombok.Data; diff --git a/admin/src/main/java/com/hcy/admin/vo/largeData/LargeDataVo.java b/admin/src/main/java/com/hcy/admin/vo/largeData/LargeDataVo.java new file mode 100644 index 0000000..4256350 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/largeData/LargeDataVo.java @@ -0,0 +1,23 @@ +package com.hcy.admin.vo.largeData; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 数据大屏LargeDataVo + */ +@Data +public class LargeDataVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer clientSum; //客户总数 + private Integer equipmentSum; //设备总数 + private Integer orderSum; //工单总数 + private Integer todayOrderSum; //今日工单总数 + + private Integer doneOrderSum; //已完成订单数 + private Integer underOverhaulOrderSum; //检修中订单数 + private Integer underWarrantyOrderSum; //保修中订单数 +} diff --git a/admin/src/main/java/com/hcy/admin/vo/largeData/UserLargeDataVo.java b/admin/src/main/java/com/hcy/admin/vo/largeData/UserLargeDataVo.java new file mode 100644 index 0000000..cbd8767 --- /dev/null +++ b/admin/src/main/java/com/hcy/admin/vo/largeData/UserLargeDataVo.java @@ -0,0 +1,43 @@ +package com.hcy.admin.vo.largeData; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户Vo + */ +@Data +public class UserLargeDataVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; // 主键 + private Integer sn; // 编号 + private String avatar; // 用户头像 + private String realName; // 真实姓名 + private String nickname; // 用户昵称 + private String username; // 用户账号 + private String password; // 用户密码 + private String mobile; // 用户电话 + private Integer channel; // 注册渠道 + private Integer type; // 用户类型:[0=用户端,1=师傅端] + private String salt; // 加密盐巴 + private BigDecimal money; // 用户余额 + private Integer sex; // 用户性别: [1=男, 2=女] + private Integer isDisable; // 是否禁用: [0=否, 1=是] + private Integer isDelete; // 是否删除: [0=否, 1=是] + private Integer isNew; // 是否新用户: [0=否, 1=是] + private String lastLoginIp; // 最后登录IP + private Long lastLoginTime; // 最后登录时间 + private Long createTime; // 创建时间 + private Long updateTime; // 更新时间 + private Long deleteTime; // 删除时间 + private Long distributorId; // 绑定的分销人员Id + private Long bindTime; // 绑定的时间 + private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) + private String longitude; // 经度 + private String latitude; // 纬度 + +} diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java index a162cb7..2220c2c 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderDetailVo.java @@ -1,6 +1,10 @@ package com.hcy.admin.vo.order; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.hcy.admin.validate.order.RoutingInspectionOrderParam; +import com.hcy.admin.vo.client.EquipmentListVo; +import com.hcy.common.entity.client.Equipment; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -24,17 +28,29 @@ public class RoutingInspectionOrderDetailVo implements Serializable { private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 private Integer orderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 private Long clientId; // 客户id - private Long equipmentId; // 设备id private Long receiverId; // 接单人id private Date receiverTime; // 接单时间 private String remark; // 备注 private Integer creatorId; // 创建人id + private String creatorName; // 创建人名称 private Integer receiverType; // 接单类型 0-区域派单;1-距离派单 private BigDecimal orderDistance; // 订单距离 private String clientName; // 客户名称 - private String equipmentNo; //设备编号 - private String equipmentName; //设备名称 - private String detailedAddress; // 设备详细地址 + private Long equipmentId; // 设备id + private EquipmentListVo equipment; //设备信息 private String receiverName; // 接单人名称 - + private Date createTime; // 创建时间 + private Long userId; // 用户id + private Long faultId; // 故障id + private String faultName; // 故障名称 + private String faultDescription; // 故障描述 + private Long repairId; // 返修id + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 + private Date orderAccomplishTime; // 订单完成时间 + private Date updateTime; // 更新时间 + private Long maintenanceId; //检修单id + private Integer inspectionResult; //巡检结果(0=正常 1=异常) + private String inspectionPhoto; //巡检照片 + private String inspectionResultRemark; //巡检结果备注 } diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java index 780f987..32b4261 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java @@ -29,7 +29,7 @@ public class RoutingInspectionOrderListVo implements Serializable { private String detailedAddress; // 设备详细地址 private Long creatorId; // 创建人id private String creatorName; //创建人名称 - private String createTime; // 创建时间 + private Date createTime; // 创建时间 private Long faultId; // 故障id private String familiarFaultName; //故障类型 private Long orderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 diff --git a/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java b/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java index dcc75ca..3864d2c 100644 --- a/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java +++ b/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java @@ -24,7 +24,7 @@ public class RoutingInspectionOrderDto implements Serializable { private String detailedAddress; // 设备详细地址 private Long creatorId; // 创建人id private String creatorName; //创建人名称 - private String createTime; // 创建时间 + private Date createTime; // 创建时间 private Long faultId; // 故障id private String familiarFaultName; //故障类型 private String faultDescription; // 故障描述 @@ -38,4 +38,6 @@ public class RoutingInspectionOrderDto implements Serializable { private double latitude; //纬度 private BigDecimal orderDistance; // 订单距离 private Integer queryType; // 查询类型 0-离我最近 1-时间优先 + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 } diff --git a/common/src/main/java/com/hcy/common/dto/result/UserLargeDataDto.java b/common/src/main/java/com/hcy/common/dto/result/UserLargeDataDto.java new file mode 100644 index 0000000..3462af4 --- /dev/null +++ b/common/src/main/java/com/hcy/common/dto/result/UserLargeDataDto.java @@ -0,0 +1,43 @@ +package com.hcy.common.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 用户Vo + */ +@Data +public class UserLargeDataDto implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; // 主键 + private Integer sn; // 编号 + private String avatar; // 用户头像 + private String realName; // 真实姓名 + private String nickname; // 用户昵称 + private String username; // 用户账号 + private String password; // 用户密码 + private String mobile; // 用户电话 + private Integer channel; // 注册渠道 + private Integer type; // 用户类型:[0=用户端,1=师傅端] + private String salt; // 加密盐巴 + private BigDecimal money; // 用户余额 + private Integer sex; // 用户性别: [1=男, 2=女] + private Integer isDisable; // 是否禁用: [0=否, 1=是] + private Integer isDelete; // 是否删除: [0=否, 1=是] + private Integer isNew; // 是否新用户: [0=否, 1=是] + private String lastLoginIp; // 最后登录IP + private Long lastLoginTime; // 最后登录时间 + private Long createTime; // 创建时间 + private Long updateTime; // 更新时间 + private Long deleteTime; // 删除时间 + private Long distributorId; // 绑定的分销人员Id + private Long bindTime; // 绑定的时间 + private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) + private String longitude; // 经度 + private String latitude; // 纬度 + +} diff --git a/common/src/main/java/com/hcy/common/entity/user/User.java b/common/src/main/java/com/hcy/common/entity/user/User.java index 133d317..672c792 100644 --- a/common/src/main/java/com/hcy/common/entity/user/User.java +++ b/common/src/main/java/com/hcy/common/entity/user/User.java @@ -41,5 +41,7 @@ public class User implements Serializable { private Long distributorId; // 绑定的分销人员Id private Long bindTime; // 绑定的时间 private Integer integral; // 积分 - + private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) + private String longitude; // 经度 + private String latitude; // 纬度 } diff --git a/common/src/main/java/com/hcy/common/enums/equipment/EquipmentStateEnum.java b/common/src/main/java/com/hcy/common/enums/equipment/EquipmentStateEnum.java index 189cbf1..599c10c 100644 --- a/common/src/main/java/com/hcy/common/enums/equipment/EquipmentStateEnum.java +++ b/common/src/main/java/com/hcy/common/enums/equipment/EquipmentStateEnum.java @@ -13,7 +13,7 @@ public enum EquipmentStateEnum { // 设备状态(0=停用,1=正常,2=保修中,3=检修中) STOPWORD(0,"停用"), NORMAL(1, "正常"), - UNDERWARRANTY(2,"保修中"), + UNDERWARRANTY(2,"报修中"), UNDEROVERHAUL(3, "检修中"), // 巡检周期方式(0=天数间隔,1=固定日期) DAYINTERVAL(0,"天数间隔"), diff --git a/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java b/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java index a1614cf..fa67f59 100644 --- a/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java @@ -10,9 +10,13 @@ import java.util.Map; */ public enum OrderStateEnum { - //订单来源 1-系统创建;4-客服创建 + // 订单来源 0-客户上报;1-系统创建;2-维修员创建;3-检修员创建;4-客服创建;5-维修主管创建 + CUSTOMER_REPORT(0,"客户上报"), SYSTEM_CREATION(1,"系统创建"), + MAINTENANCE_MAN(2,"维修员创建"), + MAINTENANCE_MAN_CREATION(3,"检修员创建"), CUSTOMER_SERVICE_CREATION(4,"客服创建"), + MAINTENANCE_SUPERVISOR_CREATION(5,"维修主管创建"), //订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 WAITING_LIST(0,"待抢单"), diff --git a/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java b/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java index 0d3e10b..6e595ee 100644 --- a/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/user/UserMapper.java @@ -3,6 +3,7 @@ package com.hcy.common.mapper.user; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.dto.UserDto; +import com.hcy.common.dto.result.UserLargeDataDto; import com.hcy.common.dto.result.UserResultDto; import com.hcy.common.entity.user.User; import org.apache.ibatis.annotations.Mapper; @@ -36,4 +37,10 @@ public interface UserMapper extends IBaseMapper { */ @Select("select * from la_user where mobile = #{phone}") User getUserByPhone(@Param("phone") String phone); + + /** + * 获取检修员列表 + * @return + */ + List reconditionList(); } diff --git a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml index a9d7631..084307e 100644 --- a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml +++ b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml @@ -64,15 +64,15 @@ LEFT JOIN la_user as u on i.receiver_id = u.id WHERE i.is_delete = 0 - and i.receiver_id = #{form.receiverId} + and i.receiver_id = #{form.receiverId} - and i.order_no like concat('%', #{form.likeWork}, '%') + and (i.order_no like concat('%', #{form.likeWork}, '%') OR c.client_name LIKE concat('%', #{form.likeWork}, '%') - OR e.number LIKE concat('%', #{form.likeWork}, '%') + OR e.number LIKE concat('%', #{form.likeWork}, '%')) and i.order_status = #{form.orderStatus} @@ -104,16 +104,6 @@ LEFT JOIN la_user as u on i.receiver_id = u.id WHERE i.is_delete = 0 - and i.receiver_id = #{form.receiverId} - - and i.order_no like concat('%', #{form.likeWork}, '%') - - - OR c.client_name LIKE concat('%', #{form.likeWork}, '%') - - - OR e.number LIKE concat('%', #{form.likeWork}, '%') - and i.order_status = #{form.orderStatus} diff --git a/common/src/main/resources/mapper/UserMapper.xml b/common/src/main/resources/mapper/UserMapper.xml index 7afab43..1c3c67b 100644 --- a/common/src/main/resources/mapper/UserMapper.xml +++ b/common/src/main/resources/mapper/UserMapper.xml @@ -91,4 +91,19 @@ + + diff --git a/common/target/classes/mapper/RoutingInspectionOrderMapper.xml b/common/target/classes/mapper/RoutingInspectionOrderMapper.xml index a9d7631..084307e 100644 --- a/common/target/classes/mapper/RoutingInspectionOrderMapper.xml +++ b/common/target/classes/mapper/RoutingInspectionOrderMapper.xml @@ -64,15 +64,15 @@ LEFT JOIN la_user as u on i.receiver_id = u.id WHERE i.is_delete = 0 - and i.receiver_id = #{form.receiverId} + and i.receiver_id = #{form.receiverId} - and i.order_no like concat('%', #{form.likeWork}, '%') + and (i.order_no like concat('%', #{form.likeWork}, '%') OR c.client_name LIKE concat('%', #{form.likeWork}, '%') - OR e.number LIKE concat('%', #{form.likeWork}, '%') + OR e.number LIKE concat('%', #{form.likeWork}, '%')) and i.order_status = #{form.orderStatus} @@ -104,16 +104,6 @@ LEFT JOIN la_user as u on i.receiver_id = u.id WHERE i.is_delete = 0 - and i.receiver_id = #{form.receiverId} - - and i.order_no like concat('%', #{form.likeWork}, '%') - - - OR c.client_name LIKE concat('%', #{form.likeWork}, '%') - - - OR e.number LIKE concat('%', #{form.likeWork}, '%') - and i.order_status = #{form.orderStatus} diff --git a/common/target/classes/mapper/UserMapper.xml b/common/target/classes/mapper/UserMapper.xml index 7afab43..1c3c67b 100644 --- a/common/target/classes/mapper/UserMapper.xml +++ b/common/target/classes/mapper/UserMapper.xml @@ -91,4 +91,19 @@ + + diff --git a/front/src/main/java/com/hcy/front/controller/UserController.java b/front/src/main/java/com/hcy/front/controller/UserController.java index c90f9d9..5b74b8f 100644 --- a/front/src/main/java/com/hcy/front/controller/UserController.java +++ b/front/src/main/java/com/hcy/front/controller/UserController.java @@ -6,6 +6,7 @@ import com.hcy.common.exception.OperateException; import com.hcy.front.FrontThreadLocal; import com.hcy.front.service.IUserService; import com.hcy.front.validate.user.NewUserUpdateValidate; +import com.hcy.front.validate.user.UserParam; import com.hcy.front.vo.staff.StaffDetailVo; import com.hcy.front.vo.user.UserCenterVo; import com.hcy.front.vo.user.UserInfoVo; @@ -143,4 +144,18 @@ public class UserController { UserInfoVo vo = iUserService.userIntegral(id); return AjaxResult.success(vo); } + + @PostMapping("/switchingState") + @ApiOperation(value="切换接单状态") + public Object switchingState(@RequestBody UserParam userParam) { + iUserService.switchingState(userParam); + return AjaxResult.success(); + } + + @PostMapping("/modificationDegree") + @ApiOperation(value="修改检修员经纬度") + public Object modificationDegree(@RequestBody UserParam userParam) { + iUserService.modificationDegree(userParam); + return AjaxResult.success(); + } } diff --git a/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java b/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java index 7da6d90..ac2bd0f 100644 --- a/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java +++ b/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java @@ -117,4 +117,14 @@ public class RoutingInspectionOrderController { return AjaxResult.success(); } + /** + * 退单 + * @param routingInspectionOrderParam 参数 + * @return Object + */ + @PostMapping("/checking") + public Object checking(@RequestBody RoutingInspectionOrderParam routingInspectionOrderParam) { + iRoutingInspectionOrderService.checking(routingInspectionOrderParam); + return AjaxResult.success(); + } } diff --git a/front/src/main/java/com/hcy/front/service/IUserService.java b/front/src/main/java/com/hcy/front/service/IUserService.java index c37f3bc..4950b56 100644 --- a/front/src/main/java/com/hcy/front/service/IUserService.java +++ b/front/src/main/java/com/hcy/front/service/IUserService.java @@ -2,6 +2,7 @@ package com.hcy.front.service; import com.hcy.common.entity.user.User; import com.hcy.front.validate.user.NewUserUpdateValidate; +import com.hcy.front.validate.user.UserParam; import com.hcy.front.vo.user.UserCenterVo; import com.hcy.front.vo.user.UserInfoVo; @@ -91,4 +92,16 @@ public interface IUserService { * @return */ UserInfoVo userIntegral(Integer id); + + /** + * 切换接单状态 + * @param userParam + */ + void switchingState(UserParam userParam); + + /** + * 修改检修员经纬度 + * @param userParam + */ + void modificationDegree(UserParam userParam); } diff --git a/front/src/main/java/com/hcy/front/service/address/impl/UserAddressServiceImpl.java b/front/src/main/java/com/hcy/front/service/address/impl/UserAddressServiceImpl.java index 16713e0..ee3e7e8 100644 --- a/front/src/main/java/com/hcy/front/service/address/impl/UserAddressServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/address/impl/UserAddressServiceImpl.java @@ -131,7 +131,7 @@ public class UserAddressServiceImpl extends ServiceImpl 0) { + /*if (userAddressParam.getDistrictId() > 0) { // 查找是否有服务区域 String pointString = "POINT(" + userAddressParam.getLongitude() + " " + userAddressParam.getLatitude() + ")"; List serviceAreaResultDto = serviceAreaMapper.selectByPoint(userAddressParam.getDistrictId(), @@ -148,7 +148,7 @@ public class UserAddressServiceImpl extends ServiceImpl serviceAreaResultDto = serviceAreaMapper.selectByPoint(userAddressParam.getDistrictId(), pointString); if (serviceAreaResultDto.size() > 0) { @@ -197,7 +197,7 @@ public class UserAddressServiceImpl extends ServiceImpl implements IU @Override public UserCenterVo center(Integer userId) { User user = userMapper.selectOne(new QueryWrapper() - .select("id,sn,avatar,real_name,nickname,username,mobile") + .select("id,sn,avatar,real_name,nickname,username,mobile,receive_order_status") .eq("id", userId) .last("limit 1")); @@ -517,4 +518,35 @@ public class UserServiceImpl extends ServiceImpl implements IU userInfoVo.setIntegral(user.getIntegral()); return userInfoVo; } + + /** + * 切换接单状态 + * + * @param userParam + */ + @Override + public void switchingState(UserParam userParam) { + User user = userMapper.selectOne(new QueryWrapper() + .eq("id", userParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + user.setReceiveOrderStatus(userParam.getReceiveOrderStatus()); + userMapper.updateById(user); + } + + /** + * 修改检修员经纬度 + * + * @param userParam + */ + @Override + public void modificationDegree(UserParam userParam) { + User user = userMapper.selectOne(new QueryWrapper() + .eq("id", userParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + user.setLongitude(userParam.getLongitude()); + user.setLatitude(userParam.getLatitude()); + userMapper.updateById(user); + } } diff --git a/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java b/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java index dd5a5e2..487caf5 100644 --- a/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java +++ b/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java @@ -64,4 +64,10 @@ public interface IRoutingInspectionOrderService { * @return */ List inspectionList(RoutingInspectionOrderParam routingInspectionOrderParam); + + /** + * 退单 + * @param routingInspectionOrderParam + */ + void checking(RoutingInspectionOrderParam routingInspectionOrderParam); } diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java index 002da46..03ac138 100644 --- a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java +++ b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -1,7 +1,9 @@ package com.hcy.front.service.order.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; import com.hcy.common.dto.RoutingInspectionOrderDto; import com.hcy.common.dto.order.MaintenanceOrderDto; @@ -12,12 +14,14 @@ import com.hcy.common.entity.order.MaintenanceOrder; import com.hcy.common.entity.order.RoutingInspectionOrder; import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.user.User; +import com.hcy.common.enums.equipment.EquipmentStateEnum; import com.hcy.common.enums.order.MaintenanceOrderStatusEnum; 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.EquipmentMapper; import com.hcy.common.mapper.fault.FaultMapper; +import com.hcy.common.mapper.order.MaintenanceOrderMapper; import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.user.UserMapper; @@ -37,6 +41,7 @@ import org.springframework.util.Assert; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -49,6 +54,9 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde @Resource RoutingInspectionOrderMapper routingInspectionOrderMapper; + @Resource + MaintenanceOrderMapper maintenanceOrderMapper; + @Resource EquipmentMapper equipmentMapper; @@ -91,8 +99,6 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde for(RoutingInspectionOrderDto item : iPage.getRecords()) { RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo(); BeanUtils.copyProperties(item, vo); - vo.setCreateTime(String.valueOf(item.getCreateTime())); - list.add(vo); } @@ -212,6 +218,31 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde model.setFaultId(routingInspectionOrderParam.getFaultId()); // 故障id model.setFaultDescription(routingInspectionOrderParam.getFaultDescription()); // 故障描述 model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果(0=正常 1=异常) + //如果故障检测是选了异常,需要把设备状态改为报修中 + if(routingInspectionOrderParam.getInspectionResult() == OrderStateEnum.ABNORMAL.getStatus()){ + Equipment equipment = equipmentMapper.selectOne( + new QueryWrapper() + .eq("id", model.getEquipmentId()) + .eq("is_delete", 0) + .last("limit 1")); + equipment.setDeviceStatus(EquipmentStateEnum.UNDERWARRANTY.getStatus()); + equipmentMapper.updateById(equipment); + //如果故障检测异常,需要创建检修单 + MaintenanceOrder maintenanceOrder = new MaintenanceOrder(); + maintenanceOrder.setOrderNo(getOrderNo()); + + maintenanceOrder.setCreatorId(FrontThreadLocal.getUserId().longValue()); //创建人id + maintenanceOrder.setCreateTime(new Date()); //创建时间 + maintenanceOrder.setClientId(model.getClientId()); // 客户id + maintenanceOrder.setEquipmentId(model.getEquipmentId()); // 设备id + maintenanceOrder.setFaultId(model.getFaultId()); // 故障id + maintenanceOrder.setFaultDescription(model.getFaultDescription()); // 故障描述 + maintenanceOrder.setRepairWorkOrderFlow(OrderStateEnum.WORK_ORDER_TANK.getStatus()); //工单去向 0=工单池 1=检修员 + maintenanceOrder.setRemark(model.getInspectionResultRemark()); // 备注 + maintenanceOrder.setOrderSource(OrderStateEnum.MAINTENANCE_MAN_CREATION.getStatus()); //订单来源:3=检修员创建 + maintenanceOrder.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单 + maintenanceOrderMapper.insert(maintenanceOrder); + } model.setInspectionResultRemark(routingInspectionOrderParam.getInspectionResultRemark());//巡检结果备注 model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片 model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成 @@ -293,5 +324,59 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde return returnData; } + /** + * 退单 + * + * @param routingInspectionOrderParam + */ + @Override + public void checking(RoutingInspectionOrderParam routingInspectionOrderParam) { + RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( + new QueryWrapper() + .eq("id", routingInspectionOrderParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + Assert.notNull(model, "数据不存在!"); + model.setCancelOrderTime(new Date()); //退单时间 + model.setCancelCause(routingInspectionOrderParam.getCancelCause()); //取消原因 + //如果工单去向是工单池的话,退单后工单状态为待抢单,如果是检修员,工单状态是 5=已退单 + if(model.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){ + model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); //用户退单后工单状态为待抢单 + }else{ + model.setOrderStatus(OrderStateEnum.RETURNED_ORDER.getStatus()); //用户退单后工单状态为已退单 + } + + routingInspectionOrderMapper.updateById(model); + } + + private String getOrderNo() { + //获取当前日期并将其进行格式化 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); + String formatDate = simpleDateFormat.format(new Date()); + + StringBuilder currentOrderNo = new StringBuilder(formatDate + "000001"); + MaintenanceOrder lastmMaintenanceOrder = maintenanceOrderMapper.selectOne(new LambdaQueryWrapper() + .eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE) + .like(MaintenanceOrder::getOrderNo, formatDate) + .orderByDesc(MaintenanceOrder::getOrderNo) + .last("limit 1")); + //当天日期加第一条流水号,如果数据库不存在,则代表今天第一条数据 + if (lastmMaintenanceOrder == null) { + return currentOrderNo.toString(); + } else { + int lastOrderNo = Integer.parseInt(lastmMaintenanceOrder.getOrderNo().substring(8)); + int length = String.valueOf((lastOrderNo + 1)).length(); + StringBuilder newOrderNo = new StringBuilder(lastOrderNo + 1 + ""); + + //如果流水号长度小于6位,则在前面补0 + if (length < 6) { + for (int i = 0; i < 6 - length; i++) { + newOrderNo.insert(0, "0"); + } + } + + return formatDate + newOrderNo; + } + } } diff --git a/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java b/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java index 3598cb8..88743a0 100644 --- a/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java +++ b/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java @@ -82,4 +82,5 @@ public class RoutingInspectionOrderParam implements Serializable { private double longitude; //经度 private double latitude; //纬度 private Integer queryType; // 查询类型 0-离我最近 1-时间优先 + private String cancelCause; // 取消原因 } diff --git a/front/src/main/java/com/hcy/front/validate/user/UserParam.java b/front/src/main/java/com/hcy/front/validate/user/UserParam.java new file mode 100644 index 0000000..22094bc --- /dev/null +++ b/front/src/main/java/com/hcy/front/validate/user/UserParam.java @@ -0,0 +1,32 @@ +package com.hcy.front.validate.user; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * user用户参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class UserParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + private Long id; + + private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) + private String longitude; // 经度 + private String latitude; // 纬度 +} diff --git a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java index b1a4864..4b2dfc1 100644 --- a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java @@ -38,5 +38,6 @@ public class RoutingInspectionOrderDetailVo implements Serializable { private Integer inspectionResult; //巡检结果(0=正常 1=异常) private String inspectionResultRemark; //巡检结果备注 private Integer creatorId; // 创建人id - + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 } diff --git a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java index 2845648..a5ca562 100644 --- a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java +++ b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java @@ -23,10 +23,11 @@ public class RoutingInspectionOrderListVo implements Serializable { private String equipmentNo; //设备编号 private String equipmentName; //设备名称 private String detailedAddress; // 设备详细地址 - private String createTime; // 创建时间 + private Date createTime; // 创建时间 private Long orderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 private String distance; //距离 private BigDecimal orderDistance; // 订单距离 - + private Date cancelOrderTime; // 取消订单时间 + private String cancelCause; // 取消原因 } diff --git a/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java b/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java index 119de4d..cb77f82 100644 --- a/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java +++ b/front/src/main/java/com/hcy/front/vo/user/UserCenterVo.java @@ -23,4 +23,6 @@ public class UserCenterVo implements Serializable { private Long clientId; //客户id private Map roleMap; //角色信息 key:id value:name + private Integer receiveOrderStatus; //接单状态(0=休假/停止接单中 1=作业中 2=可接单) + }