【admin&front】新增# 1.修复若干bug 2.完善大屏通知

dev
dabin 2024-08-31 04:03:17 +08:00
parent d6e9508b3f
commit 75c1388eb9
17 changed files with 352 additions and 43 deletions

View File

@ -24,6 +24,7 @@ public class AdminConfig {
public static String[] notLoginUri = new String[]{ public static String[] notLoginUri = new String[]{
"system:login", // 登录接口 "system:login", // 登录接口
"common:index:config", // 配置接口 "common:index:config", // 配置接口
"system:notification:sendLargeScreen" //通知大屏接口
}; };
// 免权限验证 // 免权限验证

View File

@ -1,26 +1,33 @@
package com.hcy.admin.controller.system; package com.hcy.admin.controller.system;
import com.hcy.admin.config.aop.Log; import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.system.SystemNotificationService;
import com.hcy.admin.validate.system.SystemAuthAdminParam; import com.hcy.admin.validate.system.SystemAuthAdminParam;
import com.hcy.common.core.AjaxResult; import com.hcy.common.core.AjaxResult;
import com.hcy.common.entity.system.SystemNotification;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("api/system/notification") @RequestMapping("api/system/notification")
public class SystemNotificationController { public class SystemNotificationController {
@Resource
SystemNotificationService systemNotificationService;
/** /**
* *
* @author dabin * @author dabin
* @param systemAuthAdminParam * @param systemNotification
* @return Object * @return Object
*/ */
@Log(title = "系统通知send") @Log(title = "发送通知到大屏幕")
@GetMapping("/send") @PostMapping("/sendLargeScreen")
public Object add(SystemAuthAdminParam systemAuthAdminParam) { public Object add(@RequestBody SystemNotification systemNotification) {
systemNotificationService.sendNotificationToLargeScreen(systemNotification);
return AjaxResult.success(); return AjaxResult.success();
} }
} }

View File

@ -350,7 +350,7 @@ public class EquipmentServiceImpl implements IEquipmentService {
.eq("is_delete", 0) .eq("is_delete", 0)
.last("limit 1")); .last("limit 1"));
if (ObjectUtil.isNotNull(model) && model.getId().equals(bo.getId())) { if (ObjectUtil.isNotNull(model) && !model.getId().equals(bo.getId())) {
return false; return false;
} }
return false; return false;

View File

@ -361,6 +361,7 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
} }
} }
//大屏系统通知
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(AdminThreadLocal.getAdminId()); SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminById(AdminThreadLocal.getAdminId());
Client client = clientMapper.findClientById(maintenanceOrderParam.getClientId()); Client client = clientMapper.findClientById(maintenanceOrderParam.getClientId());
if(client != null && systemAuthAdmin != null){ if(client != null && systemAuthAdmin != null){

View File

@ -112,7 +112,7 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
.le(StringUtils.isNotEmpty(params.getCreateTimeEnd()), SparePartStockAudit::getCreateTime, params.getCreateTimeEnd()) .le(StringUtils.isNotEmpty(params.getCreateTimeEnd()), SparePartStockAudit::getCreateTime, params.getCreateTimeEnd())
.orderByDesc(SparePartStockAudit::getCreateTime); .orderByDesc(SparePartStockAudit::getCreateTime);
if(params.getOrderType() == null){ /*if(params.getOrderType() == null){
//如果当前不是配件采购则将配件采购出入库单排除 //如果当前不是配件采购则将配件采购出入库单排除
if (params.getOutInWarehouseType() == null) { if (params.getOutInWarehouseType() == null) {
if (params.getReceiptType() == null) { if (params.getReceiptType() == null) {
@ -132,6 +132,25 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
queryWrapper.isNotNull(SparePartStockAudit::getPurchaseStatus); queryWrapper.isNotNull(SparePartStockAudit::getPurchaseStatus);
} }
} }
}*/
if(params.getQueryType() == SparePartStockAuditEnum.PURCHASE.getStatus()){
queryWrapper.isNotNull(SparePartStockAudit::getPurchaseStatus);
}else if(params.getQueryType() == SparePartStockAuditEnum.AUDIT.getStatus()){
queryWrapper.and(query -> query.isNull(SparePartStockAudit::getPurchaseStatus)
.or(orQuery -> orQuery.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.UNREVIEWED.getStatus())
.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.AUDITED.getStatus())
.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.CANCELED_AUDIT.getStatus())
.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.FILLING_OUT.getStatus())));
}else if(params.getQueryType() == SparePartStockAuditEnum.WAREHOUSING.getStatus()
|| params.getQueryType() == SparePartStockAuditEnum.GO_OUT_WAREHOUSE.getStatus()
|| params.getQueryType() == SparePartStockAuditEnum.ALLOT.getStatus()){
queryWrapper.isNull(SparePartStockAudit::getPurchaseStatus);
}else if(params.getQueryType() == SparePartStockAuditEnum.PURCHASE_ORDER.getStatus()){
queryWrapper.and(query -> query.ne(SparePartStockAudit::getPurchaseStatus, AuditStateEnum.FILLING_OUT.getStatus())
.ne(SparePartStockAudit::getPurchaseStatus,AuditStateEnum.CANCELED_AUDIT.getStatus()));
}else if(params.getQueryType() == SparePartStockAuditEnum.APPLY_FOR.getStatus()){
queryWrapper.isNotNull(SparePartStockAudit::getOrderType);
} }
//领用时间范围,配送方式查询 //领用时间范围,配送方式查询
@ -381,9 +400,15 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
SparePartStockAudit lastSparePartStockAudit = sparePartStockAuditMapper.findLastSparePartStockAuditByTime(TimeUtil.getCurrentTimeYYYYMMDD()); SparePartStockAudit lastSparePartStockAudit = sparePartStockAuditMapper.findLastSparePartStockAuditByTime(TimeUtil.getCurrentTimeYYYYMMDD());
model.setReceiptNumber(OrderUtil.getOrderNo(lastSparePartStockAudit == null ? "" : lastSparePartStockAudit.getReceiptNumber())); // 单据编号 model.setReceiptNumber(OrderUtil.getOrderNo(lastSparePartStockAudit == null ? "" : lastSparePartStockAudit.getReceiptNumber())); // 单据编号
//判断当前订单类型设置对应出入库仓库id
if(sparePartStockAuditParam.getReceiptType() == AuditStateEnum.IN_WAREHOUSE.getStatus()){
model.setImportWarehouse(sparePartStockAuditParam.getWarehouseId());
}else if(sparePartStockAuditParam.getReceiptType() == AuditStateEnum.OUT_WAREHOUSE.getStatus()){
model.setExportWarehouse(sparePartStockAuditParam.getWarehouseId());
}
// 获取当前的用户 // 获取当前的用户
model.setCreatorId(AdminThreadLocal.getAdminId()); model.setCreatorId(AdminThreadLocal.getAdminId());
sparePartStockAuditMapper.insert(model); sparePartStockAuditMapper.insert(model);
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList(); List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();

View File

@ -0,0 +1,17 @@
package com.hcy.admin.service.system;
import com.hcy.admin.config.aop.Log;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.entity.system.SystemNotification;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
public interface SystemNotificationService {
/**
*
* @param systemNotification
*/
void sendNotificationToLargeScreen(SystemNotification systemNotification);
}

View File

@ -0,0 +1,24 @@
package com.hcy.admin.service.system.impl;
import com.hcy.admin.netty.WebsocketHandler;
import com.hcy.admin.service.system.SystemNotificationService;
import com.hcy.common.entity.system.SystemNotification;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
/**
*
* @author dabin
*/
@Service
public class SystemNotificationServiceImpl implements SystemNotificationService {
@Override
public void sendNotificationToLargeScreen(SystemNotification systemNotification) {
if(StringUtils.isNotEmpty(systemNotification.getContent())){
//发送通知到大屏幕
WebsocketHandler.sendMessageToClient(systemNotification.getContent());
}
}
}

View File

@ -100,6 +100,8 @@ public class SparePartStockAuditParam implements Serializable {
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成) private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
private String purchaseIdea; //采购意见 private String purchaseIdea; //采购意见
private String orderType; // 0-检修工单 1-维修工单 private String orderType; // 0-检修工单 1-维修工单
private String workOrderNo; //工单号
private Integer queryType; // 0-待审核 1-待发货 2-待收货 3-已完成
private String createTimeStart; //创建时间 private String createTimeStart; //创建时间
private String createTimeEnd; //创建时间 private String createTimeEnd; //创建时间

View File

@ -0,0 +1,107 @@
package com.hcy.common.dto;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
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 SparePartStockAuditDto implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
private String receiptNumber;
private Integer receiptType;
//@NotNull(message = "warehouseId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "warehouseId参数值不能少于0", groups = {create.class, update.class})
private Long warehouseId;
//@NotNull(message = "importWarehouse参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "importWarehouse参数值不能少于0", groups = {create.class, update.class})
private Long importWarehouse;
//@NotNull(message = "exportWarehouse参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "exportWarehouse参数值不能少于0", groups = {create.class, update.class})
private Long exportWarehouse;
//@NotNull(message = "supplier参数缺失", groups = {create.class, update.class})
@Length(max = 32, message = "supplier参数不能超出32个字符", groups = {create.class, update.class})
private String supplier;
//@NotNull(message = "responsiblePerson参数缺失", groups = {create.class, update.class})
@Length(max = 32, message = "responsiblePerson参数不能超出32个字符", groups = {create.class, update.class})
private String responsiblePerson;
// @NotNull(message = "handlingTime参数缺失", groups = {create.class, update.class})
private Date handlingTime;
//@NotNull(message = "consignee参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "consignee参数不能超出255个字符", groups = {create.class, update.class})
private String consignee;
//@NotNull(message = "auditState参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "auditState参数值不能少于0", groups = {create.class, update.class})
private Integer auditState;
//@NotNull(message = "auditResult参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "auditResult参数值不能少于0", groups = {create.class, update.class})
private Integer auditResult;
private Date auditTime;
//@Length(max = 255, message = "auditIdea参数不能超出255个字符", groups = {create.class, update.class})
private String auditIdea;
//@Length(max = 32, message = "phone参数不能超出32个字符", groups = {create.class, update.class})
private String phone;
//@Length(max = 255, message = "remark参数不能超出255个字符", groups = {create.class, update.class})
private String remark;
private String sparePartAuditId; // 备件审核id
private List<SparePartAudit> sparePartAuditList; //待入库的备件
private Integer outInWarehouseType; //出入库类别0=采购入库1=库存调拨2=员工领料3=销售出库)
private String workOrderId; //工单号
private String orderId; //订单编号
private String shippingAddress; //收货地址
private String consigner; //发货人
private String consignerPhone; //发货人联系电话
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private BigDecimal salesPrice; //销售价
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
private String purchaseIdea; //采购意见
private String orderType; // 0-检修工单 1-维修工单
private String workOrderNo; //工单号
private Integer queryType; // 0-待审核 1-待发货 2-待收货 3-已完成
private String createTimeStart; //创建时间
private String createTimeEnd; //创建时间
}

View File

@ -0,0 +1,24 @@
package com.hcy.common.entity.system;
import lombok.Data;
import java.io.Serializable;
@Data
public class SystemNotification implements Serializable {
/**
*
*/
private String content;
/**
* id
*/
private String orderId;
/**
*
*/
private Integer orderType;
}

View File

@ -12,7 +12,15 @@ public enum SparePartStockAuditEnum {
EXPRESSAGE(1,"物流快递"), EXPRESSAGE(1,"物流快递"),
SELF_TAKE(2,"自行取件"), SELF_TAKE(2,"自行取件"),
HOME_DELIVERY(3,"送货上门"); HOME_DELIVERY(3,"送货上门"),
PURCHASE(0,"配件采购"),
AUDIT(1,"配件出入库审核"),
WAREHOUSING(2,"配件入库"),
GO_OUT_WAREHOUSE(3,"配件出库"),
ALLOT(4,"配件调拨"),
APPLY_FOR(5,"配件领用申请"),
PURCHASE_ORDER(6,"配件采购订单");
private final int status; private final int status;
private final String desc; private final String desc;

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper">
</mapper>

View File

@ -39,12 +39,11 @@ import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper; import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.utils.OrderUtil; import com.hcy.common.utils.*;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal; import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IMaintenanceOrderService; import com.hcy.front.service.order.IMaintenanceOrderService;
import com.hcy.front.service.region.IDevRegionService; import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.utils.RestTemplateUtil;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam; import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam; import com.hcy.front.validate.warehouse.SparePartParam;
@ -57,6 +56,7 @@ import com.hcy.front.vo.order.OrderSparePartListVo;
import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -118,6 +118,9 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
@Resource @Resource
OrderOperateRecordServiceImpl orderOperateRecordService; OrderOperateRecordServiceImpl orderOperateRecordService;
@Resource
RestTemplateUtil restTemplateUtil;
private final DecimalFormat df = new DecimalFormat ("#.#"); private final DecimalFormat df = new DecimalFormat ("#.#");
@Override @Override
@ -135,13 +138,20 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
MaintenanceOrder lastmMaintenanceOrder = maintenanceOrderMapper.findLastMaintenanceOrderByTime(TimeUtil.getCurrentTimeYYYYMMDD()); MaintenanceOrder lastmMaintenanceOrder = maintenanceOrderMapper.findLastMaintenanceOrderByTime(TimeUtil.getCurrentTimeYYYYMMDD());
model.setOrderNo(OrderUtil.getOrderNo(lastmMaintenanceOrder == null ? "" :lastmMaintenanceOrder.getOrderNo())); model.setOrderNo(OrderUtil.getOrderNo(lastmMaintenanceOrder == null ? "" :lastmMaintenanceOrder.getOrderNo()));
model.setCreatorId(FrontThreadLocal.getUserId().longValue()); model.setCreatorId(FrontThreadLocal.getUserId().longValue());
Date currentTime = new Date();
model.setCreateTime(currentTime);
maintenanceOrderMapper.insert(model); maintenanceOrderMapper.insert(model);
Client client = clientMapper.findClientById(maintenanceOrderParam.getClientId());
Equipment equipment = equipmentMapper.findEquipmentById(maintenanceOrderParam.getEquipmentId());
if(client != null && equipment != null){
//发送通知到大屏
String notificationContent = "客户【"+client.getClientName()+"】于【"+TimeUtil.dateTransitionString(currentTime)+"】上报工单,报修设备【"+equipment.getName()+"】";
restTemplateUtil.sendPost(notificationContent);
}
//新增检修单操作记录 //新增检修单操作记录
orderOperateRecordService.addMaintenanceOrder(model.getId() orderOperateRecordService.addMaintenanceOrder(model.getId()
, OrderOperateRecordEnum.ORDER_RECEIVING.getDesc() , OrderOperateRecordEnum.ORDER_RECEIVING.getDesc()
@ -558,6 +568,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus());
maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus());
//修改订单状态为检修中
Equipment equipment = equipmentMapper.findEquipmentById(maintenanceOrder.getEquipmentId());
equipment.setDeviceStatus(EquipmentStateEnum.UNDEROVERHAUL.getStatus());
equipmentMapper.updateById(equipment);
//新增检修单操作记录 //新增检修单操作记录
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc() ,OrderOperateRecordEnum.CUSTOMER_CONFIRM.getDesc()
@ -615,6 +630,11 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus()); maintenanceOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus());
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus()); maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus());
//修改订单状态为检修中
Equipment equipment = equipmentMapper.findEquipmentById(maintenanceOrder.getEquipmentId());
equipment.setDeviceStatus(EquipmentStateEnum.UNDEROVERHAUL.getStatus());
equipmentMapper.updateById(equipment);
Client client = clientMapper.findClientById(maintenanceOrder.getClientId()); Client client = clientMapper.findClientById(maintenanceOrder.getClientId());
if(client != null){ if(client != null){
orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId() orderOperateRecordService.addMaintenanceOrder(maintenanceOrder.getId()
@ -759,7 +779,8 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
maintenanceOrder.setFamiliarFaultId(maintenanceOrderParam.getFamiliarFaultId()); maintenanceOrder.setFamiliarFaultId(maintenanceOrderParam.getFamiliarFaultId());
maintenanceOrder.setFamiliarFaultDescription(maintenanceOrderParam.getFamiliarFaultDescription()); maintenanceOrder.setFamiliarFaultDescription(maintenanceOrderParam.getFamiliarFaultDescription());
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
maintenanceOrder.setOrderAccomplishTime(new Date()); Date finishTime = new Date();
maintenanceOrder.setOrderAccomplishTime(finishTime);
maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); maintenanceOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
maintenanceOrder.setCompleteImg(maintenanceOrderParam.getCompleteImg()); // 完工照片 maintenanceOrder.setCompleteImg(maintenanceOrderParam.getCompleteImg()); // 完工照片
maintenanceOrderMapper.updateById(maintenanceOrder); maintenanceOrderMapper.updateById(maintenanceOrder);
@ -769,6 +790,10 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
if(equipment != null){ if(equipment != null){
equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus()); equipment.setDeviceStatus(EquipmentStateEnum.NORMAL.getStatus());
equipmentMapper.updateById(equipment); equipmentMapper.updateById(equipment);
//发送通知到大屏
String notificationContent = "检修员【"+FrontThreadLocal.get("username")+"】于【"+TimeUtil.dateTransitionString(finishTime)+"】完成对设备【"+equipment.getName()+"】的检修工作";
restTemplateUtil.sendPost(notificationContent);
} }
//新增检修单操作记录 //新增检修单操作记录

View File

@ -40,12 +40,11 @@ import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.utils.OrderUtil; import com.hcy.common.utils.*;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal; import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IRepairOrderService; import com.hcy.front.service.order.IRepairOrderService;
import com.hcy.front.service.region.IDevRegionService; import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.utils.RestTemplateUtil;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RepairOrderParam; import com.hcy.front.validate.order.RepairOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam; import com.hcy.front.validate.warehouse.SparePartParam;
@ -55,6 +54,7 @@ import com.hcy.front.vo.order.*;
import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo; import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
@ -114,6 +114,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource @Resource
OrderOperateRecordServiceImpl orderOperateRecordService; OrderOperateRecordServiceImpl orderOperateRecordService;
@Resource
RestTemplateUtil restTemplateUtil;
private final DecimalFormat df = new DecimalFormat ("#.#"); private final DecimalFormat df = new DecimalFormat ("#.#");
/** /**
@ -128,21 +131,17 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
List<RepairOrderDto> repairOrderDtoList = repairOrderMapper.list(repairOrderDto); List<RepairOrderDto> repairOrderDtoList = repairOrderMapper.list(repairOrderDto);
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId()); SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId());
List<RepairOrderListVo> returnData = new LinkedList<>(); List<RepairOrderListVo> returnData = new LinkedList<>();
for (RepairOrderDto item : repairOrderDtoList) { for (RepairOrderDto item : repairOrderDtoList) {
if(repairOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){ if(repairOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
SystemAuthAdmin systemAuthAdminByUserId = systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(item.getCreatorId()));
//获取工厂
Plant plant = plantMapper.findPlantByAdminId(Long.valueOf(systemAuthAdminByUserId.getPlantId()));
//判断抢单距离大于订单距离则返回订单 //判断抢单距离大于订单距离则返回订单
double distance = ToolsUtil.getDistance(item.getLongitude(), item.getLatitude() double distance = ToolsUtil.getDistance(Double.parseDouble(plant.getLongitude()), Double.parseDouble(plant.getLatitude())
, repairOrderParam.getLongitude(), repairOrderParam.getLatitude()); , repairOrderParam.getLongitude(), repairOrderParam.getLatitude());
if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){ if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){
SystemAuthAdmin systemAuthAdminByUserId = systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(item.getCreatorId()));
//获取工厂
Plant plant = plantMapper.findPlantByAdminId(Long.valueOf(systemAuthAdminByUserId.getPlantId()));
if(systemAuthAdmin.getProvinceId().equals(plant.getProvinceId()) && if(systemAuthAdmin.getProvinceId().equals(plant.getProvinceId()) &&
systemAuthAdmin.getCityId().equals(plant.getCityId()) && systemAuthAdmin.getCityId().equals(plant.getCityId()) &&
systemAuthAdmin.getDistrictId().equals(plant.getDistrictId()) ){ systemAuthAdmin.getDistrictId().equals(plant.getDistrictId()) ){
@ -394,7 +393,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
repairOrder.setFamiliarFaultId(repairOrderParam.getFamiliarFaultId()); // 常见维修结论id repairOrder.setFamiliarFaultId(repairOrderParam.getFamiliarFaultId()); // 常见维修结论id
repairOrder.setFamiliarFaultDescription(repairOrderParam.getFamiliarFaultDescription()); // 常见维修结论描述 repairOrder.setFamiliarFaultDescription(repairOrderParam.getFamiliarFaultDescription()); // 常见维修结论描述
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus()); repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
repairOrder.setOrderAccomplishTime(new Date()); // 订单完成时间 Date finishTime = new Date();
repairOrder.setOrderAccomplishTime(finishTime); // 订单完成时间
repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus()); repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
repairOrder.setCompleteImg(repairOrderParam.getCompleteImg()); // 完工照片 repairOrder.setCompleteImg(repairOrderParam.getCompleteImg()); // 完工照片
repairOrderMapper.updateById(repairOrder); repairOrderMapper.updateById(repairOrder);
@ -403,6 +403,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
orderOperateRecordService.addRepairOrder(repairOrder.getId() orderOperateRecordService.addRepairOrder(repairOrder.getId()
,OrderOperateRecordEnum.FILL_IN_RECEIPT.getDesc() ,OrderOperateRecordEnum.FILL_IN_RECEIPT.getDesc()
,"【"+FrontThreadLocal.get("username")+"】已经完成任务"); ,"【"+FrontThreadLocal.get("username")+"】已经完成任务");
String notificationContent = "维修员【"+FrontThreadLocal.get("username")+"】于【"+TimeUtil.dateTransitionString(finishTime)+"】完成对模块【"+repairOrder.getModuleNumber()+"】的维修工作";
restTemplateUtil.sendPost(notificationContent);
}else{ }else{
throw new OperateException("当前订单状态无法进行填写回单操作"); throw new OperateException("当前订单状态无法进行填写回单操作");
} }
@ -790,7 +793,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
// 获取当前的用户 // 获取当前的用户
model.setCreatorId(FrontThreadLocal.getUserId().longValue()); // 创建人id model.setCreatorId(FrontThreadLocal.getUserId().longValue()); // 创建人id
model.setCreateTime(new Date()); //创建时间 Date currentTime = new Date();
model.setCreateTime(currentTime); //创建时间
repairOrderMapper.insert(model); repairOrderMapper.insert(model);
@ -798,6 +802,14 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
orderOperateRecordService.addRepairOrder(model.getId() orderOperateRecordService.addRepairOrder(model.getId()
, OrderOperateRecordEnum.NEW_CREATE.getDesc() , OrderOperateRecordEnum.NEW_CREATE.getDesc()
,"维修主管【"+FrontThreadLocal.get("username")+"】创建了维修工单。"); ,"维修主管【"+FrontThreadLocal.get("username")+"】创建了维修工单。");
Client client = clientMapper.findClientById(repairOrderParam.getClientId());
Equipment equipment = equipmentMapper.findEquipmentById(repairOrderParam.getEquipmentId());
if(client != null && equipment != null){
//发送通知到大屏
String notificationContent = "客户【"+client.getClientName()+"】于【"+TimeUtil.dateTransitionString(currentTime)+"】上报工单,维修设备【"+equipment.getName()+"】";
restTemplateUtil.sendPost(notificationContent);
}
} }
/** /**
@ -936,7 +948,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
BigDecimal actualAmount = new BigDecimal("0"); BigDecimal actualAmount = new BigDecimal("0");
//判断是否已经服务报价过了 //判断是否已经服务报价过了
List<OrderSparePart> orderSpareParts = orderSparePartMapper.findOrderSparePartByMaintenanceOrderId(repairOrder.getId()); List<OrderSparePart> orderSpareParts = orderSparePartMapper.findOrderSparePartByRepairOrderId(repairOrder.getId());
for (OrderSparePart orderSparePart : orderSpareParts) { for (OrderSparePart orderSparePart : orderSpareParts) {
//已经报过价就将之前的报价信息删除 //已经报过价就将之前的报价信息删除
orderSparePartMapper.deleteById(orderSparePart); orderSparePartMapper.deleteById(orderSparePart);

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.constant.GlobalConstant; import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.dto.RoutingInspectionOrderDto; import com.hcy.common.dto.RoutingInspectionOrderDto;
import com.hcy.common.dto.order.MaintenanceOrderDto;
import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Client;
import com.hcy.common.entity.client.Equipment; import com.hcy.common.entity.client.Equipment;
import com.hcy.common.entity.fault.Fault; import com.hcy.common.entity.fault.Fault;
@ -26,19 +25,19 @@ import com.hcy.common.mapper.order.MaintenanceOrderMapper;
import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; import com.hcy.common.mapper.order.RoutingInspectionOrderMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper; import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.ToolsUtil; import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal; import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IRoutingInspectionOrderService; import com.hcy.front.service.order.IRoutingInspectionOrderService;
import com.hcy.front.service.region.IDevRegionService; import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.utils.RestTemplateUtil;
import com.hcy.front.validate.PageParam; import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.RoutingInspectionOrderParam; import com.hcy.front.validate.order.RoutingInspectionOrderParam;
import com.hcy.front.vo.client.EquipmentListVo; 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.OrderStatusCountVo;
import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo;
import com.hcy.front.vo.order.RoutingInspectionOrderListVo; import com.hcy.front.vo.order.RoutingInspectionOrderListVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.weaver.ast.Or;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -84,6 +83,9 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
@Resource @Resource
IDevRegionService regionService; IDevRegionService regionService;
@Resource
RestTemplateUtil restTemplateUtil;
private final DecimalFormat df = new DecimalFormat ("#.#"); private final DecimalFormat df = new DecimalFormat ("#.#");
@ -263,13 +265,13 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
model.setFaultId(routingInspectionOrderParam.getFaultId()); // 故障id model.setFaultId(routingInspectionOrderParam.getFaultId()); // 故障id
model.setFaultDescription(routingInspectionOrderParam.getFaultDescription()); // 故障描述 model.setFaultDescription(routingInspectionOrderParam.getFaultDescription()); // 故障描述
model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果0=正常 1=异常) model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果0=正常 1=异常)
Date finishTime = new Date();
//设备数据
Equipment equipment = equipmentMapper.findEquipmentById(model.getEquipmentId());
//如果故障检测是选了异常,需要把设备状态改为报修中 //如果故障检测是选了异常,需要把设备状态改为报修中
if(routingInspectionOrderParam.getInspectionResult() == OrderStateEnum.ABNORMAL.getStatus()){ if(routingInspectionOrderParam.getInspectionResult() == OrderStateEnum.ABNORMAL.getStatus()){
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("id", model.getEquipmentId())
.eq("is_delete", 0)
.last("limit 1"));
equipment.setDeviceStatus(EquipmentStateEnum.UNDERWARRANTY.getStatus()); equipment.setDeviceStatus(EquipmentStateEnum.UNDERWARRANTY.getStatus());
equipmentMapper.updateById(equipment); equipmentMapper.updateById(equipment);
//如果故障检测异常,需要创建检修单 //如果故障检测异常,需要创建检修单
@ -277,7 +279,8 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
maintenanceOrder.setOrderNo(getOrderNo()); maintenanceOrder.setOrderNo(getOrderNo());
maintenanceOrder.setCreatorId(FrontThreadLocal.getUserId().longValue()); //创建人id maintenanceOrder.setCreatorId(FrontThreadLocal.getUserId().longValue()); //创建人id
maintenanceOrder.setCreateTime(new Date()); //创建时间 Date currentTime = new Date();
maintenanceOrder.setCreateTime(currentTime); //创建时间
maintenanceOrder.setClientId(model.getClientId()); // 客户id maintenanceOrder.setClientId(model.getClientId()); // 客户id
maintenanceOrder.setEquipmentId(model.getEquipmentId()); // 设备id maintenanceOrder.setEquipmentId(model.getEquipmentId()); // 设备id
maintenanceOrder.setFaultId(model.getFaultId()); // 故障id maintenanceOrder.setFaultId(model.getFaultId()); // 故障id
@ -287,7 +290,6 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
maintenanceOrder.setRemark(model.getInspectionResultRemark()); // 备注 maintenanceOrder.setRemark(model.getInspectionResultRemark()); // 备注
maintenanceOrder.setOrderSource(OrderStateEnum.MAINTENANCE_MAN_CREATION.getStatus()); //订单来源3=检修员创建 maintenanceOrder.setOrderSource(OrderStateEnum.MAINTENANCE_MAN_CREATION.getStatus()); //订单来源3=检修员创建
maintenanceOrder.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单 maintenanceOrder.setOrderStatus(OrderStateEnum.WAITING_LIST.getStatus()); // 订单状态 0-待抢单
maintenanceOrderMapper.insert(maintenanceOrder); maintenanceOrderMapper.insert(maintenanceOrder);
//新增巡检单操作记录 //新增巡检单操作记录
@ -295,17 +297,25 @@ public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrde
, OrderOperateRecordEnum.FAULT_DETECT.getDesc() , OrderOperateRecordEnum.FAULT_DETECT.getDesc()
,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " + ,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " +
OrderStateEnum.ABNORMAL.getDesc() + ";系统会自动创建检修单且流入到工单池。"); OrderStateEnum.ABNORMAL.getDesc() + ";系统会自动创建检修单且流入到工单池。");
//发送通知到大屏
String notificationContent = "检修员【"+FrontThreadLocal.get("username")+"】于【"+ TimeUtil.dateTransitionString(currentTime)+"】上报工单,报修设备【"+equipment.getName()+"】";
restTemplateUtil.sendPost(notificationContent);
}else{ }else{
//新增巡检单操作记录 //新增巡检单操作记录
orderOperateRecordService.addRoutingInspectionOrder(model.getId() orderOperateRecordService.addRoutingInspectionOrder(model.getId()
, OrderOperateRecordEnum.FAULT_DETECT.getDesc() , OrderOperateRecordEnum.FAULT_DETECT.getDesc()
,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " + ,"【"+FrontThreadLocal.get("username")+"】已提交故障检测结果,检测结果: " +
OrderStateEnum.NORMAL.getDesc() + ";"); OrderStateEnum.NORMAL.getDesc() + ";");
String notificationContent = "检修员【"+FrontThreadLocal.get("username")+"】于【"+TimeUtil.dateTransitionString(finishTime)+"】完成对设备【"+equipment.getName()+"】的巡检工作";
restTemplateUtil.sendPost(notificationContent);
} }
model.setInspectionResultRemark(routingInspectionOrderParam.getInspectionResultRemark());//巡检结果备注 model.setInspectionResultRemark(routingInspectionOrderParam.getInspectionResultRemark());//巡检结果备注
model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片 model.setInspectionPhoto(routingInspectionOrderParam.getInspectionPhoto()); // 巡检照片
model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成 model.setOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成
model.setOrderAccomplishTime(new Date()); //订单完成时间 model.setOrderAccomplishTime(finishTime); //订单完成时间
routingInspectionOrderMapper.updateById(model); routingInspectionOrderMapper.updateById(model);
//新增巡检单操作记录 //新增巡检单操作记录

View File

@ -0,0 +1,34 @@
package com.hcy.front.utils;
import com.hcy.common.entity.system.SystemNotification;
import lombok.Data;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
@Data
@Component
@Log4j2
public class RestTemplateUtil {
@Value("${adminService.sendLargeScreenUrl}")
public String sendLargeScreenUrl;
public void sendPost(String content){
try{
SystemNotification systemNotification = new SystemNotification();
systemNotification.setContent(content);
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject(sendLargeScreenUrl, systemNotification, String.class);
}catch (Exception e){
log.error("上报大屏失败:"+e.getMessage());
}
}
}

View File

@ -59,6 +59,8 @@ spring:
mybatis-plus: mybatis-plus:
mapper-locations: classpath*:/mapper/**Mapper.xml # 映射文件路径 mapper-locations: classpath*:/mapper/**Mapper.xml # 映射文件路径
typeAliasesPackage: com.hcy.**.mapper typeAliasesPackage: com.hcy.**.mapper
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config: global-config:
banner: false banner: false
db-config: db-config:
@ -87,5 +89,9 @@ byte:
query-order-url: https://developer.toutiao.com/api/apps/ecpay/v1/query_order query-order-url: https://developer.toutiao.com/api/apps/ecpay/v1/query_order
query-refund-url: https://developer.toutiao.com/api/apps/ecpay/v1/query_refund query-refund-url: https://developer.toutiao.com/api/apps/ecpay/v1/query_refund
netty: netty:
port: 8081 port: 8083
path: /staff path: /staff
#adnin服务地址
adminService:
sendLargeScreenUrl : http://localhost:8082/api/system/notification/sendLargeScreen