修改了物业一些bug
Some checks failed
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Failing after 12m36s
Some checks failed
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Failing after 12m36s
This commit is contained in:
@@ -26,7 +26,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 【业务管理-工单处理】
|
* 【业务管理-工单处理】
|
||||||
* 前端访问路由地址为:/system/workOrders
|
* 前端访问路由地址为:/property/workOrders
|
||||||
*
|
*
|
||||||
* @author mocheng
|
* @author mocheng
|
||||||
* @date 2025-07-07
|
* @date 2025-07-07
|
||||||
@@ -42,7 +42,7 @@ public class ServiceWorkOrdersController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询【工单处理】列表
|
* 查询【工单处理】列表
|
||||||
*/
|
*/
|
||||||
//@SaCheckPermission("system:workOrders:list")
|
@SaCheckPermission("property:workOrders:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<ServiceWorkOrdersVo> list(ServiceWorkOrdersBo bo, PageQuery pageQuery) {
|
public TableDataInfo<ServiceWorkOrdersVo> list(ServiceWorkOrdersBo bo, PageQuery pageQuery) {
|
||||||
return serviceWorkOrdersService.queryPageList(bo, pageQuery);
|
return serviceWorkOrdersService.queryPageList(bo, pageQuery);
|
||||||
@@ -51,7 +51,7 @@ public class ServiceWorkOrdersController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 导出【工单处理】列表
|
* 导出【工单处理】列表
|
||||||
*/
|
*/
|
||||||
// @SaCheckPermission("system:workOrders:export")
|
@SaCheckPermission("property:workOrders:export")
|
||||||
@Log(title = "【工单处理】", businessType = BusinessType.EXPORT)
|
@Log(title = "【工单处理】", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(ServiceWorkOrdersBo bo, HttpServletResponse response) {
|
public void export(ServiceWorkOrdersBo bo, HttpServletResponse response) {
|
||||||
@@ -64,7 +64,7 @@ public class ServiceWorkOrdersController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
// @SaCheckPermission("system:workOrders:query")
|
@SaCheckPermission("property:workOrders:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<ServiceWorkOrdersInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<ServiceWorkOrdersInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable("id") Long id) {
|
@PathVariable("id") Long id) {
|
||||||
@@ -74,7 +74,7 @@ public class ServiceWorkOrdersController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 新增【工单处理】
|
* 新增【工单处理】
|
||||||
*/
|
*/
|
||||||
// @SaCheckPermission("system:workOrders:add")
|
@SaCheckPermission("property:workOrders:add")
|
||||||
@Log(title = "【工单处理】", businessType = BusinessType.INSERT)
|
@Log(title = "【工单处理】", businessType = BusinessType.INSERT)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PostMapping()
|
@PostMapping()
|
||||||
@@ -85,20 +85,40 @@ public class ServiceWorkOrdersController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 修改【工单处理】
|
* 修改【工单处理】
|
||||||
*/
|
*/
|
||||||
//@SaCheckPermission("system:workOrders:edit")
|
@SaCheckPermission("property:workOrders:edit")
|
||||||
@Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
|
@Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping()
|
@PutMapping()
|
||||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
|
||||||
return toAjax(serviceWorkOrdersService.updateByBo(bo));
|
return toAjax(serviceWorkOrdersService.updateByBo(bo));
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 派单【工单处理】
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("property:workOrders:dispatch")
|
||||||
|
@Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping("/dispatch")
|
||||||
|
public R<Void> dispatch(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
|
||||||
|
return toAjax(serviceWorkOrdersService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 抢单【工单处理】
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("property:workOrders:grab")
|
||||||
|
@Log(title = "【工单处理】", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping("grab")
|
||||||
|
public R<Void> grab(@Validated(EditGroup.class) @RequestBody ServiceWorkOrdersBo bo) {
|
||||||
|
return toAjax(serviceWorkOrdersService.updateByBo(bo));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 删除【工单处理】
|
* 删除【工单处理】
|
||||||
*
|
*
|
||||||
* @param ids 主键串
|
* @param ids 主键串
|
||||||
*/
|
*/
|
||||||
// @SaCheckPermission("system:workOrders:remove")
|
@SaCheckPermission("property:workOrders:remove")
|
||||||
@Log(title = "【工单处理】", businessType = BusinessType.DELETE)
|
@Log(title = "【工单处理】", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@@ -47,7 +47,7 @@ public class ServiceWorkOrders extends TenantEntity {
|
|||||||
private Long type;
|
private Long type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态(0创建工单,1已派单2已抢单3处理中,4已完成,5已评价)
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@@ -38,7 +38,7 @@ public class ServiceWorkOrdersType extends TenantEntity {
|
|||||||
private String orderTypeName;
|
private String orderTypeName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运作模式
|
* 运作模式(0派单+抢单,1派单,2自动派单)
|
||||||
*/
|
*/
|
||||||
private String operationMode;
|
private String operationMode;
|
||||||
|
|
||||||
@@ -56,7 +56,10 @@ public class ServiceWorkOrdersType extends TenantEntity {
|
|||||||
* 是否支持转单(0支持,1不支持)
|
* 是否支持转单(0支持,1不支持)
|
||||||
*/
|
*/
|
||||||
private Integer isTransfers;
|
private Integer isTransfers;
|
||||||
|
/**
|
||||||
|
* 权重(1一般2紧急3危急)
|
||||||
|
*/
|
||||||
|
private String processingWeight;
|
||||||
/**
|
/**
|
||||||
* 搜索值
|
* 搜索值
|
||||||
*/
|
*/
|
||||||
|
@@ -50,6 +50,11 @@ public class CostCarChargeBo extends BaseEntity {
|
|||||||
* 车位
|
* 车位
|
||||||
*/
|
*/
|
||||||
private String location;
|
private String location;
|
||||||
|
/**
|
||||||
|
* 车位名称
|
||||||
|
*/
|
||||||
|
private String locationName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缴费状态
|
* 缴费状态
|
||||||
*/
|
*/
|
||||||
|
@@ -54,7 +54,10 @@ public class ServiceWorkOrdersTypeBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@NotNull(message = "完成时效不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "完成时效不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Integer completionNumber;
|
private Integer completionNumber;
|
||||||
|
/**
|
||||||
|
* 权重(1一般2紧急3危急)
|
||||||
|
*/
|
||||||
|
private String processingWeight;
|
||||||
/**
|
/**
|
||||||
* 是否支持转单(0支持,1不支持)
|
* 是否支持转单(0支持,1不支持)
|
||||||
*/
|
*/
|
||||||
|
@@ -0,0 +1,28 @@
|
|||||||
|
package org.dromara.property.domain.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工单上报类型
|
||||||
|
*/
|
||||||
|
public enum OrderReportingTypeEnum {
|
||||||
|
TELEPHONE_REPORT("电话上报", "1"),
|
||||||
|
SCENE_REPORT("现场上报", "2"),
|
||||||
|
SYSTEM_REPORT("系统上报", "3"),
|
||||||
|
PHONE_REPORT("手机上报", "4");
|
||||||
|
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
OrderReportingTypeEnum(String name, String value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,28 @@
|
|||||||
|
package org.dromara.property.domain.enums;
|
||||||
|
/**
|
||||||
|
* @Author:yuyongle
|
||||||
|
* @Date:2025/7/4 10:35
|
||||||
|
* @Description:工单类型运作模式
|
||||||
|
**/
|
||||||
|
public enum OrderTypeOperationEnum {
|
||||||
|
DISPATCH_ORDERS_AND_GRAB_ORDERS("派单+抢单", "0"),
|
||||||
|
DISPATCH("派单", "1"),
|
||||||
|
AUTOMATE_DISPATCH("自动派单", "2");
|
||||||
|
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
OrderTypeOperationEnum(String name, String value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
}
|
@@ -35,6 +35,10 @@ public class CostHouseChargeDetailVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "房屋")
|
@ExcelProperty(value = "房屋")
|
||||||
private Long roomId;
|
private Long roomId;
|
||||||
|
/**
|
||||||
|
* 房屋名称
|
||||||
|
*/
|
||||||
|
private String roomName;
|
||||||
/**
|
/**
|
||||||
* 业主
|
* 业主
|
||||||
*/
|
*/
|
||||||
|
@@ -42,6 +42,11 @@ public class CostHouseChargeVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "房屋")
|
@ExcelProperty(value = "房屋")
|
||||||
private Long roomId;
|
private Long roomId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 房屋名称
|
||||||
|
*/
|
||||||
|
private String roomName;
|
||||||
/**
|
/**
|
||||||
* 业主
|
* 业主
|
||||||
*/
|
*/
|
||||||
|
@@ -45,6 +45,10 @@ public class CostMeterWaterVo implements Serializable {
|
|||||||
* 费用类型
|
* 费用类型
|
||||||
*/
|
*/
|
||||||
private String costType;
|
private String costType;
|
||||||
|
/**
|
||||||
|
* 费用名称
|
||||||
|
*/
|
||||||
|
private String costTypeName;
|
||||||
/**
|
/**
|
||||||
* 房间id
|
* 房间id
|
||||||
*/
|
*/
|
||||||
|
@@ -57,7 +57,10 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "权重")
|
@ExcelProperty(value = "权重")
|
||||||
private String processingWeight;
|
private String processingWeight;
|
||||||
|
/**
|
||||||
|
* 运作模式(0派单+抢单,1派单,2自动派单)
|
||||||
|
*/
|
||||||
|
private String operationMode;
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
|
@@ -68,7 +68,10 @@ public class ServiceWorkOrdersTypeVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "是否支持转单(0支持,1不支持)")
|
@ExcelProperty(value = "是否支持转单(0支持,1不支持)")
|
||||||
private Integer isTransfers;
|
private Integer isTransfers;
|
||||||
|
/**
|
||||||
|
* 权重(1一般2紧急3危急)
|
||||||
|
*/
|
||||||
|
private String processingWeight;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搜索值
|
* 搜索值
|
||||||
|
@@ -67,7 +67,7 @@ public class ServiceWorkOrdersVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "状态")
|
@ExcelProperty(value = "状态(0创建工单,1已派单2已抢单3处理中,4已完成,5已评价)")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,7 +75,10 @@ public class ServiceWorkOrdersVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "派单时间")
|
@ExcelProperty(value = "派单时间")
|
||||||
private Date dispatchTime;
|
private Date dispatchTime;
|
||||||
|
/**
|
||||||
|
* 运作模式(0派单+抢单,1派单,2自动派单)
|
||||||
|
*/
|
||||||
|
private String operationMode;
|
||||||
/**
|
/**
|
||||||
* 发起人
|
* 发起人
|
||||||
*/
|
*/
|
||||||
|
@@ -20,5 +20,5 @@ public interface TbRoomMapper extends BaseMapperPlus<TbRoom, TbRoomVo> {
|
|||||||
|
|
||||||
//查询房间名称
|
//查询房间名称
|
||||||
String queryRoomName(Long roomId);
|
String queryRoomName(Long roomId);
|
||||||
Map<Long,String> queryRoomNameList(@Param("ids") List<Long> ids);
|
List<String> queryRoomNameList(@Param("ids") List<Long> ids);
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 房间信息Service接口
|
* 房间信息Service接口
|
||||||
@@ -76,5 +77,11 @@ public interface ITbRoomService {
|
|||||||
* @return 房间名称
|
* @return 房间名称
|
||||||
*/
|
*/
|
||||||
String queryRoomName(Long roomId);
|
String queryRoomName(Long roomId);
|
||||||
|
/**
|
||||||
|
* 获取详细房间名称
|
||||||
|
* @param ids 房间id集合
|
||||||
|
* @return 房间名称
|
||||||
|
*/
|
||||||
|
List<String> queryRoomNameList(List<Long> ids);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -73,7 +73,7 @@ public class AssetTypeServiceImpl implements IAssetTypeService {
|
|||||||
private LambdaQueryWrapper<AssetType> buildQueryWrapper(AssetTypeBo bo) {
|
private LambdaQueryWrapper<AssetType> buildQueryWrapper(AssetTypeBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<AssetType> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<AssetType> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.orderByAsc(AssetType::getId);
|
lqw.orderByAsc(AssetType::getSort);
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getAssetTypeName()), AssetType::getAssetTypeName, bo.getAssetTypeName());
|
lqw.like(StringUtils.isNotBlank(bo.getAssetTypeName()), AssetType::getAssetTypeName, bo.getAssetTypeName());
|
||||||
lqw.eq(bo.getSort() != null, AssetType::getSort, bo.getSort());
|
lqw.eq(bo.getSort() != null, AssetType::getSort, bo.getSort());
|
||||||
return lqw;
|
return lqw;
|
||||||
|
@@ -82,6 +82,7 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
|
|||||||
// List<Long> residentPersonIdList = result.getRecords().stream().map(vo -> vo.getPersonId()).distinct().collect(Collectors.toList());
|
// List<Long> residentPersonIdList = result.getRecords().stream().map(vo -> vo.getPersonId()).distinct().collect(Collectors.toList());
|
||||||
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(residentPersonIdList);
|
// List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(residentPersonIdList);
|
||||||
List<ResidentPerson> residentPeoplelist = residentPersonMapper.selectList();
|
List<ResidentPerson> residentPeoplelist = residentPersonMapper.selectList();
|
||||||
|
List<String> roomNames = roomService.queryRoomNameList(idList);
|
||||||
result.getRecords().stream().forEach(s -> {
|
result.getRecords().stream().forEach(s -> {
|
||||||
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
||||||
ResidentPerson residentPerson = residentPeoplelist.stream()
|
ResidentPerson residentPerson = residentPeoplelist.stream()
|
||||||
|
@@ -55,6 +55,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
private final ResidentPersonMapper residentPersonMapper;
|
private final ResidentPersonMapper residentPersonMapper;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteUserService remoteUserService;
|
private RemoteUserService remoteUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询房屋收费
|
* 查询房屋收费
|
||||||
*
|
*
|
||||||
@@ -66,12 +67,14 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(id);
|
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(id);
|
||||||
CostHouseChargeDetailVo costHouseChargeDetailVo = BeanUtil.copyProperties(costHouseChargeVo, CostHouseChargeDetailVo.class);
|
CostHouseChargeDetailVo costHouseChargeDetailVo = BeanUtil.copyProperties(costHouseChargeVo, CostHouseChargeDetailVo.class);
|
||||||
CostItemsVo costItemsVo = costItemsMapper.selectVoById(costHouseChargeDetailVo.getCostItemsId());
|
CostItemsVo costItemsVo = costItemsMapper.selectVoById(costHouseChargeDetailVo.getCostItemsId());
|
||||||
costHouseChargeDetailVo.setCostItemsVo(ObjectUtil.isNotEmpty(costItemsVo)?costItemsVo:null);
|
costHouseChargeDetailVo.setCostItemsVo(ObjectUtil.isNotEmpty(costItemsVo) ? costItemsVo : null);
|
||||||
TbRoomVo tbRoomVo = tbRoomMapper.selectVoById(costHouseChargeDetailVo.getRoomId());
|
TbRoomVo tbRoomVo = tbRoomMapper.selectVoById(costHouseChargeDetailVo.getRoomId());
|
||||||
costHouseChargeDetailVo.setRoomVo(ObjectUtil.isNotEmpty(tbRoomVo)?tbRoomVo:null);
|
costHouseChargeDetailVo.setRoomVo(ObjectUtil.isNotEmpty(tbRoomVo) ? tbRoomVo : null);
|
||||||
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(costHouseChargeVo.getPersonId());
|
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(costHouseChargeVo.getPersonId());
|
||||||
//RemoteUserVo userInfo = remoteUserService.getUserInfoById(costHouseChargeVo.getPersonId());
|
//RemoteUserVo userInfo = remoteUserService.getUserInfoById(costHouseChargeVo.getPersonId());
|
||||||
costHouseChargeDetailVo.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo)?residentPersonVo.getUserName():null);
|
String roomName = tbRoomMapper.queryRoomName(costHouseChargeDetailVo.getRoomId());
|
||||||
|
costHouseChargeDetailVo.setRoomName(StringUtils.isNotBlank(roomName) ? roomName : null);
|
||||||
|
costHouseChargeDetailVo.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
|
||||||
return costHouseChargeDetailVo;
|
return costHouseChargeDetailVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +94,9 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
||||||
ResidentPerson residentPerson = residentPeoplelist.stream()
|
ResidentPerson residentPerson = residentPeoplelist.stream()
|
||||||
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getPersonId())).findFirst().orElse(null);
|
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getPersonId())).findFirst().orElse(null);
|
||||||
s.setPersonName(ObjectUtil.isNotEmpty(residentPerson)?residentPerson.getUserName():null);
|
s.setPersonName(ObjectUtil.isNotEmpty(residentPerson) ? residentPerson.getUserName() : null);
|
||||||
|
String roomName = tbRoomMapper.queryRoomName(s.getRoomId());
|
||||||
|
s.setRoomName(StringUtils.isNotBlank(roomName) ? roomName : null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
@@ -181,7 +186,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean returnFree(CostChargeReturnFeeBo bo) {
|
public Boolean returnFree(CostChargeReturnFeeBo bo) {
|
||||||
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(bo.getId());
|
CostHouseChargeVo costHouseChargeVo = baseMapper.selectVoById(bo.getId());
|
||||||
Assert.isTrue(ObjectUtil.isNotEmpty(costHouseChargeVo),"该费用不存在");
|
Assert.isTrue(ObjectUtil.isNotEmpty(costHouseChargeVo), "该费用不存在");
|
||||||
var CostReturnPayFee = new CostReturnPayFee().setItemId(costHouseChargeVo.getCostItemsId())
|
var CostReturnPayFee = new CostReturnPayFee().setItemId(costHouseChargeVo.getCostItemsId())
|
||||||
.setReturnNo(RandomUtil.randomNumbers(11))
|
.setReturnNo(RandomUtil.randomNumbers(11))
|
||||||
.setReason(bo.getReason())
|
.setReason(bo.getReason())
|
||||||
@@ -189,8 +194,7 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
.setUserId(costHouseChargeVo.getPersonId())
|
.setUserId(costHouseChargeVo.getPersonId())
|
||||||
.setPayNo(costHouseChargeVo.getId().toString())
|
.setPayNo(costHouseChargeVo.getId().toString())
|
||||||
.setPayAcount(costHouseChargeVo.getAmountReceivable())
|
.setPayAcount(costHouseChargeVo.getAmountReceivable())
|
||||||
.setState("0")
|
.setState("0");
|
||||||
;
|
|
||||||
boolean flag = costReturnPayFeeMapper.insert(CostReturnPayFee) > 0;
|
boolean flag = costReturnPayFeeMapper.insert(CostReturnPayFee) > 0;
|
||||||
CostHouseCharge costHouseCharge = BeanUtil.copyProperties(costHouseChargeVo, CostHouseCharge.class);
|
CostHouseCharge costHouseCharge = BeanUtil.copyProperties(costHouseChargeVo, CostHouseCharge.class);
|
||||||
costHouseCharge.setChargeStatus(ChargeStatusEnum.REFUND_PENDING_REVIEW.getValue());
|
costHouseCharge.setChargeStatus(ChargeStatusEnum.REFUND_PENDING_REVIEW.getValue());
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package org.dromara.property.service.impl;
|
package org.dromara.property.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
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;
|
||||||
@@ -10,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.property.domain.vo.CostMeterTypeVo;
|
||||||
|
import org.dromara.property.mapper.CostMeterTypeMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.property.domain.bo.CostMeterWaterBo;
|
import org.dromara.property.domain.bo.CostMeterWaterBo;
|
||||||
import org.dromara.property.domain.vo.CostMeterWaterVo;
|
import org.dromara.property.domain.vo.CostMeterWaterVo;
|
||||||
@@ -35,6 +39,7 @@ import java.util.Collection;
|
|||||||
public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
|
public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
|
||||||
|
|
||||||
private final CostMeterWaterMapper baseMapper;
|
private final CostMeterWaterMapper baseMapper;
|
||||||
|
private final CostMeterTypeMapper costMeterTypeMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询费用-水电抄
|
* 查询费用-水电抄
|
||||||
@@ -58,6 +63,16 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
|
|||||||
public TableDataInfo<CostMeterWaterVo> queryPageList(CostMeterWaterBo bo, PageQuery pageQuery) {
|
public TableDataInfo<CostMeterWaterVo> queryPageList(CostMeterWaterBo bo, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<CostMeterWater> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<CostMeterWater> lqw = buildQueryWrapper(bo);
|
||||||
Page<CostMeterWaterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
Page<CostMeterWaterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
if (CollUtil.isNotEmpty(result.getRecords())){
|
||||||
|
//收集抄表类型id
|
||||||
|
List<Long> meterTypeIds = result.getRecords().stream().map(CostMeterWaterVo::getMeterTypeId).toList();
|
||||||
|
List<CostMeterTypeVo> costMeterTypeVos = costMeterTypeMapper.selectVoByIds(meterTypeIds);
|
||||||
|
result.getRecords().stream().forEach(s -> {
|
||||||
|
//查找抄表类型名称
|
||||||
|
CostMeterTypeVo costMeterTypeVo = costMeterTypeVos.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getMeterTypeId())).findFirst().orElse(null);
|
||||||
|
s.setCostTypeName(ObjectUtil.isNotEmpty(costMeterTypeVo)?costMeterTypeVo.getName():null);
|
||||||
|
});
|
||||||
|
}
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +94,7 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
|
|||||||
lqw.orderByAsc(CostMeterWater::getId);
|
lqw.orderByAsc(CostMeterWater::getId);
|
||||||
lqw.eq(bo.getItemId() != null, CostMeterWater::getItemId, bo.getItemId());
|
lqw.eq(bo.getItemId() != null, CostMeterWater::getItemId, bo.getItemId());
|
||||||
lqw.eq(bo.getMeterTypeId() != null, CostMeterWater::getMeterTypeId, bo.getMeterTypeId());
|
lqw.eq(bo.getMeterTypeId() != null, CostMeterWater::getMeterTypeId, bo.getMeterTypeId());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getCostType()), CostMeterWater::getCostType, bo.getCostType());
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getObjName()), CostMeterWater::getObjName, bo.getObjName());
|
lqw.like(StringUtils.isNotBlank(bo.getObjName()), CostMeterWater::getObjName, bo.getObjName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getCurDegrees()), CostMeterWater::getCurDegrees, bo.getCurDegrees());
|
lqw.eq(StringUtils.isNotBlank(bo.getCurDegrees()), CostMeterWater::getCurDegrees, bo.getCurDegrees());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getPreDegrees()), CostMeterWater::getPreDegrees, bo.getPreDegrees());
|
lqw.eq(StringUtils.isNotBlank(bo.getPreDegrees()), CostMeterWater::getPreDegrees, bo.getPreDegrees());
|
||||||
|
@@ -92,7 +92,7 @@ public class CostPayFeeAuditServiceImpl implements ICostPayFeeAuditService {
|
|||||||
}
|
}
|
||||||
if (CollUtil.isNotEmpty(roomVoList)) {
|
if (CollUtil.isNotEmpty(roomVoList)) {
|
||||||
TbRoomVo tbRoomVo = roomVoList.stream()
|
TbRoomVo tbRoomVo = roomVoList.stream()
|
||||||
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getChargeId())).findFirst().orElse(null);
|
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getRoomNumber())).findFirst().orElse(null);
|
||||||
s.setRoomNumber(ObjectUtil.isNotEmpty(tbRoomVo) ? tbRoomVo.getRoomNumber() : null);
|
s.setRoomNumber(ObjectUtil.isNotEmpty(tbRoomVo) ? tbRoomVo.getRoomNumber() : null);
|
||||||
}
|
}
|
||||||
costPayFeeAuditVoList.add(s);
|
costPayFeeAuditVoList.add(s);
|
||||||
|
@@ -63,16 +63,16 @@ public class MeetServiceImpl implements IMeetService {
|
|||||||
@Override
|
@Override
|
||||||
public MeetVo queryById(Long id) {
|
public MeetVo queryById(Long id) {
|
||||||
MeetVo meetVo = baseMapper.selectVoById(id);
|
MeetVo meetVo = baseMapper.selectVoById(id);
|
||||||
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals());
|
// ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(meetVo.getPrincipals());
|
||||||
if(ObjectUtil.isNotEmpty(residentPersonVo)){
|
// if(ObjectUtil.isNotEmpty(residentPersonVo)){
|
||||||
meetVo.setPrincipalsName(residentPersonVo.getUserName());
|
// meetVo.setPrincipalsName(residentPersonVo.getUserName());
|
||||||
meetVo.setPhoneNo(residentPersonVo.getPhone());
|
// meetVo.setPhoneNo(residentPersonVo.getPhone());
|
||||||
}
|
|
||||||
// RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetVo.getPrincipals()));
|
|
||||||
// if (ObjectUtil.isNotEmpty(userInfo)) {
|
|
||||||
// meetVo.setPrincipalsName(userInfo.getNickName());
|
|
||||||
// meetVo.setPhoneNo(userInfo.getPhonenumber());
|
|
||||||
// }
|
// }
|
||||||
|
RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(meetVo.getPrincipals()));
|
||||||
|
if (ObjectUtil.isNotEmpty(userInfo)) {
|
||||||
|
meetVo.setPrincipalsName(userInfo.getNickName());
|
||||||
|
meetVo.setPhoneNo(userInfo.getPhonenumber());
|
||||||
|
}
|
||||||
String locationName = roomMapper.queryRoomName(Long.valueOf(meetVo.getLocation()));
|
String locationName = roomMapper.queryRoomName(Long.valueOf(meetVo.getLocation()));
|
||||||
meetVo.setLocationName(locationName);
|
meetVo.setLocationName(locationName);
|
||||||
return meetVo;
|
return meetVo;
|
||||||
@@ -172,7 +172,7 @@ public class MeetServiceImpl implements IMeetService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(MeetBo bo) {
|
public Boolean insertByBo(MeetBo bo) {
|
||||||
Meet add = MapstructUtils.convert(bo, Meet.class);
|
Meet add = MapstructUtils.convert(bo, Meet.class);
|
||||||
bo.setStatus(1);
|
bo.setStatus(0);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package org.dromara.property.service.impl;
|
package org.dromara.property.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
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;
|
||||||
@@ -18,9 +19,11 @@ import org.dromara.property.domain.ResidentUnit;
|
|||||||
import org.dromara.property.mapper.ResidentUnitMapper;
|
import org.dromara.property.mapper.ResidentUnitMapper;
|
||||||
import org.dromara.property.service.IResidentUnitService;
|
import org.dromara.property.service.IResidentUnitService;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入驻单位Service业务层处理
|
* 入驻单位Service业务层处理
|
||||||
@@ -50,8 +53,18 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
|
|||||||
ResidentUnitVo residentUnitVo = baseMapper.selectVoById(id);
|
ResidentUnitVo residentUnitVo = baseMapper.selectVoById(id);
|
||||||
//获取入驻位置详情
|
//获取入驻位置详情
|
||||||
if(StringUtils.isNotBlank(residentUnitVo.getLocation())){
|
if(StringUtils.isNotBlank(residentUnitVo.getLocation())){
|
||||||
String roomName = roomService.queryRoomName(Long.valueOf(residentUnitVo.getLocation()));
|
// 修改后的代码
|
||||||
residentUnitVo.setLocationDetail(roomName);
|
List<Long> idList = Arrays.stream(residentUnitVo.getLocation().split(","))
|
||||||
|
.map(String::trim)
|
||||||
|
.map(Long::parseLong)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<String> roomNames = roomService.queryRoomNameList(idList);
|
||||||
|
// 元素用,拼接成字符串
|
||||||
|
if(CollUtil.isNotEmpty(roomNames)){
|
||||||
|
String locationDetail = String.join(",", roomNames);
|
||||||
|
residentUnitVo.setLocationDetail(locationDetail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Long num = personService.queryPersonCount(residentUnitVo.getId());
|
Long num = personService.queryPersonCount(residentUnitVo.getId());
|
||||||
residentUnitVo.setNumber(num);
|
residentUnitVo.setNumber(num);
|
||||||
|
@@ -2,6 +2,7 @@ package org.dromara.property.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -16,15 +17,20 @@ 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.redis.utils.RedisUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.property.domain.*;
|
import org.dromara.property.domain.*;
|
||||||
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
|
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
|
||||||
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
|
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
|
||||||
|
import org.dromara.property.domain.enums.OrderReportingTypeEnum;
|
||||||
|
import org.dromara.property.domain.enums.OrderTypeOperationEnum;
|
||||||
|
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
|
||||||
import org.dromara.property.domain.vo.*;
|
import org.dromara.property.domain.vo.*;
|
||||||
import org.dromara.property.mapper.ResidentPersonMapper;
|
import org.dromara.property.mapper.ResidentPersonMapper;
|
||||||
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
|
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.mapper.attendanceMapper.AttendanceUserGroupMapper;
|
||||||
import org.dromara.property.service.IServiceWorkOrdersService;
|
import org.dromara.property.service.IServiceWorkOrdersService;
|
||||||
import org.dromara.system.api.RemoteUserService;
|
import org.dromara.system.api.RemoteUserService;
|
||||||
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
||||||
@@ -54,6 +60,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
|
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteUserService remoteUserService;
|
private RemoteUserService remoteUserService;
|
||||||
|
private final AttendanceUserGroupMapper attendanceUserGroupMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询【工单处理】
|
* 查询【工单处理】
|
||||||
@@ -71,10 +78,12 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
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());
|
||||||
|
serviceWorkOrdersInfoVo.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
|
||||||
|
|
||||||
}
|
}
|
||||||
//ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
|
//ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
|
||||||
|
|
||||||
RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
|
RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
|
||||||
if (ObjectUtil.isNotEmpty(userInfo)) {
|
if (ObjectUtil.isNotEmpty(userInfo)) {
|
||||||
serviceWorkOrdersInfoVo.setHandlerText(userInfo.getNickName());
|
serviceWorkOrdersInfoVo.setHandlerText(userInfo.getNickName());
|
||||||
serviceWorkOrdersInfoVo.setHandlerPhone(userInfo.getPhonenumber());
|
serviceWorkOrdersInfoVo.setHandlerPhone(userInfo.getPhonenumber());
|
||||||
@@ -89,7 +98,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo -> {
|
serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo -> {
|
||||||
RemoteUserVo remoteUserVo = remoteUserVos.stream().filter(vo -> vo.getUserId() != null && vo.getUserId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
|
RemoteUserVo remoteUserVo = remoteUserVos.stream().filter(vo -> vo.getUserId() != null && vo.getUserId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
|
||||||
workOrdersRecordVo.setHandlerName(Objects.nonNull(remoteUserVo) ? remoteUserVo.getNickName() : null);
|
workOrdersRecordVo.setHandlerName(Objects.nonNull(remoteUserVo) ? remoteUserVo.getNickName() : null);
|
||||||
workOrdersRecordVo.setInitiatorPeople(Objects.nonNull(serviceWorkOrdersTypeVo)?serviceWorkOrdersVo.getInitiatorPeople():null);
|
workOrdersRecordVo.setInitiatorPeople(Objects.nonNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersVo.getInitiatorPeople() : null);
|
||||||
if (workOrdersRecordVo.getStatus().equals("1") || workOrdersRecordVo.getStatus().equals("2")) {
|
if (workOrdersRecordVo.getStatus().equals("1") || workOrdersRecordVo.getStatus().equals("2")) {
|
||||||
serviceWorkOrdersInfoVo.setDispatchTime(workOrdersRecordVo.getCreateTime());
|
serviceWorkOrdersInfoVo.setDispatchTime(workOrdersRecordVo.getCreateTime());
|
||||||
}
|
}
|
||||||
@@ -123,6 +132,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
|
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().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);
|
||||||
|
s.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
|
||||||
serviceWorkOrdersVoList.add(s);
|
serviceWorkOrdersVoList.add(s);
|
||||||
});
|
});
|
||||||
return TableDataInfo.build(new Page<ServiceWorkOrdersVo>().setRecords(serviceWorkOrdersVoList).setTotal(result.getTotal()));
|
return TableDataInfo.build(new Page<ServiceWorkOrdersVo>().setRecords(serviceWorkOrdersVoList).setTotal(result.getTotal()));
|
||||||
@@ -151,6 +161,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
|
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().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);
|
||||||
|
s.setOperationMode(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOperationMode() : null);
|
||||||
serviceWorkOrdersVoList.add(s);
|
serviceWorkOrdersVoList.add(s);
|
||||||
});
|
});
|
||||||
return serviceWorkOrdersVoList;
|
return serviceWorkOrdersVoList;
|
||||||
@@ -159,15 +170,15 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
private LambdaQueryWrapper<ServiceWorkOrders> buildQueryWrapper(ServiceWorkOrdersBo bo) {
|
private LambdaQueryWrapper<ServiceWorkOrders> buildQueryWrapper(ServiceWorkOrdersBo bo) {
|
||||||
//查询类型下子类型id
|
//查询类型下子类型id
|
||||||
LambdaQueryWrapper<ServiceWorkOrdersType> OrdersTypeWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ServiceWorkOrdersType> OrdersTypeWrapper = new LambdaQueryWrapper<>();
|
||||||
OrdersTypeWrapper.eq(ServiceWorkOrdersType::getParentId,bo.getType());
|
OrdersTypeWrapper.eq(ServiceWorkOrdersType::getParentId, bo.getType());
|
||||||
List<ServiceWorkOrdersType> serviceWorkOrdersTypes = typesMapper.selectList(OrdersTypeWrapper);
|
List<ServiceWorkOrdersType> serviceWorkOrdersTypes = typesMapper.selectList(OrdersTypeWrapper);
|
||||||
List<Long> typeIds = serviceWorkOrdersTypes.stream()
|
List<Long> typeIds = serviceWorkOrdersTypes.stream()
|
||||||
.map(ServiceWorkOrdersType::getId)
|
.map(ServiceWorkOrdersType::getId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
typeIds.add(bo.getType());
|
typeIds.add(bo.getType());
|
||||||
List<String> statusList = new ArrayList<>();
|
List<String> statusList = new ArrayList<>();
|
||||||
if(StringUtils.isNotBlank(bo.getStatus())){
|
if (StringUtils.isNotBlank(bo.getStatus())) {
|
||||||
statusList = Arrays.asList(bo.getStatus().split(","));
|
statusList = Arrays.asList(bo.getStatus().split(","));
|
||||||
}
|
}
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<ServiceWorkOrders> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<ServiceWorkOrders> lqw = Wrappers.lambdaQuery();
|
||||||
@@ -197,11 +208,14 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(ServiceWorkOrdersBo bo) {
|
public Boolean insertByBo(ServiceWorkOrdersBo bo) {
|
||||||
|
//查询工单类型
|
||||||
|
ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(bo.getType());
|
||||||
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
|
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
|
||||||
LoginUser user = LoginHelper.getLoginUser();
|
LoginUser user = LoginHelper.getLoginUser();
|
||||||
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
|
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
|
||||||
add.setStatus("0");
|
add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
|
||||||
add.setInitiatorPeople(user.getNickname());
|
add.setInitiatorPeople(user.getNickname());
|
||||||
|
add.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight());
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
@@ -210,11 +224,67 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
serviceWorkOrdersRecord.setOrderId(add.getId());
|
serviceWorkOrdersRecord.setOrderId(add.getId());
|
||||||
serviceWorkOrdersRecord.setStatus(add.getStatus());
|
serviceWorkOrdersRecord.setStatus(add.getStatus());
|
||||||
//serviceWorkOrdersRecord.setHandler(add.getHandler());
|
//serviceWorkOrdersRecord.setHandler(add.getHandler());
|
||||||
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0;
|
||||||
|
if (flags) {
|
||||||
|
if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) {
|
||||||
|
handleServiceWorkOrder(add);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//自动派单
|
||||||
|
private void handleServiceWorkOrder(ServiceWorkOrders serviceWorkOrders) {
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
// 1. 获取今日排班人员(优先查缓存,未命中则查询数据库并缓存)
|
||||||
|
List<AttendanceUserGroup> attendanceUserGroups = RedisUtils.getCacheList(DateUtil.today());
|
||||||
|
if (CollUtil.isEmpty(attendanceUserGroups)) {
|
||||||
|
attendanceUserGroups = attendanceUserGroupMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<AttendanceUserGroup>()
|
||||||
|
.le(AttendanceUserGroup::getStartDate, today)
|
||||||
|
.ge(AttendanceUserGroup::getEndDate, today)
|
||||||
|
.orderByAsc(AttendanceUserGroup::getCreateTime)
|
||||||
|
);
|
||||||
|
Assert.isTrue(CollUtil.isNotEmpty(attendanceUserGroups),"暂无排班人员");
|
||||||
|
// 缓存当天排班数据(假设当天不会变)
|
||||||
|
RedisUtils.setCacheList(DateUtil.today(), attendanceUserGroups);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 获取并更新轮询索引(原子性很重要)
|
||||||
|
int currentIndex;
|
||||||
|
Integer lastScheduleId = RedisUtils.getCacheObject(DateUtil.today()+"LastScheduleId");
|
||||||
|
if (lastScheduleId == null || lastScheduleId < 0 || lastScheduleId >= attendanceUserGroups.size()) {
|
||||||
|
currentIndex = 0; // 越界或未设置,重置为0
|
||||||
|
} else {
|
||||||
|
currentIndex = lastScheduleId + 1;
|
||||||
|
if (currentIndex >= attendanceUserGroups.size()) {
|
||||||
|
currentIndex = 0; // 循环轮询
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RedisUtils.setCacheObject(DateUtil.today()+"LastScheduleId", currentIndex);
|
||||||
|
|
||||||
|
// 3. 分配处理人
|
||||||
|
AttendanceUserGroup assignedGroup = attendanceUserGroups.get(currentIndex);
|
||||||
|
Long employeeId = assignedGroup.getEmployeeId();
|
||||||
|
|
||||||
|
serviceWorkOrders.setHandler(employeeId);
|
||||||
|
serviceWorkOrders.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
||||||
|
|
||||||
|
// 4. 插入记录
|
||||||
|
ServiceWorkOrdersRecord record = new ServiceWorkOrdersRecord();
|
||||||
|
record.setOrderId(serviceWorkOrders.getId());
|
||||||
|
record.setHandler(employeeId);
|
||||||
|
record.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
||||||
|
workOrdersRecordMapper.insert(record);
|
||||||
|
|
||||||
|
// 5. 更新工单
|
||||||
|
serviceWorkOrders.setDispatchTime(new Date());
|
||||||
|
baseMapper.updateById(serviceWorkOrders);
|
||||||
|
|
||||||
|
log.info("成功派单,工单号:{}", serviceWorkOrders.getOrderNo());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改【工单处理】
|
* 修改【工单处理】
|
||||||
*
|
*
|
||||||
@@ -242,17 +312,17 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
* 修改前的数据校验
|
* 修改前的数据校验
|
||||||
*/
|
*/
|
||||||
private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
|
private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
|
||||||
Assert.isTrue(ObjectUtil.isNotEmpty(entity.getStatus()),"状态不能为空!");
|
Assert.isTrue(ObjectUtil.isNotEmpty(entity.getStatus()), "状态不能为空!");
|
||||||
LambdaQueryWrapper<ServiceWorkOrdersRecord> ordersLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ServiceWorkOrdersRecord> ordersLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getOrderId, entity.getId());
|
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getOrderId, entity.getId());
|
||||||
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
|
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
|
||||||
boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
|
boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
|
||||||
//TODO 做一些数据校验,如唯一约束
|
//TODO 做一些数据校验,如唯一约束
|
||||||
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
||||||
serviceWorkOrdersRecord.setOrderId(entity.getId());
|
serviceWorkOrdersRecord.setOrderId(entity.getId());
|
||||||
serviceWorkOrdersRecord.setStatus(entity.getStatus());
|
serviceWorkOrdersRecord.setStatus(entity.getStatus());
|
||||||
serviceWorkOrdersRecord.setHandler(entity.getHandler());
|
serviceWorkOrdersRecord.setHandler(entity.getHandler());
|
||||||
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -497,16 +567,17 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//小程序端新增
|
//小程序端新增
|
||||||
@Override
|
@Override
|
||||||
public Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo) {
|
public Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo) {
|
||||||
|
//查询工单类型
|
||||||
|
ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(bo.getType());
|
||||||
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
|
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
|
||||||
LoginUser user = LoginHelper.getLoginUser();
|
LoginUser user = LoginHelper.getLoginUser();
|
||||||
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
|
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
|
||||||
add.setOrderName("工单名称");
|
add.setOrderName("工单名称");
|
||||||
add.setStatus("0");
|
add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
|
||||||
|
add.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue());
|
||||||
add.setInitiatorPeople(user.getNickname());
|
add.setInitiatorPeople(user.getNickname());
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
@@ -515,15 +586,22 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
|
|||||||
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
||||||
serviceWorkOrdersRecord.setOrderId(add.getId());
|
serviceWorkOrdersRecord.setOrderId(add.getId());
|
||||||
serviceWorkOrdersRecord.setStatus(add.getStatus());
|
serviceWorkOrdersRecord.setStatus(add.getStatus());
|
||||||
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0;
|
||||||
|
if (flags) {
|
||||||
|
if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) {
|
||||||
|
handleServiceWorkOrder(add);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ServiceWorkOrders> getList() {
|
public List<ServiceWorkOrders> getList() {
|
||||||
LambdaQueryWrapper<ServiceWorkOrders> serviceWorkOrdersWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ServiceWorkOrders> serviceWorkOrdersWrapper = new LambdaQueryWrapper<>();
|
||||||
return baseMapper.selectList(serviceWorkOrdersWrapper);
|
return baseMapper.selectList(serviceWorkOrdersWrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<Object, Object>> getServiceWorkOrdersHandler(String type) {
|
public List<Map<Object, Object>> getServiceWorkOrdersHandler(String type) {
|
||||||
return switch (type) {
|
return switch (type) {
|
||||||
|
@@ -158,5 +158,13 @@ public class TbRoomServiceImpl implements ITbRoomService {
|
|||||||
@Override
|
@Override
|
||||||
public String queryRoomName(Long roomId) {
|
public String queryRoomName(Long roomId) {
|
||||||
return baseMapper.queryRoomName(roomId);
|
return baseMapper.queryRoomName(roomId);
|
||||||
|
} /**
|
||||||
|
* 获取房间名称
|
||||||
|
* @param
|
||||||
|
* @return 房间名称
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> queryRoomNameList(List<Long> ids) {
|
||||||
|
return baseMapper.queryRoomNameList(ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,10 +9,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.common.redis.utils.RedisUtils;
|
||||||
import org.dromara.property.domain.AttendanceUserGroup;
|
import org.dromara.property.domain.AttendanceUserGroup;
|
||||||
import org.dromara.property.domain.ServiceWorkOrders;
|
import org.dromara.property.domain.ServiceWorkOrders;
|
||||||
import org.dromara.property.domain.ServiceWorkOrdersRecord;
|
import org.dromara.property.domain.ServiceWorkOrdersRecord;
|
||||||
|
import org.dromara.property.domain.ServiceWorkOrdersType;
|
||||||
|
import org.dromara.property.domain.enums.OrderTypeOperationEnum;
|
||||||
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
|
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
|
||||||
|
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
|
||||||
import org.dromara.property.mapper.attendanceMapper.AttendanceUserGroupMapper;
|
import org.dromara.property.mapper.attendanceMapper.AttendanceUserGroupMapper;
|
||||||
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
|
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
|
||||||
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
|
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
|
||||||
@@ -40,48 +44,81 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
//@RestController
|
//@RestController
|
||||||
//@RequestMapping("/serviceWorkOrderTasks")
|
//@RequestMapping("/serviceWorkOrderTasks")
|
||||||
public class ServiceWorkOrderTasks {
|
public class ServiceWorkOrderTasks {
|
||||||
private ServiceWorkOrdersMapper workOrdersMapper;
|
private final ServiceWorkOrdersMapper workOrdersMapper;
|
||||||
private ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
|
private final ServiceWorkOrdersTypeMapper workOrdersTypeMapper;
|
||||||
private AttendanceUserGroupMapper attendanceUserGroupMapper;
|
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
|
||||||
|
private final AttendanceUserGroupMapper attendanceUserGroupMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询状态为创建工单的工单,查询当天排班人员,为工单自动派单
|
* 查询状态为创建工单的工单,查询当天排班人员,为工单自动派单
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Scheduled(cron = "0 0 */1 * * ?")
|
@Scheduled(cron = "0 0,30 * * * ?")
|
||||||
//@GetMapping("/serviceWorkOrderTaskId")
|
//@GetMapping("/serviceWorkOrderTaskId")
|
||||||
private void handleServiceWorkOrder() {
|
private void handleServiceWorkOrder() {
|
||||||
List<ServiceWorkOrders> serviceWorkOrderList = workOrdersMapper.selectList(
|
LocalDate today = LocalDate.now();
|
||||||
new LambdaQueryWrapper<ServiceWorkOrders>()
|
List<AttendanceUserGroup> attendanceUserGroups = attendanceUserGroupMapper.selectList(
|
||||||
.eq(ServiceWorkOrders::getStatus, WorkOrderStatusEnum.CREATE_ORDER.getValue()));
|
new LambdaQueryWrapper<AttendanceUserGroup>()
|
||||||
if(CollUtil.isNotEmpty(serviceWorkOrderList)){
|
//查询今天上班的人员
|
||||||
LocalDate today = LocalDate.now();
|
.le(AttendanceUserGroup::getStartDate, today)
|
||||||
List<AttendanceUserGroup> attendanceUserGroups = attendanceUserGroupMapper.selectList(
|
.ge(AttendanceUserGroup::getEndDate, today)
|
||||||
new LambdaQueryWrapper<AttendanceUserGroup>()
|
);
|
||||||
//查询今天上班的人员
|
if (CollUtil.isEmpty(attendanceUserGroups)) {
|
||||||
.le(AttendanceUserGroup::getStartDate, today)
|
if (!RedisUtils.isExistsObject("today")) {
|
||||||
.ge(AttendanceUserGroup::getEndDate, today)
|
//缓存今天排班人员
|
||||||
|
RedisUtils.setCacheList("today", attendanceUserGroups);
|
||||||
|
}
|
||||||
|
//查询工单类型
|
||||||
|
List<ServiceWorkOrdersType> serviceWorkOrdersTypes = workOrdersTypeMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<ServiceWorkOrdersType>()
|
||||||
|
.eq(ServiceWorkOrdersType::getOperationMode, OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())
|
||||||
);
|
);
|
||||||
serviceWorkOrderList.stream().forEach(s->{
|
if (CollUtil.isEmpty(serviceWorkOrdersTypes)) {
|
||||||
if(CollUtil.isNotEmpty(attendanceUserGroups)){
|
//收集工单类型id
|
||||||
attendanceUserGroups.stream().forEach(s1->{
|
List<Long> typeIds = serviceWorkOrdersTypes.stream().map(ServiceWorkOrdersType::getId).toList();
|
||||||
|
List<ServiceWorkOrders> serviceWorkOrderList = workOrdersMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<ServiceWorkOrders>()
|
||||||
|
.eq(ServiceWorkOrders::getStatus, WorkOrderStatusEnum.CREATE_ORDER.getValue())
|
||||||
|
.in(ServiceWorkOrders::getType, typeIds)
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(serviceWorkOrderList)) {
|
||||||
|
serviceWorkOrderList.stream().forEach(s -> {
|
||||||
|
//获取处理人
|
||||||
|
List<AttendanceUserGroup> attendanceUserGroupList = RedisUtils.getCacheList("today");
|
||||||
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
|
||||||
|
//获取上次排班人员序号
|
||||||
|
if (!RedisUtils.isExistsObject("LastScheduleId")) {
|
||||||
|
RedisUtils.setCacheObject("LastScheduleId", 0);
|
||||||
|
serviceWorkOrdersRecord.setHandler(attendanceUserGroupList.get(0).getEmployeeId());
|
||||||
|
s.setHandler(attendanceUserGroupList.get(0).getEmployeeId());
|
||||||
|
} else {
|
||||||
|
Integer lastScheduleId = RedisUtils.getCacheObject("LastScheduleId");
|
||||||
|
int lastScheduleIdUpdate = lastScheduleId + 1;
|
||||||
|
AttendanceUserGroup attendanceUserGroup = attendanceUserGroupList.get(lastScheduleIdUpdate);
|
||||||
|
if (ObjectUtil.isNotEmpty(attendanceUserGroup)) {
|
||||||
|
serviceWorkOrdersRecord.setHandler(attendanceUserGroup.getEmployeeId());
|
||||||
|
s.setHandler(attendanceUserGroup.getEmployeeId());
|
||||||
|
RedisUtils.setCacheObject("LastScheduleId", lastScheduleIdUpdate);
|
||||||
|
} else {
|
||||||
|
serviceWorkOrdersRecord.setHandler(attendanceUserGroupList.get(0).getEmployeeId());
|
||||||
|
s.setHandler(attendanceUserGroupList.get(0).getEmployeeId());
|
||||||
|
RedisUtils.setCacheObject("LastScheduleId", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
serviceWorkOrdersRecord.setOrderId(s.getId());
|
serviceWorkOrdersRecord.setOrderId(s.getId());
|
||||||
serviceWorkOrdersRecord.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
serviceWorkOrdersRecord.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
||||||
serviceWorkOrdersRecord.setHandler(s1.getEmployeeId());
|
|
||||||
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
|
||||||
s.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
s.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
|
||||||
s.setHandler(s1.getEmployeeId());
|
|
||||||
workOrdersMapper.updateById(s);
|
workOrdersMapper.updateById(s);
|
||||||
log.info("派单工单号为:{}",s.getOrderNo());
|
log.info("派单工单号为:{}", s.getOrderNo());
|
||||||
log.info("处理人为:{}",s1.getEmployeeId());
|
|
||||||
});
|
});
|
||||||
}else {
|
} else {
|
||||||
log.info("当天无排班人员");
|
log.info("派单工单为:{}", serviceWorkOrderList.size());
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}else {
|
|
||||||
log.info("派单工单为:{}",serviceWorkOrderList.size());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,10 +171,10 @@ public class ServiceWorkOrderTasks {
|
|||||||
for (AttendanceUserGroup group : attendanceUserGroups) {
|
for (AttendanceUserGroup group : attendanceUserGroups) {
|
||||||
Long employeeId = group.getEmployeeId();
|
Long employeeId = group.getEmployeeId();
|
||||||
// 可选:避免重新派给原处理人
|
// 可选:避免重新派给原处理人
|
||||||
if (employeeId.equals(latestRecord.getHandler())) {
|
if (employeeId.equals(latestRecord.getHandler())) {
|
||||||
log.debug("跳过原处理人:{}", employeeId);
|
log.debug("跳过原处理人:{}", employeeId);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 创建新的派单记录
|
// 创建新的派单记录
|
||||||
ServiceWorkOrdersRecord newRecord = new ServiceWorkOrdersRecord();
|
ServiceWorkOrdersRecord newRecord = new ServiceWorkOrdersRecord();
|
||||||
newRecord.setOrderId(workOrder.getId());
|
newRecord.setOrderId(workOrder.getId());
|
||||||
@@ -147,9 +184,9 @@ public class ServiceWorkOrderTasks {
|
|||||||
workOrdersRecordMapper.insert(newRecord);
|
workOrdersRecordMapper.insert(newRecord);
|
||||||
log.info("工单号:{} 已重新派发给员工ID:{}", workOrder.getOrderNo(), employeeId);
|
log.info("工单号:{} 已重新派发给员工ID:{}", workOrder.getOrderNo(), employeeId);
|
||||||
// 6. 更新主工单状态(可选:若只保留最新记录状态,也可不更新主表)
|
// 6. 更新主工单状态(可选:若只保留最新记录状态,也可不更新主表)
|
||||||
workOrder.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); // 仍为已派单
|
workOrder.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue()); // 仍为已派单
|
||||||
workOrder.setHandler(employeeId); // 可清空,或设为最后一个人(根据业务)
|
workOrder.setHandler(employeeId); // 可清空,或设为最后一个人(根据业务)
|
||||||
workOrdersMapper.updateById(workOrder);
|
workOrdersMapper.updateById(workOrder);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -15,9 +15,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where r.id=#{roomId}
|
where r.id=#{roomId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="queryRoomNameList" parameterType="list" resultType="java.util.Map">
|
<select id="queryRoomNameList" resultType="java.lang.String" parameterType="list">
|
||||||
SELECT
|
SELECT
|
||||||
r.id,
|
|
||||||
concat(c.community_name, b.building_name, f.floor_name, r.room_number) AS room_name
|
concat(c.community_name, b.building_name, f.floor_name, r.room_number) AS room_name
|
||||||
FROM
|
FROM
|
||||||
tb_room r
|
tb_room r
|
||||||
|
Reference in New Issue
Block a user