Commit c522cf92 authored by Smile's avatar Smile

需求131 后台-集运-包裹列表-签收包裹/修改签收 签收后流程添加

parent 8e8ac76b
...@@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery; ...@@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery;
import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper; import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.module.order.dal.dataobject.consTrackingRecord.ConsTrackingRecordDO; import cn.iocoder.yudao.module.order.dal.dataobject.consTrackingRecord.ConsTrackingRecordDO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 包裹动态跟踪 Mapper * 包裹动态跟踪 Mapper
...@@ -50,4 +52,6 @@ public interface ConsTrackingRecordMapper extends AbstractMapper<ConsTrackingRec ...@@ -50,4 +52,6 @@ public interface ConsTrackingRecordMapper extends AbstractMapper<ConsTrackingRec
return null; return null;
} }
List<ConsTrackingRecordBackVO> selectByConsId(@Param("consId")Long consId,@Param("lang") Integer lang);
} }
...@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; ...@@ -7,6 +7,7 @@ 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.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.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.customer.dal.dataobject.customerContacts.CustomerContactsDO; import cn.iocoder.yudao.module.customer.dal.dataobject.customerContacts.CustomerContactsDO;
import cn.iocoder.yudao.module.customer.service.customerContacts.CustomerContactsService; import cn.iocoder.yudao.module.customer.service.customerContacts.CustomerContactsService;
import cn.iocoder.yudao.module.depository.dal.mysql.warehouse.WarehouseLineMapper; import cn.iocoder.yudao.module.depository.dal.mysql.warehouse.WarehouseLineMapper;
...@@ -92,9 +93,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -92,9 +93,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
if (createReqVO.getExpressNo() == null) { if (createReqVO.getExpressNo() == null) {
throw exception(30004, "包裹快递号不能为空"); throw exception(30004, "包裹快递号不能为空");
} }
if (createReqVO.getExpressId() == null) {
throw exception(30004, "请选择快递公司");
}
if (createReqVO.getTransportId() == null && createReqVO.getConsigneeCityId() == null) { if (createReqVO.getTransportId() == null && createReqVO.getConsigneeCityId() == null) {
throw exception(30004, "请选择运输方式或目的城市"); throw exception(30004, "请选择运输方式或目的城市");
} }
...@@ -130,17 +128,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -130,17 +128,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
consTrackingRecordCreateReqVO.setTrackingTime(new Date()); consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0); consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO); consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
if (createReqVO.getMediaUrl() != null) {
ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO();
consMediaCreateReqVO.setConsId(cons.getId());
consMediaCreateReqVO.setMediaUrl(createReqVO.getMediaUrl());
consMediaCreateReqVO.setMediaBusinessType(0);
consMediaCreateReqVO.setBizId(cons.getId());
consMediaCreateReqVO.setTableName("ecw_cons");
consMediaCreateReqVO.setColumnName("files");
consMediaCreateReqVO.setOriginalFileName("签收图片");
consMediaService.createConsMedia(consMediaCreateReqVO);
}
return cons.getId(); return cons.getId();
} }
...@@ -171,20 +158,29 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -171,20 +158,29 @@ 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) {
updateReqVO.setSigned(true);
}
//更新图片地址,仅签收情况 //更新图片地址,仅签收情况
if (updateReqVO.getMediaUrl() != null && updateReqVO.getSigner() != null) { if (updateReqVO.getMediaUrl() != null && updateReqVO.getSigner() != null) {
if (!updateReqVO.getSigned()){
updateReqVO.setSigned(true);
updateReqVO.setSignedTime(new Date());
updateReqVO.setStatus(1);
}
ConsMediaDO consMedia = consMediaService.selectOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getBizId, updateReqVO.getId()).eq(ConsMediaDO::getConsId, updateReqVO.getId())); 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);
} else { } else {
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(updateReqVO.getId());
consTrackingRecordCreateReqVO.setBusinessNode(1);
consTrackingRecordCreateReqVO.setStatus(1);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO(); ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO();
consMediaCreateReqVO.setConsId(updateReqVO.getId()); consMediaCreateReqVO.setConsId(updateReqVO.getId());
consMediaCreateReqVO.setMediaUrl(updateReqVO.getMediaUrl()); consMediaCreateReqVO.setMediaUrl(updateReqVO.getMediaUrl());
consMediaCreateReqVO.setMediaBusinessType(0); consMediaCreateReqVO.setMediaBusinessType(3);
consMediaCreateReqVO.setBizId(updateReqVO.getId()); consMediaCreateReqVO.setBizId(updateReqVO.getId());
consMediaCreateReqVO.setTableName("ecw_cons"); consMediaCreateReqVO.setTableName("ecw_cons");
consMediaCreateReqVO.setColumnName("files"); consMediaCreateReqVO.setColumnName("files");
...@@ -232,6 +228,13 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -232,6 +228,13 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
consDO.setSignedTime(updateReqVO.getSignedTime()); consDO.setSignedTime(updateReqVO.getSignedTime());
consDO.setWareId(updateReqVO.getWareId()); consDO.setWareId(updateReqVO.getWareId());
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(consDO.getId());
consTrackingRecordCreateReqVO.setBusinessNode(1);
consTrackingRecordCreateReqVO.setStatus(1);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO(); ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO();
consMediaCreateReqVO.setConsId(consDO.getId()); consMediaCreateReqVO.setConsId(consDO.getId());
consMediaCreateReqVO.setMediaUrl(updateReqVO.getMediaUrl()); consMediaCreateReqVO.setMediaUrl(updateReqVO.getMediaUrl());
......
...@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; ...@@ -6,6 +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.consTrackingRecord.ConsTrackingRecordDO; import cn.iocoder.yudao.module.order.dal.dataobject.consTrackingRecord.ConsTrackingRecordDO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO;
...@@ -43,6 +44,13 @@ public interface ConsTrackingRecordService extends IService<ConsTrackingRecordDO ...@@ -43,6 +44,13 @@ public interface ConsTrackingRecordService extends IService<ConsTrackingRecordDO
*/ */
ConsTrackingRecordDO getConsTrackingRecord(Long id); ConsTrackingRecordDO getConsTrackingRecord(Long id);
/**
* 获得包裹动态跟踪
* @param consId 包裹编号
* @return 包裹动态跟踪
*/
List<ConsTrackingRecordBackVO> getConsTrackingRecordByConsId(Long consId);
/** /**
* 获得包裹动态跟踪列表 * 获得包裹动态跟踪列表
* @param ids 编号 * @param ids 编号
......
package cn.iocoder.yudao.module.order.service.consTrackingRecord; package cn.iocoder.yudao.module.order.service.consTrackingRecord;
import java.util.*; import cn.hutool.core.bean.BeanUtil;
import javax.annotation.Resource; import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.vo.PageVO;
import cn.iocoder.yudao.module.order.convert.consTrackingRecord.ConsTrackingRecordConvert; import cn.iocoder.yudao.module.order.convert.consTrackingRecord.ConsTrackingRecordConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consLanguageContent.ConsLanguageContentDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consLanguageTemplate.ConsLanguageTemplateDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consTrackingRecord.ConsTrackingRecordDO; import cn.iocoder.yudao.module.order.dal.dataobject.consTrackingRecord.ConsTrackingRecordDO;
import cn.iocoder.yudao.module.order.dal.mysql.consLanguageContent.ConsLanguageContentMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consTrackingRecord.ConsTrackingRecordMapper; import cn.iocoder.yudao.module.order.dal.mysql.consTrackingRecord.ConsTrackingRecordMapper;
import cn.iocoder.yudao.module.order.service.cons.ConsService;
import cn.iocoder.yudao.module.order.service.consLanguageTemplate.ConsLanguageTemplateService;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordQueryVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO; import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
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 java.util.Collection;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/** /**
...@@ -28,11 +46,40 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR ...@@ -28,11 +46,40 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR
@Resource @Resource
private ConsTrackingRecordMapper consTrackingRecordMapper; private ConsTrackingRecordMapper consTrackingRecordMapper;
@Resource
private ConsLanguageTemplateService consLanguageTemplateService;
@Resource
@Lazy
private ConsService consService;
@Resource
private ConsLanguageContentMapper consLanguageContentMapper;
@Override @Override
public Long createConsTrackingRecord(ConsTrackingRecordCreateReqVO createReqVO) { public Long createConsTrackingRecord(ConsTrackingRecordCreateReqVO createReqVO) {
// 插入 // 插入
ConsTrackingRecordDO consTrackingRecord = ConsTrackingRecordConvert.INSTANCE.convert(createReqVO); ConsTrackingRecordDO consTrackingRecord = ConsTrackingRecordConvert.INSTANCE.convert(createReqVO);
List<ConsLanguageTemplateDO> consLanguageTemplateDOS = consLanguageTemplateService.selectList(new LambdaQueryWrapperX<ConsLanguageTemplateDO>().eq(ConsLanguageTemplateDO::getBusinessNode, createReqVO.getBusinessNode()));
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig());
ConsDO cons = consService.getCons(createReqVO.getConsId());
//把cons转成map,key,value
Map<String, Object> consMap = BeanUtil.beanToMap(cons);
consTrackingRecordMapper.insert(consTrackingRecord); consTrackingRecordMapper.insert(consTrackingRecord);
consLanguageTemplateDOS.stream().forEach(consLanguageTemplateDO -> {
Template template = engine.getTemplate(consLanguageTemplateDO.getLanTemplate());
ConsLanguageContentDO consLanguageContentDO = new ConsLanguageContentDO();
String render = template.render(consMap);
consLanguageContentDO.setTableName(consLanguageTemplateDO.getTableName());
consLanguageContentDO.setColumnName(consLanguageTemplateDO.getColumnName());
consLanguageContentDO.setBizId(consTrackingRecord.getId());
consLanguageContentDO.setBusinessNode(consLanguageTemplateDO.getBusinessNode());
consLanguageContentDO.setLanguageTemplateId(consLanguageTemplateDO.getId());
consLanguageContentDO.setLanCode(consLanguageTemplateDO.getLanCode());
consLanguageContentDO.setLanContent(render);
consLanguageContentMapper.insert(consLanguageContentDO);
});
// 返回 // 返回
return consTrackingRecord.getId(); return consTrackingRecord.getId();
} }
...@@ -65,6 +112,12 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR ...@@ -65,6 +112,12 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR
return consTrackingRecordMapper.selectById(id); return consTrackingRecordMapper.selectById(id);
} }
@Override
public List<ConsTrackingRecordBackVO> getConsTrackingRecordByConsId(Long consId) {
Integer lang = I18nMessage.getLang();
return consTrackingRecordMapper.selectByConsId(consId,lang);
}
@Override @Override
public List<ConsTrackingRecordDO> getConsTrackingRecordList(Collection<Long> ids) { public List<ConsTrackingRecordDO> getConsTrackingRecordList(Collection<Long> ids) {
return consTrackingRecordMapper.selectBatchIds(ids); return consTrackingRecordMapper.selectBatchIds(ids);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.order.dal.mysql.consTrackingRecord.ConsTrackingRecordMapper">
<select id="selectByConsId"
resultType="cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordBackVO">
SELECT ectr.id,
ectr.cons_id,
ectr.business_node,
ectr.status,
ectr.is_show,
ectr.tracking_time,
ectr.deleted,
ectr.creator,
ectr.create_time,
ectr.updater,
ectr.update_time,
eclc.lan_content as business_Description
FROM jiedao.ecw_cons_tracking_record ectr
left join ecw_cons_language_content eclc
on ectr.business_node = eclc.business_node and eclc.biz_id = ectr.cons_id
WHERE ectr.cons_id = #{consId}
and eclc.lan_code = #{lang}
</select>
</mapper>
\ No newline at end of file
...@@ -67,6 +67,15 @@ public class ConsTrackingRecordController { ...@@ -67,6 +67,15 @@ public class ConsTrackingRecordController {
ConsTrackingRecordDO consTrackingRecord = consTrackingRecordService.getConsTrackingRecord(id); ConsTrackingRecordDO consTrackingRecord = consTrackingRecordService.getConsTrackingRecord(id);
return success(ConsTrackingRecordConvert.INSTANCE.convert(consTrackingRecord)); return success(ConsTrackingRecordConvert.INSTANCE.convert(consTrackingRecord));
} }
//获取包裹的动态跟踪
@GetMapping("/getByConsId")
@ApiOperation("获得包裹动态跟踪")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
@PreAuthorize("@ss.hasPermission('ecw:cons-tracking-record:query')")
public CommonResult<List<ConsTrackingRecordBackVO>> getConsTrackingRecordByConsId(@RequestParam("id") Long consId) {
List<ConsTrackingRecordBackVO> consTrackingRecordList = consTrackingRecordService.getConsTrackingRecordByConsId(consId);
return success(consTrackingRecordList);
}
@GetMapping("/list") @GetMapping("/list")
@ApiOperation("获得包裹动态跟踪列表") @ApiOperation("获得包裹动态跟踪列表")
......
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