提交 8369c643 authored 作者: jiangwujie's avatar jiangwujie

Merge branch 'v21.1_jianzhuang_20240807' into dev

...@@ -15,12 +15,17 @@ import javax.validation.constraints.NotBlank; ...@@ -15,12 +15,17 @@ import javax.validation.constraints.NotBlank;
@NoArgsConstructor @NoArgsConstructor
public class NeedAlertSuperviseInfoParam { public class NeedAlertSuperviseInfoParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
private String orderGoodsNo;
@ApiModelProperty(value = "运单编号", example = "100000000") @ApiModelProperty(value = "运单编号", example = "100000000")
@NotBlank(message = "运单编号不能为空") @NotBlank(message = "运单编号不能为空")
private String childNo; private String childNo;
@ApiModelProperty(value = "订单编号", example = "100000000")
@NotBlank(message = "订单编号不能为空")
private String orderNo;
@ApiModelProperty(value = "类型 1-监装 2-监卸", example = "1")
@NotBlank(message = "类型不能为空")
private Integer type;
} }
...@@ -35,5 +35,13 @@ public class ClxMessageConfig { ...@@ -35,5 +35,13 @@ public class ClxMessageConfig {
private Integer vehicleWarnChannelId; private Integer vehicleWarnChannelId;
//线路报警短信模板 //线路报警短信模板
private String lineWarnTemplateCode; private String lineWarnTemplateCode;
/**
* 上传装货信息短信模板
*/
private String uploadLoadInfo;
/**
* 提示监装信息短信模板
*/
private String noticeSupervision;
} }
...@@ -15,18 +15,18 @@ import org.springframework.stereotype.Component; ...@@ -15,18 +15,18 @@ import org.springframework.stereotype.Component;
public class LoadAppConfig { public class LoadAppConfig {
private App app; private App purchaseManageApp;
@Autowired @Autowired
private AppDao appDao; private AppDao appDao;
public App getApp() { public App getPurchaseManageApp() {
if (app == null) { if (purchaseManageApp == null) {
app = appDao.getOneByField(App::getUniqueIdentifier, AppEnum.UniqueIdentifier.PURCHASE_MANAGE.getCode()).orElseThrow( purchaseManageApp = appDao.getOneByField(App::getUniqueIdentifier, AppEnum.UniqueIdentifier.PURCHASE_MANAGE.getCode()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);; PerformanceResultEnum.DATA_NOT_FIND);;
} }
return app; return purchaseManageApp;
} }
} }
...@@ -203,8 +203,7 @@ public class AppDriverOrderChildController { ...@@ -203,8 +203,7 @@ public class AppDriverOrderChildController {
@ApiOperation(value = "是否需要弹出监装信息", notes = "<br>By:姜武杰") @ApiOperation(value = "是否需要弹出监装信息", notes = "<br>By:姜武杰")
@PostMapping("/needAlertSuperviseInfo") @PostMapping("/needAlertSuperviseInfo")
public Result<NeedAlertSuperviseInfoResultVO> needAlertSuperviseInfo(@RequestBody @Validated NeedAlertSuperviseInfoParam param) { public Result<NeedAlertSuperviseInfoResultVO> needAlertSuperviseInfo(@RequestBody @Validated NeedAlertSuperviseInfoParam param) {
// TODO 待实现 return Result.ok(orderChildService.needAlertSuperviseInfo(param));
return Result.ok();
} }
} }
...@@ -75,7 +75,7 @@ public class OrderCancelController { ...@@ -75,7 +75,7 @@ public class OrderCancelController {
@ApiOperation(value = "客服解除装车限制", notes = "<br>By:姜武杰") @ApiOperation(value = "客服解除装车限制", notes = "<br>By:姜武杰")
@PostMapping("/artificialRemoveLoadLimit") @PostMapping("/artificialRemoveLoadLimit")
public Result<Object> artificialRemoveLoadLimit(@RequestBody ArtificialCancelOrderParam param) { public Result<Object> artificialRemoveLoadLimit(@RequestBody ArtificialCancelOrderParam param) {
// TODO 待实现 orderCancelService.removeLoadLimit(param);
return Result.ok(); return Result.ok();
} }
......
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam; import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam; import com.clx.performance.param.pc.OrderChildCancelRecordParam;
...@@ -56,4 +57,10 @@ public interface OrderCancelService { ...@@ -56,4 +57,10 @@ public interface OrderCancelService {
* @return * @return
*/ */
IPage<OrderChildOperateRecordVO> orderChildOperateRecord(OrderChildCancelRecordParam param); IPage<OrderChildOperateRecordVO> orderChildOperateRecord(OrderChildCancelRecordParam param);
/**
* 客服移除监装限制
* @param param
*/
void removeLoadLimit(ArtificialCancelOrderParam param);
} }
...@@ -116,4 +116,7 @@ public interface OrderChildService { ...@@ -116,4 +116,7 @@ public interface OrderChildService {
OrderChildLoadRangeCheckResultVO loadRangeCheck(OrderChildLoadRangeCheckParam param); OrderChildLoadRangeCheckResultVO loadRangeCheck(OrderChildLoadRangeCheckParam param);
void orderChildMessageNotice(); void orderChildMessageNotice();
NeedAlertSuperviseInfoResultVO needAlertSuperviseInfo(NeedAlertSuperviseInfoParam param);
} }
...@@ -23,7 +23,9 @@ import com.clx.performance.enums.*; ...@@ -23,7 +23,9 @@ import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OwnerInfoService; import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildOperateRecord;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam; import com.clx.performance.param.pc.ArtificialCancelOrderQueryParam;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.OrderChildCancelRecordParam; import com.clx.performance.param.pc.OrderChildCancelRecordParam;
...@@ -599,6 +601,16 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -599,6 +601,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
public void artificialCancelOrder(String orderChildNo, String remark) { public void artificialCancelOrder(String orderChildNo, String remark) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
OrderChild orderChild = orderChildDao.getByChildNo(orderChildNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); OrderChild orderChild = orderChildDao.getByChildNo(orderChildNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//运单状态不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消
if (!Arrays.asList(OrderChildEnum.Status.LOAD.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.UNLOAD.getCode())
.contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消", orderChildNo, orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
OrderChild update = new OrderChild(); OrderChild update = new OrderChild();
update.setId(orderChild.getId()); update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode()); update.setStatus(OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode());
...@@ -614,10 +626,14 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -614,10 +626,14 @@ public class OrderCancelServiceImpl implements OrderCancelService {
// 运单取消 // 运单取消
orderChildPostService.orderChildCancelByArtificial(orderChildNo); orderChildPostService.orderChildCancelByArtificial(orderChildNo);
// 保存操作记录
orderChildLogService.saveOrderChildLog(orderChild.getChildNo(), orderChildLogService.saveOrderChildLog(orderChild.getChildNo(),
OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode(), OrderChildEnum.Status.ARTIFICIAL_CANCEL.getName(), OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode(), OrderChildEnum.Status.ARTIFICIAL_CANCEL.getName(),
OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg() OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg()
); );
// 保存运单处理记录
saveOrderChildOperateRecord(orderChild, OrderChildEnum.OperateRecordType.CANCEL_ORDER, remark);
} }
@Override @Override
...@@ -653,5 +669,54 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -653,5 +669,54 @@ public class OrderCancelServiceImpl implements OrderCancelService {
return orderChildOperateRecordDao.orderChildOperateRecord(param); return orderChildOperateRecordDao.orderChildOperateRecord(param);
} }
@Override
public void removeLoadLimit(ArtificialCancelOrderParam param) {
OrderChild orderChild = orderChildDao.getByChildNo(param.getOrderChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作
if (!Arrays.asList(OrderChildEnum.Status.CREATED.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode())
.contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制", param.getOrderChildNo(), orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setRemoveLoadLimitStatus(OrderChildEnum.RemoveLoadLimitStatus.REMOVED.getCode());
orderChildDao.updateEntityByKey(update);
//保存运单处理记录
saveOrderChildOperateRecord(orderChild, OrderChildEnum.OperateRecordType.REMOVE_LIMIT, param.getRemark());
//保存运单操作记录
orderChildLogService.saveOrderChildLog(orderChild.getChildNo(),
orderChild.getStatus(), OrderChildEnum.OperateRecordType.REMOVE_LIMIT.getMsg(),
OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg()
);
}
private void saveOrderChildOperateRecord(OrderChild orderChild, OrderChildEnum.OperateRecordType type, String remark) {
OrderChildOperateRecord record = new OrderChildOperateRecord();
record.setChildNo(orderChild.getChildNo());
record.setType(type.getCode());
record.setTruckNo(orderChild.getTruckNo());
record.setDriverName(orderChild.getDriverName());
record.setDriverMobile(orderChild.getDriverMobile());
record.setSendAddress(orderChild.getSendAddress());
record.setReceiveAddress(orderChild.getReceiveAddress());
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderChild.getOrderNo());
if (orderInfoFeign != null) {
record.setGoodTypeName(orderInfoFeign.getGoodsTypeName());
}
record.setRemark(remark);
record.setOperateTime(LocalDateTime.now());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
record.setOperator(loginUserInfo.getUserName());
record.setCreatedTime(LocalDateTime.now());
record.setModifiedTime(LocalDateTime.now());
orderChildOperateRecordDao.saveEntity(record);
}
} }
\ No newline at end of file
package com.clx.performance.service.impl;
import com.clx.performance.service.DriverNoticeConfigService;
import com.clx.performance.vo.pc.DriverNoticeConfigVO;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.redis.core.RedisTemplate;
import java.math.BigDecimal;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class OrderChildServiceImpl2Test {
@Mock
private RedisTemplate redisTemplate;
@Mock
private DriverNoticeConfigService driverNoticeConfigService;
@InjectMocks
private OrderChildServiceImpl orderChildService;
@BeforeEach
void setUp() {
// Setup common mock interactions here if any
}
@Test
void testOrderChildMessageNotice() {
orderChildService.orderChildMessageNotice();
}
@Test
void testOrderChildMessageNoticeListConfigDisabled() {
// Arrange
DriverNoticeConfigVO configVO = new DriverNoticeConfigVO();
configVO.setStatus(0);
configVO.setNoticeTriggerDistance(BigDecimal.valueOf(5000));
when(driverNoticeConfigService.listConfig()).thenReturn(configVO);
orderChildService.orderChildMessageNotice();
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论