Commit d00dd97b authored by knight's avatar knight

Merge branch 'jd_cons' of http://110.41.143.128:8081/lanbaoming/jiedao-api-boot-master into jd_cons

parents f38a0975 142015ec
......@@ -96,7 +96,8 @@ public enum WorkFlowEmus {
ORDER_OVERSEAS_WAREHOUSE_CHANGE("order_overseas_warehouse_change", "订单审批-海外仓修改申请"),
ORDER_CONSIGNEE_LIMIT_CHANGE("order_consignee_limit_change", "订单审批-收货人限制修改申请"),
ORDER_WAREHOUSING("order_warehousing", "订单审批-入仓申请"),
ECW_CONS_FEE_APPLY("ecw_cons_fee_apply","集运包裹-批量费用申请")
ECW_CONS_FEE_APPLY("ecw_cons_fee_apply","集运包裹-批量费用申请"),
ECW_CONS_RETIRED_WAREHOUSE("ecw_cons_retired_warehouse", "集运包裹-退仓审核"),
;
private String key;
private String value;
......
package cn.iocoder.yudao.module.bpm.service.cons.listener;
import cn.iocoder.yudao.module.bpm.enums.WorkFlowEmus;
import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent;
import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener;
import cn.iocoder.yudao.module.order.service.consApproval.ConsApprovalService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
@Slf4j
public class BpmConsRetiredWarehouseApplyResultListener extends BpmProcessInstanceResultEventListener {
@Resource
ConsApprovalService consApprovalService;
@Override
protected String getProcessDefinitionKey() {
return WorkFlowEmus.ECW_CONS_RETIRED_WAREHOUSE.getKey();
}
@Override
protected void onEvent(BpmProcessInstanceResultEvent event) {
log.info("------------------集运退仓审核回调--------------------------{},{}", event.getId(), event.getResult());
consApprovalService.updateRetiredWarehouseResult(event.getId(), event.getResult());
}
}
......@@ -110,6 +110,55 @@ public interface CustomerContactsMapper extends BaseMapperX<CustomerContactsDO>
@Param("customerId") Long customerId,
@Param("isConsService") Boolean isConsService);
@ResultType(CustomerContactsDto.class)
@Select({
"<script>",
"select",
"c.*, ",
"c.id as customer_id, ",
"c.name as customer_name, ",
"c.name_en as customer_name_en, ",
"c.number as customer_number, ",
"c.default_pay as default_pay, ",
"c.no_consignee as no_consignee, ",
"cc.* , ",
"cc.id as customer_contacts_id, ",
"cc.name as contacts_name, ",
"cc.name_en as contacts_name_en ",
"from ecw_customer_contacts cc ",
"left join ecw_customer c ",
"on cc.customer_id = c.id ",
"where ",
"cc.deleted = 0 and cc.customer_id is not null ",
"<when test = 'searchKey != null and searchKey != \"\" '>",
"and CONCAT(IFNULL(c.`number`,''),IFNULL(cc.`name`,''),IFNULL(cc.`name_en`,''),IFNULL(cc.`phone_new`,''),IFNULL(cc.`email`,''),IFNULL(c.`company`,''),IFNULL(c.`company_en`,'')) like concat('%', concat(#{searchKey}, '%'))",
"</when>",
"<when test = 'phone != null and phone != \"\" '>",
"and IFNULL(cc.`phone_new`,'') like concat('%', concat(#{phone}, '%'))",
"</when>",
"<when test = 'isConsService != null and isConsService != \"\" '>",
"and c.is_cons_service = #{isConsService}",
"</when>",
"<when test = 'type != null and type != \"\" '>",
"and FIND_IN_SET(#{type}, c.type) ",
"</when>",
"<when test = 'ids != null and ids.size()>0'>",
"AND cc.`id` in ",
"<foreach item='id' index='index' collection='ids' open='(' separator=',' close=')'>#{id}</foreach>",
"</when>",
"<when test = 'customerId != null'>",
"and c.id = #{customerId}",
"</when>",
"order by cc.update_time desc ",
"</script>"
})
IPage<CustomerContactsDto> selectBySearchKeyPda(IPage page,
@Param("searchKey") String searchKey,
@Param("phone") String phone,
@Param("type") String type,
@Param("ids") Collection<Long> ids,
@Param("customerId") Long customerId,
@Param("isConsService") Boolean isConsService);
@ResultType(CustomerContactsDto.class)
@Select({
......
......@@ -110,6 +110,18 @@ public interface CustomerContactsService extends IService<CustomerContactsDO> {
*/
PageResult<CustomerContactsDto> selectBySearchKey(String searchKey,String phone, String type, Collection<Long> ids, Long customerId,Boolean isConsService, PageParam page);
/**
* 模糊搜索指定数量的联系数据
*
* @param searchKey 关键字
* @param type
* @param ids 联系人ID
* @param customerId 客户ID
* @param isConsService 客户是否开通集运服务
* @return 联系人列表
*/
PageResult<CustomerContactsDto> selectBySearchKeyPda(String searchKey,String phone, String type, Collection<Long> ids, Long customerId,Boolean isConsService, PageParam page);
/*
添加的客户选择函数
......
......@@ -165,6 +165,16 @@ public class CustomerContactsServiceImpl extends AbstractService<CustomerContact
return PageResult.of(mpPage);
}
@Override
public PageResult<CustomerContactsDto> selectBySearchKeyPda(String searchKey, String phone, String type, Collection<Long> ids, Long customerId,Boolean isConsService,PageParam page) {
IPage<CustomerContactsDto> mpPage = MyBatisUtils.buildPage(page);
customerContactsMapper.selectBySearchKeyPda(mpPage, searchKey, phone,
type, ids, customerId,isConsService);
return PageResult.of(mpPage);
}
@Override
public PageResult<CustomerContactsDto> selectBySearchKey2(
String searchKey,
......
......@@ -220,4 +220,32 @@ public class CustomerContactsController {
type, ids, customerId, page, loginUserId));
}
@GetMapping("/selectPda")
@ApiOperation("获得客户联系人下拉框列表(单次最多显示20条,请输入联系人电话、联系人姓名、客户名称搜索)")
@ApiImplicitParams({
@ApiImplicitParam(name = "searchKey", value = "请输入联系人电话、联系人姓名、客户名称搜索", example = "姓名或电话", dataTypeClass = String.class),
@ApiImplicitParam(name = "phone", value = "请输入联系人电话搜索", example = "电话", dataTypeClass = String.class),
@ApiImplicitParam(name = "type", value = "客户类型", example = "1", dataTypeClass = String.class),
@ApiImplicitParam(name = "ids", value = "编号列表", example = "1024,2048", dataTypeClass = List.class),
@ApiImplicitParam(name = "customerId", value = "客户ID", example = "1024", dataTypeClass = Long.class),
@ApiImplicitParam(name = "isConsTransform", value = "是否转运", example = "false", dataTypeClass = Boolean.class)
})
public CommonResult<PageResult<CustomerContactsDto>> selectBySearchKeyPda(
@RequestParam(value = "searchKey", required = false) String searchKey,
@RequestParam(value = "phone", required = false) String phone,
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "ids", required = false) Collection<Long> ids,
@RequestParam(value = "customerId", required = false) Long customerId,
@RequestParam(value = "isConsTransform", required = false) Boolean isConsTransform
, PageParam page) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
Boolean isConsService = null;
//包裹转运时筛选所有转运服务客户
if (isConsTransform!=null&&isConsTransform){
isConsService = true;
}
return success(customerContactsService.selectBySearchKeyPda(searchKey, phone,
type, ids, customerId,isConsService,page));
}
}
package cn.iocoder.yudao.module.order.convert.consLocation;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* 集运仓位 Convert
* @author jayden
*/
@Mapper
public interface ConsLocationConvert {
/*****转换MapStruct*****/
ConsLocationConvert INSTANCE = Mappers.getMapper(ConsLocationConvert.class);
/***
* 创建VO转实体
* @param bean
* @return
*/
ConsLocationDO convert(ConsLocationCreateReqVO bean);
/***
* 修改VO转实体
* @param bean
* @return
*/
ConsLocationDO convert(ConsLocationUpdateReqVO bean);
/***
* 实体转返回VO
* @param bean
* @return
*/
ConsLocationBackVO convert(ConsLocationDO bean);
/***
* 实体列表转返回VO列表
* @param list
* @return
*/
List<ConsLocationBackVO> convertList(List<ConsLocationDO> list);
/***
* 实体分页转返回分页
* @param page
* @return
*/
PageResult<ConsLocationBackVO> convertPage(PageResult<ConsLocationDO> page);
}
package cn.iocoder.yudao.module.order.dal.dataobject.consLocation;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 集运仓位 DO
*
* @author jayden
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("ecw_cons_location")
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ConsLocationDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
* 集运id
*/
private Long consId;
/**
* 库域id
*/
private Long wareId;
/**
* 库区id
*/
private Long areaId;
/**
* 仓位id
*/
private Long locationId;
}
package cn.iocoder.yudao.module.order.dal.mysql.consLocation;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.vo.PageVO;
import cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationQueryVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* 集运仓位 Mapper
*
* @author jayden
*/
@Mapper
public interface ConsLocationMapper extends AbstractMapper<ConsLocationDO> {
@Override
default PageResult<ConsLocationDO> selectPage(PageVO page, Object object) {
if (object instanceof ConsLocationQueryVO) {
ConsLocationQueryVO vo = (ConsLocationQueryVO) object;
return selectPage(page, new LambdaQuery<ConsLocationDO>()
.eqIfPresent(ConsLocationDO::getConsId, vo.getConsId())
.eqIfPresent(ConsLocationDO::getWareId, vo.getWareId())
.eqIfPresent(ConsLocationDO::getAreaId, vo.getAreaId())
.eqIfPresent(ConsLocationDO::getLocationId, vo.getLocationId())
.betweenIfPresent(ConsLocationDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
.orderByDesc(ConsLocationDO::getId));
}
return null;
}
@Override
default List<ConsLocationDO> selectList(Object object) {
if (object instanceof ConsLocationQueryVO) {
ConsLocationQueryVO vo = (ConsLocationQueryVO) object;
return selectList(new LambdaQuery<ConsLocationDO>()
.eqIfPresent(ConsLocationDO::getConsId, vo.getConsId())
.eqIfPresent(ConsLocationDO::getWareId, vo.getWareId())
.eqIfPresent(ConsLocationDO::getAreaId, vo.getAreaId())
.eqIfPresent(ConsLocationDO::getLocationId, vo.getLocationId())
.betweenIfPresent(ConsLocationDO::getCreateTime, vo.getBeginCreateTime(), vo.getEndCreateTime())
.orderByDesc(ConsLocationDO::getId));
}
return null;
}
@Select("select ecl.*, ware.name as warehouse_name, area.name as area_name, posi.code as location_name from ecw_cons_location ecl " +
"left join ecw_warehouse_area ware on ecl.ware_id = ware.id " +
"left join ecw_warehouse_area area on ecl.area_id = area.id " +
"left join ecw_warehouse_area_position posi on ecl.location_id = posi.id " +
"where ecl.cons_id = #{consId} and ecl.deleted=0")
List<ConsLocationUpdateReqVO> getConsLocationListByConsId(@Param("consId") Long consId);
}
......@@ -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.vo.PageVO;
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 org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 包裹动态跟踪 Mapper
......@@ -50,4 +52,6 @@ public interface ConsTrackingRecordMapper extends AbstractMapper<ConsTrackingRec
return null;
}
List<ConsTrackingRecordBackVO> selectByConsId(@Param("consId")Long consId,@Param("lang") Integer lang);
}
......@@ -13,8 +13,10 @@ import cn.iocoder.yudao.module.order.dal.mysql.consFee.ConsFeeMapper;
import cn.iocoder.yudao.module.order.dal.mysql.orderFeeApplication.OrderFeeApplicationMapper;
import cn.iocoder.yudao.module.order.enums.ApprovalResultStatusEnum;
import cn.iocoder.yudao.module.order.service.cons.ConsService;
import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.service.order.OrderQueryService;
import cn.iocoder.yudao.module.order.service.order.OrderService;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import cn.iocoder.yudao.module.product.dto.FeeDto;
import cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO;
import cn.iocoder.yudao.module.wealth.service.receivable.ReceivableService;
......@@ -54,6 +56,9 @@ public class updateConsCostListener {
@Resource
private ReceivableService receivableService;
@Resource
private ConsTrackingRecordService consTrackingRecordService;
@EventListener(updateConsCostEvent.class)
public void updateConsCostEvent(updateConsCostEvent event) {
......@@ -66,7 +71,15 @@ public class updateConsCostListener {
//设置包裹为已转单
consDO.setStatus(2);
consDO.setOrderId(orderId);
consService.updateBatch(consDO);
//设置包裹流程为已转运
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(consDO.getId());
consTrackingRecordCreateReqVO.setBusinessNode(5);
consTrackingRecordCreateReqVO.setStatus(2);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
});
//费用合并并申请
List<ConsFeeDO> cllConsFeeList = consentFeeMapper.selectList(new LambdaQueryWrapperX<ConsFeeDO>()
......
......@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO;
import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsRetiredWarehouseCreateReqVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
/**
......@@ -90,4 +91,8 @@ public interface ConsService extends IService<ConsDO> {
* 签收PDA
*/
void signedPda(ConsUpdateReqVO updateReqVO);
/**
* 退仓申请
*/
void createConsRetiredWarehouseApplication(ConsRetiredWarehouseCreateReqVO query);
}
......@@ -66,4 +66,7 @@ public interface ConsApprovalService extends IService<ConsApprovalDO> {
List<ConsApprovalDO> getConsApprovalList(ConsApprovalQueryVO query);
void updateFeeApproveBatchResult(String businessKey, Integer result);
void updateRetiredWarehouseResult(String businessKey, Integer result);
void cancelApplyAndUpdate(Long id);
}
package cn.iocoder.yudao.module.order.service.consApproval;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.bpm.api.BpmCreateServiceFactory;
import cn.iocoder.yudao.module.order.convert.consApproval.ConsApprovalConvert;
import cn.iocoder.yudao.module.order.convert.consFee.ConsFeeConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.consApproval.ConsApprovalDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO;
import cn.iocoder.yudao.module.order.dal.dataobject.orderFeeApplication.OrderFeeApplicationDO;
import cn.iocoder.yudao.module.order.dal.mysql.cons.ConsMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consApproval.ConsApprovalMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consFee.ConsFeeMapper;
import cn.iocoder.yudao.module.order.enums.ApprovalResultStatusEnum;
import cn.iocoder.yudao.module.order.enums.OrderApprovalTypeResultEnum;
import cn.iocoder.yudao.module.order.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsApprovalCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsApprovalQueryVO;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsApprovalUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.consFee.ConsFeeUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.orderFeeApplication.OrderFeeBatchApplicationUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordCreateReqVO;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.ORDER_APPROVAL_INFO_NOT_FIND;
......@@ -49,6 +48,12 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper,
@Resource
private ConsFeeMapper consFeeMapper;
@Resource
private BpmCreateServiceFactory bpmCreateServiceFactory;
@Resource
private ConsTrackingRecordService consTrackingRecordService;
@Override
public Long createConsApproval(ConsApprovalCreateReqVO createReqVO) {
// 插入
......@@ -141,4 +146,49 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper,
consFeeMapper.insertBatch(addList);
}
}
@Override
public void updateRetiredWarehouseResult(String businessKey, Integer result) {
ConsApprovalDO consApprovalDO = consApprovalMapper.selectOne("form_id", businessKey);
if (Objects.isNull(consApprovalDO)) {
throw exception(ORDER_APPROVAL_INFO_NOT_FIND);
}
//审核通过
if (result == ApprovalResultStatusEnum.pass.getValue()) {
//设置包裹流程为退仓审核通过
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(consApprovalDO.getConsId());
consTrackingRecordCreateReqVO.setBusinessNode(16);
consTrackingRecordCreateReqVO.setStatus(1);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
}
//审核拒绝
if (result == ApprovalResultStatusEnum.reject.getValue()){
//设置包裹流程为退仓审核通过
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(consApprovalDO.getConsId());
consTrackingRecordCreateReqVO.setBusinessNode(17);
consTrackingRecordCreateReqVO.setStatus(1);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
}
consApprovalDO.setStatus(result);
consApprovalDO.setApprovalTime(new Date());
consApprovalDO.setApprover(SecurityFrameworkUtils.getLoginUserId());
consApprovalMapper.updateById(consApprovalDO);
}
public void cancelApplyAndUpdate(Long id) {
ConsApprovalDO consApprovalDO = consApprovalMapper.selectById(id);
if (consApprovalDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.ORDER_WAREHOUSE_APPROVAL_NOT_EXISTS);
}
bpmCreateServiceFactory.cancelBmpById(SecurityFrameworkUtils.getLoginUserId(), consApprovalDO.getFormId(), "退仓取消");
//更新状态
consApprovalDO.setStatus(ApprovalResultStatusEnum.cancel.getValue());
consApprovalMapper.updateById(consApprovalDO);
}
}
package cn.iocoder.yudao.module.order.service.consLocation;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationQueryVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
/**
* 集运仓位 Service 接口
*
* @author jayden
*/
public interface ConsLocationService extends IService<ConsLocationDO> {
/**
* 创建集运仓位
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createConsLocation(@Valid ConsLocationCreateReqVO createReqVO);
/**
* 更新集运仓位
*
* @param updateReqVO 更新信息
*/
void updateConsLocation(@Valid ConsLocationUpdateReqVO updateReqVO);
/**
* 删除集运仓位
*
* @param id 编号
*/
void deleteConsLocation(Long id);
/**
* 获得集运仓位
*
* @param id 编号
* @return 集运仓位
*/
ConsLocationDO getConsLocation(Long id);
/**
* 获得集运仓位列表
*
* @param ids 编号
* @return 集运仓位列表
*/
List<ConsLocationDO> getConsLocationList(Collection<Long> ids);
/**
* 获得集运仓位分页
*
* @param page 分页查询
* @param query 查询
* @return 集运仓位分页
*/
PageResult<ConsLocationDO> getConsLocationPage(ConsLocationQueryVO query, PageVO page);
/**
* 获得集运仓位列表, 用于 Excel 导出
*
* @param query 查询
* @return 集运仓位列表
*/
List<ConsLocationDO> getConsLocationList(ConsLocationQueryVO query);
/**
* 根据集运id获取储位
*/
List<ConsLocationUpdateReqVO> getConsLocationListByConsId(Long consId);
}
package cn.iocoder.yudao.module.order.service.consLocation;
import java.util.*;
import javax.annotation.Resource;
import cn.iocoder.yudao.module.order.convert.consLocation.ConsLocationConvert;
import cn.iocoder.yudao.module.order.dal.dataobject.consLocation.ConsLocationDO;
import cn.iocoder.yudao.module.order.dal.mysql.consLocation.ConsLocationMapper;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationQueryVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import org.springframework.stereotype.Service;
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 cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 集运仓位 Service 实现类
*
* @author jayden
*/
@Service
@Validated
public class ConsLocationServiceImpl extends AbstractService<ConsLocationMapper, ConsLocationDO> implements ConsLocationService {
@Resource
private ConsLocationMapper consLocationMapper;
@Override
public Long createConsLocation(ConsLocationCreateReqVO createReqVO) {
// 插入
ConsLocationDO consLocation = ConsLocationConvert.INSTANCE.convert(createReqVO);
consLocationMapper.insert(consLocation);
// 返回
return consLocation.getId();
}
@Override
public void updateConsLocation(ConsLocationUpdateReqVO updateReqVO) {
// 更新
ConsLocationDO updateObj = ConsLocationConvert.INSTANCE.convert(updateReqVO);
consLocationMapper.updateById(updateObj);
}
@Override
public void deleteConsLocation(Long id) {
// 删除
consLocationMapper.deleteById(id);
}
@Override
public ConsLocationDO getConsLocation(Long id) {
return consLocationMapper.selectById(id);
}
@Override
public List<ConsLocationDO> getConsLocationList(Collection<Long> ids) {
return consLocationMapper.selectBatchIds(ids);
}
@Override
public PageResult<ConsLocationDO> getConsLocationPage(ConsLocationQueryVO query, PageVO page) {
return consLocationMapper.selectPage(page, query);
}
@Override
public List<ConsLocationDO> getConsLocationList(ConsLocationQueryVO query) {
return consLocationMapper.selectList(query);
}
@Override
public List<ConsLocationUpdateReqVO> getConsLocationListByConsId(Long consId) {
return consLocationMapper.getConsLocationListByConsId(consId);
}
}
......@@ -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.common.pojo.PageResult;
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.ConsTrackingRecordQueryVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO;
......@@ -43,6 +44,13 @@ public interface ConsTrackingRecordService extends IService<ConsTrackingRecordDO
*/
ConsTrackingRecordDO getConsTrackingRecord(Long id);
/**
* 获得包裹动态跟踪
* @param consId 包裹编号
* @return 包裹动态跟踪
*/
List<ConsTrackingRecordBackVO> getConsTrackingRecordByConsId(Long consId);
/**
* 获得包裹动态跟踪列表
* @param ids 编号
......
package cn.iocoder.yudao.module.order.service.consTrackingRecord;
import java.util.*;
import javax.annotation.Resource;
import cn.hutool.core.bean.BeanUtil;
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.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.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.mysql.consLanguageContent.ConsLanguageContentMapper;
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.ConsTrackingRecordQueryVO;
import cn.iocoder.yudao.module.order.vo.consTrackingRecord.ConsTrackingRecordUpdateReqVO;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
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;
/**
......@@ -28,11 +46,40 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR
@Resource
private ConsTrackingRecordMapper consTrackingRecordMapper;
@Resource
private ConsLanguageTemplateService consLanguageTemplateService;
@Resource
@Lazy
private ConsService consService;
@Resource
private ConsLanguageContentMapper consLanguageContentMapper;
@Override
public Long createConsTrackingRecord(ConsTrackingRecordCreateReqVO 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);
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();
}
......@@ -65,6 +112,12 @@ public class ConsTrackingRecordServiceImpl extends AbstractService<ConsTrackingR
return consTrackingRecordMapper.selectById(id);
}
@Override
public List<ConsTrackingRecordBackVO> getConsTrackingRecordByConsId(Long consId) {
Integer lang = I18nMessage.getLang();
return consTrackingRecordMapper.selectByConsId(consId,lang);
}
@Override
public List<ConsTrackingRecordDO> getConsTrackingRecordList(Collection<Long> ids) {
return consTrackingRecordMapper.selectBatchIds(ids);
......
......@@ -2,17 +2,23 @@ package cn.iocoder.yudao.module.order.vo.cons;
import cn.iocoder.yudao.module.depository.dto.LogisticsInfoDto;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 集运包裹主 Response VO
* @author 系统管理员
*/
* 集运包裹主 Response VO
*
* @author 系统管理员
*/
@Data
@ApiModel("管理后台 - 集运包裹主 Response VO")
public class ConsBackVO {
......@@ -47,7 +53,7 @@ public class ConsBackVO {
@ExcelProperty("订单编号")
@ApiModelProperty(value = "订单编号")
private Long orderNo;
private String orderNo;
@ExcelProperty("订单状态")
......@@ -233,4 +239,6 @@ public class ConsBackVO {
@ApiModelProperty(value = "签收图片")
private String mediaUrl;
@ApiModelProperty("集运仓位")
private List<ConsLocationUpdateReqVO> consLocationBackList;
}
package cn.iocoder.yudao.module.order.vo.cons;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
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;
......@@ -115,5 +118,6 @@ public class ConsBaseVO {
@ApiModelProperty(value = "是否已拣出,0否,1是")
private Integer isPickout;
@ApiModelProperty("集运仓位")
private List<ConsLocationUpdateReqVO> consLocationBackList;
}
package cn.iocoder.yudao.module.order.vo.consApproval;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("管理后台 - 包裹退仓创建 Request VO")
public class ConsRetiredWarehouseCreateReqVO extends ConsApprovalBaseVO{
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty(value = "退仓收件人")
private String name;
@ApiModelProperty(value = "退仓收件电话")
private String phone;
@ApiModelProperty(value = "退仓收件地址")
private String address;
@ApiModelProperty(value = "图片")
private String imgUrl;
@ApiModelProperty(value = "包裹编号")
private String consNum;
@ApiModelProperty(value = "签收人id")
private String[] copyUserId;
}
package cn.iocoder.yudao.module.order.vo.consLocation;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 集运仓位 Response VO
* @author jayden
*/
@Data
@ApiModel("管理后台 - 集运仓位 Response VO")
public class ConsLocationBackVO {
@ExcelProperty("id")
@ApiModelProperty(value = "id", required = true)
private Long id;
@ExcelProperty("集运id")
@ApiModelProperty(value = "集运id", required = true)
private Long consId;
@ExcelProperty("库域id")
@ApiModelProperty(value = "库域id", required = true)
private Long wareId;
private String warehouseName;
@ExcelProperty("库区id")
@ApiModelProperty(value = "库区id")
private Long areaId;
private String areaName;
@ExcelProperty("仓位id")
@ApiModelProperty(value = "仓位id")
private Long locationId;
private String locationName;
@ExcelProperty("创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
}
package cn.iocoder.yudao.module.order.vo.consLocation;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
/**
* 集运仓位 Base VO,提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class ConsLocationBaseVO {
@ApiModelProperty(value = "集运id", required = true)
@NotNull(message = "集运id不能为空")
private Long consId;
@ApiModelProperty(value = "库域id", required = true)
@NotNull(message = "库域id不能为空")
private Long wareId;
@ApiModelProperty(value = "库区id")
private Long areaId;
@ApiModelProperty(value = "仓位id")
private Long locationId;
private String locationName;
private String areaName;
private String warehouseName;
}
package cn.iocoder.yudao.module.order.vo.consLocation;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("管理后台 - 集运仓位创建 Request VO")
public class ConsLocationCreateReqVO extends ConsLocationBaseVO {
}
package cn.iocoder.yudao.module.order.vo.consLocation;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@ApiModel("管理后台 - 集运仓位查询 VO")
public class ConsLocationQueryVO {
@ApiModelProperty(value = "集运id")
private Long consId;
@ApiModelProperty(value = "库域id")
private Long wareId;
@ApiModelProperty(value = "库区id")
private Long areaId;
@ApiModelProperty(value = "仓位id")
private Long locationId;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "开始创建时间")
private Date beginCreateTime;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "结束创建时间")
private Date endCreateTime;
}
package cn.iocoder.yudao.module.order.vo.consLocation;
import lombok.*;
import java.util.*;
import io.swagger.annotations.*;
import javax.validation.constraints.*;
@ApiModel("管理后台 - 集运仓位更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ConsLocationUpdateReqVO extends ConsLocationBaseVO {
@ApiModelProperty(value = "id", required = true)
@NotNull(message = "id不能为空")
private Long id;
}
......@@ -12,7 +12,7 @@
left join ecw_order o on cons.order_id = o.order_id
WHERE cons.deleted = 0
<include refid="myConsQuery"/>
order by cons.update_time desc
order by cons.create_time desc
</select>
<select id="myConsPageList" resultType="cn.iocoder.yudao.module.order.vo.cons.ConsBackVO" parameterType="cn.iocoder.yudao.module.order.vo.cons.ConsQueryVO">
......@@ -31,7 +31,6 @@
o.channel_id
FROM ecw_cons cons
left join ecw_customer ec on cons.customer_id = ec.id
left join ecw_customer_contacts eccs on ec.id = eccs.customer_id
left join ecw_warehouse_line el on cons.warehouse_line_id = el.id
left join ecw_warehouse ew_start ON ew_start.id = el.start_warehouse_id
left join ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
......@@ -39,7 +38,7 @@
left join ecw_order o on cons.order_id = o.order_id
WHERE cons.deleted = 0
<include refid="myConsQuery"/>
order by cons.update_time desc
order by cons.create_time desc
limit #{start}, #{size}
</select>
<sql id="myConsQuery">
......@@ -62,8 +61,13 @@
AND (cons.`express_no` is not null and cons.`express_no` != '' and cons.`express_no` != #{query.eqNumberKey})
</if>
<if test="query.customerKey != null and query.customerKey != '' ">
AND EXISTS (
SELECT 1
FROM ecw_customer_contacts eccs
WHERE eccs.customer_id = ec.id
AND concat(IFNULL(cons.`customer_number`,''), IFNULL(eccs.`phone_new`,'')) like
concat("%",concat(#{query.customerKey},"%"))
)
</if>
<if test="query.customerName != null and query.customerName != '' ">
AND ec.name like concat("%",concat(#{query.customerName},"%"))
......
<?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
package cn.iocoder.yudao.module.order.controller.admin.cons;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.code.CodeUtils;
import cn.iocoder.yudao.framework.excel.util.ExcelUtils;
import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
......@@ -18,15 +20,21 @@ 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.consItem.ConsItemService;
import cn.iocoder.yudao.module.order.service.consLocation.ConsLocationService;
import cn.iocoder.yudao.module.order.service.consMedia.ConsMediaService;
import cn.iocoder.yudao.module.order.service.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.vo.cons.*;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsApprovalQueryVO;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsRetiredWarehouseCreateReqVO;
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.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -35,6 +43,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
......@@ -72,6 +81,9 @@ public class ConsController {
@Resource
private ConsItemService consItemService;
@Resource
private ConsLocationService consLocationService;
@PostMapping("/create")
@ApiOperation("创建集运包裹主")
@PreAuthorize("@ss.hasPermission('ecw:cons:create')")
......@@ -200,30 +212,40 @@ public class ConsController {
@GetMapping("/getPad")
@ApiOperation("获得集运包裹主")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
public CommonResult<ConsBackVO> getPad(@RequestParam("id") Long id) {
ConsDO cons = consService.getCons(id);
public CommonResult<ConsBackVO> getPad(Long id, String expressNo) {
if (id == null && StringUtils.isBlank(expressNo)) {
throw new ServiceException(500, "参数错误");
}
ConsDO cons = consService.selectOne(new LambdaQueryWrapperX<ConsDO>()
.eq(id != null, ConsDO::getId, id)
.eq(StringUtils.isNotBlank(expressNo), ConsDO::getExpressNo, expressNo));
if (cons == null) {
return success(null);
}
CustomerDO customer = customerService.selectOne("id", cons.getCustomerId());
CustomerContactsDO customerContacts = customerContactsService.getDefaultContacts(cons.getCustomerId());
List<ConsItemBackVO> consItemBackVOS = consItemService.getConsItemBackVOList(new ConsItemQueryVO().setConsId(id));
List<ConsItemBackVO> consItemBacks = consItemService.getConsItemBackVOList(new ConsItemQueryVO().setConsId(cons.getId()));
ConsBackVO consBackVO = ConsConvert.INSTANCE.convert(cons);
consBackVO.setConsItemVOList(consItemBackVOS);
consBackVO.setAreaCode(customerContacts.getAreaCode());
consBackVO.setPhoneNew(customerContacts.getPhoneNew());
consBackVO.setCustomerName(customer.getName());
//获取签收图片
if (cons.getSigned()) {
ConsMediaDO consMedia = consentMediaService.getOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getConsId, cons.getId())
.eq(ConsMediaDO::getBizId, cons.getId())
.eq(ConsMediaDO::getMediaBusinessType, 3));
consBackVO.setMediaUrl(consMedia == null ? "" : consMedia.getMediaUrl());
consBackVO.setConsItemVOList(consItemBacks);
if (customerContacts != null) {
consBackVO.setAreaCode(customerContacts.getAreaCode());
consBackVO.setPhoneNew(customerContacts.getPhoneNew());
}
if (customer != null) {
consBackVO.setCustomerName(customer.getName());
}
List<ConsLocationUpdateReqVO> consLocationBackList = consLocationService.getConsLocationListByConsId(cons.getId());
consBackVO.setConsLocationBackList(consLocationBackList == null ? new ArrayList<>() : consLocationBackList);
//获取签收图片
ConsMediaDO consMedia = consentMediaService.getOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getConsId, cons.getId())
.eq(ConsMediaDO::getBizId, cons.getId())
.eq(ConsMediaDO::getMediaBusinessType, 3));
consBackVO.setMediaUrl(consMedia == null ? "" : consMedia.getMediaUrl());
// 物流信息查询
LogisticsInfoDto initialLogisticsInfoDto =
warehouseLineMapper.getStartInfoAndDestInfoByLineId(cons.getWarehouseLineId());
if (Objects.isNull(initialLogisticsInfoDto)) {
throw exception(NOT_FIND_LOGISTICS_INFO);
}
//初始物流信息
consBackVO.setInitialLogisticsInfoDto(initialLogisticsInfoDto);
return success(consBackVO);
......@@ -236,4 +258,11 @@ public class ConsController {
return success(true);
}
@PostMapping("/createConsRetiredWarehouseApplication")
@ApiOperation("创建集运包裹主")
@PreAuthorize("@ss.hasPermission('ecw:cons:create')")
public CommonResult<Boolean> createConsRetiredWarehouseApplication(@RequestBody ConsRetiredWarehouseCreateReqVO query) {
consService.createConsRetiredWarehouseApplication(query);
return success(true);
}
}
......@@ -66,6 +66,14 @@ public class ConsApprovalController {
return success(ConsApprovalConvert.INSTANCE.convert(consApproval));
}
@GetMapping("/cancelApplyAndUpdate")
@ApiOperation("获得集运包裹审批内容")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
public CommonResult<Boolean> cancelApplyAndUpdate(@RequestParam("id") Long id) {
consApprovalService.cancelApplyAndUpdate(id);
return success(true);
}
@GetMapping("/getConsApprovalList")
@ApiOperation("获得集运包裹审批内容列表")
public CommonResult<List<ConsApprovalBackVO>> getConsApprovalList(ConsApprovalQueryVO query) {
......
......@@ -67,6 +67,15 @@ public class ConsTrackingRecordController {
ConsTrackingRecordDO consTrackingRecord = consTrackingRecordService.getConsTrackingRecord(id);
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")
@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