Commit 76567c40 by chamberone

Merge branch 'develop' of https://zhangguoping@gitlab.dituhui.com/bsh/project/pr…

…oject.git into develop
2 parents 038fa185 b9ee0b92
Showing with 529 additions and 153 deletions
package com.dituhui.pea.order.controller; package com.dituhui.pea.order.controller;
import cn.hutool.core.util.StrUtil;
import com.dituhui.pea.common.PageResult; import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dto.MsgDTO; import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.dto.MsgGroupResp;
import com.dituhui.pea.order.dto.MsgResp;
import com.dituhui.pea.order.service.MsgService; import com.dituhui.pea.order.service.MsgService;
import com.dituhui.pea.order.utils.AssertUtil; import com.dituhui.pea.order.utils.AssertUtil;
import com.dituhui.pea.order.utils.CommonUtil; import com.dituhui.pea.order.utils.CommonUtil;
import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
...@@ -21,11 +20,11 @@ import java.util.Objects; ...@@ -21,11 +20,11 @@ import java.util.Objects;
* @date 2023/10/24 * @date 2023/10/24
*/ */
@RestController @RestController
@RequiredArgsConstructor
@RequestMapping("/pea-order") @RequestMapping("/pea-order")
public class MsgController { public class MsgController {
private final MsgService msgService; @Autowired
private MsgService msgService;
/** /**
* 消息列表 * 消息列表
...@@ -38,7 +37,7 @@ public class MsgController { ...@@ -38,7 +37,7 @@ public class MsgController {
*/ */
@GetMapping("/msg/list") @GetMapping("/msg/list")
public Result<PageResult<MsgGroupResp>> list(@RequestHeader(name = "userId", required = true) String userId, public Result<PageResult<MsgGroupResp>> list(@RequestHeader(name = "userId", required = true) String userId,
MsgDTO.Request request) { MsgQuery request) {
CommonUtil.setNullValue(request); CommonUtil.setNullValue(request);
request.setUserId(userId); request.setUserId(userId);
if (!"is_read".equalsIgnoreCase(request.getSort())) { if (!"is_read".equalsIgnoreCase(request.getSort())) {
...@@ -57,16 +56,51 @@ public class MsgController { ...@@ -57,16 +56,51 @@ public class MsgController {
/** /**
* 删除消息 * 删除消息
* *
* @param userId 用户标识 * @param userId 用户标识
* @param deleteDto * @param dto
* @return {@link Result }<{@link Boolean }> * @return {@link Result }<{@link Boolean }>
* @author RenPing * @author RenPing
* @date 2023/10/24 * @date 2023/10/24
*/ */
@RequestMapping(value = "/msg/delete", method = RequestMethod.POST) @PostMapping("/msg/delete")
public Result<Boolean> delete(@RequestHeader(name = "userId", required = true) String userId, @RequestBody @Valid MsgDTO.DeleteDto deleteDto) { public Result<Boolean> delete(@RequestHeader(name = "userId", required = true) String userId, @RequestBody @Valid IdDTO dto) {
AssertUtil.isNotEmpty(userId, "用户ID不能为空"); AssertUtil.isNotEmpty(userId, "用户ID不能为空");
msgService.delete(deleteDto.getId(), userId); AssertUtil.isNotNull(dto.getId(), "消息ID不能为空");
msgService.delete(dto.getId(), userId);
return Result.success(true);
}
/**
* 设置消息已读
*
* @param userId 用户标识
* @param dto
* @return {@link Result }<{@link Boolean }>
* @author RenPing
* @date 2023/10/24
*/
@PostMapping("/msg/read")
public Result<Boolean> read(@RequestHeader(name = "userId", required = true) String userId, @RequestBody @Valid IdsDTO dto) {
AssertUtil.isNotEmpty(userId, "用户ID不能为空");
msgService.readMsg(dto.getIds(), userId);
return Result.success(true);
}
/**
* 新增消息
*
* @param dto 参数
* @return {@link Result }<{@link Boolean }>
* @author RenPing
* @date 2023/10/25
*/
@PostMapping("/msg/add")
public Result<Boolean> add(@RequestBody @Valid MsgDTO dto) {
CommonUtil.setNullValue(dto);
AssertUtil.checkArgument(StrUtil.isNotEmpty(dto.getClusterId())
|| StrUtil.isNotEmpty(dto.getBranchId())
|| StrUtil.isNotEmpty(dto.getGroupId()), "大区Id、分部Id、分组Id不能同时为空");
msgService.add(dto);
return Result.success(true); return Result.success(true);
} }
......
package com.dituhui.pea.order.dao; package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.dto.MsgDTO;
import com.dituhui.pea.order.dto.MsgGroupResp; import com.dituhui.pea.order.dto.MsgGroupResp;
import com.dituhui.pea.order.dto.MsgResp; import com.dituhui.pea.order.dto.MsgQuery;
import com.dituhui.pea.order.entity.MsgEntity; import com.dituhui.pea.order.entity.MsgEntity;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
...@@ -15,7 +13,7 @@ import java.util.List; ...@@ -15,7 +13,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
public interface MsgDao extends JpaRepository<MsgEntity, Long> { public interface MsgDao extends JpaRepository<MsgEntity, Integer> {
@Query(value = "select t.cluster_id,t.branch_id,t.group_id" + @Query(value = "select t.cluster_id,t.branch_id,t.group_id" +
" from (" + " from (" +
" select tt.cluster_id,tt.branch_id,tt.group_id,min(tt.create_time) create_time,min(r.is_read) is_read" + " select tt.cluster_id,tt.branch_id,tt.group_id,min(tt.create_time) create_time,min(r.is_read) is_read" +
...@@ -23,6 +21,7 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> { ...@@ -23,6 +21,7 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> {
" where IF(:#{#req.startDate} is not null, tt.create_time>=:#{#req.startDate}, 1=1)" + " where IF(:#{#req.startDate} is not null, tt.create_time>=:#{#req.startDate}, 1=1)" +
" and IF(:#{#req.endDate} is not null, tt.create_time<:#{#req.endDate}, 1=1)" + " and IF(:#{#req.endDate} is not null, tt.create_time<:#{#req.endDate}, 1=1)" +
" and IF(:#{#req.keyWord} is not null, tt.content like concat('%',:#{#req.keyWord},'%'), 1=1)" + " and IF(:#{#req.keyWord} is not null, tt.content like concat('%',:#{#req.keyWord},'%'), 1=1)" +
" and IF(:#{#req.orgTreeValue} is not null, (tt.cluster_id=:#{#req.orgTreeValue} or tt.branch_id=:#{#req.orgTreeValue} or tt.group_id=:#{#req.orgTreeValue}), 1=1)" +
"group by tt.cluster_id,tt.branch_id,tt.group_id" + "group by tt.cluster_id,tt.branch_id,tt.group_id" +
") t", ") t",
countQuery = "select count(t.cluster_id)" + countQuery = "select count(t.cluster_id)" +
...@@ -32,14 +31,16 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> { ...@@ -32,14 +31,16 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> {
" where IF(:#{#req.startDate} is not null, tt.create_time>=:#{#req.startDate}, 1=1)" + " where IF(:#{#req.startDate} is not null, tt.create_time>=:#{#req.startDate}, 1=1)" +
" and IF(:#{#req.endDate} is not null, tt.create_time<:#{#req.endDate}, 1=1)" + " and IF(:#{#req.endDate} is not null, tt.create_time<:#{#req.endDate}, 1=1)" +
" and IF(:#{#req.keyWord} is not null, tt.content like concat('%',:#{#req.keyWord},'%'), 1=1)" + " and IF(:#{#req.keyWord} is not null, tt.content like concat('%',:#{#req.keyWord},'%'), 1=1)" +
" and IF(:#{#req.orgTreeValue} is not null, (tt.cluster_id=:#{#req.orgTreeValue} or tt.branch_id=:#{#req.orgTreeValue} or tt.group_id=:#{#req.orgTreeValue}), 1=1)" +
"group by tt.cluster_id,tt.branch_id,tt.group_id" + "group by tt.cluster_id,tt.branch_id,tt.group_id" +
") t" ") t"
, nativeQuery = true // 开启原生sql , nativeQuery = true // 开启原生sql
) )
Page<Map<String, Objects>> getGroupList(@Param("req") MsgDTO.Request req, Pageable pageable); Page<Map<String, Objects>> getGroupList(@Param("req") MsgQuery req, Pageable pageable);
@Query(value = "select t.* from (select tt.*,r.is_read" + @Query(value = "select t.* from (select tt.*,r.is_read," +
" (select group_concat(u.nickname) from zzz_msg_receiver rr join sys_user u on u.id=rr.user_id where rr.msg_id=tt.id) receivers"+
" from zzz_msg tt join zzz_msg_receiver r on r.msg_id=tt.id and r.user_id=:#{#req.userId}" + " from zzz_msg tt join zzz_msg_receiver r on r.msg_id=tt.id and r.user_id=:#{#req.userId}" +
" where IF(:#{#msgGroupResp.clusterId} is not null, tt.cluster_id=:#{#msgGroupResp.clusterId}, tt.cluster_id is null)" + " where IF(:#{#msgGroupResp.clusterId} is not null, tt.cluster_id=:#{#msgGroupResp.clusterId}, tt.cluster_id is null)" +
" and IF(:#{#msgGroupResp.branchId} is not null, tt.branch_id=:#{#msgGroupResp.branchId}, tt.branch_id is null)" + " and IF(:#{#msgGroupResp.branchId} is not null, tt.branch_id=:#{#msgGroupResp.branchId}, tt.branch_id is null)" +
...@@ -50,6 +51,30 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> { ...@@ -50,6 +51,30 @@ public interface MsgDao extends JpaRepository<MsgEntity, Long> {
") t" ") t"
, nativeQuery = true // 开启原生sql , nativeQuery = true // 开启原生sql
) )
List<Map<String, Objects>> getList(@Param("req") MsgDTO.Request req List<Map<String, Objects>> getList(@Param("req") MsgQuery req
, @Param("msgGroupResp") MsgGroupResp msgGroupResp, Pageable pageable); , @Param("msgGroupResp") MsgGroupResp msgGroupResp, Pageable pageable);
/**
* 根据小组或分部或大区获取角色为“分站派工”的用户
*
* @param clusterId 大区
* @param branchId 分部
* @param groupId 小组
* @return {@link List }<{@link String }>
* @author RenPing
* @date 2023/10/25
*/
@Query(value = "SELECT distinct u.id" +
" from sys_user u" +
" join sys_user_org uo on u.id=uo.user_id" +
" join sys_user_role ur on ur.user_id=u.id" +
" join sys_role r on r.id=ur.role_id and r.name='分站派工'" +
" and IF(:groupId is not null, uo.org_id=:groupId and uo.org_level=2, 1=1)" +
" and IF(:groupId is null and :branchId is not null, uo.org_id=:branchId and uo.org_level=1, 1=1)" +
" and IF(:groupId is null and :branchId is null and :clusterId is not null, uo.org_id=:clusterId and uo.org_level=0, 1=1)"
, nativeQuery = true // 开启原生sql
)
List<String> getDispatchUserList(@Param("clusterId") String clusterId,
@Param("branchId") String branchId,
@Param("groupId") String groupId);
} }
...@@ -4,10 +4,12 @@ import com.dituhui.pea.order.entity.MsgReceiverEntity; ...@@ -4,10 +4,12 @@ import com.dituhui.pea.order.entity.MsgReceiverEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface MsgReceiverDao extends JpaRepository<MsgReceiverEntity, Long> { import java.util.List;
public interface MsgReceiverDao extends JpaRepository<MsgReceiverEntity, Integer> {
@Modifying @Modifying
@Query("delete from MsgReceiverEntity a where a.msgId=?1 and a.userId=?2") @Query(value = "update zzz_msg_receiver set is_read=1 where msg_id in (:msgIds) and user_id=:userId", nativeQuery = true)
void delete(Integer msgId, String userId); void read(@Param("msgIds") List<Integer> msgIds, @Param("userId") String userId);
} }
...@@ -26,6 +26,10 @@ public class BusinessTeamAddDTO { ...@@ -26,6 +26,10 @@ public class BusinessTeamAddDTO {
* 开放工作日 * 开放工作日
*/ */
private List<String> workdays; private List<String> workdays;
private String workOn;
private String workOff;
} }
......
...@@ -33,5 +33,9 @@ public class BusinessTeamUpdateDTO { ...@@ -33,5 +33,9 @@ public class BusinessTeamUpdateDTO {
* 开放工作日 * 开放工作日
*/ */
private List<String> workdays; private List<String> workdays;
private String workOn;
private String workOff;
} }
} }
...@@ -26,5 +26,10 @@ public class EngineerInfoListResp { ...@@ -26,5 +26,10 @@ public class EngineerInfoListResp {
private List<String> tags; private List<String> tags;
private List<String> credentials; private List<String> credentials;
private String grade; private String grade;
/**
* 工作地址
*/
private String workAddress;
} }
} }
package com.dituhui.pea.order.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 公共 id类
*
* @author RenPing
* @date 2023/10/26
*/
@Data
public class IdDTO {
@NotNull(message = "ID不能为空")
private Integer id;
}
package com.dituhui.pea.order.dto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 公共 id集合类,用于批量操作
*
* @author RenPing
* @date 2023/10/26
*/
@Data
public class IdsDTO {
@NotEmpty(message = "Id集合不能为空")
private List<Integer> ids;
}
package com.dituhui.pea.order.dto; package com.dituhui.pea.order.dto;
import com.dituhui.pea.pojo.PageRequest; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDate; @Data
import java.util.Date;
import static com.dituhui.pea.order.config.OrderConfig.DEFAULT_PAGE_SIZE;
public class MsgDTO { public class MsgDTO {
/**
@lombok.Data * 大区ID(大区Id、分部Id、分组Id只需传一个)
public static class Request { */
/** private String clusterId;
* 每页大小
*/ /**
private Integer size = DEFAULT_PAGE_SIZE; * 分部ID
*/
/** private String branchId;
* 页码
*/ /**
private Integer page = 1; * 小组ID
*/
private String groupId;
/**
* 当前用户Id,前端将userId放在header中 /**
*/ * 消息类型,0:派工类,1:服务类,2:容量类
private String userId; */
@NotNull(message = "消息类型不能为空")
/** @Min(value = 0, message = "消息类型格式不对")
* 排序字段:create_time、is_read @Max(value = 2, message = "消息类型格式不对")
*/ private Integer type;
private String sort;
/**
/** * 消息内容
* 排序类型:asc、desc */
*/ @NotNull(message = "消息内容不能为空")
private String sortType; private String content;
/** /**
* 开始日期 * 单号集合,以“、”连接
*/ */
@DateTimeFormat(pattern = "yyyy-MM-dd") private String orderIds;
private Date startDate;
/**
/** * 标签类型,0:紧急,1:正常
* 结束日期 */
*/ @NotNull(message = "标签类型不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @Min(value = 0, message = "标签类型格式不对")
private Date endDate; @Max(value = 1, message = "标签类型格式不对")
private Integer tag;
/**
* 关键词模糊查询
*/
private String keyWord;
}
@lombok.Data
public static class DeleteDto {
@NotNull(message = "消息ID不能为空")
private Integer id;
}
@lombok.Data
public static class addDto {
/**
* 大区ID
*/
private String clusterId;
/**
* 分部ID
*/
private String branchId;
/**
* 小组ID
*/
private String groupId;
/**
* 消息类型,0:派工类,1:服务类,2:容量类
*/
private Integer type;
/**
* 消息内容
*/
private String content;
/**
* 单号集合,以顿号连接
*/
private String orderIds;
/**
* 标签类型,0:紧急,1:正常
*/
private Integer tag;
}
} }
\ No newline at end of file
package com.dituhui.pea.order.dto;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Date;
import static com.dituhui.pea.order.config.OrderConfig.DEFAULT_PAGE_SIZE;
@lombok.Data
public class MsgQuery {
/**
* 每页大小
*/
private Integer size = DEFAULT_PAGE_SIZE;
/**
* 页码
*/
private Integer page = 1;
/**
* 当前用户Id,前端将userId放在header中
*/
private String userId;
/**
* 排序字段:create_time、is_read
*/
private String sort;
/**
* 排序类型:asc、desc
*/
private String sortType;
/**
* 开始日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
/**
* 结束日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
/**
* 关键词模糊查询
*/
private String keyWord;
/**
* 大区ID、部门ID、小组ID
*/
private String orgTreeValue;
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date; import java.util.Date;
@Data @Data
...@@ -70,5 +71,10 @@ public class MsgResp { ...@@ -70,5 +71,10 @@ public class MsgResp {
*/ */
private Integer isRead; private Integer isRead;
/**
* 接收人
*/
private String receivers;
} }
...@@ -58,8 +58,11 @@ public class EngineerBusinessEntity implements Serializable { ...@@ -58,8 +58,11 @@ public class EngineerBusinessEntity implements Serializable {
@Column(name = "priority", nullable = false, columnDefinition = "tinyint(4) default '1'") @Column(name = "priority", nullable = false, columnDefinition = "tinyint(4) default '1'")
private int priority; private int priority;
@Column(name = "departure", nullable = false, columnDefinition = "tinyint(4) default '0'") /**
private int departure; * 常规出发地,1配件仓,2家庭住址,3工作地址 默认工作地址
*/
@Column(name = "departure", nullable = false, columnDefinition = "tinyint(4) default '3'")
private int departure = 3;
@Column(name = "dispatch_strategy", nullable = false, length = 32, columnDefinition = "varchar(32) default 'CENTER'") @Column(name = "dispatch_strategy", nullable = false, length = 32, columnDefinition = "varchar(32) default 'CENTER'")
private String dispatchStrategy; private String dispatchStrategy;
......
...@@ -58,6 +58,11 @@ public class EngineerInfoEntity { ...@@ -58,6 +58,11 @@ public class EngineerInfoEntity {
private String address; private String address;
/** /**
* 工作地址
*/
private String workAddress;
/**
* 类型(1全职 2兼职) * 类型(1全职 2兼职)
*/ */
private Integer kind; private Integer kind;
......
package com.dituhui.pea.order.entity; package com.dituhui.pea.order.entity;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -16,6 +17,7 @@ import java.util.Date; ...@@ -16,6 +17,7 @@ import java.util.Date;
@Entity @Entity
@Data @Data
@Table(name = "zzz_msg") @Table(name = "zzz_msg")
@Accessors(chain = true)
public class MsgEntity { public class MsgEntity {
@Id @Id
......
...@@ -21,7 +21,7 @@ import java.util.Date; ...@@ -21,7 +21,7 @@ import java.util.Date;
public class MsgReceiverEntity { public class MsgReceiverEntity {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private Integer id;
/** /**
......
...@@ -31,7 +31,7 @@ public class OrgClusterEntity { ...@@ -31,7 +31,7 @@ public class OrgClusterEntity {
private String cityName; private String cityName;
private Integer status; private Integer status = 1;
private String updateUser; private String updateUser;
......
...@@ -88,5 +88,37 @@ public class OrgGroupEntity { ...@@ -88,5 +88,37 @@ public class OrgGroupEntity {
*/ */
private LocalDateTime updateTime = LocalDateTime.now(); private LocalDateTime updateTime = LocalDateTime.now();
public OrgGroupEntity() {} public OrgGroupEntity() {
}
/**
* 管理城市列表
*/
private String citycodeList;
/**
* 部门缩写
*/
private String abbreviation;
/**
* 部门编号
*/
private String code;
/**
* 部门负责人联系方式
*/
private String phone;
/**
* 是否启用外围仓 0未启用 1启用
*/
private Integer warehouseEnabled = 0;
/**
* 最长配件保留时长(天)
*/
private Integer reserveTimeMax = 0;
/**
* 帐号状态(0无效 1有效)
*/
private Integer status = 1;
} }
...@@ -49,9 +49,15 @@ public class OrgTeamEntity { ...@@ -49,9 +49,15 @@ public class OrgTeamEntity {
@Column(name = "update_time", nullable = false, columnDefinition = "timestamp default current_timestamp on update current_timestamp") @Column(name = "update_time", nullable = false, columnDefinition = "timestamp default current_timestamp on update current_timestamp")
private LocalDateTime updateTime; private LocalDateTime updateTime;
/**
* 工作起始时间
*/
@Column(name = "work_on", nullable = false, columnDefinition = "varchar(5) default '08:00'") @Column(name = "work_on", nullable = false, columnDefinition = "varchar(5) default '08:00'")
private String workOn = "08:00"; private String workOn = "08:00";
/**
* 工作截止时间
*/
@Column(name = "work_off", nullable = false, columnDefinition = "varchar(5) default '18:00'") @Column(name = "work_off", nullable = false, columnDefinition = "varchar(5) default '18:00'")
private String workOff = "18:00"; private String workOff = "18:00";
......
...@@ -16,7 +16,7 @@ public class OrderCancel { ...@@ -16,7 +16,7 @@ public class OrderCancel {
/** /**
* 取消原因 * 取消原因
*/ */
private String cancellationReason; private Reason cancellationReason;
/** /**
* 取消备注 * 取消备注
*/ */
......
package com.dituhui.pea.order.feign.bean;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class Reason {
/**
* 一级原因
*/
private String oneLevel;
/**
* 二级原因
*/
private String twoLevel;
/**
* 三级原因
*/
private String threeLevel;
}
...@@ -22,7 +22,7 @@ public class Rescheduled { ...@@ -22,7 +22,7 @@ public class Rescheduled {
/** /**
* 改约原因 * 改约原因
*/ */
private String reasonForRescheduling; private Reason reasonForRescheduling;
/** /**
* 改约备注 * 改约备注
*/ */
...@@ -50,5 +50,26 @@ public class Rescheduled { ...@@ -50,5 +50,26 @@ public class Rescheduled {
* 审批人工号 * 审批人工号
*/ */
private String approver; private String approver;
/**
* 改派后工程师工号 reassignment 为true必填
*/
private String executorWorkNo;
/**
* 改派辅助工程师工号 没有辅助工程师传null
*/
private String assistantWorkNo;
/**
* 工程师部门id reassignment 为true必填
*/
private String orgUnitId;
/**
* 辅助工程师部门id 没有辅助工程师传null
*/
private String assOrgUnitId;
} }
...@@ -22,7 +22,7 @@ public class ServiceOrg { ...@@ -22,7 +22,7 @@ public class ServiceOrg {
/** /**
* 状态;1正常、0注销 * 状态;1正常、0注销
*/ */
private int status; private Integer status;
/** /**
* 服务商类型 * 服务商类型
*/ */
......
...@@ -3,6 +3,10 @@ package com.dituhui.pea.order.service; ...@@ -3,6 +3,10 @@ package com.dituhui.pea.order.service;
import com.dituhui.pea.common.PageResult; import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.order.dto.MsgDTO; import com.dituhui.pea.order.dto.MsgDTO;
import com.dituhui.pea.order.dto.MsgGroupResp; import com.dituhui.pea.order.dto.MsgGroupResp;
import com.dituhui.pea.order.dto.MsgQuery;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface MsgService { public interface MsgService {
...@@ -14,7 +18,7 @@ public interface MsgService { ...@@ -14,7 +18,7 @@ public interface MsgService {
* @author RenPing * @author RenPing
* @date 2023/10/23 * @date 2023/10/23
*/ */
PageResult<MsgGroupResp> list(MsgDTO.Request request); PageResult<MsgGroupResp> list(MsgQuery request);
/** /**
* 删除 * 删除
...@@ -25,4 +29,24 @@ public interface MsgService { ...@@ -25,4 +29,24 @@ public interface MsgService {
* @date 2023/10/24 * @date 2023/10/24
*/ */
void delete(Integer msgId, String userId); void delete(Integer msgId, String userId);
/**
* 设置消息已读
*
* @param msgIds 消息标识
* @param userId 用户标识
* @author RenPing
* @date 2023/10/25
*/
@Transactional(rollbackFor = Exception.class)
void readMsg(List<Integer> msgIds, String userId);
/**
* 新增消息
*
* @param dto 参数
* @author RenPing
* @date 2023/10/25
*/
void add(MsgDTO dto);
} }
...@@ -100,23 +100,29 @@ public class BeanRemoteServiceImpl { ...@@ -100,23 +100,29 @@ public class BeanRemoteServiceImpl {
Rescheduled rescheduled = new Rescheduled(); Rescheduled rescheduled = new Rescheduled();
rescheduled.setRisId("1000000302"); rescheduled.setRisId("1000002220");
rescheduled.setRescheduledDate(System.currentTimeMillis()); rescheduled.setRescheduledDate(System.currentTimeMillis());
rescheduled.setReasonForRescheduling("reason"); Reason reason = new Reason();
reason.setOneLevel("reason1");
reason.setTwoLevel("reason2");
reason.setThreeLevel("reason3");
rescheduled.setReasonForRescheduling(reason);
rescheduled.setRemarksForRescheduling("remark"); rescheduled.setRemarksForRescheduling("remark");
rescheduled.setReassignment(Boolean.TRUE); rescheduled.setReassignment(Boolean.FALSE);
rescheduled.setRequireApprove(Boolean.FALSE); rescheduled.setRequireApprove(Boolean.FALSE);
rescheduled.setInitiatorOfRescheduling("11111"); rescheduled.setInitiatorOfRescheduling("11111");
log.info("-----请求参数:{}", JsonUtil.toJson(rescheduled));
BeanR<?> beanRq = beanRemoteService.orderRescheduled(accessToken, rescheduled); BeanR<?> beanRq = beanRemoteService.orderRescheduled(accessToken, rescheduled);
log.info("[服务工单改约]【/api/openapi/task/rescheduled 】返回值-------------------->{}", JsonUtil.toJson(beanRq)); log.info("[服务工单改约]【/api/openapi/task/rescheduled 】返回值-------------------->{}", JsonUtil.toJson(beanRq));
OrderCancel orderCancel = new OrderCancel(); OrderCancel orderCancel = new OrderCancel();
orderCancel.setRisId("S20230615000001"); orderCancel.setRisId("1000002248");
orderCancel.setCancellationReason("example_reason"); orderCancel.setCancellationReason(reason);
orderCancel.setCancelNote("example_note"); orderCancel.setCancelNote("example_note");
orderCancel.setCancelStartTime(1678594800000L); orderCancel.setCancelStartTime(System.currentTimeMillis());
orderCancel.setCancelInitiator("example_initiator"); orderCancel.setCancelInitiator("example_initiator");
log.info("-----请求参数:{}", JsonUtil.toJson(orderCancel));
BeanR<?> beanR1 = beanRemoteService.orderTaskCancel(accessToken, orderCancel); BeanR<?> beanR1 = beanRemoteService.orderTaskCancel(accessToken, orderCancel);
log.info("[服务工单取消]【/api/openapi/task/cancel】返回值-------------------->{}", JsonUtil.toJson(beanR1)); log.info("[服务工单取消]【/api/openapi/task/cancel】返回值-------------------->{}", JsonUtil.toJson(beanR1));
...@@ -135,6 +141,11 @@ public class BeanRemoteServiceImpl { ...@@ -135,6 +141,11 @@ public class BeanRemoteServiceImpl {
} }
/**
* 处理全部机构
*
* @return
*/
public Result allDepartment() { public Result allDepartment() {
//获取token //获取token
final String accessToken = getAccessToken(); final String accessToken = getAccessToken();
...@@ -143,13 +154,20 @@ public class BeanRemoteServiceImpl { ...@@ -143,13 +154,20 @@ public class BeanRemoteServiceImpl {
return Result.failed(beanR.getMessage()); return Result.failed(beanR.getMessage());
} }
for (Department department : beanR.getData()) { for (Department department : beanR.getData()) {
log.info("处理部门详情---->{}" + department.getBsDeptId()); log.info("处理部门详情---->{}", department.getBsDeptId());
Result result = this.departmentDetail(accessToken, department.getBsDeptId()); Result result = this.departmentDetail(accessToken, department.getBsDeptId());
log.info("处理部门详情,id:{},结果---->{}" + department.getBsDeptId(), result.getCode()); log.info("处理部门详情,id:{},结果---->{}", department.getBsDeptId(), result.getCode());
} }
return Result.success(); return Result.success();
} }
/**
* 处理单极机构,包含大区,分部,分站
*
* @param token
* @param orgId
* @return
*/
public Result departmentDetail(String token, String orgId) { public Result departmentDetail(String token, String orgId) {
//获取token //获取token
BeanR<Department> departmentBeanR = beanRemoteService.departmentDetail(token, orgId); BeanR<Department> departmentBeanR = beanRemoteService.departmentDetail(token, orgId);
...@@ -201,14 +219,33 @@ public class BeanRemoteServiceImpl { ...@@ -201,14 +219,33 @@ public class BeanRemoteServiceImpl {
groupEntity = new OrgGroupEntity(); groupEntity = new OrgGroupEntity();
} }
groupEntity.setGroupName(data.getTagName()); groupEntity.setGroupName(data.getTagName());
//groupEntity.setAbbreviation(data.getAbbreviation()); groupEntity.setAbbreviation(data.getAbbreviation());
//groupEntity.setStatus(data.getEnable()); groupEntity.setStatus(data.getEnable());
//groupEntity.setCitycodeList(CollectionUtils.isEmpty(data.getManageCityList()) ? "" : JSONObject.toJSONString(data.getManageCityList())); groupEntity.setCitycodeList(CollectionUtils.isEmpty(data.getManageCityList()) ? "" : JSONObject.toJSONString(data.getManageCityList()));
//groupEntity.setMemo(data.getDesc()); groupEntity.setMemo(data.getDesc());
//groupEntity.setCode(data.getCode()); groupEntity.setCode(data.getCode());
//groupEntity.setPhone(data.getPhone()); groupEntity.setPhone(data.getPhone());
//groupEntity.setWarehouseEnabled(data.getPeripheralWarehouseEnabled()); groupEntity.setWarehouseEnabled(data.getPeripheralWarehouseEnabled());
//groupEntity.setReserveTimeMax(data.getPartReserveTimeMax()); groupEntity.setReserveTimeMax(data.getPartReserveTimeMax());
//处理clusterId和branchId
OrgBranchEntity branchEntity = branchMap.get(data.getParentId());
if (ObjUtil.isNull(branchEntity)) {
branchEntity = orgBranchDao.getByBranchId(data.getParentId());
if (ObjUtil.isNull(branchEntity)) {
return Result.failed();
}
branchMap.put(data.getParentId(), branchEntity);
}
groupEntity.setBranchId(data.getParentId());
groupEntity.setClusterId(branchEntity.getClusterId());
//处理分站外围
if (data.getDeptType().equals(BeanOrgLevelEnum.PERIPHERY.getCode())) {
groupEntity.setKind(2);
}
if (data.getDeptType().equals(BeanOrgLevelEnum.STATION.getCode())) {
groupEntity.setKind(1);
}
groupEntity.setCategory(1);
orgGroupDao.save(groupEntity); orgGroupDao.save(groupEntity);
return Result.success(); return Result.success();
} }
...@@ -217,6 +254,53 @@ public class BeanRemoteServiceImpl { ...@@ -217,6 +254,53 @@ public class BeanRemoteServiceImpl {
/** /**
* 处理全部网点
*
* @return
*/
public Result serviceOrgList() {
//获取token
final String accessToken = getAccessToken();
BeanR<List<ServiceOrg>> listBeanR = beanRemoteService.serviceOrgList(accessToken, 1);
log.info("[查询网点/车队列表]【/api/openapi/department/queryServiceOrgList】返回值-------------------->{}", JsonUtil.toJson(listBeanR));
if (!listBeanR.getSuccess() || ObjUtil.isNull(listBeanR.getData())) {
return Result.failed(listBeanR.getMessage());
}
for (ServiceOrg serviceOrg : listBeanR.getData()) {
log.info("处理网点部门详情---->{}", serviceOrg.getServiceOrgId());
Result result = this.serviceOrgDetail(accessToken, serviceOrg);
log.info("处理网点部门详情,id:{},结果---->{}", serviceOrg.getServiceOrgId(), result.getCode());
}
return Result.success();
}
private Result serviceOrgDetail(String accessToken, ServiceOrg serviceOrg) {
BeanR<ServiceOrgDetail> beanR = beanRemoteService.serviceOrgDetail(accessToken, serviceOrg.getServiceOrgId());
log.info("[查询网点/车队列表]【/api/openapi/department/queryServiceOrgList】返回值-------------------->{}", JsonUtil.toJson(beanR));
if (!beanR.getSuccess() || ObjUtil.isNull(beanR.getData())) {
return Result.failed(beanR.getMessage());
}
ServiceOrgDetail data = beanR.getData();
OrgGroupEntity groupEntity = orgGroupDao.getByGroupId(data.getServiceOrgId());
if (ObjUtil.isNull(groupEntity)) {
groupEntity = new OrgGroupEntity();
}
groupEntity.setGroupName(data.getName());
groupEntity.setStatus(data.getStatus());
groupEntity.setCitycodeList(CollectionUtils.isEmpty(data.getServiceRange()) ? "" : JSONObject.toJSONString(data.getServiceRange()));
groupEntity.setPhone(data.getContactPhone());
groupEntity.setBranchId(data.getBelongBranch().getBsDeptId());
groupEntity.setClusterId(data.getBelongRegion().getBsDeptId());
//处理分站外围
groupEntity.setKind(4);
groupEntity.setCategory(2);
groupEntity.setAddress(data.getBusinessAddress().getAddress());
orgGroupDao.save(groupEntity);
return Result.success();
}
/**
* 获取bean token * 获取bean token
* *
* @return * @return
......
...@@ -131,6 +131,8 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -131,6 +131,8 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
.setTeamName(req.getTeamName()) .setTeamName(req.getTeamName())
.setTeamType(TEAMTYPE_PEA) .setTeamType(TEAMTYPE_PEA)
.setWarehouseId(req.getWarehouseId()) .setWarehouseId(req.getWarehouseId())
.setWorkOn(req.getWorkOn())
.setWorkOff(req.getWorkOff())
.setCreateTime(LocalDateTime.now()) .setCreateTime(LocalDateTime.now())
.setUpdateTime(LocalDateTime.now()); .setUpdateTime(LocalDateTime.now());
if (req.getWorkdays() != null) { if (req.getWorkdays() != null) {
...@@ -177,6 +179,12 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -177,6 +179,12 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
if (StringUtils.isNotBlank(req.getGroupId())) { if (StringUtils.isNotBlank(req.getGroupId())) {
entity.setGroupId(req.getGroupId()); entity.setGroupId(req.getGroupId());
} }
if (StringUtils.isNotBlank(req.getWorkOn())) {
entity.setWorkOn(req.getWorkOn());
}
if (StringUtils.isNotBlank(req.getWorkOff())) {
entity.setWorkOff(req.getWorkOff());
}
entity.setUpdateTime(LocalDateTime.now()); entity.setUpdateTime(LocalDateTime.now());
orgTeamDao.save(entity); orgTeamDao.save(entity);
......
package com.dituhui.pea.order.service.impl; package com.dituhui.pea.order.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dituhui.pea.common.PageResult; import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.MsgDTO; import com.dituhui.pea.order.dto.MsgDTO;
import com.dituhui.pea.order.dto.MsgGroupResp; import com.dituhui.pea.order.dto.MsgGroupResp;
import com.dituhui.pea.order.dto.MsgQuery;
import com.dituhui.pea.order.dto.MsgResp; import com.dituhui.pea.order.dto.MsgResp;
import com.dituhui.pea.order.entity.MsgEntity;
import com.dituhui.pea.order.entity.MsgReceiverEntity; import com.dituhui.pea.order.entity.MsgReceiverEntity;
import com.dituhui.pea.order.entity.OrgBranchEntity;
import com.dituhui.pea.order.entity.OrgGroupEntity;
import com.dituhui.pea.order.enums.MsgTagEnum; import com.dituhui.pea.order.enums.MsgTagEnum;
import com.dituhui.pea.order.enums.MsgTypeEnum; import com.dituhui.pea.order.enums.MsgTypeEnum;
import com.dituhui.pea.order.service.MsgService; import com.dituhui.pea.order.service.MsgService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
...@@ -45,7 +48,7 @@ public class MsgServiceImpl implements MsgService { ...@@ -45,7 +48,7 @@ public class MsgServiceImpl implements MsgService {
private OrgGroupDao groupDao; private OrgGroupDao groupDao;
@Override @Override
public PageResult<MsgGroupResp> list(MsgDTO.Request request) { public PageResult<MsgGroupResp> list(MsgQuery request) {
Sort sort = Sort.by("asc".equalsIgnoreCase(request.getSortType()) ? Sort.Direction.ASC : Sort.Direction.DESC, request.getSort()); Sort sort = Sort.by("asc".equalsIgnoreCase(request.getSortType()) ? Sort.Direction.ASC : Sort.Direction.DESC, request.getSort());
Pageable pageable = PageRequest.of(request.getPage() - 1, request.getSize(), sort); Pageable pageable = PageRequest.of(request.getPage() - 1, request.getSize(), sort);
Page<Map<String, Objects>> page = msgDao.getGroupList(request, pageable); Page<Map<String, Objects>> page = msgDao.getGroupList(request, pageable);
...@@ -84,6 +87,47 @@ public class MsgServiceImpl implements MsgService { ...@@ -84,6 +87,47 @@ public class MsgServiceImpl implements MsgService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Integer msgId, String userId) { public void delete(Integer msgId, String userId) {
msgReceiverDao.delete(msgId, userId); List<MsgReceiverEntity> list = msgReceiverDao.findAll(Example.of(new MsgReceiverEntity().setMsgId(msgId).setUserId(userId)));
list.forEach(msgReceiverEntity -> {
msgReceiverDao.deleteById(msgReceiverEntity.getId());
});
}
@Override
@Transactional(rollbackFor = Exception.class)
public void readMsg(List<Integer> msgIds, String userId) {
msgReceiverDao.read(msgIds, userId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void add(MsgDTO dto) {
if (Objects.nonNull(dto.getGroupId())) {
OrgGroupEntity group = groupDao.getByGroupId(dto.getGroupId());
dto.setBranchId(group.getBranchId());
dto.setClusterId(group.getClusterId());
} else if (Objects.nonNull(dto.getBranchId())) {
OrgBranchEntity branch = branchDao.getByBranchId(dto.getBranchId());
dto.setClusterId(branch.getClusterId());
} else if (Objects.nonNull(dto.getClusterId())) {
OrgBranchEntity branch = branchDao.getByBranchId(dto.getBranchId());
dto.setClusterId(branch.getClusterId());
}
List<String> userList = msgDao.getDispatchUserList(dto.getClusterId(), dto.getBranchId(), dto.getGroupId());
MsgEntity msgEntity = new MsgEntity();
BeanUtil.copyProperties(dto, msgEntity);
msgEntity.setCreateTime(new Date()).setUpdateTime(new Date());
msgDao.save(msgEntity);
userList.forEach(userId -> {
MsgReceiverEntity msgReceiverEntity = new MsgReceiverEntity()
.setMsgId(msgEntity.getId())
.setUserId(userId)
.setIsRead(0)
.setCreateTime(new Date())
.setUpdateTime(new Date());
msgReceiverDao.save(msgReceiverEntity);
});
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!