|
|
@@ -48,10 +48,10 @@ public class BusinessWorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, W
|
|
|
private EquipmentStatusMapper equipmentStatusMapper;
|
|
|
|
|
|
@Override
|
|
|
- public IPage<WorkOrder> selectWorkOrderList(Integer orderType, Integer orderLevel, Integer orderStatus, String deviceCode, String keyword, String equipmentType, Integer pageNum, Integer pageSize) {
|
|
|
+ public IPage<WorkOrder> selectWorkOrderList(Integer orderType, Integer orderLevel, String orderStatus, String deviceCode, String keyword, String equipmentType, Integer pageNum, Integer pageSize) {
|
|
|
Page<WorkOrder> page = new Page<>(pageNum, pageSize);
|
|
|
LambdaQueryWrapper<WorkOrder> wrapper = new LambdaQueryWrapper<>();
|
|
|
- // 按设备类型过滤工单:gas-燃气(父类别ID=3),drainage-排水(typeId为drainage的顶级分类)
|
|
|
+ // 按设备类型过滤工单:gas-燃气(父类别ID=3),drainage-排水(typeId为drainage的顶级分类),water-供水;为空查询全部设备工单
|
|
|
if (StringUtils.isNotEmpty(equipmentType)) {
|
|
|
if ("gas".equals(equipmentType)) {
|
|
|
wrapper.inSql(WorkOrder::getDeviceId, "SELECT eb.equipment_id FROM app_user.equipment_base eb " + "INNER JOIN app_user.equipment_type et ON eb.equipment_type_id = et.id " + "WHERE et.parent_type_id = '3'");
|
|
|
@@ -62,13 +62,23 @@ public class BusinessWorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, W
|
|
|
// 供水:顶级类型名称为“供水”的分类及其全部子类型
|
|
|
wrapper.inSql(WorkOrder::getDeviceId, "SELECT eb.equipment_id FROM app_user.equipment_base eb " + "INNER JOIN app_user.equipment_type et ON eb.equipment_type_id = et.id " + "WHERE et.id IN (SELECT id FROM app_user.equipment_type WHERE type_name = '供水' AND parent_type_id = '0' " + "UNION SELECT id FROM app_user.equipment_type WHERE parent_type_id = (SELECT id FROM app_user.equipment_type WHERE type_name = '供水' AND parent_type_id = '0'))");
|
|
|
}
|
|
|
- } else {
|
|
|
- // 默认只查询燃气设备类工单(兼容旧逻辑)
|
|
|
- wrapper.inSql(WorkOrder::getDeviceId, "SELECT eb.equipment_id FROM app_user.equipment_base eb " + "INNER JOIN app_user.equipment_type et ON eb.equipment_type_id = et.id " + "WHERE et.parent_type_id = '3'");
|
|
|
}
|
|
|
if (orderType != null) wrapper.eq(WorkOrder::getOrderType, orderType);
|
|
|
if (orderLevel != null) wrapper.eq(WorkOrder::getOrderLevel, orderLevel);
|
|
|
- if (orderStatus != null) wrapper.eq(WorkOrder::getOrderStatus, orderStatus);
|
|
|
+ // orderStatus 支持逗号分隔多值,如 1,2,3
|
|
|
+ if (StringUtils.isNotEmpty(orderStatus)) {
|
|
|
+ if (orderStatus.contains(",")) {
|
|
|
+ List<Integer> statusList = Arrays.stream(orderStatus.split(","))
|
|
|
+ .filter(StringUtils::isNumeric)
|
|
|
+ .map(Integer::valueOf)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (!statusList.isEmpty()) {
|
|
|
+ wrapper.in(WorkOrder::getOrderStatus, statusList);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wrapper.eq(WorkOrder::getOrderStatus, Integer.valueOf(orderStatus));
|
|
|
+ }
|
|
|
+ }
|
|
|
if (StringUtils.isNotEmpty(deviceCode)) wrapper.eq(WorkOrder::getDeviceCode, deviceCode);
|
|
|
if (StringUtils.isNotEmpty(keyword)) {
|
|
|
wrapper.and(w -> w.like(WorkOrder::getOrderNo, keyword).or().like(WorkOrder::getDeviceCode, keyword).or().like(WorkOrder::getOrderDesc, keyword));
|
|
|
@@ -278,6 +288,39 @@ public class BusinessWorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, W
|
|
|
return workOrder.getOrderId();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Long createWorkOrder(WorkOrder workOrder) {
|
|
|
+ if (workOrder.getOrderType() == null) {
|
|
|
+ workOrder.setOrderType(1);
|
|
|
+ }
|
|
|
+ if (workOrder.getOrderLevel() == null) {
|
|
|
+ workOrder.setOrderLevel(2);
|
|
|
+ }
|
|
|
+ workOrder.setOrderNo(generateOrderNo());
|
|
|
+ // 设备ID存在但未填设备编码时自动补全
|
|
|
+ if (StringUtils.isNotEmpty(workOrder.getDeviceId()) && StringUtils.isEmpty(workOrder.getDeviceCode())) {
|
|
|
+ EquipmentBase equipment = equipmentBaseMapper.selectById(workOrder.getDeviceId());
|
|
|
+ if (equipment != null) {
|
|
|
+ workOrder.setDeviceCode(equipment.getEquipmentCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ workOrder.setOrderStatus(1); // 待派单
|
|
|
+ workOrder.setCreateTime(new Date());
|
|
|
+ this.save(workOrder);
|
|
|
+
|
|
|
+ // 写入操作日志
|
|
|
+ WorkOrderLog logEntry = new WorkOrderLog();
|
|
|
+ logEntry.setOrderId(workOrder.getOrderId());
|
|
|
+ logEntry.setOperType(1);
|
|
|
+ logEntry.setOperDesc("手动创建工单");
|
|
|
+ logEntry.setOperTime(new Date());
|
|
|
+ workOrderLogMapper.insert(logEntry);
|
|
|
+
|
|
|
+ log.info("手动创建工单成功,工单ID={},类型={}", workOrder.getOrderId(), workOrder.getOrderType());
|
|
|
+ return workOrder.getOrderId();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成工单编号:WO-yyyyMMddHHmmssSSS
|
|
|
*/
|