【admin&front】新增&优化# 1、新增小程序-检修单、维修单、巡检单状态数量统计 2、优化小程序维修单故障检测 3、优化数据大屏维修单列表、巡检单列表、设备列表、总工单数、今日工单数 4、新增小程序维修单确认服务报价、确认报废、重新检测、修改服务报价、退回维修员、上传维修中、维修后照片、填写报废单、填写回单

dev
renfan 2024-08-29 00:46:36 +08:00
parent 64a8aced73
commit 073ae3bb1b
37 changed files with 827 additions and 51 deletions

View File

@ -2,6 +2,7 @@ package com.hcy.admin.controller.order;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.order.IRepairOrderService;
import com.hcy.admin.validate.order.MaintenanceOrderParam;
import com.hcy.admin.validate.order.RepairOrderParam;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.RoutingInspectionOrderParam;
@ -138,4 +139,29 @@ public class RepairOrderController {
return AjaxResult.success();
}
/**
*
*
* @param repairOrderParam
* @return Object
*/
@Log(title = "更新服务报价")
@PostMapping("/updateServiceOfferPrice")
public Object updateServiceOfferPrice(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.updateServiceOfferPrice(repairOrderParam);
return AjaxResult.success();
}
/**
* 退
*
* @param repairOrderParam
* @return Object
*/
@Log(title = "退回检修")
@PostMapping("/returnRepair")
public Object returnRepair(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.returnRepair(repairOrderParam);
return AjaxResult.success();
}
}

View File

@ -386,6 +386,12 @@ public class EquipmentServiceImpl implements IEquipmentService {
vo.setCity(regionMap.get(vo.getCityId()));
vo.setDistrict(regionMap.get(vo.getDistrictId()));
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
//客户名称/客户简称
Client client = clientMapper.selectOne(
new LambdaQueryWrapper<Client>()
.eq(Client::getId, item.getClientId()));
vo.setClientName(client.getClientName());
vo.setShortName(client.getShortName());
list.add(vo);
}

View File

@ -1,5 +1,6 @@
package com.hcy.admin.service.largeDataScreen.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hcy.admin.service.largeDataScreen.ILargeDataScreenService;
import com.hcy.admin.service.region.IDevRegionService;
@ -7,6 +8,7 @@ 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.constant.GlobalConstant;
import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.dto.result.UserLargeDataDto;
@ -155,20 +157,24 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
//客户总数
Integer clientCount = clientMapper.selectCount(
new QueryWrapper<Client>()
.eq("is_delete", 0));
.eq("is_delete", GlobalConstant.NOT_DELETE));
//设备总数
Integer equipmentCount = equipmentMapper.selectCount(
new QueryWrapper<Equipment>()
.eq("is_delete", 0));
.eq("is_delete", GlobalConstant.NOT_DELETE));
//工单总数=检修单总数+维修单总数+巡检单总数
//巡检单总数
Integer routingInspectionOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0));
.eq("is_delete", GlobalConstant.NOT_DELETE));
//检修单总数
Integer maintenanceOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0));
.eq("is_delete", GlobalConstant.NOT_DELETE));
//维修单总数
Integer repairOrderCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE));
//今日工单总数=今日检修单总数+今日维修单总数+今日巡检单总数
LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN);
@ -176,19 +182,26 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
//今日检修单总数
Integer todayRoutingInspectionOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//今日检修单总数
Integer todayMaintenanceOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.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);
//今日维修单总数
Integer todayRepairOrderCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.ge(RepairOrder::getCreateTime, Timestamp.valueOf(startTime))
.le(RepairOrder::getCreateTime, Timestamp.valueOf(endTime)));
vo.setClientSum(clientCount); // 客户总数
vo.setEquipmentSum(equipmentCount); // 设备总数
vo.setOrderSum(routingInspectionOrderCount + maintenanceOrderCount + repairOrderCount); // 工单总数
vo.setTodayOrderSum(todayRoutingInspectionOrderCount + todayMaintenanceOrderCount + todayRepairOrderCount); // 今日工单总数
return vo;
}
@ -246,28 +259,28 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
//获取巡检订单总数
Integer routingInspectionOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-巡检中4-已完成5-已退单6-待巡检
//获取已完成订单总数
Integer doneOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.eq("order_status", OrderStateEnum.COMPLETED.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取巡检中订单总数
Integer underOverhaulOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.eq("order_status", OrderStateEnum.DURING_INSPECTION.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取报修中订单总数
Integer underWarrantyOrderCount = routingInspectionOrderMapper.selectCount(
new QueryWrapper<RoutingInspectionOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ne("order_status", OrderStateEnum.COMPLETED.getStatus())
.ne("order_status", OrderStateEnum.DURING_INSPECTION.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
@ -312,28 +325,28 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
//获取巡检订单总数
Integer routingInspectionOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
//获取已完成订单总数
Integer doneOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.eq("order_status", MaintenanceOrderStatusEnum.FINISHED.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取检修中订单总数
Integer underOverhaulOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.eq("order_status", MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
.le("create_time", Timestamp.valueOf(endTime))); // 结束时间
//获取报修中订单总数
Integer underWarrantyOrderCount = maintenanceOrderMapper.selectCount(
new QueryWrapper<MaintenanceOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ne("order_status", MaintenanceOrderStatusEnum.FINISHED.getStatus())
.ne("order_status", MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间
@ -378,28 +391,28 @@ public class LargeDataScreenServiceImpl implements ILargeDataScreenService {
//获取巡检订单总数
Integer routingInspectionOrderCount = repairOrderMapper.selectCount(
new QueryWrapper<RepairOrder>()
.eq("is_delete", 0)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.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("is_delete", GlobalConstant.NOT_DELETE)
.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("is_delete", GlobalConstant.NOT_DELETE)
.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)
.eq("is_delete", GlobalConstant.NOT_DELETE)
.ne("order_status", MaintenanceOrderStatusEnum.FINISHED.getStatus())
.ne("order_status", MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.ge("create_time", Timestamp.valueOf(startTime)) // 开始时间

View File

@ -73,4 +73,16 @@ public interface IRepairOrderService {
* @param repairOrderParam
*/
void reassignment(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void updateServiceOfferPrice(RepairOrderParam repairOrderParam);
/**
* 退
* @param repairOrderParam
*/
void returnRepair(RepairOrderParam repairOrderParam);
}

View File

@ -27,8 +27,10 @@ import com.hcy.common.entity.order.RoutingInspectionOrder;
import com.hcy.common.entity.plant.Plant;
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;
@ -114,6 +116,19 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
vo.setPlantName(plant.getName());
}
}
//返回客户简称和设备名称
Client client = clientMapper.selectOne(
new LambdaQueryWrapper<Client>()
.eq(Client::getId, item.getClientId()));
if(client != null){
vo.setClientName(client.getClientName());
}
Equipment equipment = equipmentMapper.selectOne(
new LambdaQueryWrapper<Equipment>()
.eq(Equipment::getId, item.getEquipmentId()));
if(equipment != null){
vo.setEquipmentName(equipment.getName());
}
vo.setCreateTime(item.getCreateTime());
vo.setUpdateTime(item.getUpdateTime());
@ -190,6 +205,18 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
if(userAddress != null){
vo.setAddress(userAddressListVo);
}
//报废地址
UserAddress scrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getScrapAddressId()));
UserAddressListVo scrapAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(scrapAddress, scrapAddressListVo);
scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId()));
scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId()));
scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId()));
if(scrapAddress != null){
vo.setScrapAddress(scrapAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
@ -399,4 +426,46 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
repairOrderMapper.updateById(model);
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void updateServiceOfferPrice(RepairOrderParam repairOrderParam) {
RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(model, "数据不存在!");
Assert.notNull(repairOrderParam.getActualAmount(),"服务报价不能为空");
if(model.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()){
//更新服务报价
BigDecimal actualAmount = repairOrderParam.getActualAmount();
model.setActualAmount(actualAmount);
repairOrderMapper.updateById(model);
}else{
throw new OperateException("当前工单状态,无法修改服务报价");
}
}
/**
* 退
*
* @param repairOrderParam
*/
@Override
public void returnRepair(RepairOrderParam repairOrderParam) {
RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(model, "数据不存在!");
Assert.notNull(repairOrderParam.getReturnCause(),"退回原因不可为空");
if(model.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus()){
//更新服务报价
model.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus());
model.setReturnCause(repairOrderParam.getReturnCause());
repairOrderMapper.updateById(model);
}else{
throw new OperateException("当前工单状态,无法退回检修");
}
}
}

View File

@ -95,6 +95,7 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
for(RoutingInspectionOrderDto item : iPage.getRecords()) {
RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo();
BeanUtils.copyProperties(item, vo);
list.add(vo);
}

View File

@ -97,4 +97,8 @@ public class RepairOrderParam implements Serializable {
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private Long faultId; // 故障id
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
private String returnCause; //退回原因
}

View File

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

View File

@ -53,5 +53,8 @@ public class RepairOrderDetailVo implements Serializable {
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
private Integer scrapAddressId; // 报废地址
private UserAddressListVo scrapAddress; //报废地址信息
private String returnCause; //退回原因
}

View File

@ -19,7 +19,9 @@ public class RepairOrderListVo implements Serializable {
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private String equipmentName; // 设备名称
private String clientName; // 客户名称
private String shortName; //客户简称
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
@ -45,5 +47,7 @@ public class RepairOrderListVo implements Serializable {
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private Integer scrapAddressId; // 报废地址
private String returnCause; //退回原因
}

View File

@ -65,5 +65,6 @@ public class MaintenanceOrderDto implements Serializable {
private String orderStatusIds; //订单状态ids
private String likeWork; //关键字
private String shortName; //客户简称
private String completeImg; // 完工照片
}

View File

@ -22,7 +22,9 @@ public class RepairOrderDto implements Serializable {
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private String clientName; // 客户名称
private String shortName; //客户简称
private Long faultId; // 故障id
private String faultCode; // 故障代码
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -53,9 +55,17 @@ public class RepairOrderDto implements Serializable {
private Double longitude; // 经度
private Double latitude; // 纬度
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
private Integer scrapAddressId; // 报废地址
private Integer isClient; //是否客户 0-客户端 1-检修员端
private Integer isMaintain; //是否维修 0-维修 1-不维修
private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库
private Integer deliveryMethod; //配送方式 0-物流 1-上门取件 2-送货上门
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private String returnCause; //退回原因
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
}

View File

@ -56,4 +56,6 @@ public class MaintenanceOrder implements Serializable {
private Integer isMaintain; //是否维修 0-维修 1-不维修
private Integer warehouseType; //仓库类型 0-我的仓库 1-公共仓库
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
}

View File

@ -26,6 +26,7 @@ public class RepairOrder implements Serializable {
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private Long faultId; // 故障id
private String faultCode; // 故障代码
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -45,6 +46,7 @@ public class RepairOrder implements Serializable {
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private String returnCause; //退回原因
private String remark; // 备注
private Long creatorId; // 创建人id
private Date orderAccomplishTime; // 订单完成时间
@ -72,7 +74,11 @@ public class RepairOrder implements Serializable {
private String faultPointImg; // 故障点照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private Long scrapFaultId; // 报废类型id
private String scrapAddress; // 报废地址
private Long scrapAddressId; // 报废地址id
private String scrapExplain; // 报废说明
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
}

View File

@ -29,4 +29,10 @@ public interface MaintenanceOrderMapper extends IBaseMapper<MaintenanceOrder> {
@Select("select * from la_maintenance_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1")
MaintenanceOrder findLastMaintenanceOrderByTime(@Param("time") String time);
/**
*
* @return
*/
Integer selectPendingOrderCount(@Param("param") MaintenanceOrderDto maintenanceOrderDto);
}

View File

@ -8,6 +8,7 @@ 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 io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -41,4 +42,10 @@ public interface RepairOrderMapper extends IBaseMapper<RepairOrder> {
*/
@Select("select * from la_repair_order where is_delete = 0 and id = #{id}")
RepairOrder findMaintenanceOrderById(@Param("id") Long id);
/**
*
* @return
*/
Integer selectPendingOrderCount(@Param("param") RepairOrderDto repairOrderDto);
}

View File

@ -33,4 +33,11 @@ public interface RoutingInspectionOrderMapper extends IBaseMapper<RoutingInspect
Page<RoutingInspectionOrderDto> frontPageList(Page page, @Param("param") RoutingInspectionOrderDto param);
List<RoutingInspectionOrderDto> list(@Param("form") RoutingInspectionOrderDto form);
/**
*
* @param routingInspectionOrderDto
* @return
*/
Integer selectPendingOrderCount(@Param("param") RoutingInspectionOrderDto routingInspectionOrderDto);
}

View File

@ -65,4 +65,22 @@
</where>
order by create_time desc
</select>
<select id="selectPendingOrderCount" resultType="Integer">
SELECT
COUNT( order_status )
FROM
la_maintenance_order as lmo
WHERE
is_delete = 0
<if test="param.receiverId != null">
and lmo.receiver_id = #{param.receiverId}
</if>
<if test="param.clientId != null">
and lmo.client_id = #{param.clientId}
</if>
<if test="param.orderStatusIds != null and param.orderStatusIds != ''">
and find_in_set(lmo.order_status,#{param.orderStatusIds})
</if>
</select>
</mapper>

View File

@ -37,7 +37,11 @@
<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
select ro.*,
u1.username as creatorName,
u2.username as receiverName,
c.client_name as clientName,
c.short_name
from la_repair_order as ro
LEFT JOIN la_client as c on ro.client_id = c.id
LEFT JOIN la_user as u1 on ro.creator_id = u1.id
@ -59,6 +63,12 @@
<if test="form.priorityId != null">
and ro.priority_id = #{form.priorityId}
</if>
<if test="form.receiverId != null">
and ro.receiver_id = #{form.receiverId}
</if>
<if test="form.clientId != null">
and ro.client_id = #{form.clientId}
</if>
<if test="form.creatorName != null and form.creatorName != ''">
and u1.username LIKE concat('%', #{form.creatorName}, '%')
</if>
@ -78,5 +88,22 @@
order by ro.create_time desc
</select>
<select id="selectPendingOrderCount" resultType="Integer">
SELECT
COUNT( order_status )
FROM
la_repair_order as lro
WHERE
is_delete = 0
<if test="param.receiverId != null">
and lro.receiver_id = #{param.receiverId}
</if>
<if test="param.clientId != null">
and lro.client_id = #{param.clientId}
</if>
<if test="param.orderStatusIds != null and param.orderStatusIds != ''">
and find_in_set(lro.order_status,#{param.orderStatusIds})
</if>
</select>
</mapper>

View File

@ -8,6 +8,7 @@
SELECT
i.*,
c.client_name,
c.short_name,
e.number as equipmentNo,e.name as equipmentName,e.detailed_address,
a.nickname as creatorName,
f.`name` as familiarFaultName,
@ -119,4 +120,22 @@
</if>
ORDER BY create_time DESC
</select>
<select id="selectPendingOrderCount" resultType="Integer">
SELECT
COUNT( order_status )
FROM
la_routing_inspection_order as lrio
WHERE
is_delete = 0
<if test="param.receiverId != null">
and lrio.receiver_id = #{param.receiverId}
</if>
<if test="param.clientId != null">
and lrio.client_id = #{param.clientId}
</if>
<if test="param.orderStatusIds != null and param.orderStatusIds != ''">
and find_in_set(lrio.order_status,#{param.orderStatusIds})
</if>
</select>
</mapper>

View File

@ -170,4 +170,12 @@ public class MaintenanceOrderController {
return AjaxResult.success();
}
/**
*
* @return Object
*/
@GetMapping("/orderStatusCount")
public Object orderStatusCount(MaintenanceOrderParam maintenanceOrderParam) {
return AjaxResult.success(iMaintenanceOrderService.orderStatusCount(maintenanceOrderParam));
}
}

View File

@ -122,4 +122,68 @@ public class RepairOrderController {
iRepairOrderService.faultDetect(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @return Object
*/
@GetMapping("/orderStatusCount")
public Object orderStatusCount(RepairOrderParam repairOrderParam) {
return AjaxResult.success(iRepairOrderService.orderStatusCount(repairOrderParam));
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/confirmServiceOfferPrice")
public Object confirmServiceOfferPrice(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.confirmServiceOfferPrice(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/confirmedScrap")
public Object confirmedScrap(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.confirmedScrap(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/uploadPictures")
public Object uploadPictures(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.uploadPictures(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/scrapForm")
public Object scrapForm(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.scrapForm(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/fillInReceipt")
public Object fillInReceipt(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.fillInReceipt(repairOrderParam);
return AjaxResult.success();
}
}

View File

@ -127,4 +127,13 @@ public class RoutingInspectionOrderController {
iRoutingInspectionOrderService.checking(routingInspectionOrderParam);
return AjaxResult.success();
}
/**
*
* @return Object
*/
@GetMapping("/orderStatusCount")
public Object orderStatusCount(RoutingInspectionOrderParam routingInspectionOrderParam) {
return AjaxResult.success(iRoutingInspectionOrderService.orderStatusCount(routingInspectionOrderParam));
}
}

View File

@ -5,6 +5,8 @@ import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.vo.order.MaintenanceOrderDetailVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.OrderStatusCountVo;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -95,4 +97,10 @@ public interface IMaintenanceOrderService {
* @param maintenanceOrderParam
*/
void oldModuleRepair(MaintenanceOrderParam maintenanceOrderParam);
/**
*
* @return
*/
OrderStatusCountVo orderStatusCount(MaintenanceOrderParam maintenanceOrderParam);
}

View File

@ -5,6 +5,7 @@ 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.OrderStatusCountVo;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
@ -72,4 +73,40 @@ public interface IRepairOrderService {
* @return
*/
List<RepairOrderListVo> list(RepairOrderParam repairOrderParam);
/**
*
* @return
*/
OrderStatusCountVo orderStatusCount(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void confirmServiceOfferPrice(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void confirmedScrap(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void uploadPictures(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void scrapForm(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void fillInReceipt(RepairOrderParam repairOrderParam);
}

View File

@ -4,6 +4,7 @@ import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.OrderStatusCountVo;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
@ -70,4 +71,10 @@ public interface IRoutingInspectionOrderService {
* @param routingInspectionOrderParam
*/
void checking(RoutingInspectionOrderParam routingInspectionOrderParam);
/**
*
* @return
*/
OrderStatusCountVo orderStatusCount(RoutingInspectionOrderParam routingInspectionOrderParam);
}

View File

@ -1,6 +1,7 @@
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;
@ -48,15 +49,13 @@ import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.client.EquipmentDetailVo;
import com.hcy.front.vo.client.EquipmentModelDetailVo;
import com.hcy.front.vo.order.MaintenanceOrderDetailVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.MaintenanceRepairDetailVo;
import com.hcy.front.vo.order.OrderSparePartListVo;
import com.hcy.front.vo.order.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -570,7 +569,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
maintenanceOrder.setOrderAccomplishTime(new Date());
maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
maintenanceOrder.setCompleteImg(maintenanceOrderParam.getCompleteImg()); // 完工照片
maintenanceOrderMapper.updateById(maintenanceOrder);
}else{
throw new OperateException("当前订单状态无法进行填写回单操作");
@ -625,5 +624,69 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
}
}
/**
*
*
* @return
*/
@Override
public OrderStatusCountVo orderStatusCount(MaintenanceOrderParam maintenanceOrderParam) {
MaintenanceOrderDto maintenanceOrderDto = new MaintenanceOrderDto();
BeanUtils.copyProperties(maintenanceOrderParam,maintenanceOrderDto);
if(maintenanceOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){
maintenanceOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue()); //接单人
if(StringUtils.isEmpty(maintenanceOrderParam.getOrderStatusIds())){
maintenanceOrderDto.setOrderStatusIds("1,2,7,8");
}
}else{
if(StringUtils.isEmpty(maintenanceOrderParam.getOrderStatusIds())){
maintenanceOrderDto.setOrderStatusIds("0,1,2,7,8");
}
maintenanceOrderDto.setClientId(maintenanceOrderDto.getClientId()); // 客户id
}
// 待接单数量
Integer pendingOrderCount = maintenanceOrderMapper.selectPendingOrderCount(maintenanceOrderDto);
// 检测中数量
Integer checkingCount = maintenanceOrderMapper.selectCount(
new LambdaQueryWrapper<MaintenanceOrder>()
.eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.and(query -> query.eq(MaintenanceOrder:: getOrderStatus, MaintenanceOrderStatusEnum.CHECKING.getStatus())
.or()
.eq(MaintenanceOrder:: getOrderStatus, MaintenanceOrderStatusEnum.RETURNED.getStatus()))
.eq(maintenanceOrderDto.getClientId() != null, MaintenanceOrder::getClientId, maintenanceOrderDto.getClientId())
.eq(maintenanceOrderDto.getReceiverId() != null, MaintenanceOrder::getReceiverId, maintenanceOrderDto.getReceiverId()));
// 待确认数量
Integer toBeConfirmedCount = maintenanceOrderMapper.selectCount(
new LambdaQueryWrapper<MaintenanceOrder>()
.eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(MaintenanceOrder:: getOrderStatus, MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus())
.eq(maintenanceOrderDto.getClientId() != null, MaintenanceOrder::getClientId, maintenanceOrderDto.getClientId())
.eq(maintenanceOrderDto.getReceiverId() != null, MaintenanceOrder::getReceiverId, maintenanceOrderDto.getReceiverId()));
// 维修中数量
Integer inMaintenanceCount = maintenanceOrderMapper.selectCount(
new LambdaQueryWrapper<MaintenanceOrder>()
.eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(MaintenanceOrder:: getOrderStatus, MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.eq(maintenanceOrderDto.getClientId() != null, MaintenanceOrder::getClientId, maintenanceOrderDto.getClientId())
.eq(maintenanceOrderDto.getReceiverId() != null, MaintenanceOrder::getReceiverId, maintenanceOrderDto.getReceiverId()));
// 已完成数量
Integer completedCount = maintenanceOrderMapper.selectCount(
new LambdaQueryWrapper<MaintenanceOrder>()
.eq(MaintenanceOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(MaintenanceOrder:: getOrderStatus, MaintenanceOrderStatusEnum.FINISHED.getStatus())
.eq(maintenanceOrderDto.getClientId() != null, MaintenanceOrder::getClientId, maintenanceOrderDto.getClientId())
.eq(maintenanceOrderDto.getReceiverId() != null, MaintenanceOrder::getReceiverId, maintenanceOrderDto.getReceiverId()));
OrderStatusCountVo orderStatusCountVo = new OrderStatusCountVo();
orderStatusCountVo.setPendingOrderCount(pendingOrderCount);
orderStatusCountVo.setCheckingCount(checkingCount);
orderStatusCountVo.setToBeConfirmedCount(toBeConfirmedCount);
orderStatusCountVo.setInMaintenanceCount(inMaintenanceCount);
orderStatusCountVo.setCompletedCount(completedCount);
return orderStatusCountVo;
}
}

View File

@ -18,6 +18,7 @@ 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.ClientStatusEnum;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
import com.hcy.common.enums.order.OrderStateEnum;
import com.hcy.common.enums.order.RepairOrderStatusEnum;
@ -42,6 +43,7 @@ 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.OrderStatusCountVo;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
import com.sun.xml.internal.ws.resources.AddressingMessages;
@ -168,6 +170,176 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
return returnData;
}
/**
*
*
* @return
*/
@Override
public OrderStatusCountVo orderStatusCount(RepairOrderParam repairOrderParam) {
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()); // 客户id
}
// 待接单数量
Integer pendingOrderCount = repairOrderMapper.selectPendingOrderCount(repairOrderDto);
// 检测中数量
Integer checkingCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.and(query -> query
.eq(RepairOrder:: getOrderStatus, MaintenanceOrderStatusEnum.CHECKING.getStatus())
.or()
.eq(RepairOrder:: getOrderStatus, MaintenanceOrderStatusEnum.RETURNED.getStatus()))
.eq(repairOrderDto.getClientId() != null, RepairOrder::getClientId, repairOrderDto.getClientId())
.eq(repairOrderDto.getReceiverId() != null, RepairOrder::getReceiverId, repairOrderDto.getReceiverId()));
// 待确认数量
Integer toBeConfirmedCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RepairOrder:: getOrderStatus, MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus())
.eq(repairOrderDto.getClientId() != null, RepairOrder::getClientId, repairOrderDto.getClientId())
.eq(repairOrderDto.getReceiverId() != null, RepairOrder::getReceiverId, repairOrderDto.getReceiverId()));
// 维修中数量
Integer inMaintenanceCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RepairOrder:: getOrderStatus, MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus())
.eq(repairOrderDto.getClientId() != null, RepairOrder::getClientId, repairOrderDto.getClientId())
.eq(repairOrderDto.getReceiverId() != null, RepairOrder::getReceiverId, repairOrderDto.getReceiverId()));
// 已完成数量
Integer completedCount = repairOrderMapper.selectCount(
new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RepairOrder:: getOrderStatus, MaintenanceOrderStatusEnum.FINISHED.getStatus())
.eq(repairOrderDto.getClientId() != null, RepairOrder::getClientId, repairOrderDto.getClientId())
.eq(repairOrderDto.getReceiverId() != null, RepairOrder::getReceiverId, repairOrderDto.getReceiverId()));
OrderStatusCountVo orderStatusCountVo = new OrderStatusCountVo();
orderStatusCountVo.setPendingOrderCount(pendingOrderCount);
orderStatusCountVo.setCheckingCount(checkingCount);
orderStatusCountVo.setToBeConfirmedCount(toBeConfirmedCount);
orderStatusCountVo.setInMaintenanceCount(inMaintenanceCount);
orderStatusCountVo.setCompletedCount(completedCount);
return orderStatusCountVo;
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void confirmServiceOfferPrice(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.isTrue(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus(), "订单状态错误");
if(repairOrderParam.getIsMaintain() == MaintenanceOrderStatusEnum.MAINTAIN.getStatus()){
repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus());
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus());
}else{
repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.NOT_MAINTAIN.getStatus());
repairOrder.setRefuseMaintenanceCause(repairOrderParam.getRefuseMaintenanceCause()); // 拒绝维修原因
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
repairOrder.setOrderAccomplishTime(new Date()); // 订单完成时间
}
repairOrderMapper.updateById(repairOrder);
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void confirmedScrap(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
repairOrder.setDeliveryMethod(repairOrderParam.getDeliveryMethod()); // 收件方式0=物流快递 1-上门取件 2-送货上门)
repairOrder.setConsigneeAddressId(repairOrderParam.getConsigneeAddressId()); // 收件地址
repairOrder.setClientScrapRemark(repairOrderParam.getClientScrapRemark()); // 客户报废备注
repairOrderMapper.updateById(repairOrder);
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void uploadPictures(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrderParam.getInMaintenanceImg() != null){
repairOrder.setInMaintenanceImg(repairOrderParam.getInMaintenanceImg()); // 维修中照片
}else{
repairOrder.setAfterRepairImg(repairOrderParam.getAfterRepairImg()); // 维修后照片
}
repairOrderMapper.updateById(repairOrder);
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void scrapForm(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
repairOrder.setExpressName(repairOrderParam.getExpressName()); // 快递名称
repairOrder.setExpressNo(repairOrderParam.getExpressNo()); // 快递单号
repairOrderMapper.updateById(repairOrder);
}
/**
*
*
* @param repairOrderParam
*/
@Override
public void fillInReceipt(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.notNull(repairOrderParam.getFamiliarFaultId(), "结论类型不可为空");
Assert.notNull(repairOrderParam.getFamiliarFaultDescription(), "结论描述不可为空");
//只有维修中和填写回单状态才可以填写回单
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus() &&
repairOrder.getIsConfirmReceipt() == MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()){
repairOrder.setFamiliarFaultId(repairOrderParam.getFamiliarFaultId()); // 常见维修结论id
repairOrder.setFamiliarFaultDescription(repairOrderParam.getFamiliarFaultDescription()); // 常见维修结论描述
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
repairOrder.setOrderAccomplishTime(new Date()); // 订单完成时间
repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
repairOrder.setCompleteImg(repairOrderParam.getCompleteImg()); // 完工照片
repairOrderMapper.updateById(repairOrder);
}else{
throw new OperateException("当前订单状态无法进行填写回单操作");
}
}
/**
*
*
@ -282,25 +454,37 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
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 userAddressListVo = new UserAddressListVo();
if(userAddress != null){
BeanUtils.copyProperties(userAddress, userAddressListVo);
userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId()));
userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId()));
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
if(userAddress != null){
vo.setAddress(userAddressListVo);
}
//报废地址
UserAddress scrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getScrapAddressId()));
if(scrapAddress != null){
UserAddressListVo scrapAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(scrapAddress, scrapAddressListVo);
scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId()));
scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId()));
scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId()));
vo.setScrapAddress(scrapAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("id", model.getEquipmentId()));
if(equipment != null){
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;
@ -432,6 +616,26 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setWarehouseType(repairOrderParam.getWarehouseType()); // 仓库类型 0-我的仓库 1-公共仓库
repairOrder.setQuotationTime(new Date()); // 报价时间
Client client = clientMapper.findClientById(repairOrder.getClientId());
//判断当前客户是全包还是半包
if(client.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus());
}else{
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus());
}
BigDecimal actualAmount = new BigDecimal("0");
//判断是否已经服务报价过了
List<OrderSparePart> orderSpareParts = orderSparePartMapper.findOrderSparePartByMaintenanceOrderId(repairOrder.getId());
for (OrderSparePart orderSparePart : orderSpareParts) {
//已经报过价就将之前的报价信息删除
orderSparePartMapper.deleteById(orderSparePart);
}
for (SparePartParam item : repairOrderParam.getSparePartParams()) {
SparePart sparePart = sparePartMapper.findSparePartById(item.getId());
@ -439,25 +643,37 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
BeanUtils.copyProperties(sparePart, orderSparePart);
orderSparePart.setId(null);
orderSparePart.setRepairOrderId(repairOrder.getId());
orderSparePart.setSparePartsId(item.getId());
orderSparePart.setWarehouseId(sparePart.getWarehouseId());
orderSparePart.setQuantity(item.getQuantity());
orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id
orderSparePart.setSparePartsId(item.getId()); // 备件id
orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id
orderSparePart.setQuantity(item.getQuantity()); // 数量
//设置订单实际价格
BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPurchaseDivisor());
orderSparePart.setUnitPrice(practicalPrice); // 价格
BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity()));
actualAmount = actualAmount.add(totalPrice);
orderSparePart.setTotalPrice(totalPrice); // 总价
orderSparePartMapper.insert(orderSparePart);
}
repairOrder.setFaultId(repairOrderParam.getFaultId()); //故障原因id
repairOrder.setTotalAmount(actualAmount); // 总金额
repairOrder.setActualAmount(actualAmount); // 实际金额
repairOrder.setFaultId(repairOrderParam.getFaultId()); //故障原因id
repairOrder.setFaultCode(repairOrderParam.getFaultCode()); //故障代码
repairOrder.setPreMaintenanceImg(repairOrderParam.getPreMaintenanceImg()); // 维修前图片
repairOrder.setFaultPointImg(repairOrderParam.getFaultPointImg()); //故障点图片
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setScrapFaultId(repairOrderParam.getScrapFaultId()); // 报废类型id
repairOrder.setScrapAddress(repairOrderParam.getScrapAddress()); // 报废地址
repairOrder.setScrapAddressId(repairOrderParam.getScrapAddressId()); // 报废地址
repairOrder.setScrapExplain(repairOrderParam.getScrapExplain()); // 报废说明
repairOrderMapper.updateById(repairOrder);
}
/**
*
* @return

View File

@ -33,6 +33,7 @@ import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.client.EquipmentListVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.OrderStatusCountVo;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
import org.apache.commons.lang3.StringUtils;
@ -403,6 +404,62 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
routingInspectionOrderMapper.updateById(model);
}
/**
*
*
* @return
*/
@Override
public OrderStatusCountVo orderStatusCount(RoutingInspectionOrderParam routingInspectionOrderParam) {
RoutingInspectionOrderDto routingInspectionOrderDto = new RoutingInspectionOrderDto();
BeanUtils.copyProperties(routingInspectionOrderParam,routingInspectionOrderDto);
if(routingInspectionOrderParam.getIsClient() == MaintenanceOrderStatusEnum.REPAIRER.getStatus()){
routingInspectionOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue()); //接单人
if(StringUtils.isEmpty(routingInspectionOrderParam.getOrderStatusIds())){
routingInspectionOrderDto.setOrderStatusIds("1,2,5");
}
}else{
if(StringUtils.isEmpty(routingInspectionOrderParam.getOrderStatusIds())){
routingInspectionOrderDto.setOrderStatusIds("0,1,2,5");
}
routingInspectionOrderDto.setClientId(routingInspectionOrderDto.getClientId()); // 客户id
}
// 待接单数量
Integer pendingOrderCount = routingInspectionOrderMapper.selectPendingOrderCount(routingInspectionOrderDto);
// 待巡检数量
Integer toBeInspectedCount = routingInspectionOrderMapper.selectCount(
new LambdaQueryWrapper<RoutingInspectionOrder>()
.eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RoutingInspectionOrder:: getOrderStatus, OrderStateEnum.TO_BE_INSPECTED.getStatus())
.eq(routingInspectionOrderDto.getClientId() != null, RoutingInspectionOrder::getClientId, routingInspectionOrderDto.getClientId())
.eq(routingInspectionOrderDto.getReceiverId() != null, RoutingInspectionOrder::getReceiverId, routingInspectionOrderDto.getReceiverId()));
// 巡检中数量
Integer duringInspectionCount = routingInspectionOrderMapper.selectCount(
new LambdaQueryWrapper<RoutingInspectionOrder>()
.eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RoutingInspectionOrder:: getOrderStatus, OrderStateEnum.DURING_INSPECTION.getStatus())
.eq(routingInspectionOrderDto.getClientId() != null, RoutingInspectionOrder::getClientId, routingInspectionOrderDto.getClientId())
.eq(routingInspectionOrderDto.getReceiverId() != null, RoutingInspectionOrder::getReceiverId, routingInspectionOrderDto.getReceiverId()));
// 已完成数量
Integer completedCount = routingInspectionOrderMapper.selectCount(
new LambdaQueryWrapper<RoutingInspectionOrder>()
.eq(RoutingInspectionOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(RoutingInspectionOrder:: getOrderStatus, OrderStateEnum.COMPLETED.getStatus())
.eq(routingInspectionOrderDto.getClientId() != null, RoutingInspectionOrder::getClientId, routingInspectionOrderDto.getClientId())
.eq(routingInspectionOrderDto.getReceiverId() != null, RoutingInspectionOrder::getReceiverId, routingInspectionOrderDto.getReceiverId()));
OrderStatusCountVo orderStatusCountVo = new OrderStatusCountVo();
orderStatusCountVo.setPendingOrderCount(pendingOrderCount); // 待接单
orderStatusCountVo.setToBeInspectedCount(toBeInspectedCount); // 待巡检
orderStatusCountVo.setDuringInspectionCount(duringInspectionCount); // 巡检中
orderStatusCountVo.setCompletedCount(completedCount); // 已完成
return orderStatusCountVo;
}
private String getOrderNo() {
//获取当前日期并将其进行格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");

View File

@ -121,4 +121,6 @@ public class MaintenanceOrderParam implements Serializable {
private String expressNo; // 快递单号
private String moduleNo; // 模块号
private String moduleImg; // 模块图片
private String completeImg; // 完工照片
}

View File

@ -116,9 +116,23 @@ public class RepairOrderParam implements Serializable {
private Integer deliveryMethod; //配送方式 0-物流 1-上门取件 2-送货上门
private String preMaintenanceImg; // 维修前照片
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private String faultPointImg; // 故障点照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private Long scrapFaultId; // 报废类型id
private String scrapAddress; // 报废地址
private Long scrapAddressId; // 报废地址
private String scrapExplain; // 报废说明
private String faultCode; // 故障代码
private String refuseMaintenanceCause; // 拒绝维修原因
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private String expressNo; // 快递单号
private Long familiarFaultId; // 常见维修结论id
private String familiarFaultDescription; // 常见维修结论描述
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
}

View File

@ -85,4 +85,5 @@ public class RoutingInspectionOrderParam implements Serializable {
private String cancelCause; // 取消原因
private Integer isClient; //是否客户 0-客户端 1-检修员端
private String orderStatusIds; //订单状态ids
}

View File

@ -63,4 +63,6 @@ public class MaintenanceOrderDetailVo implements Serializable {
private List<OrderSparePartListVo> sparePartList; // 备件清单
private EquipmentModelDetailVo equipmentModel; //设备模块信息
private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息
private String completeImg; // 完工照片
}

View File

@ -60,4 +60,13 @@ public class MaintenanceOrderListVo implements Serializable {
private String creatorName; // 创建人姓名
private String receiverName; // 接单人姓名
private MaintenanceRepairDetailVo maintenanceRepair; // 返修信息
private Integer pendingOrderCount; // 待接单数量
private Integer checkingCount; // 检测中数量
private Integer toBeConfirmedCount; // 待确认数量
private Integer inMaintenanceCount; // 维修中数量
private Integer completedCount; // 已完成数量
private String completeImg; // 完工照片
}

View File

@ -0,0 +1,24 @@
package com.hcy.front.vo.order;
import lombok.Data;
import java.io.Serializable;
/**
* MaintenanceOrderVo
*/
@Data
public class OrderStatusCountVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pendingOrderCount; // 待接单数量
private Integer checkingCount; // 检测中数量
private Integer toBeConfirmedCount; // 待确认数量
private Integer inMaintenanceCount; // 维修中数量
private Integer completedCount; // 已完成数量
private Integer toBeInspectedCount; // 待巡检数量
private Integer duringInspectionCount; // 巡检中
}

View File

@ -28,6 +28,7 @@ public class RepairOrderDetailVo implements Serializable {
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultCode; // 故障代码
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -53,5 +54,12 @@ public class RepairOrderDetailVo implements Serializable {
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
private Integer scrapAddressId; // 报废地址
private UserAddressListVo scrapAddress; //报废地址信息
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
}

View File

@ -23,6 +23,7 @@ public class RepairOrderListVo implements Serializable {
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultCode; // 故障代码
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -56,5 +57,10 @@ public class RepairOrderListVo implements Serializable {
private String equipmentNo; //设备编号
private String equipmentName; //设备名称
private String detailedAddress; //设备详情地址
private Integer scrapAddressId; // 报废地址
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private String completeImg; // 完工照片
}