【admin】新增# 1.新增巡检单、配件采购收货超时、三种工单接单超时任务
parent
54bf366470
commit
119f12ceda
|
@ -1,8 +1,11 @@
|
|||
package com.hcy.admin.service.crontab.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hcy.admin.AdminThreadLocal;
|
||||
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
|
||||
import com.hcy.common.constant.GlobalConstant;
|
||||
import com.hcy.common.entity.client.Client;
|
||||
import com.hcy.common.entity.client.Equipment;
|
||||
import com.hcy.common.entity.configuration.SystemConfiguration;
|
||||
import com.hcy.common.entity.order.MaintenanceOrder;
|
||||
import com.hcy.common.entity.order.RepairOrder;
|
||||
|
@ -10,13 +13,18 @@ import com.hcy.common.entity.order.RoutingInspectionOrder;
|
|||
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
|
||||
import com.hcy.common.enums.OrderStatusEnum;
|
||||
import com.hcy.common.enums.audit.AuditStateEnum;
|
||||
import com.hcy.common.enums.equipment.EquipmentStateEnum;
|
||||
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
|
||||
import com.hcy.common.enums.order.OrderStateEnum;
|
||||
import com.hcy.common.mapper.client.ClientMapper;
|
||||
import com.hcy.common.mapper.client.EquipmentMapper;
|
||||
import com.hcy.common.mapper.configuration.SystemConfigurationMapper;
|
||||
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.sparePartStockAudit.SparePartStockAuditMapper;
|
||||
import com.hcy.common.utils.OrderUtil;
|
||||
import com.hcy.common.utils.TimeUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -49,7 +57,13 @@ public class OrderCrontab {
|
|||
@Resource
|
||||
SparePartStockAuditMapper sparePartStockAuditMapper;
|
||||
|
||||
private void orderTimeOut(){
|
||||
@Resource
|
||||
EquipmentMapper equipmentMapper;
|
||||
|
||||
@Resource
|
||||
ClientMapper clientMapper;
|
||||
|
||||
public void orderTimeOut(){
|
||||
SystemConfiguration systemConfiguration = systemConfigurationMapper.selectById(1);
|
||||
//检修单和巡检单超时时间
|
||||
Integer repairerAutoOrderTime = systemConfiguration.getRepairerAutoOrderTime();
|
||||
|
@ -121,8 +135,56 @@ public class OrderCrontab {
|
|||
sparePartStockAuditMapper.updateById(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void equipmentPollingPeriod(){
|
||||
//获取当前时间
|
||||
Calendar currentTime = Calendar.getInstance();
|
||||
|
||||
//巡检周期
|
||||
LambdaQueryWrapper<Equipment> queryWrapper = new LambdaQueryWrapper<Equipment>()
|
||||
.eq(Equipment::getDeviceStatus, EquipmentStateEnum.NORMAL.getStatus())
|
||||
.eq(Equipment::getIsDelete, GlobalConstant.NOT_DELETE);
|
||||
List<Equipment> equipmentList = equipmentMapper.selectList(queryWrapper);
|
||||
for (Equipment item : equipmentList) {
|
||||
if(item.getInspectionCycle() == EquipmentStateEnum.DAY_INTERVAL.getStatus()){
|
||||
Calendar frontTime = Calendar.getInstance();
|
||||
frontTime.setTime(item.getFrontPollingTime());
|
||||
frontTime.add(Calendar.DAY_OF_YEAR, item.getDailyAudit());
|
||||
|
||||
if(currentTime.compareTo(frontTime) > 0){
|
||||
installRoutingInspectionOrder(item);
|
||||
}
|
||||
}else{
|
||||
Calendar frontTime = Calendar.getInstance();
|
||||
frontTime.setTime(item.getFrontPollingTime());
|
||||
int day = frontTime.get(Calendar.DAY_OF_MONTH);
|
||||
//同一天
|
||||
if(day == item.getDailyAudit()){
|
||||
installRoutingInspectionOrder(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void installRoutingInspectionOrder(Equipment equipment){
|
||||
RoutingInspectionOrder model = new RoutingInspectionOrder();
|
||||
|
||||
//定时任务创建的巡检单是系统创建,客服的是客服创建
|
||||
model.setRepairWorkOrderFlow(OrderStateEnum.WORK_ORDER_TANK.getStatus());
|
||||
// 工单去向(0=工单池,1=检修员) 工单去向是工单池的话,工单状态是待抢单
|
||||
model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单;
|
||||
|
||||
Client client = clientMapper.findClientById(equipment.getClientId());
|
||||
|
||||
RoutingInspectionOrder lastRoutingInspectionOrderByTime = routingInspectionOrderMapper.findLastRoutingInspectionOrderByTime(TimeUtil.getCurrentTimeYYYYMMDD());
|
||||
model.setOrderNo(OrderUtil.getOrderNo(lastRoutingInspectionOrderByTime == null ? "" :lastRoutingInspectionOrderByTime.getOrderNo())); // 订单编号
|
||||
model.setClientId(client.getId()); //客户id
|
||||
model.setEquipmentId(equipment.getId());// 设备id
|
||||
model.setCreateTime(new Date()); //创建时间
|
||||
model.setOrderSource(OrderStateEnum.SYSTEM_CREATION.getStatus());
|
||||
|
||||
// 获取当前的用户
|
||||
routingInspectionOrderMapper.insert(model);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -322,7 +322,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
if (repairWorkOrderFlow == OrderStateEnum.WORK_ORDER_TANK.getStatus()) {
|
||||
model.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus());
|
||||
} else {
|
||||
model.setOrderStatus(OrderStateEnum.REPAIRER.getStatus());
|
||||
model.setOrderStatus(OrderStateEnum.PENDING_ORDER.getStatus());
|
||||
}
|
||||
|
||||
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findLastMaintenanceOrderByTime(TimeUtil.getCurrentTimeYYYYMMDD());
|
||||
|
@ -334,6 +334,17 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
orderOperateRecordService.addMaintenanceOrder(model.getId()
|
||||
,OrderOperateRecordEnum.NEW_CREATE.getDesc()
|
||||
,"【"+AdminThreadLocal.get("username")+"】创建了检修工单。");
|
||||
|
||||
//当前是指派检修员则新增操作记录
|
||||
if(repairWorkOrderFlow == OrderStateEnum.REPAIRER.getStatus()){
|
||||
User user = userMapper.selectById(maintenanceOrderParam.getReceiverId());
|
||||
if(user != null){
|
||||
//新增订单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(model.getId()
|
||||
,OrderOperateRecordEnum.APPOINT.getDesc()
|
||||
,"【"+AdminThreadLocal.get("username")+"】指派检修单给检修员【"+user.getUsername()+"】");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -365,7 +376,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
//新增订单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(model.getId()
|
||||
,OrderOperateRecordEnum.APPOINT.getDesc()
|
||||
,"【"+AdminThreadLocal.get("username")+"】指派检修单给检修员【"+user.getUsername()+"】");
|
||||
,"【"+AdminThreadLocal.get("username")+"】重新分配工单给检修员【"+user.getUsername()+"】");
|
||||
}
|
||||
}
|
||||
model.setReceiverId(param.getReceiverId());
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
|
|||
import com.hcy.common.entity.system.SystemAuthAdmin;
|
||||
import com.hcy.common.entity.user.User;
|
||||
import com.hcy.common.entity.warehouse.Warehouse;
|
||||
import com.hcy.common.enums.LogisticsModeEnum;
|
||||
import com.hcy.common.enums.SparePartStockAuditEnum;
|
||||
import com.hcy.common.enums.audit.AuditStateEnum;
|
||||
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
|
||||
|
@ -665,7 +666,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
|
|||
orderOperateRecordService.addMaintenanceOrder(model.getOrderId()
|
||||
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc()
|
||||
,OrderOperateRecordEnum.AUDIT.getStatus()
|
||||
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核");
|
||||
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核。");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -806,7 +807,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
|
|||
orderOperateRecordService.addMaintenanceOrder(model.getOrderId()
|
||||
, OrderOperateRecordEnum.DELIVER_GOODS.getDesc()
|
||||
,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus()
|
||||
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+SparePartStockAuditEnum.getMsgByStatus(model.getDeliveryMethod()));
|
||||
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+ LogisticsModeEnum.getMsgByStatus(model.getDeliveryMethod())+"。");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备管理实体
|
||||
|
@ -32,6 +33,7 @@ public class Equipment implements Serializable {
|
|||
private String detailedAddress; // 详细地址
|
||||
private Integer inspectionCycle; // 巡检周期方式(0=天数间隔,1=固定日期)
|
||||
private Integer dailyAudit; // 每隔几天巡检
|
||||
private Date frontPollingTime; //上次巡检时间
|
||||
private String deviceCode; // 设备码
|
||||
private Integer isDelete; // 是否删除: [0=否, 1=是]
|
||||
private Long createTime; // 创建时间
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package com.hcy.common.enums;
|
||||
|
||||
public enum LogisticsModeEnum {
|
||||
|
||||
EXPRESSAGE(0,"物流快递"),
|
||||
SELF_TAKE(1,"自行取件"),
|
||||
HOME_DELIVERY(2,"送货上门");
|
||||
|
||||
private final int status;
|
||||
private final String desc;
|
||||
|
||||
LogisticsModeEnum(int status, String desc) {
|
||||
this.status = status;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取状态码
|
||||
*
|
||||
* @return Long
|
||||
* @author fzr
|
||||
*/
|
||||
public int getStatus() {
|
||||
return this.status;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取提示
|
||||
*
|
||||
* @return String
|
||||
* @author fzr
|
||||
*/
|
||||
public String getDesc() {
|
||||
return this.desc;
|
||||
}
|
||||
|
||||
|
||||
public static String getMsgByStatus(Integer status){
|
||||
for(LogisticsModeEnum typeEnum: LogisticsModeEnum.values()) {
|
||||
if (typeEnum.getStatus() == status) {
|
||||
return typeEnum.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -41,13 +41,4 @@ public enum SparePartStockAuditEnum {
|
|||
return this.desc;
|
||||
}
|
||||
|
||||
|
||||
public static String getMsgByStatus(Integer status){
|
||||
for(SparePartStockAuditEnum typeEnum: SparePartStockAuditEnum.values()) {
|
||||
if (typeEnum.getStatus() == status) {
|
||||
return typeEnum.getDesc();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@ public enum EquipmentStateEnum {
|
|||
UNDERWARRANTY(2,"报修中"),
|
||||
UNDEROVERHAUL(3, "检修中"),
|
||||
// 巡检周期方式(0=天数间隔,1=固定日期)
|
||||
DAYINTERVAL(0,"天数间隔"),
|
||||
FIXEDDATE(1, "固定日期");
|
||||
DAY_INTERVAL(0,"天数间隔"),
|
||||
FIXED_DATE(1, "固定日期");
|
||||
private final int status;
|
||||
private final String desc;
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ public enum OrderOperateRecordEnum {
|
|||
DELIVER_GOODS(7,"发货"),
|
||||
RECEIVE_GOODS(8,"收货"),
|
||||
FILL_IN_RECEIPT(10,"填写回单"),
|
||||
FINISH(11,"完成"),
|
||||
|
||||
// 描述类型
|
||||
QUOTATION(0,"报价"),
|
||||
|
|
|
@ -21,4 +21,13 @@ public interface EquipmentMapper extends IBaseMapper<Equipment> {
|
|||
* @return
|
||||
*/
|
||||
List<ClientLargeDataDto> provinceEquipment();
|
||||
|
||||
/**
|
||||
* 查询待巡检设备
|
||||
* @return List<Equipment>
|
||||
*/
|
||||
List<Equipment> findWaitPollingEquipment();
|
||||
|
||||
@Select("select * from la_equipment where is_delete = 0 and id = #{id}")
|
||||
Equipment findEquipmentById(@Param("id") Long id);
|
||||
}
|
||||
|
|
|
@ -4,9 +4,11 @@ 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.entity.order.MaintenanceOrder;
|
||||
import com.hcy.common.entity.order.RoutingInspectionOrder;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -40,4 +42,7 @@ public interface RoutingInspectionOrderMapper extends IBaseMapper<RoutingInspect
|
|||
* @return
|
||||
*/
|
||||
Integer selectPendingOrderCount(@Param("param") RoutingInspectionOrderDto routingInspectionOrderDto);
|
||||
|
||||
@Select("select * from la_routing_inspection_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1")
|
||||
RoutingInspectionOrder findLastRoutingInspectionOrderByTime(@Param("time") String time);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,24 @@
|
|||
ORDER BY
|
||||
equipmentCount DESC
|
||||
LIMIT 5;
|
||||
</select>
|
||||
|
||||
<select id="provinceEquipment" resultType="com.hcy.common.dto.largeDataDto.ClientLargeDataDto">
|
||||
SELECT
|
||||
dr.name as province,
|
||||
COUNT( e.province_id ) AS equipmentCount,
|
||||
SUM( CASE WHEN e.device_status = 1 THEN 1 ELSE 0 END ) AS normalCount,
|
||||
SUM( CASE WHEN e.device_status = 2 THEN 1 ELSE 0 END ) AS underOverhaulCount,
|
||||
SUM( CASE WHEN e.device_status = 3 THEN 1 ELSE 0 END ) AS underWarrantyCount
|
||||
FROM
|
||||
la_equipment AS e
|
||||
JOIN la_dev_region as dr on e.province_id = dr.id
|
||||
where
|
||||
e.is_delete = 0
|
||||
GROUP BY
|
||||
e.province_id
|
||||
ORDER BY
|
||||
equipmentCount DESC
|
||||
LIMIT 5;
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
LEFT JOIN la_warehouse AS lw ON lw.id = lsp.warehouse_id
|
||||
<where>
|
||||
lsp.is_delete = 0
|
||||
and lsp.quantity > 0
|
||||
<if test="param.keywords != null and param.keywords != ''">
|
||||
and (lsp.spare_parts_code like concat('%',#{param.keywords},'%') or
|
||||
lsp.spare_parts_name like concat('%',#{param.keywords},'%') or
|
||||
|
|
|
@ -21,6 +21,7 @@ import com.hcy.common.entity.user.User;
|
|||
import com.hcy.common.enums.ClientStatusEnum;
|
||||
import com.hcy.common.enums.SparePartStockAuditEnum;
|
||||
import com.hcy.common.enums.audit.AuditStateEnum;
|
||||
import com.hcy.common.enums.equipment.EquipmentStateEnum;
|
||||
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
|
||||
import com.hcy.common.enums.order.OrderOperateRecordEnum;
|
||||
import com.hcy.common.enums.order.OrderStateEnum;
|
||||
|
@ -316,7 +317,10 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
maintenanceOrder.setReceiverTime(new Date());
|
||||
maintenanceOrderMapper.updateById(maintenanceOrder);
|
||||
|
||||
|
||||
//新增检修单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
|
||||
, OrderOperateRecordEnum.ORDER_RECEIVING.getDesc()
|
||||
,"【"+FrontThreadLocal.get("username")+"】已自主接单。联系人电话:"+FrontThreadLocal.get("mobile"));
|
||||
}else{
|
||||
throw new OperateException("订单状态不正确");
|
||||
}
|
||||
|
@ -548,6 +552,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void confirmServiceOfferPrice(MaintenanceOrderParam maintenanceOrderParam) {
|
||||
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId());
|
||||
Assert.notNull(maintenanceOrder, "数据不存在");
|
||||
|
@ -568,6 +573,29 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
maintenanceOrder.setRefuseMaintenanceCause(maintenanceOrderParam.getRefuseMaintenanceCause());
|
||||
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
|
||||
maintenanceOrder.setOrderAccomplishTime(new Date());
|
||||
|
||||
Client client = clientMapper.findClientById(maintenanceOrder.getClientId());
|
||||
if(client != null){
|
||||
//新增检修单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
|
||||
,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc()
|
||||
,"客户【"+client.getClientName()+"】确定不维修;结束工单原因:"+maintenanceOrder.getRefuseMaintenanceCause()+"。工单处理结束");
|
||||
}
|
||||
|
||||
User user = userMapper.selectById(maintenanceOrder.getReceiverId());
|
||||
if(user != null){
|
||||
//新增检修单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
|
||||
,OrderOperateRecordEnum.FINISH.getDesc()
|
||||
,"【"+user.getUsername()+"】已经完成任务");
|
||||
}
|
||||
|
||||
//将设备状态修改成正常
|
||||
Equipment equipment = equipmentMapper.findEquipmentById(maintenanceOrder.getEquipmentId());
|
||||
if(equipment != null){
|
||||
equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus());
|
||||
equipmentMapper.updateById(equipment);
|
||||
}
|
||||
}
|
||||
|
||||
maintenanceOrderMapper.updateById(maintenanceOrder);
|
||||
|
@ -602,7 +630,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
|
||||
,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc()
|
||||
,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE_TYPE.getStatus()
|
||||
,"【"+FrontThreadLocal.get("username")+"】创建了【配件领用】单。选择仓库:自身仓库");
|
||||
,"【"+FrontThreadLocal.get("username")+"】创建了【配件领用】单。选择仓库:自身仓库。");
|
||||
//我的仓库也要新增配件领用记录 并且状态是已完成
|
||||
/*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam);
|
||||
sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus());
|
||||
|
@ -664,6 +692,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void fillInReceipt(MaintenanceOrderParam maintenanceOrderParam) {
|
||||
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId());
|
||||
Assert.notNull(maintenanceOrder, "数据不存在");
|
||||
|
@ -682,6 +711,13 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
|
|||
maintenanceOrder.setCompleteImg(maintenanceOrderParam.getCompleteImg()); // 完工照片
|
||||
maintenanceOrderMapper.updateById(maintenanceOrder);
|
||||
|
||||
//将设备状态修改成正常
|
||||
Equipment equipment = equipmentMapper.findEquipmentById(maintenanceOrder.getEquipmentId());
|
||||
if(equipment != null){
|
||||
equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus());
|
||||
equipmentMapper.updateById(equipment);
|
||||
}
|
||||
|
||||
//新增检修单操作记录
|
||||
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
|
||||
,OrderOperateRecordEnum.FILL_IN_RECEIPT.getDesc()
|
||||
|
|
Loading…
Reference in New Issue