Commit 6072efd5 authored by Smile's avatar Smile

需求130后台-集运-包裹列表-包裹详情

parent dab2a1fe
...@@ -6,10 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; ...@@ -6,10 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.IService; import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.vo.cons.ConsBackVO; import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.cons.ConsCreateReqVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsQueryVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsUpdateReqVO;
/** /**
* 集运包裹主 Service 接口 * 集运包裹主 Service 接口
...@@ -37,6 +34,10 @@ public interface ConsService extends IService<ConsDO> { ...@@ -37,6 +34,10 @@ public interface ConsService extends IService<ConsDO> {
*/ */
void deleteCons(Long id); void deleteCons(Long id);
/*
* 批量签收
*/
void updateConsSign(ConsUpdateSignReqVO updateReqVO);
/** /**
* 获得集运包裹主 * 获得集运包裹主
* @param id 编号 * @param id 编号
......
package cn.iocoder.yudao.module.order.service.cons; package cn.iocoder.yudao.module.order.service.cons;
import java.time.LocalDateTime; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import cn.iocoder.yudao.framework.dict.core.dto.DictDataRespDTO;
import cn.iocoder.yudao.framework.i18n.core.I18nMessage; import cn.iocoder.yudao.framework.i18n.core.I18nMessage;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.module.order.convert.cons.ConsConvert; import cn.iocoder.yudao.module.order.convert.cons.ConsConvert;
import cn.iocoder.yudao.module.order.convert.consMedia.ConsMediaConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO; import cn.iocoder.yudao.module.order.dal.dataobject.consItem.ConsItemDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO; import cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO;
import cn.iocoder.yudao.module.order.dal.mysql.cons.ConsMapper; import cn.iocoder.yudao.module.order.dal.mysql.cons.ConsMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consMedia.ConsMediaMapper;
import cn.iocoder.yudao.module.order.service.consItem.ConsItemService; import cn.iocoder.yudao.module.order.service.consItem.ConsItemService;
import cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService; import cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService;
import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService; import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.vo.cons.ConsBackVO; import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.cons.ConsCreateReqVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsQueryVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO;
import cn.iocoder.yudao.module.order.vo.consMedia.ConsMediaBackVO;
import cn.iocoder.yudao.module.order.vo.consMedia.ConsMediaCreateReqVO; import cn.iocoder.yudao.module.order.vo.consMedia.ConsMediaCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.redisson.api.RAtomicLong; import org.redisson.api.RAtomicLong;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService; import javax.annotation.Resource;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/** /**
...@@ -152,9 +148,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -152,9 +148,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
consItemVO.setConsId(updateReqVO.getId()); consItemVO.setConsId(updateReqVO.getId());
consItemService.createConsItem(consItemVO); consItemService.createConsItem(consItemVO);
}); });
//更新图片地址 if(updateReqVO.getSigner()!=null&&updateReqVO.getSignedTime()!=null){
if (updateReqVO.getMediaUrl()!=null){ updateReqVO.setSigned(true);
ConsMediaDO consMedia = consMediaService.selectOne(ConsMediaDO::getBizId, updateReqVO.getId()); }
//更新图片地址,仅签收情况
if (updateReqVO.getMediaUrl()!=null&&updateReqVO.getSigner()!=null){
ConsMediaDO consMedia = consMediaService.selectOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getBizId,updateReqVO.getId()).eq(ConsMediaDO::getConsId,updateReqVO.getId()));
if (consMedia!=null){ if (consMedia!=null){
consMedia.setMediaUrl(updateReqVO.getMediaUrl()); consMedia.setMediaUrl(updateReqVO.getMediaUrl());
consMediaService.updateById(consMedia); consMediaService.updateById(consMedia);
...@@ -185,6 +184,44 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -185,6 +184,44 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
// 删除 // 删除
consMapper.deleteById(id); consMapper.deleteById(id);
} }
@Override
public void updateConsSign(ConsUpdateSignReqVO updateReqVO) {
if (updateReqVO.getConsIds()==null|| updateReqVO.getConsIds().isEmpty()){
throw exception(30004,"未选择包裹");
}
if (updateReqVO.getWareId()==null){
throw exception(30004,"请选择仓库");
}
if (updateReqVO.getMediaUrl()==null){
throw exception(30004,"未有签收图片");
}
if (updateReqVO.getSigner()==null){
throw exception(30004,"未选择签收人");
}
if (updateReqVO.getSignedTime()==null){
throw exception(30004,"未选择签收时间");
}
List<ConsDO> consDOS = consMapper.selectBatchIds(updateReqVO.getConsIds());
consDOS.forEach(consDO -> {
consDO.setSigner(updateReqVO.getSigner());
consDO.setSigned(true);
consDO.setSignedTime(updateReqVO.getSignedTime());
consDO.setWareId(updateReqVO.getWareId());
ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO();
consMediaCreateReqVO.setConsId(consDO.getId());
consMediaCreateReqVO.setMediaUrl(updateReqVO.getMediaUrl());
consMediaCreateReqVO.setMediaBusinessType(0);
consMediaCreateReqVO.setBizId(consDO.getId());
consMediaCreateReqVO.setTableName("ecw_cons");
consMediaCreateReqVO.setColumnName("files");
consMediaCreateReqVO.setOriginalFileName("签收图片");
consMediaService.createConsMedia(consMediaCreateReqVO);
});
consMapper.updateBatch(consDOS);
}
private void validateConsExists(Long id) { private void validateConsExists(Long id) {
if (consMapper.selectById(id) == null) { if (consMapper.selectById(id) == null) {
throw exception(30004,"包裹不存在"); throw exception(30004,"包裹不存在");
......
...@@ -228,4 +228,9 @@ public class ConsBackVO { ...@@ -228,4 +228,9 @@ public class ConsBackVO {
@ApiModelProperty(value = "初始物流信息相关") @ApiModelProperty(value = "初始物流信息相关")
private LogisticsInfoDto initialLogisticsInfoDto; private LogisticsInfoDto initialLogisticsInfoDto;
@ExcelProperty("签收图片")
@ApiModelProperty(value = "签收图片")
private String mediaUrl;
} }
package cn.iocoder.yudao.module.order.vo.cons; package cn.iocoder.yudao.module.order.vo.cons;
import lombok.*; import io.swagger.annotations.ApiModelProperty;
import java.util.*; import lombok.Data;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/** /**
...@@ -81,7 +82,7 @@ public class ConsBaseVO { ...@@ -81,7 +82,7 @@ public class ConsBaseVO {
private Boolean signed; private Boolean signed;
@ApiModelProperty(value = "签收时间") @ApiModelProperty(value = "签收时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private Date signedTime; private Date signedTime;
@ApiModelProperty(value = "签收备注") @ApiModelProperty(value = "签收备注")
......
package cn.iocoder.yudao.module.order.vo.cons;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.util.List;
@ApiModel("管理后台 - 集运包裹批量签收 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ConsUpdateSignReqVO extends ConsBaseVO {
@ApiModelProperty(value = "", required = true)
private List<Long> consIds;
@ApiModelProperty(value = "包裹项")
private List<ConsItemCreateReqVO> consItemVOList;
@ApiModelProperty(value = "影像文件地址", required = true)
@NotNull(message = "影像文件地址不能为空")
private String mediaUrl;
}
...@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; ...@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.code.CodeUtils; import cn.iocoder.yudao.framework.common.util.code.CodeUtils;
import cn.iocoder.yudao.framework.excel.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.util.ExcelUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO; import cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO;
...@@ -14,13 +15,12 @@ import cn.iocoder.yudao.module.depository.dal.mysql.warehouse.WarehouseLineMappe ...@@ -14,13 +15,12 @@ import cn.iocoder.yudao.module.depository.dal.mysql.warehouse.WarehouseLineMappe
import cn.iocoder.yudao.module.depository.dto.LogisticsInfoDto; import cn.iocoder.yudao.module.depository.dto.LogisticsInfoDto;
import cn.iocoder.yudao.module.order.convert.cons.ConsConvert; import cn.iocoder.yudao.module.order.convert.cons.ConsConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consMedia.ConsMediaDO;
import cn.iocoder.yudao.module.order.service.cons.ConsService; import cn.iocoder.yudao.module.order.service.cons.ConsService;
import cn.iocoder.yudao.module.order.service.consItem.ConsItemService; import cn.iocoder.yudao.module.order.service.consItem.ConsItemService;
import cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService;
import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService; import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.vo.cons.ConsBackVO; import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.cons.ConsCreateReqVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsQueryVO;
import cn.iocoder.yudao.module.order.vo.cons.ConsUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemQueryVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -59,6 +59,9 @@ public class ConsController { ...@@ -59,6 +59,9 @@ public class ConsController {
@Resource @Resource
private ConsTrackingRecordService consTrackingRecordService; private ConsTrackingRecordService consTrackingRecordService;
@Resource
private ConsMediaService consentMediaService;
@Resource @Resource
private CustomerService customerService; private CustomerService customerService;
...@@ -83,6 +86,14 @@ public class ConsController { ...@@ -83,6 +86,14 @@ public class ConsController {
return success(true); return success(true);
} }
@PutMapping("/updateConsBatchSignOff")
@ApiOperation("批量签收集运包裹")
@PreAuthorize("@ss.hasPermission('ecw:cons:update')")
public CommonResult<Boolean> updateConsBatchSignOff(@Valid @RequestBody ConsUpdateSignReqVO updateReqVO) {
consService.updateConsSign(updateReqVO);
return success(true);
}
@DeleteMapping("/delete") @DeleteMapping("/delete")
@ApiOperation("删除集运包裹主") @ApiOperation("删除集运包裹主")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
...@@ -106,6 +117,12 @@ public class ConsController { ...@@ -106,6 +117,12 @@ public class ConsController {
consBackVO.setAreaCode(customerContacts.getAreaCode()); consBackVO.setAreaCode(customerContacts.getAreaCode());
consBackVO.setPhoneNew(customerContacts.getPhoneNew()); consBackVO.setPhoneNew(customerContacts.getPhoneNew());
consBackVO.setCustomerName(customer.getName()); consBackVO.setCustomerName(customer.getName());
//获取签收图片
if(cons.getSigned()){
ConsMediaDO consMedia = consentMediaService.getOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getConsId, cons.getId())
.eq(ConsMediaDO::getBizId, cons.getId()));
consBackVO.setMediaUrl(consMedia.getMediaUrl());
}
// 物流信息查询 // 物流信息查询
LogisticsInfoDto initialLogisticsInfoDto = LogisticsInfoDto initialLogisticsInfoDto =
warehouseLineMapper.getStartInfoAndDestInfoByLineId(cons.getWarehouseLineId()); warehouseLineMapper.getStartInfoAndDestInfoByLineId(cons.getWarehouseLineId());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment