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 { ...@@ -96,7 +96,8 @@ public enum WorkFlowEmus {
ORDER_OVERSEAS_WAREHOUSE_CHANGE("order_overseas_warehouse_change", "订单审批-海外仓修改申请"), ORDER_OVERSEAS_WAREHOUSE_CHANGE("order_overseas_warehouse_change", "订单审批-海外仓修改申请"),
ORDER_CONSIGNEE_LIMIT_CHANGE("order_consignee_limit_change", "订单审批-收货人限制修改申请"), ORDER_CONSIGNEE_LIMIT_CHANGE("order_consignee_limit_change", "订单审批-收货人限制修改申请"),
ORDER_WAREHOUSING("order_warehousing", "订单审批-入仓申请"), 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 key;
private String value; 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> ...@@ -110,6 +110,55 @@ public interface CustomerContactsMapper extends BaseMapperX<CustomerContactsDO>
@Param("customerId") Long customerId, @Param("customerId") Long customerId,
@Param("isConsService") Boolean isConsService); @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) @ResultType(CustomerContactsDto.class)
@Select({ @Select({
......
...@@ -110,6 +110,18 @@ public interface CustomerContactsService extends IService<CustomerContactsDO> { ...@@ -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); 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 ...@@ -165,6 +165,16 @@ public class CustomerContactsServiceImpl extends AbstractService<CustomerContact
return PageResult.of(mpPage); 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 @Override
public PageResult<CustomerContactsDto> selectBySearchKey2( public PageResult<CustomerContactsDto> selectBySearchKey2(
String searchKey, String searchKey,
......
...@@ -220,4 +220,32 @@ public class CustomerContactsController { ...@@ -220,4 +220,32 @@ public class CustomerContactsController {
type, ids, customerId, page, loginUserId)); 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; ...@@ -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);
} }
...@@ -13,8 +13,10 @@ import cn.iocoder.yudao.module.order.dal.mysql.consFee.ConsFeeMapper; ...@@ -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.dal.mysql.orderFeeApplication.OrderFeeApplicationMapper;
import cn.iocoder.yudao.module.order.enums.ApprovalResultStatusEnum; import cn.iocoder.yudao.module.order.enums.ApprovalResultStatusEnum;
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.consTrackingRecord.ConsTrackingRecordService;
import cn.iocoder.yudao.module.order.service.order.OrderQueryService; import cn.iocoder.yudao.module.order.service.order.OrderQueryService;
import cn.iocoder.yudao.module.order.service.order.OrderService; 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.product.dto.FeeDto;
import cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO; import cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO;
import cn.iocoder.yudao.module.wealth.service.receivable.ReceivableService; import cn.iocoder.yudao.module.wealth.service.receivable.ReceivableService;
...@@ -54,6 +56,9 @@ public class updateConsCostListener { ...@@ -54,6 +56,9 @@ public class updateConsCostListener {
@Resource @Resource
private ReceivableService receivableService; private ReceivableService receivableService;
@Resource
private ConsTrackingRecordService consTrackingRecordService;
@EventListener(updateConsCostEvent.class) @EventListener(updateConsCostEvent.class)
public void updateConsCostEvent(updateConsCostEvent event) { public void updateConsCostEvent(updateConsCostEvent event) {
...@@ -66,7 +71,15 @@ public class updateConsCostListener { ...@@ -66,7 +71,15 @@ public class updateConsCostListener {
//设置包裹为已转单 //设置包裹为已转单
consDO.setStatus(2); consDO.setStatus(2);
consDO.setOrderId(orderId); 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>() List<ConsFeeDO> cllConsFeeList = consentFeeMapper.selectList(new LambdaQueryWrapperX<ConsFeeDO>()
......
...@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.mybatis.core.service.IService; ...@@ -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.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.*; 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; import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
/** /**
...@@ -90,4 +91,8 @@ public interface ConsService extends IService<ConsDO> { ...@@ -90,4 +91,8 @@ public interface ConsService extends IService<ConsDO> {
* 签收PDA * 签收PDA
*/ */
void signedPda(ConsUpdateReqVO updateReqVO); void signedPda(ConsUpdateReqVO updateReqVO);
/**
* 退仓申请
*/
void createConsRetiredWarehouseApplication(ConsRetiredWarehouseCreateReqVO query);
} }
...@@ -7,22 +7,33 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; ...@@ -7,22 +7,33 @@ 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.bpm.api.BpmCreateServiceFactory;
import cn.iocoder.yudao.module.bpm.enums.WorkFlowEmus;
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;
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.convert.consLocation.ConsLocationConvert;
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.consApproval.ConsApprovalDO;
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.consLocation.ConsLocationDO;
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.consApproval.ConsApprovalMapper;
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.consLocation.ConsLocationService;
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.*; import cn.iocoder.yudao.module.order.vo.cons.*;
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.ConsItemBackVO;
import cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO; import cn.iocoder.yudao.module.order.vo.consItem.ConsItemCreateReqVO;
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.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
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.order.vo.order.OrderBackVO; import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
...@@ -31,6 +42,7 @@ import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO; ...@@ -31,6 +42,7 @@ import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO;
import cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO; import cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO;
import cn.iocoder.yudao.module.product.dal.dataobject.product.ProductDO; import cn.iocoder.yudao.module.product.dal.dataobject.product.ProductDO;
import cn.iocoder.yudao.module.product.dal.mysql.product.ProductMapper; import cn.iocoder.yudao.module.product.dal.mysql.product.ProductMapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RAtomicLong; import org.redisson.api.RAtomicLong;
...@@ -83,6 +95,15 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -83,6 +95,15 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
@Resource @Resource
private WarehouseLineMapper warehouseLineMapper; private WarehouseLineMapper warehouseLineMapper;
@Resource
private ConsApprovalMapper consApprovalMapper;
@Resource
private BpmCreateServiceFactory bpmCreateServiceFactory;
@Resource
private ConsLocationService consLocationService;
@Override @Override
@Transactional @Transactional
public Long createCons(ConsCreateReqVO createReqVO) { public Long createCons(ConsCreateReqVO createReqVO) {
...@@ -92,9 +113,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -92,9 +113,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, "请选择运输方式或目的城市");
} }
...@@ -117,7 +135,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -117,7 +135,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
cons.setConsNum(consNum); cons.setConsNum(consNum);
cons.setStatus(0); cons.setStatus(0);
consMapper.insert(cons); consMapper.insert(cons);
if(createReqVO.getConsItemVOList() != null && !createReqVO.getConsItemVOList().isEmpty()){ if (createReqVO.getConsItemVOList() != null && !createReqVO.getConsItemVOList().isEmpty()) {
createReqVO.getConsItemVOList().forEach(consItemVO -> { createReqVO.getConsItemVOList().forEach(consItemVO -> {
consItemVO.setConsId(cons.getId()); consItemVO.setConsId(cons.getId());
consItemService.createConsItem(consItemVO); consItemService.createConsItem(consItemVO);
...@@ -130,17 +148,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -130,17 +148,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 +178,29 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -171,20 +178,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 +248,13 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -232,6 +248,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());
...@@ -321,7 +344,29 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -321,7 +344,29 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
throw new ServiceException(500, "快递单号已存在,请检查"); throw new ServiceException(500, "快递单号已存在,请检查");
} }
ConsDO cons = ConsConvert.INSTANCE.convert(createReqVO); ConsDO cons = ConsConvert.INSTANCE.convert(createReqVO);
String warehouseCode = "";
if (createReqVO.getWareId().equals(1L)) {
warehouseCode = "F";
} else if (createReqVO.getWareId().equals(3L)) {
warehouseCode = "Y";
} else {
warehouseCode = "F";
}
String consNum = generateConsNumber(warehouseCode);
cons.setConsNum(consNum);
consMapper.insert(cons); consMapper.insert(cons);
//新增图片地址
if (createReqVO.getMediaUrl() != null) {
ConsMediaCreateReqVO consMediaCreateReqVO = new ConsMediaCreateReqVO();
consMediaCreateReqVO.setConsId(cons.getId());
consMediaCreateReqVO.setMediaUrl(createReqVO.getMediaUrl());
consMediaCreateReqVO.setMediaBusinessType(3);
consMediaCreateReqVO.setBizId(cons.getId());
consMediaCreateReqVO.setTableName("ecw_cons");
consMediaCreateReqVO.setColumnName("files");
consMediaCreateReqVO.setOriginalFileName("签收图片");
consMediaService.createConsMedia(consMediaCreateReqVO);
}
List<ConsItemCreateReqVO> consItemVOList = createReqVO.getConsItemVOList(); List<ConsItemCreateReqVO> consItemVOList = createReqVO.getConsItemVOList();
if (consItemVOList != null && !consItemVOList.isEmpty()) { if (consItemVOList != null && !consItemVOList.isEmpty()) {
for (ConsItemCreateReqVO consItemCreateReqVO : consItemVOList) { for (ConsItemCreateReqVO consItemCreateReqVO : consItemVOList) {
...@@ -329,6 +374,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -329,6 +374,12 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
consItemService.createConsItem(consItemCreateReqVO); consItemService.createConsItem(consItemCreateReqVO);
} }
} }
List<ConsLocationUpdateReqVO> consLocationBackList = createReqVO.getConsLocationBackList();
if (consLocationBackList != null && !consLocationBackList.isEmpty()) {
for (ConsLocationUpdateReqVO consLocationBackVO : consLocationBackList) {
consLocationService.save(ConsLocationConvert.INSTANCE.convert(consLocationBackVO));
}
}
} }
/** /**
...@@ -340,10 +391,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -340,10 +391,6 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
if (StringUtils.isBlank(updateReqVO.getExpressNo())) { if (StringUtils.isBlank(updateReqVO.getExpressNo())) {
throw new ServiceException(30004, "包裹快递号不能为空"); throw new ServiceException(30004, "包裹快递号不能为空");
} }
if (updateReqVO.getExpressId() == null) {
throw new ServiceException(30004, "请选择快递公司");
}
Long count = consMapper.selectCount(new LambdaQueryWrapperX<ConsDO>().eq(ConsDO::getExpressNo, updateReqVO.getExpressNo()) Long count = consMapper.selectCount(new LambdaQueryWrapperX<ConsDO>().eq(ConsDO::getExpressNo, updateReqVO.getExpressNo())
.ne(ConsDO::getId, updateReqVO.getId())); .ne(ConsDO::getId, updateReqVO.getId()));
if (count > 0) { if (count > 0) {
...@@ -351,7 +398,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -351,7 +398,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
} }
//更新图片地址,仅签收情况 //更新图片地址,仅签收情况
if (updateReqVO.getMediaUrl() != null && updateReqVO.getSigner() != null) { if (updateReqVO.getMediaUrl() != null) {
ConsMediaDO consMedia = consMediaService.selectOne(new LambdaQueryWrapperX<ConsMediaDO>() ConsMediaDO consMedia = consMediaService.selectOne(new LambdaQueryWrapperX<ConsMediaDO>()
.eq(ConsMediaDO::getBizId, updateReqVO.getId()) .eq(ConsMediaDO::getBizId, updateReqVO.getId())
.eq(ConsMediaDO::getConsId, updateReqVO.getId()) .eq(ConsMediaDO::getConsId, updateReqVO.getId())
...@@ -375,6 +422,61 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -375,6 +422,61 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
// 更新 // 更新
ConsDO updateObj = ConsConvert.INSTANCE.convert(updateReqVO); ConsDO updateObj = ConsConvert.INSTANCE.convert(updateReqVO);
consMapper.updateById(updateObj); consMapper.updateById(updateObj);
List<ConsLocationDO> consLocationDOS = consLocationService.selectList(new LambdaQueryWrapperX<ConsLocationDO>()
.eq(ConsLocationDO::getConsId, updateReqVO.getId()));
Map<String, Long> oldMap = new HashMap<>();
for (ConsLocationDO consLocationDO : consLocationDOS) {
oldMap.put(String.valueOf(consLocationDO.getWareId()) + consLocationDO.getAreaId() + consLocationDO.getLocationId(), consLocationDO.getId());
}
List<ConsLocationUpdateReqVO> consLocationBackList = updateReqVO.getConsLocationBackList();
List<ConsLocationDO> addList = new ArrayList<>();
for (ConsLocationUpdateReqVO consLocationUpdateReqVO : consLocationBackList) {
String key = String.valueOf(consLocationUpdateReqVO.getWareId()) + consLocationUpdateReqVO.getAreaId() + consLocationUpdateReqVO.getLocationId();
if (oldMap.containsKey(key)) {
oldMap.remove(key);
} else {
ConsLocationDO consLocationDO = new ConsLocationDO()
.setConsId(updateObj.getId())
.setWareId(consLocationUpdateReqVO.getWareId())
.setAreaId(consLocationUpdateReqVO.getAreaId())
.setLocationId(consLocationUpdateReqVO.getLocationId());
addList.add(consLocationDO);
}
}
if (addList.size() > 0) {
consLocationService.insertBatch(addList);
}
if (!oldMap.isEmpty()) {
oldMap.forEach((k, v) -> consLocationService.deleteConsLocation(v));
}
}
@Override
public void createConsRetiredWarehouseApplication(ConsRetiredWarehouseCreateReqVO query) {
ConsApprovalDO consApprovalDO = new ConsApprovalDO();
consApprovalDO.setConsId(query.getConsId());
consApprovalDO.setApprovalType(0);
consApprovalDO.setStatus(1);
consApprovalMapper.insert(consApprovalDO);
//发起流程
String formId = bpmCreateServiceFactory.createBmp(SecurityFrameworkUtils.getLoginUserId(),
query.getConsId(), WorkFlowEmus.ECW_CONS_RETIRED_WAREHOUSE.getKey(), query.getConsNum(), query.getCopyUserId());
consApprovalDO.setFormId(formId);
ConsTrackingRecordCreateReqVO consTrackingRecordCreateReqVO = new ConsTrackingRecordCreateReqVO();
consTrackingRecordCreateReqVO.setConsId(consApprovalDO.getConsId());
consTrackingRecordCreateReqVO.setBusinessNode(15);
consTrackingRecordCreateReqVO.setStatus(1);
consTrackingRecordCreateReqVO.setTrackingTime(new Date());
consTrackingRecordCreateReqVO.setIsShow(0);
consTrackingRecordService.createConsTrackingRecord(consTrackingRecordCreateReqVO);
Map<String, Object> retiredWarehouseMap = new HashMap<>();
retiredWarehouseMap.put("reason", query.getReason());
retiredWarehouseMap.put("name", query.getName());
retiredWarehouseMap.put("phone", query.getPhone());
retiredWarehouseMap.put("address", query.getAddress());
retiredWarehouseMap.put("imgUrl", query.getImgUrl());
consApprovalDO.setApprovalDetail(JSONObject.toJSONString(retiredWarehouseMap));
consApprovalMapper.updateById(consApprovalDO);
} }
@Override @Override
...@@ -441,7 +543,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme ...@@ -441,7 +543,7 @@ public class ConsServiceImpl extends AbstractService<ConsMapper, ConsDO> impleme
if (consDO.getTransportId() != null && orderBackVO.getTransportId() == null) { if (consDO.getTransportId() != null && orderBackVO.getTransportId() == null) {
orderBackVO.setTransportId(consDO.getTransportId()); orderBackVO.setTransportId(consDO.getTransportId());
} }
if(consDO.getWarehouseLineId()!=null&& logisticsInfo.getLineId()==null){ if (consDO.getWarehouseLineId() != null && logisticsInfo.getLineId() == null) {
logisticsInfo = logisticsInfo =
warehouseLineMapper.getStartInfoAndDestInfoByLineId(consDO.getWarehouseLineId()); warehouseLineMapper.getStartInfoAndDestInfoByLineId(consDO.getWarehouseLineId());
if (Objects.isNull(logisticsInfo)) { if (Objects.isNull(logisticsInfo)) {
......
...@@ -66,4 +66,7 @@ public interface ConsApprovalService extends IService<ConsApprovalDO> { ...@@ -66,4 +66,7 @@ public interface ConsApprovalService extends IService<ConsApprovalDO> {
List<ConsApprovalDO> getConsApprovalList(ConsApprovalQueryVO query); List<ConsApprovalDO> getConsApprovalList(ConsApprovalQueryVO query);
void updateFeeApproveBatchResult(String businessKey, Integer result); void updateFeeApproveBatchResult(String businessKey, Integer result);
void updateRetiredWarehouseResult(String businessKey, Integer result);
void cancelApplyAndUpdate(Long id);
} }
package cn.iocoder.yudao.module.order.service.consApproval; package cn.iocoder.yudao.module.order.service.consApproval;
import java.util.*; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.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.service.AbstractService;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; 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.consApproval.ConsApprovalConvert;
import cn.iocoder.yudao.module.order.convert.consFee.ConsFeeConvert; 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.consApproval.ConsApprovalDO;
import cn.iocoder.yudao.module.order.dal.dataobject.consFee.ConsFeeDO; 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.consApproval.ConsApprovalMapper;
import cn.iocoder.yudao.module.order.dal.mysql.consFee.ConsFeeMapper; 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.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.ConsApprovalCreateReqVO;
import cn.iocoder.yudao.module.order.vo.consApproval.ConsApprovalQueryVO; 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.consApproval.ConsApprovalUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.consFee.ConsFeeUpdateReqVO; 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.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.stereotype.Service;
import org.springframework.validation.annotation.Validated; 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.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.ORDER_APPROVAL_INFO_NOT_FIND; import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.ORDER_APPROVAL_INFO_NOT_FIND;
...@@ -49,6 +48,12 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper, ...@@ -49,6 +48,12 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper,
@Resource @Resource
private ConsFeeMapper consFeeMapper; private ConsFeeMapper consFeeMapper;
@Resource
private BpmCreateServiceFactory bpmCreateServiceFactory;
@Resource
private ConsTrackingRecordService consTrackingRecordService;
@Override @Override
public Long createConsApproval(ConsApprovalCreateReqVO createReqVO) { public Long createConsApproval(ConsApprovalCreateReqVO createReqVO) {
// 插入 // 插入
...@@ -141,4 +146,49 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper, ...@@ -141,4 +146,49 @@ public class ConsApprovalServiceImpl extends AbstractService<ConsApprovalMapper,
consFeeMapper.insertBatch(addList); 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; ...@@ -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);
......
...@@ -2,17 +2,23 @@ package cn.iocoder.yudao.module.order.vo.cons; ...@@ -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.depository.dto.LogisticsInfoDto;
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.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
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;
/** /**
* 集运包裹主 Response VO * 集运包裹主 Response VO
* @author 系统管理员 *
*/ * @author 系统管理员
*/
@Data @Data
@ApiModel("管理后台 - 集运包裹主 Response VO") @ApiModel("管理后台 - 集运包裹主 Response VO")
public class ConsBackVO { public class ConsBackVO {
...@@ -47,7 +53,7 @@ public class ConsBackVO { ...@@ -47,7 +53,7 @@ public class ConsBackVO {
@ExcelProperty("订单编号") @ExcelProperty("订单编号")
@ApiModelProperty(value = "订单编号") @ApiModelProperty(value = "订单编号")
private Long orderNo; private String orderNo;
@ExcelProperty("订单状态") @ExcelProperty("订单状态")
...@@ -233,4 +239,6 @@ public class ConsBackVO { ...@@ -233,4 +239,6 @@ public class ConsBackVO {
@ApiModelProperty(value = "签收图片") @ApiModelProperty(value = "签收图片")
private String mediaUrl; private String mediaUrl;
@ApiModelProperty("集运仓位")
private List<ConsLocationUpdateReqVO> consLocationBackList;
} }
package cn.iocoder.yudao.module.order.vo.cons; 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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; 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;
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;
...@@ -115,5 +118,6 @@ public class ConsBaseVO { ...@@ -115,5 +118,6 @@ public class ConsBaseVO {
@ApiModelProperty(value = "是否已拣出,0否,1是") @ApiModelProperty(value = "是否已拣出,0否,1是")
private Integer isPickout; 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 @@ ...@@ -12,7 +12,7 @@
left join ecw_order o on cons.order_id = o.order_id left join ecw_order o on cons.order_id = o.order_id
WHERE cons.deleted = 0 WHERE cons.deleted = 0
<include refid="myConsQuery"/> <include refid="myConsQuery"/>
order by cons.update_time desc order by cons.create_time desc
</select> </select>
<select id="myConsPageList" resultType="cn.iocoder.yudao.module.order.vo.cons.ConsBackVO" parameterType="cn.iocoder.yudao.module.order.vo.cons.ConsQueryVO"> <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 @@ ...@@ -31,7 +31,6 @@
o.channel_id o.channel_id
FROM ecw_cons cons FROM ecw_cons cons
left join ecw_customer ec on cons.customer_id = ec.id 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_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_start ON ew_start.id = el.start_warehouse_id
left join ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id left join ecw_warehouse ew_dest ON ew_dest.id = el.dest_warehouse_id
...@@ -39,7 +38,7 @@ ...@@ -39,7 +38,7 @@
left join ecw_order o on cons.order_id = o.order_id left join ecw_order o on cons.order_id = o.order_id
WHERE cons.deleted = 0 WHERE cons.deleted = 0
<include refid="myConsQuery"/> <include refid="myConsQuery"/>
order by cons.update_time desc order by cons.create_time desc
limit #{start}, #{size} limit #{start}, #{size}
</select> </select>
<sql id="myConsQuery"> <sql id="myConsQuery">
...@@ -62,8 +61,13 @@ ...@@ -62,8 +61,13 @@
AND (cons.`express_no` is not null and cons.`express_no` != '' and cons.`express_no` != #{query.eqNumberKey}) AND (cons.`express_no` is not null and cons.`express_no` != '' and cons.`express_no` != #{query.eqNumberKey})
</if> </if>
<if test="query.customerKey != null and query.customerKey != '' "> <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 AND concat(IFNULL(cons.`customer_number`,''), IFNULL(eccs.`phone_new`,'')) like
concat("%",concat(#{query.customerKey},"%")) concat("%",concat(#{query.customerKey},"%"))
)
</if> </if>
<if test="query.customerName != null and query.customerName != '' "> <if test="query.customerName != null and query.customerName != '' ">
AND ec.name like concat("%",concat(#{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; 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.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.idempotent.core.annotation.Idempotent;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 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;
...@@ -18,15 +20,21 @@ import cn.iocoder.yudao.module.order.dal.dataobject.cons.ConsDO; ...@@ -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.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.consLocation.ConsLocationService;
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.*; 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.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.consLocation.ConsLocationBackVO;
import cn.iocoder.yudao.module.order.vo.consLocation.ConsLocationUpdateReqVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO; import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -35,6 +43,7 @@ import javax.annotation.Resource; ...@@ -35,6 +43,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -72,6 +81,9 @@ public class ConsController { ...@@ -72,6 +81,9 @@ public class ConsController {
@Resource @Resource
private ConsItemService consItemService; private ConsItemService consItemService;
@Resource
private ConsLocationService consLocationService;
@PostMapping("/create") @PostMapping("/create")
@ApiOperation("创建集运包裹主") @ApiOperation("创建集运包裹主")
@PreAuthorize("@ss.hasPermission('ecw:cons:create')") @PreAuthorize("@ss.hasPermission('ecw:cons:create')")
...@@ -200,30 +212,40 @@ public class ConsController { ...@@ -200,30 +212,40 @@ public class ConsController {
@GetMapping("/getPad") @GetMapping("/getPad")
@ApiOperation("获得集运包裹主") @ApiOperation("获得集运包裹主")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) public CommonResult<ConsBackVO> getPad(Long id, String expressNo) {
public CommonResult<ConsBackVO> getPad(@RequestParam("id") Long id) { if (id == null && StringUtils.isBlank(expressNo)) {
ConsDO cons = consService.getCons(id); 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()); CustomerDO customer = customerService.selectOne("id", cons.getCustomerId());
CustomerContactsDO customerContacts = customerContactsService.getDefaultContacts(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 consBackVO = ConsConvert.INSTANCE.convert(cons);
consBackVO.setConsItemVOList(consItemBackVOS); consBackVO.setConsItemVOList(consItemBacks);
consBackVO.setAreaCode(customerContacts.getAreaCode()); if (customerContacts != null) {
consBackVO.setPhoneNew(customerContacts.getPhoneNew()); consBackVO.setAreaCode(customerContacts.getAreaCode());
consBackVO.setCustomerName(customer.getName()); consBackVO.setPhoneNew(customerContacts.getPhoneNew());
//获取签收图片 }
if (cons.getSigned()) { if (customer != null) {
ConsMediaDO consMedia = consentMediaService.getOne(new LambdaQueryWrapperX<ConsMediaDO>().eq(ConsMediaDO::getConsId, cons.getId()) consBackVO.setCustomerName(customer.getName());
.eq(ConsMediaDO::getBizId, cons.getId())
.eq(ConsMediaDO::getMediaBusinessType, 3));
consBackVO.setMediaUrl(consMedia == null ? "" : consMedia.getMediaUrl());
} }
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 = LogisticsInfoDto initialLogisticsInfoDto =
warehouseLineMapper.getStartInfoAndDestInfoByLineId(cons.getWarehouseLineId()); warehouseLineMapper.getStartInfoAndDestInfoByLineId(cons.getWarehouseLineId());
if (Objects.isNull(initialLogisticsInfoDto)) {
throw exception(NOT_FIND_LOGISTICS_INFO);
}
//初始物流信息 //初始物流信息
consBackVO.setInitialLogisticsInfoDto(initialLogisticsInfoDto); consBackVO.setInitialLogisticsInfoDto(initialLogisticsInfoDto);
return success(consBackVO); return success(consBackVO);
...@@ -236,4 +258,11 @@ public class ConsController { ...@@ -236,4 +258,11 @@ public class ConsController {
return success(true); 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 { ...@@ -66,6 +66,14 @@ public class ConsApprovalController {
return success(ConsApprovalConvert.INSTANCE.convert(consApproval)); 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") @GetMapping("/getConsApprovalList")
@ApiOperation("获得集运包裹审批内容列表") @ApiOperation("获得集运包裹审批内容列表")
public CommonResult<List<ConsApprovalBackVO>> getConsApprovalList(ConsApprovalQueryVO query) { public CommonResult<List<ConsApprovalBackVO>> getConsApprovalList(ConsApprovalQueryVO query) {
......
...@@ -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