fix: 修复redis缓存临时行程规划单的bug

This commit is contained in:
lulz1 2024-06-28 10:35:47 +08:00
parent c7dfb7f045
commit f2adeab8f6
20 changed files with 153 additions and 15 deletions

View File

@ -1,6 +1,7 @@
package com.chint.application.in; package com.chint.application.in;
import com.chint.application.dtos.DeleteLegData; import com.chint.application.dtos.DeleteLegData;
import com.chint.application.dtos.LegApprovalParam;
import com.chint.application.queryies.OrderQuery; import com.chint.application.queryies.OrderQuery;
import com.chint.application.services.OrderApplicationService; import com.chint.application.services.OrderApplicationService;
import com.chint.domain.aggregates.order.RouteOrder; import com.chint.domain.aggregates.order.RouteOrder;
@ -53,6 +54,13 @@ public class OrderPublicController {
return Result.Success(SUCCESS); return Result.Success(SUCCESS);
} }
@ApiOperation("提交需要审批的行程节点")
@PostMapping("/approve/leg")
public Result<String> approveOrder(@RequestBody LegApprovalParam param) {
return Result.Success(SUCCESS);
}
@ApiOperation("审批拒绝行程规划单") @ApiOperation("审批拒绝行程规划单")
@PostMapping("/reject") @PostMapping("/reject")

View File

@ -73,14 +73,20 @@ public class OrderOutController {
public Result<RouteOrderRes> queryOrder(@RequestBody OrderQueryData queryData) { public Result<RouteOrderRes> queryOrder(@RequestBody OrderQueryData queryData) {
String fakeOrderNo = queryData.getFakeOrderNo(); String fakeOrderNo = queryData.getFakeOrderNo();
String sysCode = queryData.getSysCode(); String sysCode = queryData.getSysCode();
RouteOrder routeOrder; Long routeId = queryData.getRouteId();
RouteOrder routeOrder = null;
if (fakeOrderNo != null && sysCode != null) { if (fakeOrderNo != null && sysCode != null) {
routeOrder = routeRepository.findTempRouteOrderBySysCodeAndBillCode(sysCode, fakeOrderNo); routeOrder = routeRepository.findTempRouteOrderBySysCodeAndBillCode(sysCode, fakeOrderNo);
} else {
routeOrder = orderQuery.queryById(queryData.getRouteId()).reloadStatus();
} }
if (routeId != null) {
routeOrder = orderQuery.queryById(routeId).reloadStatus();
}
if (routeOrder != null) {
RouteOrderRes routeOrderRes = orderQuery.queryRouteRes(routeOrder); RouteOrderRes routeOrderRes = orderQuery.queryRouteRes(routeOrder);
return Result.Success(SUCCESS, routeOrderRes); return Result.Success(SUCCESS, routeOrderRes);
} else {
return Result.error("无法查询到相关差旅申请单");
}
} }
@ApiOperation("分页查询行程规划订单") @ApiOperation("分页查询行程规划订单")
@ -137,8 +143,8 @@ public class OrderOutController {
legResList.forEach(it -> it.setUserName(userRepository.findByUserEmployeeNo(routeOrder.getUserId()).getName())); legResList.forEach(it -> it.setUserName(userRepository.findByUserEmployeeNo(routeOrder.getUserId()).getName()));
legDomainService.getSupplierName(legResList, routeOrder); legDomainService.getSupplierName(legResList, routeOrder);
return Result.Success(SUCCESS, legResList); return Result.Success(SUCCESS, legResList);
}
}
@ApiOperation("查询单日行程规划单") @ApiOperation("查询单日行程规划单")
@PostMapping("/query/route/filed") @PostMapping("/query/route/filed")
public Result<PageResult<RouteOrderFiledVO>> queryRoutOrderField(@RequestBody RoutOrderFieldParam param) { public Result<PageResult<RouteOrderFiledVO>> queryRoutOrderField(@RequestBody RoutOrderFieldParam param) {

View File

@ -336,6 +336,12 @@ public class OrderQuery {
} }
if (routeOrder != null) { if (routeOrder != null) {
if (routeOrder.getCreateTime() == null) {
routeOrder.setCreateTime(LocalDateTime.now());
}
if (routeOrder.getUpdateTime() == null) {
routeOrder.setUpdateTime(LocalDateTime.now());
}
routeOrder.reloadStatus(); routeOrder.reloadStatus();
} }
@ -577,6 +583,7 @@ public class OrderQuery {
order.getLegItems().stream().anyMatch(leg -> !leg.getLegType().equals(LEG_TYPE_OTHER))) order.getLegItems().stream().anyMatch(leg -> !leg.getLegType().equals(LEG_TYPE_OTHER)))
.filter(order -> order.getSupplierName() == null) .filter(order -> order.getSupplierName() == null)
.filter(order -> order.getLegItems().stream().map(Leg::getLegType).anyMatch(allowSupplierProductList::contains))//判断有无允许预订的商品 .filter(order -> order.getLegItems().stream().map(Leg::getLegType).anyMatch(allowSupplierProductList::contains))//判断有无允许预订的商品
.filter(order -> order.getEndTime().isAfter(LocalDateTime.now())) //如果是已经过期的差旅行程单那么就取消需要同步的订单
.sorted(Comparator.comparing(RouteOrder::getUpdateTime).reversed()) .sorted(Comparator.comparing(RouteOrder::getUpdateTime).reversed())
.map(order -> { .map(order -> {
User user = userRepository.findByUserEmployeeNo(order.getUserId()); User user = userRepository.findByUserEmployeeNo(order.getUserId());

View File

@ -64,7 +64,7 @@ public class UserController {
@ApiOperation("根据Id查询用户信息") @ApiOperation("根据Id查询用户信息")
@PostMapping("/query") @PostMapping("/query")
public Result<UserRes> getUserByEmployeeNo() { public Result<UserRes> getUserByEmployeeNo() {
User currentUser = BaseContext.getCurrentUser().loadRoleOrg(); User currentUser = BaseContext.getCurrentUser();
return Result.Success(SUCCESS, BeanUtil.copyProperties(currentUser, UserRes.class)); return Result.Success(SUCCESS, BeanUtil.copyProperties(currentUser, UserRes.class));
} }

View File

@ -34,4 +34,9 @@ public abstract class BaseEvent implements Serializable {
} }
return this; return this;
} }
public BaseEvent extension(String extension) {
this.extension = extension;
return this;
}
} }

View File

@ -1,5 +1,7 @@
package com.chint.domain.aggregates.base; package com.chint.domain.aggregates.base;
import com.chint.domain.aggregates.order.LegApprovalEvent;
import java.util.List; import java.util.List;
public interface EventManageable { public interface EventManageable {
@ -18,4 +20,7 @@ public interface EventManageable {
List<? extends BaseEvent> eventList = getEvents(); List<? extends BaseEvent> eventList = getEvents();
return eventList.isEmpty() ? null : eventList.get(eventList.size() - 1); return eventList.isEmpty() ? null : eventList.get(eventList.size() - 1);
} }
List<LegApprovalEvent> get();
} }

View File

@ -17,7 +17,6 @@ public class RouteCustomExtensionField implements Serializable {
private Long id; private Long id;
@Column("route_id") @Column("route_id")
private Long routeId; private Long routeId;
private Long routeOrderKey;
private String fieldName; private String fieldName;
private String fieldValue; private String fieldValue;
private String extension; private String extension;

View File

@ -135,6 +135,8 @@ public class RouteOrder implements Serializable {
} }
if (data.getCreator() != null) { if (data.getCreator() != null) {
approveOrderNo.setCreator(data.getCreator()); approveOrderNo.setCreator(data.getCreator());
} else {
approveOrderNo.setCreator(this.userId);
} }
if (data.getAccountCompany() != null) { if (data.getAccountCompany() != null) {
approveOrderNo.setAccountCompanyName(data.getAccountCompany()); approveOrderNo.setAccountCompanyName(data.getAccountCompany());

View File

@ -71,6 +71,11 @@ public class RouteRequest implements Serializable, EventManageable {
return this.eventList; return this.eventList;
} }
@Override
public List<LegApprovalEvent> get() {
return List.of();
}
public RouteRequest reloadStatus() { public RouteRequest reloadStatus() {
BaseEvent lastEvent = this.getLastEvent().reloadStatus(); BaseEvent lastEvent = this.getLastEvent().reloadStatus();
this.status = lastEvent.getEventType(); this.status = lastEvent.getEventType();

View File

@ -22,4 +22,6 @@ public class RouterOrderExtensionField implements Serializable {
private String belongDeptCode; private String belongDeptCode;
private String companyCode;
} }

View File

@ -2,6 +2,7 @@ package com.chint.domain.aggregates.system;
import lombok.Data; import lombok.Data;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.relational.core.mapping.MappedCollection; import org.springframework.data.relational.core.mapping.MappedCollection;
import org.springframework.data.relational.core.mapping.Table; import org.springframework.data.relational.core.mapping.Table;
@ -25,4 +26,18 @@ public class SystemCode implements Serializable {
private List<CompanyInfo> companyInfos; private List<CompanyInfo> companyInfos;
@MappedCollection(idColumn = "system_code_id") @MappedCollection(idColumn = "system_code_id")
private SystemCodeUrl systemCodeUrl; private SystemCodeUrl systemCodeUrl;
@Transient
// @MappedCollection(idColumn = "system_id", keyColumn = "system_key")
private List<SystemCodeExtensionField> systemCodeExtensionFieldList;
public String getApprovalPlatformMark() {
if (systemCodeExtensionFieldList == null || systemCodeExtensionFieldList.isEmpty()) {
return null;
}
return this.systemCodeExtensionFieldList.stream().filter(it -> it.getFieldName().equals("ApprovalPlatformMark"))
.map(SystemCodeExtensionField::getFieldValue)
.findFirst()
.orElse("");
}
} }

View File

@ -0,0 +1,36 @@
package com.chint.domain.aggregates.system;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;
import java.io.Serial;
import java.io.Serializable;
@Data
@Table("system_code_extension_field")
public class SystemCodeExtensionField implements Serializable {
@Serial
private static final long serialVersionUID = 8167639173251119570L;
@Id
private Long id;
@Column("system_code_id")
private Long systemCodeId;
private String fieldName;
private String fieldValue;
private String extension;
private SystemCodeExtensionField(String fieldName, String fieldValue, String extension) {
this.fieldName = fieldName;
this.fieldValue = fieldValue;
this.extension = extension;
}
public static SystemCodeExtensionField of(String fieldName, String fieldValue, String extension) {
return new SystemCodeExtensionField(fieldName, fieldValue, extension);
}
}

View File

@ -92,4 +92,14 @@ public class SystemOrganization implements Serializable {
public RoleOrganizationVO mapToRoleOrganizationVO() { public RoleOrganizationVO mapToRoleOrganizationVO() {
return BeanUtil.copyProperties(this, RoleOrganizationVO.class); return BeanUtil.copyProperties(this, RoleOrganizationVO.class);
} }
public String getApprovalPlatformMark() {
if (systemOrganizationExtensionList == null || systemOrganizationExtensionList.isEmpty()) {
return null;
}
return this.systemOrganizationExtensionList.stream().filter(it -> it.getFieldName().equals("ApprovalPlatformMark"))
.map(SystemOrganizationExtension::getFieldValue)
.findFirst()
.orElse("");
}
} }

View File

@ -102,6 +102,4 @@ public class Role implements Serializable {
} }
return role; return role;
} }
} }

View File

@ -26,4 +26,6 @@ public interface SystemOrganizationRepository {
SystemOrganization queryChild(SystemOrganization systemOrganization); SystemOrganization queryChild(SystemOrganization systemOrganization);
List<SystemOrganization> expandOrganizations(List<SystemOrganization> systemOrganizations); List<SystemOrganization> expandOrganizations(List<SystemOrganization> systemOrganizations);
Optional<SystemOrganization> findByOrgCodeContainingOrOrgNameContaining(String orgCode, String orgName);
} }

View File

@ -23,6 +23,17 @@ public class LegConstant {
public static final int LEG_STATUS_REJECT = -1; public static final int LEG_STATUS_REJECT = -1;
public static final String LEG_STATUS_REJECT_NAME = "审批未通过"; public static final String LEG_STATUS_REJECT_NAME = "审批未通过";
public static final int LEG_APPROVAL_STATUS_NOT = -1;
public static final String LEG_APPROVAL_STATUS_NOT_NAME = "无需审批";
public static final int LEG_APPROVAL_STATUS_PREPARE = 0;
public static final String LEG_APPROVAL_STATUS_PREPARE_NAME = "未审批";
public static final int LEG_APPROVAL_STATUS_SUBMIT = 1;
public static final String LEG_APPROVAL_STATUS_SUBMIT_NAME = "审批中";
public static final int LEG_APPROVAL_STATUS_SUCCESS = 2;
public static final String LEG_APPROVAL_STATUS_SUCCESS_NAME = "已通过";
public static final int LEG_APPROVAL_STATUS_REJECT = 3;
public static final String LEG_APPROVAL_STATUS_REJECT_NAME = "已驳回";
// 规划节点运输方式 // 规划节点运输方式
public static final int LEG_TYPE_TRAIN = 0; public static final int LEG_TYPE_TRAIN = 0;

View File

@ -205,8 +205,15 @@ public class RouteRepositoryImpl implements RouteRepository {
@Override @Override
public RouteOrder saveTempRouteOrder(RouteOrder routeOrder, Long hours) { public RouteOrder saveTempRouteOrder(RouteOrder routeOrder, Long hours) {
ApproveOrderNo approveOrderNo = routeOrder.getApproveOrderNo(); ApproveOrderNo approveOrderNo = routeOrder.getApproveOrderNo();
routeOrder.reloadStatus();
if (routeOrder.getCreateTime() == null) {
routeOrder.setCreateTime(LocalDateTime.now());
}
if (routeOrder.getUpdateTime() == null) {
routeOrder.setUpdateTime(LocalDateTime.now());
}
String redisKey = "TemporaryRouteOrder:" + approveOrderNo.getSysCode() + "-" + approveOrderNo.getFakeOrderNo(); String redisKey = "TemporaryRouteOrder:" + approveOrderNo.getSysCode() + "-" + approveOrderNo.getFakeOrderNo();
redisTemplate.opsForValue().set(redisKey, routeOrder, hours, TimeUnit.HOURS); redisTemplate.opsForValue().set(redisKey, routeOrder, 7L, TimeUnit.DAYS);
return routeOrder; return routeOrder;
} }
} }

View File

@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream;
@Repository @Repository
public class SystemOrganizationRepositoryImpl implements SystemOrganizationRepository { public class SystemOrganizationRepositoryImpl implements SystemOrganizationRepository {
@ -127,6 +128,17 @@ public class SystemOrganizationRepositoryImpl implements SystemOrganizationRepos
return allOrganizations; return allOrganizations;
} }
@Override
public Optional<SystemOrganization> findByOrgCodeContainingOrOrgNameContaining(String orgCode, String orgName) {
return Stream.of(
jdbcSystemOrganizationRepository.findByOrgCode(orgCode).stream().findFirst(),
jdbcSystemOrganizationRepository.findByOrgName(orgName).stream().findFirst()
)
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();
}
private void expandOrganizationRecursively(SystemOrganization org, private void expandOrganizationRecursively(SystemOrganization org,
List<SystemOrganization> allOrganizations) { List<SystemOrganization> allOrganizations) {
if (org == null) { if (org == null) {

View File

@ -139,7 +139,11 @@ public class AmapUserRequest implements UserSync {
UserParam userParam = new UserParam(); UserParam userParam = new UserParam();
userParam.setUserId(user.getEmployeeNo()); userParam.setUserId(user.getEmployeeNo());
userParam.setEmail(user.getEmail()); userParam.setEmail(user.getEmail());
userParam.setMobile(user.getPhoneNumber()); String phoneNumber = user.getPhoneNumber();
if (phoneNumber.startsWith("+86")) {
phoneNumber = phoneNumber.replace("+86", "");
}
userParam.setMobile(phoneNumber);
userNameRepository.findByEmployeeNo(user.getEmployeeNo()).ifPresentOrElse( userNameRepository.findByEmployeeNo(user.getEmployeeNo()).ifPresentOrElse(
it -> userParam.setRealName(it.getIdName()), it -> userParam.setRealName(it.getIdName()),
() -> userParam.setRealName(user.getName())); () -> userParam.setRealName(user.getName()));

View File

@ -32,7 +32,11 @@ public class TokenRequest {
public TokenDto getTokenDto(User user) { public TokenDto getTokenDto(User user) {
TokenDto tokenDto = new TokenDto(); TokenDto tokenDto = new TokenDto();
TokenDto.UserInfo userInfo = new TokenDto.UserInfo(); TokenDto.UserInfo userInfo = new TokenDto.UserInfo();
userInfo.setMobile(user.getPhoneNumber()); String phoneNumber = user.getPhoneNumber();
if(phoneNumber.startsWith("+86")){
phoneNumber = phoneNumber.replace("+86", "");
}
userInfo.setMobile(phoneNumber);
userInfo.setUserId(user.getEmployeeNo()); userInfo.setUserId(user.getEmployeeNo());
String json = gson.toJson(userInfo); String json = gson.toJson(userInfo);
tokenDto.setUserInfo(json); tokenDto.setUserInfo(json);