修改了工单bug
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-07-21 20:56:46 +08:00
parent 0b90663d3d
commit 1e9efc77ed
15 changed files with 225 additions and 46 deletions

View File

@@ -68,7 +68,17 @@ public class CostMeterWaterController extends BaseController {
@PathVariable("id") Long id) { @PathVariable("id") Long id) {
return R.ok(costMeterWaterService.queryById(id)); return R.ok(costMeterWaterService.queryById(id));
} }
/**
* 获取上月费用详情
*
*
*/
@GetMapping("/ultimoWater/{roomId}")
public R<CostMeterWaterVo> getUltimoWater(@NotNull(message = "房间id不能为空")
@PathVariable("roomId") Long roomId) {
return R.ok(costMeterWaterService.getUltimoWater(roomId));
}
/** /**
* 新增费用-水电抄 * 新增费用-水电抄
*/ */

View File

@@ -0,0 +1,36 @@
package org.dromara.property.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.bo.ServerBookingBo;
import org.dromara.property.domain.vo.ServeceCustomerCountVo;
import org.dromara.property.domain.vo.ServerBookingVo;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author:yuyongle
* @Date:2025/7/21 15:25
* @Description:客户服务控制器
**/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/serveceCustomer")
public class ServeceCustomerController {
private final IServiceWorkOrdersService serviceWorkOrdersService;
/**
* 查询客户服务工单看板统计
*/
@GetMapping("/counts")
public R<ServeceCustomerCountVo> counts() {
return R.ok(serviceWorkOrdersService.counts());
}
}

View File

@@ -57,7 +57,7 @@ public class ServiceWorkOrders extends TenantEntity {
/** /**
* 发起人 * 发起人
*/ */
private long initiatorPeople; private String initiatorPeople;
/** /**

View File

@@ -34,7 +34,14 @@ public class CostReturnPayFeeBo extends BaseEntity {
*/ */
@NotBlank(message = "退款单号不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "退款单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String returnNo; private String returnNo;
/**
* 收费id
*/
private Long chargeId;
/**
* 收费类型
*/
private String chargeType;
/** /**
* 支付单号 * 支付单号
*/ */

View File

@@ -36,11 +36,13 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/** /**
* 工单名称 * 工单名称
*/ */
@NotNull(message = "工单名称不能为空", groups = { EditGroup.class })
private String orderName; private String orderName;
/** /**
* 工单类型 * 工单类型
*/ */
@NotNull(message = "工单类型不能为空", groups = { EditGroup.class })
private Long type; private Long type;
/** /**
@@ -67,11 +69,14 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/** /**
* 地址 * 地址
*/ */
@NotNull(message = "地址不能为空", groups = { EditGroup.class })
private String location; private String location;
/** /**
* 计划完成时间 * 计划完成时间
*/ */
@NotNull(message = "计划完成时间不能为空", groups = { EditGroup.class })
private Date planCompleTime; private Date planCompleTime;
/** /**

View File

@@ -0,0 +1,52 @@
package org.dromara.property.domain.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author:yuyongle
* @Date:2025/7/21 15:29
* @Description:客户服务工单统计看板
**/
@Data
@Accessors(chain = true)
public class ServeceCustomerCountVo implements Serializable {
/**
* 工单总数
*/
private Integer workOrdersTotal;
/**
* 未派工单总数
*/
private Integer notWorkOrdersTotal;
/**
* 未半结超时工单
*/
private Integer novertimeOrdersTotal;
/**
* 处理中工单
*/
private Integer InHandOrdersTotal;
/**
* 当月工单超时率
*/
private Integer novertimeOrdersRate;
/**
* 当月工单数
*/
private Integer monthOrdersTotal;
/**
* 超时工单数
*/
private Integer outTimeOrdersTotal;
/**
* 当月满意度
*/
private Integer monthoSatisfaction;
/**
* 满意数
*/
private Integer satisfaction;
}

View File

@@ -62,15 +62,9 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
private Date dispatchTime; private Date dispatchTime;
/** /**
* 发起人姓名 * 发起人
*/ */
@ExcelProperty(value = "发起人姓名") private String initiatorPeople;
private String initiatorName;
/**
* 发起人姓名文本
*/
@ExcelProperty(value = "发起人姓名文本")
private String initiatorNameText;
/** /**
* 发起人手机号 * 发起人手机号

View File

@@ -47,6 +47,10 @@ public class ServiceWorkOrdersRecordInfoVo implements Serializable {
*/ */
@ExcelProperty(value = "处理人") @ExcelProperty(value = "处理人")
private String handlerName; private String handlerName;
/**
* 发起人
*/
private String initiatorPeople;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@@ -70,8 +70,7 @@ public class ServiceWorkOrdersVo implements Serializable {
/** /**
* 发起人 * 发起人
*/ */
private long initiatorPeople; private String initiatorPeople;
/** /**
* 处理人姓名 * 处理人姓名
@@ -81,12 +80,6 @@ public class ServiceWorkOrdersVo implements Serializable {
* 抄送人 * 抄送人
*/ */
private long ccPeople; private long ccPeople;
/**
* 发起人姓名文本
*/
@ExcelProperty(value = "发起人姓名文本")
private String initiatorNameText;
/** /**
* 发起人手机号 * 发起人手机号
*/ */

View File

@@ -66,4 +66,10 @@ public interface ICostMeterWaterService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取上月水电详情
* @return
*/
CostMeterWaterVo getUltimoWater(Long roomId);
} }

View File

@@ -3,6 +3,7 @@ package org.dromara.property.service;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo; import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.vo.ServeceCustomerCountVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo; import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersVo; import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
@@ -66,4 +67,10 @@ public interface IServiceWorkOrdersService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 工单服务看板
* @return
*/
ServeceCustomerCountVo counts();
} }

View File

@@ -119,6 +119,7 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId()); CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId());
BigDecimal unitPrice = costItemsVo.getUnitPrice(); BigDecimal unitPrice = costItemsVo.getUnitPrice();
add.setAmountReceivable(unitPrice); add.setAmountReceivable(unitPrice);
add.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {

View File

@@ -1,5 +1,6 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -136,4 +137,18 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
/**
* 获取上月水电详情
* @return
*/
@Override
public CostMeterWaterVo getUltimoWater(Long roomId) {
LambdaQueryWrapper<CostMeterWater> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CostMeterWater::getRoomId, roomId);
wrapper.orderByDesc(CostMeterWater::getCreateTime);
wrapper.last("LIMIT 1");
CostMeterWater latestRecord = baseMapper.selectOne(wrapper);
return BeanUtil.copyProperties(latestRecord,CostMeterWaterVo.class);
}
} }

View File

@@ -1,5 +1,6 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@@ -115,15 +116,23 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
@Override @Override
public Boolean updateByBo(ResidentPersonBo bo) { public Boolean updateByBo(ResidentPersonBo bo) {
ResidentPerson update = MapstructUtils.convert(bo, ResidentPerson.class); ResidentPerson update = MapstructUtils.convert(bo, ResidentPerson.class);
validEntityBeforeSave(update); validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
/**
* 保存前的数据校验
*/
private void validEntityBeforeUpdate(ResidentPerson entity){
//TODO 做一些数据校验,如唯一约束
}
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(ResidentPerson entity){ private void validEntityBeforeSave(ResidentPerson entity){
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
boolean exists = baseMapper.exists(new LambdaQueryWrapper<ResidentPerson>().eq(ResidentPerson::getUserId, entity.getUserId()));
Assert.isTrue(!exists,"该用户已入住!");
} }
/** /**

View File

@@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.idev.excel.event.Order;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -13,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.ResidentPerson; import org.dromara.property.domain.ResidentPerson;
import org.dromara.property.domain.ServiceWorkOrders; import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersRecord; import org.dromara.property.domain.ServiceWorkOrdersRecord;
@@ -24,6 +27,7 @@ import org.dromara.property.mapper.ServiceWorkOrdersMapper;
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper; import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper; import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
import org.dromara.property.service.IServiceWorkOrdersService; import org.dromara.property.service.IServiceWorkOrdersService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -56,34 +60,33 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
public ServiceWorkOrdersInfoVo queryById(Long id) { public ServiceWorkOrdersInfoVo queryById(Long id) {
ServiceWorkOrdersVo serviceWorkOrdersVo = baseMapper.selectVoById(id); ServiceWorkOrdersVo serviceWorkOrdersVo = baseMapper.selectVoById(id);
ServiceWorkOrdersInfoVo serviceWorkOrdersInfoVo = BeanUtil.copyProperties(serviceWorkOrdersVo, ServiceWorkOrdersInfoVo.class); ServiceWorkOrdersInfoVo serviceWorkOrdersInfoVo = BeanUtil.copyProperties(serviceWorkOrdersVo, ServiceWorkOrdersInfoVo.class);
if(Objects.isNull(serviceWorkOrdersInfoVo)){
return serviceWorkOrdersInfoVo;
}
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = typesMapper.selectVoById(serviceWorkOrdersVo.getType()); ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = typesMapper.selectVoById(serviceWorkOrdersVo.getType());
if (Objects.nonNull(serviceWorkOrdersTypeVo)) { if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName()); serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName());
} }
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getInitiatorPeople()));
if (Objects.nonNull(residentPersonVo)) {
serviceWorkOrdersInfoVo.setInitiatorNameText(residentPersonVo.getUserName());
serviceWorkOrdersInfoVo.setInitiatorPhone(residentPersonVo.getPhone());
}
ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler())); ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
if (Objects.nonNull(residentPersonHandler)) { if (Objects.nonNull(residentPersonHandler)) {
serviceWorkOrdersInfoVo.setHandlerText(residentPersonHandler.getUserName()); serviceWorkOrdersInfoVo.setHandlerText(residentPersonHandler.getUserName());
serviceWorkOrdersInfoVo.setHandlerPhone(residentPersonHandler.getPhone()); serviceWorkOrdersInfoVo.setHandlerPhone(residentPersonHandler.getPhone());
} }
//查询工单处理记录 //查询工单处理记录
List<ServiceWorkOrdersRecordVo> serviceWorkOrdersRecordVoList = workOrdersRecordMapper.selectVoList(new LambdaQueryWrapper<ServiceWorkOrdersRecord>() List<ServiceWorkOrdersRecordVo> serviceWorkOrdersRecordVoList = workOrdersRecordMapper.selectVoList(new LambdaQueryWrapper<ServiceWorkOrdersRecord>().eq(ServiceWorkOrdersRecord::getOrderId, id));
.eq(ServiceWorkOrdersRecord::getOrderId, id));
if (CollUtil.isNotEmpty(serviceWorkOrdersRecordVoList)) { if (CollUtil.isNotEmpty(serviceWorkOrdersRecordVoList)) {
List<ServiceWorkOrdersRecordInfoVo> serviceWorkOrdersRecordInfoVos = BeanUtil.copyToList(serviceWorkOrdersRecordVoList, ServiceWorkOrdersRecordInfoVo.class); List<ServiceWorkOrdersRecordInfoVo> serviceWorkOrdersRecordInfoVos = BeanUtil.copyToList(serviceWorkOrdersRecordVoList, ServiceWorkOrdersRecordInfoVo.class);
List<Long>residentPersonIdList = serviceWorkOrdersRecordInfoVos.stream() List<Long> residentPersonIdList = serviceWorkOrdersRecordInfoVos.stream().map(vo -> vo.getHandler()).distinct().collect(Collectors.toList());
.map(vo -> vo.getHandler())
.distinct()
.collect(Collectors.toList());
List<ResidentPerson> residentPeople = residentPersonMapper.selectByIds(residentPersonIdList); List<ResidentPerson> residentPeople = residentPersonMapper.selectByIds(residentPersonIdList);
serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo->{ serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo -> {
ResidentPerson residentPerson = residentPeople.stream() ResidentPerson residentPerson = residentPeople.stream().filter(vo -> vo.getId() != null && vo.getId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
.filter(vo -> vo.getId() != null && vo.getId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null); workOrdersRecordVo.setHandlerName(Objects.nonNull(residentPerson) ? residentPerson.getUserName() : null);
workOrdersRecordVo.setHandlerName(residentPerson.getUserName()); if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
workOrdersRecordVo.setInitiatorPeople(serviceWorkOrdersVo.getInitiatorPeople());
}
if(workOrdersRecordVo.getStatus().equals("1")||workOrdersRecordVo.getStatus().equals("2")){
serviceWorkOrdersInfoVo.setDispatchTime(workOrdersRecordVo.getCreateTime());
}
}); });
serviceWorkOrdersInfoVo.setWorkOrdersRecordVoList(serviceWorkOrdersRecordInfoVos); serviceWorkOrdersInfoVo.setWorkOrdersRecordVoList(serviceWorkOrdersRecordInfoVos);
} }
@@ -104,18 +107,14 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
if (ObjectUtil.isEmpty(result.getRecords())) { if (ObjectUtil.isEmpty(result.getRecords())) {
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
List<Long> typeList = result.getRecords().stream() List<Long> typeList = result.getRecords().stream().map(vo -> vo.getType()).distinct().collect(Collectors.toList());
.map(vo -> vo.getType())
.distinct()
.collect(Collectors.toList());
List<ServiceWorkOrdersTypeVo> serviceWorkOrdersTypeVoList = typesMapper.selectVoByIds(typeList); List<ServiceWorkOrdersTypeVo> serviceWorkOrdersTypeVoList = typesMapper.selectVoByIds(typeList);
if (ObjectUtil.isEmpty(serviceWorkOrdersTypeVoList)) { if (ObjectUtil.isEmpty(serviceWorkOrdersTypeVoList)) {
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
List<ServiceWorkOrdersVo> serviceWorkOrdersVoList = new ArrayList<>(); List<ServiceWorkOrdersVo> serviceWorkOrdersVoList = new ArrayList<>();
result.getRecords().stream().forEach(s -> { result.getRecords().stream().forEach(s -> {
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream() ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null); s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null);
serviceWorkOrdersVoList.add(s); serviceWorkOrdersVoList.add(s);
@@ -163,8 +162,10 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(ServiceWorkOrdersBo bo) { public Boolean insertByBo(ServiceWorkOrdersBo bo) {
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class); ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
LoginUser user = LoginHelper.getLoginUser();
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr()); add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
add.setStatus("0"); add.setStatus("0");
add.setInitiatorPeople(user.getNickname());
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
@@ -202,16 +203,19 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
} }
/** /**
* 保存前的数据校验 * 修改前的数据校验
*/ */
private void validEntityBeforeUpdate(ServiceWorkOrders entity) { private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
ServiceWorkOrders serviceWorkOrders = baseMapper.selectById(entity.getId()); LambdaQueryWrapper<ServiceWorkOrdersRecord> ordersLambdaQueryWrapper = new LambdaQueryWrapper<>();
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getOrderId, entity.getId());
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
if (!entity.getStatus().equals(serviceWorkOrders.getStatus())) { if (!exists) {
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord(); ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
serviceWorkOrdersRecord.setOrderId(serviceWorkOrders.getId()); serviceWorkOrdersRecord.setOrderId(entity.getId());
serviceWorkOrdersRecord.setStatus(serviceWorkOrders.getStatus()); serviceWorkOrdersRecord.setStatus(entity.getStatus());
serviceWorkOrdersRecord.setHandler(serviceWorkOrders.getHandler()); serviceWorkOrdersRecord.setHandler(entity.getHandler());
workOrdersRecordMapper.insert(serviceWorkOrdersRecord); workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
} }
} }
@@ -231,4 +235,40 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
/**
* 工单服务看板
* @return
*/
@Override
public ServeceCustomerCountVo counts() {
List<ServiceWorkOrders> serviceWorkOrdersList = baseMapper.selectList(new QueryWrapper<>());
// 总工单数
int workOrdersTotal = serviceWorkOrdersList.size();
// 待派送工单
int notWorkOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "0".equals(order.getStatus())).count();
//未半结超时工单
int novertimeOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> !"4".equals(order.getStatus()) && "1".equals(order.getIsTimeOut())).count();
// 处理中工单
int inHandOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
// 当月工单超时率
int novertimeOrdersRate = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
// 当月工单数
int monthOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
// 超时工单数
int outTimeOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
// 当月满意度
int monthoSatisfaction = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
// 满意数
int satisfaction = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
new ServeceCustomerCountVo()
.setWorkOrdersTotal(workOrdersTotal)
.setNotWorkOrdersTotal(notWorkOrdersTotal)
.setNovertimeOrdersTotal(novertimeOrdersTotal)
.setInHandOrdersTotal(inHandOrdersTotal);
return null;
}
} }