【admin&front】新增&优化# 1、优化维修单详情 2、新增小程序维修单工单池、维修单列表、抢单、接单、退单 3、优化数据大屏统计维修员接口,解决多角色问题 4、优化维修单退单接口,退单时接单人、接单时间清空

dev
renfan 2024-08-28 01:23:17 +08:00
parent ebde88902d
commit 64a8aced73
36 changed files with 1945 additions and 67 deletions

View File

@ -4,21 +4,25 @@ 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.service.order.IMaintenanceOrderService;
import com.hcy.admin.service.order.IRepairOrderService;
import com.hcy.admin.service.order.IRoutingInspectionOrderService;
import com.hcy.admin.validate.client.EquipmentParam;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.MaintenanceOrderParam;
import com.hcy.admin.validate.order.RepairOrderParam;
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.RepairOrderListVo;
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 com.hcy.common.mapper.order.RepairOrderMapper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -50,6 +54,9 @@ public class LargeDataScreenController {
@Resource
IMaintenanceOrderService iMaintenanceOrderService;
@Resource
IRepairOrderService iRepairOrderService;
/**
*
*
@ -175,6 +182,18 @@ public class LargeDataScreenController {
return AjaxResult.success(list);
}
/**
*
* @param pageParam
* @param repairOrderParam
* @return
*/
@GetMapping("/repairOrderList")
public Object repairOrderList(@Validated PageParam pageParam, RepairOrderParam repairOrderParam) {
PageResult<RepairOrderListVo> list = iRepairOrderService.list(pageParam, repairOrderParam);
return AjaxResult.success(list);
}
/**
*
*
@ -198,4 +217,16 @@ public class LargeDataScreenController {
LargeDataVo largeDataVo = iLargeDataScreenService.maintenanceOrderStats(orderStastic);
return AjaxResult.success(largeDataVo);
}
/**
*
*
* @author hcy
* @return Object
*/
@GetMapping("/repairOrderStats")
public Object repairOrderStatsr(Integer orderStastic) {
LargeDataVo largeDataVo = iLargeDataScreenService.repairOrderStats(orderStastic);
return AjaxResult.success(largeDataVo);
}
}

View File

@ -63,4 +63,11 @@ public interface ILargeDataScreenService {
* @return
*/
LargeDataVo maintenanceOrderStats(Integer orderStastic);
/**
*
* @param orderStastic
* @return
*/
LargeDataVo repairOrderStats(Integer orderStastic);
}

View File

@ -13,6 +13,7 @@ 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.RepairOrder;
import com.hcy.common.entity.order.RoutingInspectionOrder;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
import com.hcy.common.enums.order.OrderStateEnum;
@ -21,6 +22,7 @@ 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.RepairOrderMapper;
import com.hcy.common.mapper.order.RoutingInspectionOrderMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper;
@ -65,6 +67,8 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
@Resource
IDevRegionService regionService;
@Resource
RepairOrderMapper repairOrderMapper;
/**
*
@ -342,5 +346,71 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
return vo;
}
/**
*
*
* @param orderStastic
* @return
*/
@Override
public LargeDataVo repairOrderStats(Integer orderStastic) {
//orderStastic 工单统计 0=日 1=月 2=年
LocalDateTime now = LocalDateTime.now();
LocalDateTime startTime = null;
LocalDateTime endTime = null;
Assert.notNull(orderStastic, "orderStastic数据不能为空");
if(orderStastic == 0){
//今日
startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN);
endTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX);
}else if(orderStastic == 1){
//当月
startTime = now.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
endTime = now.withHour(23).withMinute(59).withSecond(59);
}else if(orderStastic == 2){
//当前年份
startTime = now.withDayOfYear(1).withHour(0).withMinute(0).withSecond(0);
endTime = now.withHour(23).withMinute(59).withSecond(59);
}
//获取巡检订单总数
Integer routingInspectionOrderCount = repairOrderMapper.selectCount(
new QueryWrapper<RepairOrder>()
.eq("is_delete", 0)
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
//获取已完成订单总数
Integer doneOrderCount = repairOrderMapper.selectCount(
new QueryWrapper<RepairOrder>()
.eq("is_delete", 0)
.eq("order_status", MaintenanceOrderStatusEnum.FINISHED.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取检修中订单总数
Integer underOverhaulOrderCount = repairOrderMapper.selectCount(
new QueryWrapper<RepairOrder>()
.eq("is_delete", 0)
.eq("order_status", MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取报修中订单总数
Integer underWarrantyOrderCount = repairOrderMapper.selectCount(
new QueryWrapper<RepairOrder>()
.eq("is_delete", 0)
.ne("order_status", MaintenanceOrderStatusEnum.FINISHED.getStatus())
.ne("order_status", MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
LargeDataVo vo = new LargeDataVo();
vo.setOrderSum(routingInspectionOrderCount); //工单总数
vo.setDoneOrderSum(doneOrderCount); //已完成订单数
vo.setUnderOverhaulOrderSum(underOverhaulOrderCount); //检修中订单数
vo.setUnderWarrantyOrderSum(underWarrantyOrderCount); //报修中订单数
return vo;
}
}

View File

@ -7,15 +7,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper;
import com.hcy.admin.AdminThreadLocal;
import com.hcy.admin.service.order.IRepairOrderService;
import com.hcy.admin.service.region.IDevRegionService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.RepairOrderParam;
import com.hcy.admin.validate.order.RoutingInspectionOrderParam;
import com.hcy.admin.vo.address.UserAddressListVo;
import com.hcy.admin.vo.client.EquipmentListVo;
import com.hcy.admin.vo.order.RepairOrderListVo;
import com.hcy.admin.vo.order.RepairOrderDetailVo;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.address.UserAddress;
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.RepairOrder;
import com.hcy.common.entity.order.RoutingInspectionOrder;
@ -24,7 +29,9 @@ 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.enums.order.RepairOrderStatusEnum;
import com.hcy.common.mapper.address.UserAddressMapper;
import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.plant.PlantMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
@ -38,6 +45,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@ -62,6 +70,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource
ClientMapper clientMapper;
@Resource
UserAddressMapper userAddressMapper;
@Resource
EquipmentMapper equipmentMapper;
@Resource
private IDevRegionService regionService;
/**
*
*
@ -127,7 +144,12 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
BeanUtils.copyProperties(model, vo);
vo.setUpdateTime(model.getUpdateTime());
//客户名称
Client clientName = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", model.getClientId()));
if(clientName != null){
vo.setClientName(clientName.getClientName());
}
//创建人名称
User creatorName = userMapper.selectOne(
new QueryWrapper<User>()
@ -155,6 +177,31 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
vo.setPlantName(plant.getName());
}
}
//回寄地址
UserAddress userAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getAddressId()));
UserAddressListVo userAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(userAddress, userAddressListVo);
Map<Long, String> regionMap = regionService.getRegionMap();
userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId()));
userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId()));
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
if(userAddress != null){
vo.setAddress(userAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("id", model.getEquipmentId()));
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);
if(equipment != null){
vo.setEquipment(equipmentListVo);
}
return vo;
}
@ -172,13 +219,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
model.setOrderStatus(RepairOrderStatusEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
model.setOrderSource(OrderStateEnum.MAINTENANCE_SUPERVISOR_CREATION.getStatus()); //订单来源 5-维修主管创建
model.setRepairWorkOrderFlow(OrderStateEnum.WORK_ORDER_TANK.getStatus()); // 工单去向 0=工单池 1=检修员
model.setReceiverType(OrderStateEnum.REGIONAL_DISPATCH.getStatus()); // 接单类型 0-区域派单1-距离派单
model.setClientId(repairOrderParam.getClientId()); // 客户id
model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id
model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述
model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号
model.setBrand(repairOrderParam.getBrand()); // 品牌
model.setModuleImg(repairOrderParam.getModuleImg()); // 模块图片
model.setRemark(repairOrderParam.getRemark()); // 备注
model.setMaintenanceOrderId(repairOrderParam.getMaintenanceOrderId()); // 检修单id
@ -214,20 +261,21 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
Assert.notNull(model, "数据不存在!");
model.setClientId(repairOrderParam.getClientId()); // 客户id
model.setEquipmentId(repairOrderParam.getEquipmentId()); //设备id
model.setFaultDescription(repairOrderParam.getFaultDescription());
model.setModuleNumber(repairOrderParam.getModuleNumber());
model.setBrand(repairOrderParam.getBrand());
model.setRemark(repairOrderParam.getRemark());
model.setCreatorId(repairOrderParam.getCreatorId());
model.setUpdateTime(repairOrderParam.getUpdateTime());
model.setMaintenanceOrderId(repairOrderParam.getMaintenanceOrderId());
model.setPriorityId(repairOrderParam.getPriorityId());
model.setLogisticsMode(repairOrderParam.getLogisticsMode());
model.setExpressName(repairOrderParam.getExpressName());
model.setReturnOrNot(repairOrderParam.getReturnOrNot());
model.setAddressId(repairOrderParam.getAddressId());
model.setSiteImg(repairOrderParam.getSiteImg());
model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id
model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号
model.setBrand(repairOrderParam.getBrand()); // 品牌
model.setPriorityId(repairOrderParam.getPriorityId()); // 优先级 0-普通 1-加急
model.setLogisticsMode(repairOrderParam.getLogisticsMode()); // 物流方式 0-物流快递 1=自领带回
model.setExpressName(repairOrderParam.getExpressName()); // 快递名称
model.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
model.setRepairWorkOrderFlow(repairOrderParam.getRepairWorkOrderFlow()); // 工单去向 0=工单池 1=检修员
model.setReceiverType(repairOrderParam.getReceiverType()); // 接单类型 0-区域派单1-距离派单
model.setOrderDistance(repairOrderParam.getOrderDistance()); // 自动抢单最大距离
model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述
model.setRemark(repairOrderParam.getRemark()); // 备注
model.setAddressId(repairOrderParam.getAddressId()); // 回寄地址
repairOrderMapper.updateById(model);
}

View File

@ -95,6 +95,6 @@ public class RepairOrderParam implements Serializable {
private BigDecimal orderDistance; // 订单距离
private Long receiverId; // 接单人id
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private Long faultId; // 故障id
}

View File

@ -0,0 +1,50 @@
package com.hcy.admin.vo.address;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* UserAddressVo
*/
@Data
@ApiModel(value = "用户地址分页返回对象", description = "用户地址分页返回对象")
public class UserAddressListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "收货人")
private String contact;
@ApiModelProperty(value = "联系方式")
private String mobile;
@ApiModelProperty(value = "省id")
private Long provinceId;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市id")
private Long cityId;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "区id")
private Long districtId;
@ApiModelProperty(value = "区")
private String district;
@ApiModelProperty(value = "详细地址")
private String address;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "纬度")
private String latitude;
@ApiModelProperty(value = " 是否默认:1-是;0-否;")
private Integer isDefault;
@ApiModelProperty(value = "创建时间")
private String createTime;
@ApiModelProperty(value = "修改时间")
private String updateTime;
}

View File

@ -57,4 +57,5 @@ public class MaintenanceOrderListVo implements Serializable {
private String receiverName; // 接单人姓名
private String shortName; //客户简称
private EquipmentModelDetailVo equipmentModel; //设备模块信息
}

View File

@ -1,5 +1,9 @@
package com.hcy.admin.vo.order;
import com.hcy.admin.vo.address.UserAddressListVo;
import com.hcy.admin.vo.client.EquipmentListVo;
import com.hcy.common.entity.address.UserAddress;
import com.hcy.common.entity.client.Equipment;
import lombok.Data;
import java.io.Serializable;
@ -23,6 +27,7 @@ public class RepairOrderDetailVo implements Serializable {
private String clientName; // 客户名称
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -35,16 +40,18 @@ public class RepairOrderDetailVo implements Serializable {
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Long maintenanceOrderId; // 检修单id
private Long priorityId; // 优先级 0-普通 1-加急
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private Integer returnOrNot; // 是否回寄0=是 1=否)
private Long addressId; // 回寄地址
private String siteImg; // 现场照片
private Long plantId; // 管辖工厂
private Long plantId; // 管辖工厂
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
}

View File

@ -22,6 +22,7 @@ public class RepairOrderListVo implements Serializable {
private String clientName; // 客户名称
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -34,7 +35,7 @@ public class RepairOrderListVo implements Serializable {
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Long maintenanceOrderId; // 检修单id
private Long priorityId; // 优先级 0-普通 1-加急
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private Integer returnOrNot; // 是否回寄0=是 1=否)
@ -42,4 +43,7 @@ public class RepairOrderListVo implements Serializable {
private String siteImg; // 现场照片
private Long plantId; // 管辖工厂
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
}

View File

@ -18,6 +18,7 @@ public class OrderSparePart implements Serializable {
@TableId(value="id", type= IdType.AUTO)
private Long id; // id
private Long maintenanceOrderId; //检修单id
private Long repairOrderId; //维修单id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称

View File

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* RepairOrderDto
@ -21,6 +22,7 @@ public class RepairOrderDto implements Serializable {
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private String clientName; // 客户名称
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -42,4 +44,18 @@ public class RepairOrderDto implements Serializable {
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private String likeWork; //关键字
private String orderStatusIds; //订单状态ids
private Long equipmentProvinceId; //设备省id
private Long equipmentDistrictId; //设备区id
private Long equipmentCityId; //设备市id
private Double longitude; // 经度
private Double latitude; // 纬度
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
private Integer isClient; //是否客户 0-客户端 1-检修员端
private Integer isMaintain; //是否维修 0-维修 1-不维修
private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库
private Integer deliveryMethod; //配送方式 0-物流 1-上门取件 2-送货上门
}

View File

@ -1,6 +1,8 @@
package com.hcy.common.entity.order;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@ -23,10 +25,10 @@ public class RepairOrder implements Serializable {
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
private String moduleImg; // 模块图片
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private Long provinceId; // 省id
@ -34,8 +36,10 @@ public class RepairOrder implements Serializable {
private Long districtId; // 区id
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
@TableField(value = "receiver_id",updateStrategy = FieldStrategy.IGNORED)
private Long receiverId; // 接单人id
private Long repairId; // 返修id
@TableField(value = "receiver_time",updateStrategy = FieldStrategy.IGNORED)
private Date receiverTime; // 接单时间
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间

View File

@ -21,4 +21,12 @@ public interface OrderSparePartMapper extends IBaseMapper<OrderSparePart> {
*/
@Select("SELECT * FROM la_order_spare_part WHERE maintenance_order_id = #{maintenanceOrderId}")
List<OrderSparePart> findOrderSparePartByMaintenanceOrderId(@Param("maintenanceOrderId") Long maintenanceOrderId);
/**
* id
* @param repairOrderId id
* @return
*/
@Select("SELECT * FROM la_order_spare_part WHERE repair_order_id = #{repairOrderId}")
List<OrderSparePart> findOrderSparePartByRepairOrderId(@Param("repairOrderId") Long repairOrderId);
}

View File

@ -4,10 +4,15 @@ package com.hcy.common.mapper.order;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.RoutingInspectionOrderDto;
import com.hcy.common.dto.order.MaintenanceOrderDto;
import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.order.RepairOrder;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* Mapper
@ -15,6 +20,13 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface RepairOrderMapper extends IBaseMapper<RepairOrder> {
/**
*
* @param form
* @return
*/
List<RepairOrderDto> list(@Param("form") RepairOrderDto form);
/**
*
* @param page
@ -22,4 +34,11 @@ public interface RepairOrderMapper extends IBaseMapper<RepairOrder> {
* @return
*/
Page<RepairOrderDto> pageList(@Param("page") Page page, @Param("form") RepairOrderDto form);
/**
* id
* @return MaintenanceOrder
*/
@Select("select * from la_repair_order where is_delete = 0 and id = #{id}")
RepairOrder findMaintenanceOrderById(@Param("id") Long id);
}

View File

@ -2,6 +2,39 @@
<!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.RepairOrderMapper">
<!-- 通用查询映射结果 -->
<select id="list" resultType="com.hcy.common.dto.order.RepairOrderDto">
select
ro.*,
u1.username as creatorName,
u2.username as receiverName,
c.client_name as clientName,
e.province_id as equipmentProvinceId,
e.district_id as equipmentDistrictId,
e.city_id as equipmentCityId,
e.longitude,
e.latitude
from la_repair_order as ro
LEFT JOIN la_client as c on ro.client_id = c.id
LEFT JOIN la_equipment as e ON e.id = ro.equipment_id
LEFT JOIN la_user as u1 on ro.creator_id = u1.id
LEFT JOIN la_user as u2 on ro.receiver_id = u2.id
where
ro.is_delete = 0
<if test="form.id != null">
and ro.id = #{form.id}
</if>
<if test="form.orderNo != null and form.orderNo != ''">
and ro.order_no like concat('%', #{form.orderNo}, '%')
</if>
<if test="form.orderSource != null">
and ro.order_source = #{form.orderSource}
</if>
<if test="form.orderStatus != null">
and find_in_set(ro.order_status,#{form.orderStatus})
</if>
order by ro.create_time desc
</select>
<select id="pageList" resultType="com.hcy.common.dto.order.RepairOrderDto">
select ro.*,u1.username as creatorName,u2.username as receiverName,c.client_name as clientName
@ -32,6 +65,17 @@
<if test="form.receiverName != null and form.receiverName != ''">
and u2.username LIKE concat('%', #{form.receiverName}, '%')
</if>
<if test="form.likeWork != null and form.likeWork != ''">
and (ro.order_no like concat('%',#{form.likeWork},'%')
or u1.username LIKE concat('%', #{form.likeWork}, '%'))
</if>
<if test="form.orderStatus != null">
and find_in_set(ro.order_status,#{form.orderStatus})
</if>
<if test="form.orderStatusIds != null and form.orderStatusIds != ''">
and find_in_set(ro.order_status,#{form.orderStatusIds})
</if>
order by ro.create_time desc
</select>

View File

@ -41,9 +41,7 @@
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
AND u.is_delete = 0 and aa.role like concat('%','6','%')
ORDER BY
maintenanceCount DESC
</select>

View File

@ -1,37 +0,0 @@
package com.hcy.front.controller;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.client.IEquipmentService;
import com.hcy.front.vo.client.EquipmentDetailVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
*
*/
@RestController
@RequestMapping("api/equipment")
public class EquipmentController {
@Resource
IEquipmentService iEquipmentService;
/**
*
*
* @author hcy
* @param number ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("number") String number) {
EquipmentDetailVo detail = iEquipmentService.detail(number);
return AjaxResult.success(detail);
}
}

View File

@ -0,0 +1,52 @@
package com.hcy.front.controller.client;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.client.IClientService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.ClientDetailVo;
import com.hcy.front.vo.client.ClientListVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/client")
public class ClientController {
@Resource
IClientService iClientService;
/**
*
*
* @param pageParam
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<ClientListVo> list = iClientService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
*
*
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ClientDetailVo detail = iClientService.detail(id);
return AjaxResult.success(detail);
}
}

View File

@ -0,0 +1,68 @@
package com.hcy.front.controller.client;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.utils.QRCodeUtil;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.client.IEquipmentService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.EquipmentDetailVo;
import com.hcy.front.vo.client.EquipmentListVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/equipment")
public class EquipmentController {
@Resource
IEquipmentService iEquipmentService;
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<EquipmentListVo> list = iEquipmentService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detailById")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
EquipmentDetailVo detail = iEquipmentService.detailById(id);
return AjaxResult.success(detail);
}
/**
*
*
* @author hcy
* @param number ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("number") String number) {
EquipmentDetailVo detail = iEquipmentService.detail(number);
return AjaxResult.success(detail);
}
}

View File

@ -169,4 +169,5 @@ public class MaintenanceOrderController {
iMaintenanceOrderService.oldModuleRepair(maintenanceOrderParam);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,125 @@
package com.hcy.front.controller.order;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.order.IRepairOrderService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.order.RepairOrderParam;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
import lombok.extern.java.Log;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
*
*/
@RestController
@RequestMapping("api/order/repairOrder")
public class RepairOrderController {
@Resource
IRepairOrderService iRepairOrderService;
/**
*
*
* @param repairOrderParam
* @return Object
*/
@GetMapping("/list")
public Object list(RepairOrderParam repairOrderParam) {
return AjaxResult.success(iRepairOrderService.list(repairOrderParam));
}
/**
*
*
* @author hcy
* @param pageParam
* @param repairOrderParam
* @return Object
*/
@GetMapping("/pageList")
public Object pageList(@Validated PageParam pageParam,
RepairOrderParam repairOrderParam) {
PageResult<RepairOrderListVo> list = iRepairOrderService.pageList(pageParam, repairOrderParam);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
RepairOrderDetailVo detail = iRepairOrderService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @author hcy
* @param repairOrderParam
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = RepairOrderParam.create.class) @RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.add(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/grabTheOrder")
public Object grabTheOrder(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.grabTheOrder(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/receivingOrder")
public Object receivingOrder(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.receivingOrder(repairOrderParam);
return AjaxResult.success();
}
/**
* 退
* @param repairOrderParam
* @return Object
*/
@PostMapping("/refundOrder")
public Object refundOrder(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.refundOrder(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/faultDetect")
public Object faultDetect(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.faultDetect(repairOrderParam);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,36 @@
package com.hcy.front.service.client;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.ClientDetailVo;
import com.hcy.front.vo.client.ClientListVo;
import java.util.Map;
/**
*
*/
public interface IClientService {
/**
*
*
* @param pageParam
* @param params
* @return PageResult<ClientVo>
*/
PageResult<ClientListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @param id ID
* @return Client
*/
ClientDetailVo detail(Integer id);
}

View File

@ -1,7 +1,12 @@
package com.hcy.front.service.client;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.EquipmentDetailVo;
import com.hcy.front.vo.client.EquipmentListVo;
import java.util.Map;
/**
*
@ -16,5 +21,8 @@ public interface IEquipmentService {
* @return Equipment
*/
EquipmentDetailVo detail(String number);
PageResult<EquipmentListVo> list(PageParam pageParam, Map<String, String> params);
EquipmentDetailVo detailById(Integer id);
}

View File

@ -0,0 +1,147 @@
package com.hcy.front.service.client.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.client.Client;
import com.hcy.common.entity.client.ClientContacts;
import com.hcy.common.entity.client.Equipment;
import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.client.ClientContactsMapper;
import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.front.service.client.IClientService;
import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.ClientDetailVo;
import com.hcy.front.vo.client.ClientListVo;
import org.apache.commons.lang3.StringUtils;
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;
import java.util.Map;
/**
*
*/
@Service
public class ClientServiceImpl implements IClientService {
@Resource
ClientMapper clientMapper;
@Resource
private IDevRegionService regionService;
@Resource
EquipmentMapper equipmentMapper;
@Resource
ClientContactsMapper clientContactsMapper;
/**
*
*
* @param pageParam
* @param params
* @return PageResult<ClientListVo>
*/
@Override
public PageResult<ClientListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
String clientId = params.get("id");
String clientNo = params.get("clientNo");
String clientName = params.get("clientName");
QueryWrapper<Client> 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);
queryWrapper.orderByDesc("id");
clientMapper.setSearch(queryWrapper, params, new String[]{
"=:userId@user_id:long",
"like:clientNo@client_no:str",
"like:clientName@client_name:str",
"=:director:str",
"=:phone:str",
"=:provinceId@province_id:long",
"=:cityId@city_id:long",
"=:districtId@district_id:long",
"=:address:str",
"=:clientType@client_type:int",
"=:maintainType@maintain_type:int",
"=:purchaseDivisor@purchase_divisor:str",
"=:remark:str",
"=:creatorId@creator_id:long",
});
IPage<Client> iPage = clientMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<ClientListVo> list = new LinkedList<>();
Map<Long, String> regionMap = regionService.getRegionMap();
for(Client item : iPage.getRecords()) {
ClientListVo vo = new ClientListVo();
BeanUtils.copyProperties(item, vo);
vo.setProvince(regionMap.get(vo.getProvinceId()));
vo.setCity(regionMap.get(vo.getCityId()));
vo.setDistrict(regionMap.get(vo.getDistrictId()));
//获取客户所有设备
List<Equipment> equipment = equipmentMapper.selectList(
new QueryWrapper<Equipment>()
.eq("client_id", item.getId())
.eq("is_delete", GlobalConstant.NOT_DELETE));
vo.setEquipmentList(equipment);
//获取联系人列表
List<ClientContacts> clientContacts = clientContactsMapper.selectList(
new QueryWrapper<ClientContacts>()
.eq("client_id", item.getId())
.eq("is_delete", GlobalConstant.NOT_DELETE));
if(clientContacts != null){
vo.setClientContactsList(clientContacts);
}
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @param id
* @return Client
*/
@Override
public ClientDetailVo detail(Integer id) {
Client model = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", id)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
ClientDetailVo vo = new ClientDetailVo();
BeanUtils.copyProperties(model, vo);
Map<Long, String> regionMap = regionService.getRegionMap();
vo.setProvince(regionMap.get(vo.getProvinceId()));
vo.setCity(regionMap.get(vo.getCityId()));
vo.setDistrict(regionMap.get(vo.getDistrictId()));
return vo;
}
}

View File

@ -7,14 +7,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.client.Client;
import com.hcy.common.entity.client.Equipment;
import com.hcy.common.entity.client.EquipmentModel;
import com.hcy.common.entity.user.User;
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.client.EquipmentModelMapper;
import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.utils.StringUtil;
import com.hcy.common.utils.TimeUtil;
import com.hcy.front.service.client.IEquipmentService;
import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.vo.client.EquipmentDetailVo;
import com.hcy.front.vo.client.EquipmentListVo;
import com.hcy.front.vo.client.EquipmentModelDetailVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
@ -34,28 +41,98 @@ public class EquipmentServiceImpl implements IEquipmentService {
EquipmentMapper equipmentMapper;
@Resource
private IDevRegionService regionService;
ClientMapper clientMapper;
@Resource
ClientMapper clientMapper;
IDevRegionService regionService;
@Resource
EquipmentModelMapper equipmentModelMapper;
@Resource
UserMapper userMapper;
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return PageResult<EquipmentListVo>
*/
@Override
public PageResult<EquipmentListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<Equipment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
equipmentMapper.setSearch(queryWrapper, params, new String[]{
"like:number:str",
"like:name:str",
"=:clientId@client_id:int",
"like:clientName@client_name:str",
"=:deviceStatus@device_status:int",
"datetime:createTimeStart-createTimeEnd@create_time:str",
});
IPage<Equipment> iPage = equipmentMapper.selectPage(new Page<>(page, limit), queryWrapper);
Map<Long, String> regionMap = regionService.getRegionMap();//获取省市区
List<EquipmentListVo> list = new LinkedList<>();
for(Equipment item : iPage.getRecords()) {
EquipmentListVo vo = new EquipmentListVo();
BeanUtils.copyProperties(item, vo);
vo.setProvince(regionMap.get(vo.getProvinceId()));
vo.setCity(regionMap.get(vo.getCityId()));
vo.setDistrict(regionMap.get(vo.getDistrictId()));
//获取客户名称
Client client = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", item.getClientId())
.last("limit 1"));
if (client != null){
vo.setClientName(client.getClientName());
}
//设置设备模块信息
EquipmentModel equipmentModel = equipmentModelMapper.findEquipmentModelByEquipmentId(vo.getId());
EquipmentModelDetailVo equipmentModelDetailVo = new EquipmentModelDetailVo();
if(equipmentModel != null){
BeanUtils.copyProperties(equipmentModel, equipmentModelDetailVo);
User insetallUser = userMapper.selectById(equipmentModel.getUserId());
equipmentModelDetailVo.setInstallationName(insetallUser.getUsername());
}
//设置设备模块信息
vo.setEquipmentModel(equipmentModelDetailVo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @author hcy
* @param number
* @param id
* @return Equipment
*/
@Override
public EquipmentDetailVo detail(String number) {
public EquipmentDetailVo detailById(Integer id) {
Equipment model = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("number", number)
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
Map<Long, String> regionMap = regionService.getRegionMap();
Map<Long, String> regionMap = regionService.getRegionMap();//获取省市区
EquipmentDetailVo vo = new EquipmentDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setProvince(regionMap.get(vo.getProvinceId()));
@ -64,4 +141,29 @@ public class EquipmentServiceImpl implements IEquipmentService {
return vo;
}
/**
*
*
* @author hcy
* @param number
* @param number
* @return Equipment
*/
@Override
public EquipmentDetailVo detail(String number) {
Equipment model = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("number", number)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
Map<Long, String> regionMap = regionService.getRegionMap();//获取省市区
EquipmentDetailVo vo = new EquipmentDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setProvince(regionMap.get(vo.getProvinceId()));
vo.setCity(regionMap.get(vo.getCityId()));
vo.setDistrict(regionMap.get(vo.getDistrictId()));
return vo;
}
}

View File

@ -0,0 +1,75 @@
package com.hcy.front.service.order;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RepairOrderParam;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
import java.util.List;
/**
*
*/
public interface IRepairOrderService {
/**
*
*
* @author hcy
* @param pageParam
* @param repairOrderParam
* @return PageResult<RepairOrderVo>
*/
PageResult<RepairOrderListVo> pageList(PageParam pageParam, RepairOrderParam repairOrderParam);
/**
*
*
* @author hcy
* @param id ID
* @return RepairOrder
*/
RepairOrderDetailVo detail(Integer id);
/**
*
*
* @author hcy
* @param repairOrderParam
*/
void add(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void grabTheOrder(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void receivingOrder(RepairOrderParam repairOrderParam);
/**
* 退
* @param repairOrderParam
*/
void refundOrder(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void faultDetect(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
* @return
*/
List<RepairOrderListVo> list(RepairOrderParam repairOrderParam);
}

View File

@ -0,0 +1,494 @@
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.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.dto.order.MaintenanceOrderDto;
import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.address.UserAddress;
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.RepairOrder;
import com.hcy.common.entity.plant.Plant;
import com.hcy.common.entity.sparePart.SparePart;
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.RepairOrderStatusEnum;
import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.address.UserAddressMapper;
import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.common.mapper.order.OrderSparePartMapper;
import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.plant.PlantMapper;
import com.hcy.common.mapper.sparePart.SparePartMapper;
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.IRepairOrderService;
import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.order.RepairOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.address.UserAddressListVo;
import com.hcy.front.vo.client.EquipmentListVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
import com.sun.xml.internal.ws.resources.AddressingMessages;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
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;
/**
*
*/
@Service
public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource
RepairOrderMapper repairOrderMapper;
@Resource
SystemAuthAdminMapper systemAuthAdminMapper;
@Resource
PlantMapper plantMapper;
@Resource
UserMapper userMapper;
@Resource
ClientMapper clientMapper;
@Resource
private IDevRegionService regionService;
@Resource
UserAddressMapper userAddressMapper;
@Resource
EquipmentMapper equipmentMapper;
@Resource
SparePartMapper sparePartMapper;
@Resource
OrderSparePartMapper orderSparePartMapper;
private final DecimalFormat df = new DecimalFormat ("#.#");
/**
*
*
* @param repairOrderParam
* @return
*/
@Override
public List<RepairOrderListVo> list(RepairOrderParam repairOrderParam) {
RepairOrderDto repairOrderDto = new RepairOrderDto();
BeanUtils.copyProperties(repairOrderParam,repairOrderDto);
//默认查询订单状态
List<RepairOrderDto> repairOrderDtoList = repairOrderMapper.list(repairOrderDto);
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId());
List<RepairOrderListVo> returnData = new LinkedList<>();
for (RepairOrderDto item : repairOrderDtoList) {
if(repairOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
//判断抢单距离大于订单距离则返回订单
double distance = ToolsUtil.getDistance(item.getLongitude(), item.getLatitude()
, repairOrderParam.getLongitude(), repairOrderParam.getLatitude());
if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){
if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) &&
item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) &&
item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){
// 计算距离
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(distance);
returnData.add(vo);
}
}else{
if(item.getOrderDistance().compareTo(BigDecimal.valueOf((distance / 1000))) >= 0){
// 计算距离
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(distance);
returnData.add(vo);
}
}
}else{
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
returnData.add(vo);
}
}
if(repairOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
//按距离排序
returnData = returnData.stream()
.sorted(Comparator.comparing(RepairOrderListVo::getDistance))
.collect(Collectors.toList());
//将米数转换为km
for (RepairOrderListVo repairOrderListVo : returnData) {
if(repairOrderListVo.getDistance() != null){
double distance = repairOrderListVo.getDistance();
if(distance < 1000){
repairOrderListVo.setPracticalDistance(df.format(distance) + "米");
}else{
double km = distance / 1000;
repairOrderListVo.setPracticalDistance(df.format(km) + "km");
}
}
}
}
return returnData;
}
/**
*
*
* @author hcy
* @param pageParam
* @param repairOrderParam
* @return PageResult<RepairOrderListVo>
*/
@Override
public PageResult<RepairOrderListVo> pageList(PageParam pageParam, RepairOrderParam repairOrderParam) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
RepairOrderDto repairOrderDto = new RepairOrderDto();
BeanUtils.copyProperties(repairOrderParam,repairOrderDto);
if(repairOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){
repairOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue());
if(StringUtils.isEmpty(repairOrderParam.getOrderStatusIds())){
repairOrderDto.setOrderStatusIds("1,2,7,8");
}
}else{
if(StringUtils.isEmpty(repairOrderParam.getOrderStatusIds())){
repairOrderDto.setOrderStatusIds("0,1,2,7,8");
}
repairOrderDto.setClientId(repairOrderDto.getClientId());
}
IPage<RepairOrderDto> iPage = repairOrderMapper.pageList(new Page<>(page, limit), repairOrderDto);
List<RepairOrderListVo> list = new LinkedList<>();
for(RepairOrderDto item : iPage.getRecords()) {
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
//管辖工厂
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
.eq("user_id", vo.getCreatorId()));
if(authAdmin != null){
Plant plant = plantMapper.selectOne(
new QueryWrapper<Plant>()
.eq("id", authAdmin.getPlantId()));
if(plant != null){
vo.setPlantId(plant.getId());
vo.setPlantName(plant.getName());
}
}
vo.setCreateTime(item.getCreateTime());
vo.setUpdateTime(item.getUpdateTime());
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @author hcy
* @param id
* @return RepairOrder
*/
@Override
public RepairOrderDetailVo detail(Integer id) {
RepairOrder model = repairOrderMapper.selectOne(
new QueryWrapper<RepairOrder>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
RepairOrderDetailVo vo = new RepairOrderDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setUpdateTime(model.getUpdateTime());
//客户名称
Client clientName = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", model.getClientId()));
if(clientName != null){
vo.setClientName(clientName.getClientName());
}
//创建人名称
User creatorName = userMapper.selectOne(
new QueryWrapper<User>()
.eq("id", model.getCreatorId()));
if(creatorName != null){
vo.setCreatorName(creatorName.getUsername());
}
//接单人名称
User user = userMapper.selectOne(
new QueryWrapper<User>()
.eq("id", model.getReceiverId()));
if(user != null){
vo.setReceiverName(user.getUsername());
}
//管辖工厂
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
.eq("user_id", vo.getCreatorId()));
if(authAdmin != null){
Plant plant = plantMapper.selectOne(
new QueryWrapper<Plant>()
.eq("id", authAdmin.getPlantId()));
if(plant != null){
vo.setPlantId(plant.getId());
vo.setPlantName(plant.getName());
}
}
//回寄地址
UserAddress userAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getAddressId()));
UserAddressListVo userAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(userAddress, userAddressListVo);
Map<Long, String> regionMap = regionService.getRegionMap();
userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId()));
userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId()));
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
if(userAddress != null){
vo.setAddress(userAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("id", model.getEquipmentId()));
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);
if(equipment != null){
vo.setEquipment(equipmentListVo);
}
return vo;
}
/**
*
*
* @author hcy
* @param repairOrderParam
*/
@Override
public void add(RepairOrderParam repairOrderParam) {
RepairOrder model = new RepairOrder();
model.setOrderNo(getOrderNo()); //工单编号
model.setOrderStatus(RepairOrderStatusEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
model.setOrderSource(OrderStateEnum.MAINTENANCE_SUPERVISOR_CREATION.getStatus()); //订单来源 5-维修主管创建
model.setRepairWorkOrderFlow(OrderStateEnum.WORK_ORDER_TANK.getStatus()); // 工单去向 0=工单池 1=检修员
model.setReceiverType(OrderStateEnum.REGIONAL_DISPATCH.getStatus()); // 接单类型 0-区域派单1-距离派单
model.setClientId(repairOrderParam.getClientId()); // 客户id
model.setEquipmentId(repairOrderParam.getEquipmentId()); // 设备id
model.setFaultDescription(repairOrderParam.getFaultDescription()); // 故障描述
model.setModuleNumber(repairOrderParam.getModuleNumber()); // 模块号
model.setBrand(repairOrderParam.getBrand()); // 品牌
model.setRemark(repairOrderParam.getRemark()); // 备注
model.setMaintenanceOrderId(repairOrderParam.getMaintenanceOrderId()); // 检修单id
model.setPriorityId(repairOrderParam.getPriorityId()); // 优先级 0-普通 1-加急
model.setLogisticsMode(repairOrderParam.getLogisticsMode()); // 物流方式 0-物流快递 1=自领带回
model.setExpressName(repairOrderParam.getExpressName()); // 快递名称
model.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
model.setAddressId(repairOrderParam.getAddressId()); // 回寄地址
model.setSiteImg(repairOrderParam.getSiteImg()); // 现场照片
// 获取当前的用户
model.setCreatorId(FrontThreadLocal.getUserId().longValue()); // 创建人id
model.setCreateTime(new Date()); //创建时间
repairOrderMapper.insert(model);
}
/**
*
* @param repairOrderParam
*/
@Override
public void grabTheOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus()
&& repairOrder.getReceiverId() == null){
repairOrder.setReceiverId(FrontThreadLocal.getUserId().longValue());
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus());
repairOrder.setReceiverTime(new Date());
repairOrderMapper.updateById(repairOrder);
}else{
throw new OperateException("订单已被其他人抢走");
}
}
/**
*
* @param repairOrderParam
*/
@Override
public void receivingOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus());
repairOrder.setReceiverTime(new Date());
repairOrderMapper.updateById(repairOrder);
}else{
throw new OperateException("订单状态不正确");
}
}
/**
* 退
* @param repairOrderParam
*/
@Override
public void refundOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.notNull(repairOrderParam.getCancelCause(), "退单原因不可为空");
repairOrder.setCancelOrderTime(new Date()); //取消时间
repairOrder.setCancelCause(repairOrderParam.getCancelCause()); //取消原因
if(repairOrderParam.getIsClient() == MaintenanceOrderStatusEnum.CLIENT.getStatus()){
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus() ||
repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CLOSED.getStatus());
repairOrderMapper.updateById(repairOrder);
}else{
throw new OperateException("当前订单状态不可退单");
}
}else {
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.CHECKING.getStatus() ||
repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
if(repairOrder.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAITING_LIST.getStatus());
repairOrder.setReceiverId(null);
repairOrder.setReceiverTime(null);
}else{
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHARGEBACK.getStatus());
}
repairOrderMapper.updateById(repairOrder);
}else{
throw new OperateException("当前订单状态不可退单");
}
}
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void faultDetect(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
for (SparePartParam item : repairOrderParam.getSparePartParams()) {
SparePart sparePart = sparePartMapper.findSparePartById(item.getId());
OrderSparePart orderSparePart = new OrderSparePart();
BeanUtils.copyProperties(sparePart, orderSparePart);
orderSparePart.setId(null);
orderSparePart.setRepairOrderId(repairOrder.getId());
orderSparePart.setSparePartsId(item.getId());
orderSparePart.setWarehouseId(sparePart.getWarehouseId());
orderSparePart.setQuantity(item.getQuantity());
orderSparePartMapper.insert(orderSparePart);
}
repairOrder.setFaultId(repairOrderParam.getFaultId()); //故障原因id
repairOrder.setPreMaintenanceImg(repairOrderParam.getPreMaintenanceImg()); // 维修前图片
repairOrder.setFaultPointImg(repairOrderParam.getFaultPointImg()); //故障点图片
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setScrapFaultId(repairOrderParam.getScrapFaultId()); // 报废类型id
repairOrder.setScrapAddress(repairOrderParam.getScrapAddress()); // 报废地址
repairOrder.setScrapExplain(repairOrderParam.getScrapExplain()); // 报废说明
repairOrderMapper.updateById(repairOrder);
}
/**
*
* @return
*/
private String getOrderNo() {
//获取当前日期并将其进行格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String formatDate = simpleDateFormat.format(new Date());
StringBuilder currentOrderNo = new StringBuilder(formatDate + "000001");
RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.like(RepairOrder::getOrderNo, formatDate)
.orderByDesc(RepairOrder::getOrderNo)
.last("limit 1"));
//当天日期加第一条流水号,如果数据库不存在,则代表今天第一条数据
if (repairOrder == null) {
return currentOrderNo.toString();
} else {
int lastOrderNo = Integer.parseInt(repairOrder.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;
}
}
}

View File

@ -0,0 +1,89 @@
package com.hcy.front.validate.client;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ClientParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
private Long userId;
@NotNull(message = "clientNo参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "clientNo参数值不能少于0", groups = {create.class, update.class})
private String clientNo;
@NotNull(message = "clientName参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "clientName参数不能超出50个字符", groups = {create.class, update.class})
private String clientName;
@NotNull(message = "director参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "director参数不能超出50个字符", groups = {create.class, update.class})
private String director;
private String directorStaffId;
@NotNull(message = "phone参数缺失", groups = {create.class, update.class})
@Length(max = 11, message = "phone参数不能超出11个字符", groups = {create.class, update.class})
private String phone;
@NotNull(message = "provinceId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "provinceId参数值不能少于0", groups = {create.class, update.class})
private Long provinceId;
@NotNull(message = "cityId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "cityId参数值不能少于0", groups = {create.class, update.class})
private Long cityId;
@NotNull(message = "districtId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "districtId参数值不能少于0", groups = {create.class, update.class})
private Long districtId;
@NotNull(message = "address参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "address参数不能超出255个字符", groups = {create.class, update.class})
private String address;
@NotNull(message = "clientType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "clientType参数值不能少于0", groups = {create.class, update.class})
private Integer clientType;
@NotNull(message = "maintainType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "maintainType参数值不能少于0", groups = {create.class, update.class})
private Integer maintainType;
@NotNull(message = "purchaseDivisor参数缺失", groups = {create.class, update.class})
private BigDecimal purchaseDivisor;
@NotNull(message = "pointMaintainDivisor参数缺失", groups = {create.class, update.class})
private BigDecimal pointMaintainDivisor;
@NotNull(message = "partMaintainDivisor参数缺失", groups = {create.class, update.class})
private BigDecimal partMaintainDivisor;
@NotNull(message = "remark参数缺失", groups = {create.class, update.class})
@Length(max = 250, message = "remark参数不能超出250个字符", groups = {create.class, update.class})
private String remark;
private Long creatorId;
private String shortName; // 客户简称
}

View File

@ -0,0 +1,80 @@
package com.hcy.front.validate.client;
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.util.List;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class EquipmentParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
@DecimalMin(value = "0", message = "clientId参数值不能少于0", groups = {create.class, update.class})
private Long clientId;
@DecimalMin(value = "0", message = "moduleId参数值不能少于0", groups = {create.class, update.class})
private Long moduleId;
private String number;
@Length(max = 255, message = "name参数不能超出255个字符", groups = {create.class, update.class})
private String name;
@Length(max = 255, message = "model参数不能超出255个字符", groups = {create.class, update.class})
private String model;
@Length(max = 255, message = "manufacturers参数不能超出255个字符", groups = {create.class, update.class})
private String manufacturers;
@Length(max = 255, message = "specification参数不能超出255个字符", groups = {create.class, update.class})
private String specification;
@DecimalMin(value = "0", message = "deviceStatus参数值不能少于0", groups = {create.class, update.class})
private Integer deviceStatus;
@Length(max = 24, message = "longitude参数不能超出24个字符", groups = {create.class, update.class})
private String longitude;
@Length(max = 24, message = "latitude参数不能超出24个字符", groups = {create.class, update.class})
private String latitude;
@DecimalMin(value = "0", message = "provinceId参数值不能少于0", groups = {create.class, update.class})
private Long provinceId;
@DecimalMin(value = "0", message = "districtId参数值不能少于0", groups = {create.class, update.class})
private Long districtId;
@DecimalMin(value = "0", message = "cityId参数值不能少于0", groups = {create.class, update.class})
private Long cityId;
@Length(max = 255, message = "detailedAddress参数不能超出255个字符", groups = {create.class, update.class})
private String detailedAddress;
@DecimalMin(value = "0", message = "inspectionCycle参数值不能少于0", groups = {create.class, update.class})
private Integer inspectionCycle;
@DecimalMin(value = "0", message = "dailyAudit参数值不能少于0", groups = {create.class, update.class})
private Integer dailyAudit;
@Length(max = 255, message = "deviceCode参数不能超出255个字符", groups = {create.class, update.class})
private String deviceCode;
private List<Integer> ids; //批量停用
private String clientName; // 客户名称
}

View File

@ -0,0 +1,124 @@
package com.hcy.front.validate.order;
import com.hcy.front.validate.warehouse.SparePartParam;
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;
import java.util.List;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class RepairOrderParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
@Length(max = 50, message = "orderNo参数不能超出50个字符", groups = {create.class, update.class})
private String orderNo;
@DecimalMin(value = "0", message = "orderSource参数值不能少于0", groups = {create.class, update.class})
private Integer orderSource;
@DecimalMin(value = "0", message = "orderStatus参数值不能少于0", groups = {create.class, update.class})
private Integer orderStatus;
@DecimalMin(value = "0", message = "clientId参数值不能少于0", groups = {create.class, update.class})
private Long clientId;
@DecimalMin(value = "0", message = "equipmentId参数值不能少于0", groups = {create.class, update.class})
private Long equipmentId;
@Length(max = 32, message = "clientName参数不能超出32个字符", groups = {create.class, update.class})
private String clientName;
@Length(max = 32, message = "clientContacts参数不能超出32个字符", groups = {create.class, update.class})
private String clientContacts;
@Length(max = 32, message = "clientPhone参数不能超出32个字符", groups = {create.class, update.class})
private String clientPhone;
@Length(max = 250, message = "faultDescription参数不能超出250个字符", groups = {create.class, update.class})
private String faultDescription;
@Length(max = 32, message = "moduleNumber参数不能超出32个字符", groups = {create.class, update.class})
private String moduleNumber;
@Length(max = 32, message = "brand参数不能超出32个字符", groups = {create.class, update.class})
private String brand;
@Length(max = 250, message = "remark参数不能超出250个字符", groups = {create.class, update.class})
private String remark;
@DecimalMin(value = "0", message = "creatorId参数值不能少于0", groups = {create.class, update.class})
private Long creatorId;
private Date createTime;
private Date updateTime;
@DecimalMin(value = "0", message = "maintenanceOrderId参数值不能少于0", groups = {create.class, update.class})
private Long maintenanceOrderId;
@DecimalMin(value = "0", message = "priorityId参数值不能少于0", groups = {create.class, update.class})
private Integer priorityId;
@Length(max = 50, message = "expressName参数不能超出50个字符", groups = {create.class, update.class})
private String expressName;
@DecimalMin(value = "0", message = "returnOrNot参数值不能少于0", groups = {create.class, update.class})
private Integer returnOrNot;
@DecimalMin(value = "0", message = "addressId参数值不能少于0", groups = {create.class, update.class})
private Long addressId;
@Length(max = 255, message = "siteImg参数不能超出255个字符", groups = {create.class, update.class})
private String siteImg;
private String equipmentName; // 设备名称
private String moduleImg; // 模块图片
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String creatorName; // 创建人名称
private String receiverName; //接单人名称
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private Long receiverId; // 接单人id
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private String likeWork; //关键字
private String orderStatusIds; //订单状态ids
private Double longitude; // 经度
private Double latitude; // 纬度
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
private Long faultId; // 故障id
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
//服务报价列表
private List<SparePartParam> sparePartParams;
private Integer isClient; //是否客户 0-客户端 1-检修员端
private Integer isMaintain; //是否维修 0-维修 1-不维修
private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库
private Integer deliveryMethod; //配送方式 0-物流 1-上门取件 2-送货上门
private String preMaintenanceImg; // 维修前照片
private String faultPointImg; // 故障点照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private Long scrapFaultId; // 报废类型id
private String scrapAddress; // 报废地址
private String scrapExplain; // 报废说明
}

View File

@ -0,0 +1,39 @@
package com.hcy.front.vo.client;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* ClientVo
*/
@Data
public class ClientDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long userId; // 用户id
private String clientNo; // 客户编号
private String clientName; // 客户名称
private String director; // 负责人
private String directorStaffId; // 负责员工id
private String phone; // 联系电话
private Long provinceId; // 省id
private Long cityId; // 市id
private Long districtId; // 区id
private String province; // 省
private String city; // 市
private String district; // 区
private String address; // 详细地址
private Integer clientType; // 桩点维修类型 0-全包 1-半包
private Integer maintainType; // 模块维修类型 0-全包 1-半包
private BigDecimal purchaseDivisor; // 配件采购价格因子
private BigDecimal pointMaintainDivisor; // 桩点维修价格因子
private BigDecimal partMaintainDivisor; // 配件维修价格因子
private String remark; // 备注
private Long creatorId; // 创建人id
private String shortName; // 客户简称
}

View File

@ -0,0 +1,46 @@
package com.hcy.front.vo.client;
import com.hcy.common.entity.client.ClientContacts;
import com.hcy.common.entity.client.Equipment;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* ClientVo
*/
@Data
public class ClientListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long userId; // 用户id
private String clientNo; // 客户编号
private String clientName; // 客户名称
private String director; // 负责人
private String directorStaffId; // 负责员工id
private String phone; // 联系电话
private Long provinceId; // 省id
private Long cityId; // 市id
private Long districtId; // 区id
private String province; // 省
private String city; // 市
private String district; // 区
private String address; // 详细地址
private Integer clientType; // 桩点维修类型 0-全包 1-半包
private Integer maintainType; // 模块维修类型 0-全包 1-半包
private BigDecimal purchaseDivisor; // 配件采购价格因子
private BigDecimal pointMaintainDivisor; // 桩点维修价格因子
private BigDecimal partMaintainDivisor; // 配件维修价格因子
private String remark; // 备注
private Long creatorId; // 创建人id
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private List<Equipment> equipmentList; //设备列表
private String shortName; // 客户简称
private List<ClientContacts> clientContactsList; //联系人列表
}

View File

@ -35,4 +35,7 @@ public class EquipmentListVo implements Serializable {
private String deviceCode; // 设备码
private String createTime; // 创建时间
private String clientName; // 客户名称
private EquipmentModelDetailVo equipmentModel; //设备模块信息
}

View File

@ -15,6 +15,7 @@ public class OrderSparePartListVo implements Serializable {
private Long id; // id
private Long maintenanceOrderId; //检修单id
private Long repairOrderId; //维修单id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称

View File

@ -0,0 +1,57 @@
package com.hcy.front.vo.order;
import com.hcy.common.entity.address.UserAddress;
import com.hcy.common.entity.client.Equipment;
import com.hcy.front.vo.address.UserAddressListVo;
import com.hcy.front.vo.client.EquipmentListVo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* RepairOrderVo
*/
@Data
public class RepairOrderDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String orderNo; // 订单编号
private Integer orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private String clientName; // 客户名称
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
private Long receiverId; // 接单人id
private String receiverName; //接单人名称
private Date receiverTime; // 接单时间
private String remark; // 备注
private Long creatorId; // 创建人id
private String creatorName; // 创建人名称
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Long maintenanceOrderId; // 检修单id
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private Integer returnOrNot; // 是否回寄0=是 1=否)
private Long addressId; // 回寄地址
private String siteImg; // 现场照片
private Long plantId; // 管辖工厂
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
}

View File

@ -0,0 +1,60 @@
package com.hcy.front.vo.order;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* RepairOrderVo
*/
@Data
public class RepairOrderListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String orderNo; // 订单编号
private Integer orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private String clientName; // 客户名称
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
private Long receiverId; // 接单人id
private String receiverName; //接单人名称
private Date receiverTime; // 接单时间
private String remark; // 备注
private Long creatorId; // 创建人id
private String creatorName; // 创建人名称
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Long maintenanceOrderId; // 检修单id
private Long priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private Integer returnOrNot; // 是否回寄0=是 1=否)
private Long addressId; // 回寄地址
private String siteImg; // 现场照片
private Long plantId; // 管辖工厂
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private Integer isMaintain; //是否维修 0-维修 1-不维修
private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库
private Double distance; //距离
private String practicalDistance; //实际距离
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String faultName; //故障名称
private String equipmentNo; //设备编号
private String equipmentName; //设备名称
private String detailedAddress; //设备详情地址
}