Browse Source

Merge branch 'pre-production'

master
pref_mail@163.com 5 months ago
parent
commit
51b8318fef
  1. 10
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesSettlementEntity.java
  2. 16
      blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesWorkOrderEntity.java
  3. 13
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/BillladingDTO.java
  4. 6
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java
  5. 1
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesCustomerMallController.java
  6. 8
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AftersalesAppealDTO.java
  7. 15
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAppealMapper.xml
  8. 2
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.java
  9. 120
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.xml
  10. 63
      blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java
  11. 2
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataClientMapper.xml
  12. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml
  13. 15
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  14. 4
      blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java
  15. 25
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java
  16. 3
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java
  17. 84
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml
  18. 46
      blade-service/logpm-report/src/main/java/com/logpm/report/query/DevilerDetailsQuery.java
  19. 3
      blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportDeliverService.java
  20. 128
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java
  21. 6
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDetailVO.java
  22. 44
      blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java
  23. 12
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml
  24. 7
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  25. 8
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java

10
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesSettlementEntity.java

@ -1,5 +1,6 @@
package com.logpm.aftersales.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ -68,7 +69,14 @@ public class AftersalesSettlementEntity extends TenantEntity {
private Date overTime;
@TableField(exist=false)
private String workOrderNumbers;
@TableField(exist=false)
private String orderCodes;
@TableField(exist=false)
private Date startCreateTime;
@TableField(exist=false)
private Date endCreateTime;

16
blade-service-api/logpm-aftersales-api/src/main/java/com/logpm/aftersales/entity/AftersalesWorkOrderEntity.java

@ -19,15 +19,14 @@ package com.logpm.aftersales.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
/**
* 客服异常工单 实体类
*
@ -332,6 +331,15 @@ public class AftersalesWorkOrderEntity extends TenantEntity {
/**
* 金额总和
*/
@TableField(exist=false)
private String workOrderNumbers;
@TableField(exist=false)
private String orderCodes;
@TableField(exist=false)
private Date startCreateTime;
@TableField(exist=false)
private Date endCreateTime;
@TableField(exist=false)
private String totalAmountNum;
@TableField(exist=false)

13
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/BillladingDTO.java

@ -56,4 +56,17 @@ public class BillladingDTO extends TrunklineBillladingEntity {
private String completeTime;//目的仓
private Long billladingId;
private String startTimeStartStr;
private String startTimeEndStr;
private Date startTimeStart;
private Date startTimeEnd;
private String completeTimeStartStr;
private String completeTimeEndStr;
private Date completeTimeStart;
private Date completeTimeEnd;
}

6
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/LoadingDetailExportVO.java

@ -112,4 +112,10 @@ public class LoadingDetailExportVO implements Serializable {
@ExcelProperty(value = "卸车托盘")
private String unloadTrayName;
@ExcelProperty(value = "物料编码")
private String materialCode;
@ExcelProperty(value = "物料编码")
private String materialName;
}

1
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesCustomerMallController.java

@ -31,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;

8
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/dto/AftersalesAppealDTO.java

@ -21,6 +21,7 @@ import com.logpm.aftersales.entity.AftersalesAppealPeopleEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.util.List;
/**
@ -66,5 +67,12 @@ public class AftersalesAppealDTO extends AftersalesAppealEntity {
*/
private Long createUserId;
/** 范围查找工单 */
private String workOrderNumbers;
/** 范围查找订单 */
private String orderCodes;
/** 范围查找创建时间 */
private Date startCreateTime;
private Date endCreateTime;
}

15
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesAppealMapper.xml

@ -57,6 +57,21 @@
LEFT JOIN logpm_aftersales_completion_record lacr on laa.work_order_id = lacr.work_order_id
LEFT JOIN logpm_aftersales_work_order lawo ON lawo.id = lacr.work_order_id
<where> laa.is_deleted = 0
<if test="param.workOrderNumbers != null and param.workOrderNumbers != '' ">
and lawo.work_order_number in
<foreach collection="param.workOrderNumbers.split(',')" item="workOrderNumber" separator="," open="(" close=")">
#{workOrderNumber}
</foreach>
</if>
<if test="param.orderCodes != null and param.orderCodes != '' ">
and lawo.order_code in
<foreach collection="param.orderCodes.split(',')" item="orderCode" separator="," open="(" close=")">
#{orderCode}
</foreach>
</if>
<if test="param.startCreateTime != null and param.endCreateTime != null ">
and lawo.create_time between #{param.startCreateTime} and #{param.endCreateTime}
</if>
<if test="param.warehouseId != null and param.warehouseId != '' ">
and (lacr.warehouse_id = #{param.warehouseId } or laa.create_user = #{param.createUserId})
</if>

2
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.java

@ -70,7 +70,7 @@ public interface AftersalesWorkOrderMapper extends BaseMapper<AftersalesWorkOrde
* @param workOrderEntity
* @return
*/
IPage<AftersalesWorkOrderEntity> pageListOwn(IPage<Object> page,@Param("param") AftersalesWorkOrderEntity workOrderEntity);
IPage<AftersalesWorkOrderEntity> pageListOwn(IPage<Object> page,@Param("param") AftersalesWorkOrderEntity workOrderEntity,@Param("warehouseIds") List<Long> warehouseIds);
boolean updateList(@Param("list") List<AftersalesWorkOrderEntity> list);

120
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/mapper/AftersalesWorkOrderMapper.xml

@ -96,9 +96,6 @@
GROUP_CONCAT(DISTINCT lapr.compensation_method) AS compensationMethods
FROM
logpm_aftersales_work_order lawo
LEFT JOIN logpm_aftersales_processor lap ON lawo.id = lap.work_order_id
AND lap.types_of = '2'
AND lap.conditions IN ( 1, 2 )
LEFT JOIN logpm_aftersales_completion_record lacr ON lacr.work_order_id = lawo.id
AND lacr.is_deleted = '0'
LEFT JOIN (SELECT
@ -117,8 +114,24 @@
GROUP BY
a.id) AS t ON t.id = lawo.id
LEFT JOIN logpm_aftersales_processing_results AS lapr ON lapr.work_order_id = lawo.id AND lapr.is_deleted = 0
LEFT JOIN logpm_aftersales_processor AS lap ON lawo.id = lap.work_order_id AND lap.is_deleted = 0
<where>
lawo.is_deleted = 0
<if test="param.workOrderNumbers != null and param.workOrderNumbers != '' ">
and lawo.work_order_number in
<foreach collection="param.workOrderNumbers.split(',')" item="workOrderNumber" separator="," open="(" close=")">
#{workOrderNumber}
</foreach>
</if>
<if test="param.orderCodes != null and param.orderCodes != '' ">
and lawo.order_code in
<foreach collection="param.orderCodes.split(',')" item="orderCode" separator="," open="(" close=")">
#{orderCode}
</foreach>
</if>
<if test="param.startCreateTime != null and param.endCreateTime != null ">
and lawo.create_time between #{param.startCreateTime} and #{param.endCreateTime}
</if>
<if test="param.workOrderStatusNameS != null and param.workOrderStatusNameS != '' ">and lawo.work_order_status = #{param.workOrderStatusNameS } </if>
<if test="param.id != null and param.id != '' ">and lawo.id = #{param.id } </if>
<if test="param.workOrderType != null and param.workOrderType != '' ">and lawo.work_order_type = #{param.workOrderType } </if>
@ -147,7 +160,6 @@
<if test="param.customerServiceName != null and param.customerServiceName != '' ">and lawo.customer_service_name like concat('%', #{param.customerServiceName },'%') </if>
<if test="param.waybillMallId != null and param.waybillMallId != '' ">and lawo.waybill_mall_id = #{param.waybillMallId } </if>
<if test="param.problemDescription != null and param.problemDescription != '' ">and lawo.problem_description = #{param.problemDescription} </if>
<if test="param.warehouseId != null and param.warehouseId != '' and param.handleStatus != null ">and (lap.warehouse_id = #{param.warehouseId} OR lap.business_id = #{param.warehouseId}) </if>
<if test="param.personResponsible != null and param.personResponsible != '' ">and lawo.person_responsible = #{param.personResponsible } </if>
<if test="param.processNumber != null and param.processNumber != '' ">and lawo.process_number = #{param.processNumber } </if>
<if test="param.reviewedBy != null and param.reviewedBy != '' ">and lawo.reviewed_by = #{param.reviewedBy } </if>
@ -160,10 +172,9 @@
<if test="param.customerIdentification != null and param.customerIdentification == 1 ">
and lawo.work_order_status IN ( '10', '20', '21', '30', '40', '50', '60', '70', '80', '90' ,'100','110')
</if>
<if test="param.handleStatus != null and param.handleStatus == 40 "> and lawo.work_order_status in ('10') and lap.types_of = '2' and lap.processing_status in ('1') </if>
<if test="param.handleStatus != null and param.handleStatus == 50 "> and lawo.work_order_status in ('20') and lap.types_of = '2' </if>
<if test="param.handleStatus!= null and param.handleStatus == 30"> and lawo.work_order_status in (21,30) and lap.processing_status = '4' </if>
<if test="param.handleStatus!= null and param.handleStatus == 10 ">and lap.types_of = '2' </if>
<if test="param.handleStatus != null and param.handleStatus == 40 "> and lawo.work_order_status in ('10') </if>
<if test="param.handleStatus != null and param.handleStatus == 50 "> and lawo.work_order_status in ('20') </if>
<if test="param.handleStatus!= null and param.handleStatus == 30"> and lawo.work_order_status in (21,30) </if>
<if test="param.handleStatus!= null and param.handleStatus == 20 ">and lawo.work_order_status in (80,100,70) </if>
<if test="param.workOrderType != null and param.workOrderType != '' ">and lawo.work_order_type = #{param.workOrderType } </if>
<if test="param.discoveryNode != null and param.discoveryNode != '' ">and lawo.discovery_node = #{param.discoveryNode } </if>
@ -177,6 +188,12 @@
<if test="param.brandName != null and param.brandName != '' ">and t.brand_name like concat('%',#{param.brandName},'%') </if>
<if test="param.waybillNumber != null and param.waybillNumber != ''">and t.waybill_number like concat('%',#{param.waybillNumber},'%') </if>
<if test="param.packageCode != null and param.packageCode != ''">and t.package_code like concat('%',#{param.packageCode},'%') </if>
<if test="param.warehouseId != null ">
and lap.business_id IN
<foreach collection="warehouseIds" item="warehouseId" open="(" separator="," close=")" >
#{warehouseId}
</foreach>
</if>
</where>
group by lawo.id
ORDER BY lawo.create_time DESC
@ -291,6 +308,8 @@
GROUP BY
a.id) AS t ON t.id = lawo.id
LEFT JOIN logpm_aftersales_processing_results AS lapr ON lapr.work_order_id = lawo.id AND lapr.is_deleted = 0
LEFT JOIN logpm_aftersales_processor AS lap ON lawo.id = lap.work_order_id AND lap.is_deleted = 0
<where>
lawo.is_deleted = 0
<if test="param.workOrderStatusNameS != null and param.workOrderStatusNameS != '' ">and lawo.work_order_status = #{param.workOrderStatusNameS } </if>
@ -559,6 +578,21 @@
<where>
lap.conditions != '3' and lap.is_deleted = 0 and law.id is not null and lap.processing_status in ('1','3') and lap.types_of = '2' and law.work_order_status in ('10','20','30')
<if test="param.workOrderNumbers != null and param.workOrderNumbers != '' ">
and law.work_order_number in
<foreach collection="param.workOrderNumbers.split(',')" item="workOrderNumber" separator="," open="(" close=")">
#{workOrderNumber}
</foreach>
</if>
<if test="param.orderCodes != null and param.orderCodes != '' ">
and law.order_code in
<foreach collection="param.orderCodes.split(',')" item="orderCode" separator="," open="(" close=")">
#{orderCode}
</foreach>
</if>
<if test="param.startCreateTime != null and param.endCreateTime != null ">
and law.create_time between #{param.startCreateTime} and #{param.endCreateTime}
</if>
<if test="param.workOrderStatusNameS != null and param.workOrderStatusNameS != '' ">and law.work_order_status = #{param.workOrderStatusNameS } </if>
<if test="param.operator != null and param.operator != '' ">and law.operator = #{param.operator } </if>
<if test="param.workOrderStatus != null and param.workOrderStatus != ''">and law.work_order_status = #{param.workOrderStatus}</if>
@ -655,38 +689,52 @@
<select id="getListSettlementNew" resultType="com.logpm.aftersales.entity.AftersalesSettlementEntity">
SELECT
`lawo`.`work_order_number` AS workOrderNumber,
`lap`.`business_name` AS businessName,
`ldpl`.`brand_name` AS brandName,
`ldsa`.`mall_name` AS mallName,
`laap`.`waybill_number` AS waybillNumber,
`lawo`.`work_order_type` AS workOrderType,
`lapr`.`result_type` AS resultType,
`lapr`.`id` AS `laprId`,
`lawo`.`discovery_node` AS discoveryNode,
`lapr`.`result_description` AS resultDescription,
`lawo`.`vehicle_route` AS vehicleRoute,
`lacr`.`indemnitor` AS `indemnitor`,
`lacr`.`reason` AS `reason`,
IFNUll(sum(`lapr`.`money`),0 ) AS `money`,
`lawo`.`id` AS `lawoId`,
`lawo`.`create_time` AS createTime,
`lawo`.`process_number` AS processNumber,
`lawo`.`work_order_status` AS workOrderStatus,
`lawo`.`over_time` AS `over_time`,
`lap`.`business_id` AS `business_id`,
`lap`.`processing_status` AS `processing_status`,
`lap`.`is_deleted` AS `is_deleted`
lawo.work_order_number AS workOrderNumber,
lap.business_name AS businessName,
laap.brand_name AS brandName,
ldsa.mall_name AS mallName,
laap.waybill_number AS waybillNumber,
lawo.work_order_type AS workOrderType,
lapr.result_type AS resultType,
lapr.id AS laprId,
lawo.discovery_node AS discoveryNode,
lapr.result_description AS resultDescription,
lawo.vehicle_route AS vehicleRoute,
lacr.indemnitor AS indemnitor,
lacr.reason AS reason,
IFNUll(sum(lapr.money),0 ) AS money,
lawo.id AS lawoId,
lawo.create_time AS createTime,
lawo.process_number AS processNumber,
lawo.work_order_status AS workOrderStatus,
lawo.over_time AS over_time,
lap.business_id AS business_id,
lap.processing_status AS processing_status,
lap.is_deleted AS is_deleted
from logpm_aftersales_work_order lawo left JOIN
logpm_aftersales_processor lap on lap.work_order_id= lawo.id
left join logpm_aftersales_abnormal_package laap on laap.work_order_id=lawo.id
LEFT JOIN `logpm_distribution_parcel_list` `ldpl` ON `ldpl`.`order_package_code` = `laap`.`package_code`
LEFT JOIN `logpm_distribution_stock_article` `ldsa` ON `ldsa`.`id` = `ldpl`.`stock_article_id`
LEFT JOIN `logpm_aftersales_processing_results` `lapr` ON `lapr`.`work_order_id` = `lap`.`work_order_id`
LEFT JOIN `logpm_aftersales_completion_record` `lacr` ON `lacr`.`work_order_id` = `lapr`.`work_order_id`
left join logpm_aftersales_abnormal_package laap on laap.work_order_id=lawo.id AND laap.is_deleted = 0
LEFT JOIN logpm_distribution_stock_article ldsa ON ldsa.id = laap.order_id
LEFT JOIN logpm_aftersales_processing_results lapr ON lapr.work_order_id = lap.work_order_id AND lapr.is_deleted = 0
LEFT JOIN logpm_aftersales_completion_record lacr ON lacr.work_order_id = lapr.work_order_id
<where>
`lawo`.`work_order_status` = 90 and lap.is_deleted = 0
lawo.work_order_status = 90 and lap.is_deleted = 0
<if test="param.workOrderNumbers != null and param.workOrderNumbers != '' ">
and lawo.work_order_number in
<foreach collection="param.workOrderNumbers.split(',')" item="workOrderNumber" separator="," open="(" close=")">
#{workOrderNumber}
</foreach>
</if>
<if test="param.orderCodes != null and param.orderCodes != '' ">
and lawo.order_code in
<foreach collection="param.orderCodes.split(',')" item="orderCode" separator="," open="(" close=")">
#{orderCode}
</foreach>
</if>
<if test="param.startCreateTime != null and param.endCreateTime != null ">
and lawo.create_time between #{param.startCreateTime} and #{param.endCreateTime}
</if>
<if test="param.businessId != null"> and lap.business_id =#{param.businessId}</if>
<if test="param.businessName != null and param.businessName != ''"> and lap.business_name LIKE CONCAT( #{param.businessName}, '%')</if>
<if test="param.workOrderNumber != null and param.workOrderNumber != ''"> and lawo.work_order_number LIKE CONCAT( #{param.workOrderNumber}, '%')</if>

63
blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java

@ -902,7 +902,7 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
}
List<String> roleList = Arrays.asList(user.getRoleName().split(","));
String tenantId = user.getTenantId();
boolean b = judgeIsCustomerService(user);
// 查询 状态条件
List<DictBiz> warehouseType = DictBizCache.getList("after_sales_visits");
if (warehouseType.isEmpty()) {
@ -937,8 +937,23 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
}else {
throw new CustomerException("当前登录人无工单操作权限!!!");
}
//进行仓库限制
List<Long> warehouseIds = new ArrayList<>();
if (!Objects.isNull(myCurrentWarehouse)){
warehouseIds.add(myCurrentWarehouse.getId());
}else {
//获取当前人所有仓权限信息
List<BasicdataWarehouseEntity> warehouseList = warehouseClient.getMyWarehouseList();
if (!warehouseList.isEmpty()) {
warehouseIds.addAll(warehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList()));
}
}
if (warehouseIds.isEmpty()) {
throw new CustomerException("当前登录人无仓库信息,请联系管理人员!!!");
}
AftersalesWorkOrderEntity workOrderEntity = JSONObject.parseObject(JSONObject.toJSONString(aftersalesWorkOrder), AftersalesWorkOrderEntity.class);
IPage<AftersalesWorkOrderEntity> iPage = baseMapper.pageListOwn(page, workOrderEntity);
IPage<AftersalesWorkOrderEntity> iPage = baseMapper.pageListOwn(page, workOrderEntity,warehouseIds);
if (iPage.getRecords().isEmpty()) {
log.error(">>>>>>>>>>>>>>>>>>查询工单列表为空");
IPage<AftersalesWorkOrderVO> data = AftersalesWorkOrderWrapper.build().pageVO(iPage);
@ -1050,14 +1065,6 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
}
private void updateWorkOrderForOthers(Map<String, Object> aftersalesWorkOrder, Object workOrderStatus) {
// 对其他情况的工单状态更新逻辑
// 优化后的代码根据实际情况进行填充
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (ObjectUtils.isNotNull(myCurrentWarehouse)) {
aftersalesWorkOrder.put("warehouseId", myCurrentWarehouse.getId());
} else {
throw new ServiceException("请选择仓库!");
}
//已处理
if (ObjectUtils.isNotNull(workOrderStatus) && workOrderStatus.equals(WorkOrderStatusConstant.yichuli.getValue())) {
aftersalesWorkOrder.remove("workOrderStatus");
@ -2030,15 +2037,18 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
//查询是否必须回复
AftersalesProcessorEntity one = aftersalesProcessorService.getOne(Wrappers.<AftersalesProcessorEntity>query().lambda().
List<AftersalesProcessorEntity> processorEntityList = aftersalesProcessorService.list(Wrappers.<AftersalesProcessorEntity>query().lambda().
eq(AftersalesProcessorEntity::getWorkOrderId, aftersalesWorkOrderDTO.getId())
.eq(AftersalesProcessorEntity::getTypesOf, ProcessorTypesOfStatusConstant.chulifang.getValue())
);
List<AftersalesProcessorVO> list1 = new ArrayList<>();
if (ObjectUtils.isNotNull(one)) {
if (ObjectUtils.isNotNull(processorEntityList)) {
AftersalesProcessorVO processorVO = new AftersalesProcessorVO();
BeanUtil.copyProperties(one, processorVO);
list1.add(processorVO);
processorEntityList.forEach(f->{
BeanUtil.copyProperties(f, processorVO);
list1.add(processorVO);
});
}
aftersalesWorkOrderVO.setProcessorVOList(list1);
break;
@ -2631,4 +2641,29 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl<AftersalesWo
return list;
}
/**
* 判断是否是客服角色
* @param user
* @return
*/
private boolean judgeIsCustomerService(BladeUser user){
String roleName = user.getRoleName();
if (!Objects.isNull(roleName)){
List<String> roleList = Arrays.asList(user.getRoleName().split(","));
List<DictBiz> warehouseType = DictBizCache.getList("after_sales_visits");
Optional<DictBiz> matchingDictBiz = warehouseType.stream()
.filter(i -> roleList.contains(i.getDictValue()))
.findFirst();
if (matchingDictBiz.isPresent()) {
return true;
}
return false;
}else {
log.error("当前登录人角色信息错误!!!");
}
return false;
}
}

2
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataClientMapper.xml

@ -65,7 +65,7 @@
lbc.blade_region_area_id areaId,
lbc.default_payment_methods defaultPayWay
from logpm_basicdata_client lbc
left join logpm_basicdata_store_contact lbsc on lbsc.shop_id = lbc.id
left join logpm_basicdata_store_contact lbsc on lbsc.shop_id = lbc.id and lbsc.is_deleted = 0
where lbc.is_deleted = 0
<if test="clientName != null and clientName != ''">
and lbc.client_name like CONCAT('%',#{clientName},'%')

10
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml

@ -41,6 +41,7 @@
t.customerName,
t.customerTelephone,
t.waybillNumber,
t.brand,
3 AS typeService,
t.warehouseEntryTime,
t.storageFee,
@ -91,8 +92,7 @@
id
) AS productInformation
FROM
logpm_distrilbution_bill_lading dbl
LEFT JOIN (
(
SELECT
CASE
WHEN
@ -108,7 +108,8 @@
IF(k.customerTelephone is not null, k.customerTelephone, m.customerTelephone) AS customerTelephone,
CONCAT_WS( ',', k.waybillNumber ) AS waybillNumber,
k.warehouse_entry_time AS warehouseEntryTime,
k.storage_fee AS storageFee
k.storage_fee AS storageFee,
k.brand
FROM
(
SELECT
@ -165,7 +166,8 @@
GROUP BY
bbb.id
) AS m ON m.id = k.id
) AS t ON t.id = dbl.id
) AS t
LEFT JOIN logpm_distrilbution_bill_lading dbl ON t.id = dbl.id
<where>
dbl.is_deleted=0
<if test="param.pickupBatch != null and param.pickupBatch != ''">and dbl.pickup_batch like

15
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -2558,22 +2558,11 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distrilbutionBillLadingDTO.setPickupBatchs(strs);
distrilbutionBillLadingDTO.setOrderCodes(orderCodes);
//获取当前登录人仓库
List<BasicdataWarehouseEntity> warehouseList = basicdataWarehouseClient.getMyWarehouseList();
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
IPage<DistrilbutionBillLadingVO> distrilbutionBillLadingVOIPage = null;
List<Long> collect = null;
List<Long> collect = basicdataWarehouseClient.getWarehouseIds();
IPage<DistrilbutionBillLadingVO> distrilbutionBillLadingVOIPage = null;
if (Func.isNotEmpty(myCurrentWarehouse)) {
collect = new ArrayList<>();
collect.add(myCurrentWarehouse.getId());
} else {
// distrilbutionBillLadingVOIPage = baseMapper.getAllBillLadingByView(page, distrilbutionBillLadingDTO, collect);
collect = warehouseList.stream()
.map(BasicdataWarehouseEntity::getId)
.collect(Collectors.toList());
}
distrilbutionBillLadingVOIPage = baseMapper.pageList(page, distrilbutionBillLadingDTO, collect);

4
blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java

@ -30,11 +30,11 @@ public enum ZbomNodeMappingEnums {
/**
* 在途 -- 末端仓卸货确认 配送
*/
INTRANSIT_(ZbomNodeEnums.INTRANSIT, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 1),
INTRANSIT_(ZbomNodeEnums.INTRANSIT, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 2),
/**
* 送货抵达 -- 末端仓卸货确认 自提
*/
DELIVERY_ARRIVAL(ZbomNodeEnums.DELIVERY_ARRIVAL, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 2),
DELIVERY_ARRIVAL(ZbomNodeEnums.DELIVERY_ARRIVAL, WorkNodeEnums.END_WAREHOUSE_UNLOADING, 1),
/**
* 送货抵达 -- 配送到达 配送
*/

25
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java

@ -90,11 +90,19 @@ public class ReportDeliveryController extends BladeController {
IPage<ReportDetailVO> pages = reportDeliverService.detailsPage(vo, query);
return R.data(pages);
}
// @GetMapping("/details/v2")
// @ApiOperationSupport(order = 5)
// @ApiOperation(value = "配送明细报表v2", notes = "配送明细报表v2")
// public R<IPage<ReportDetailVO>> detailsPageV2(ReportDetailVO vo, DevilerDetailsQuery query) {
// IPage<ReportDetailVO> pages = reportDeliverService.detailsPageV2(vo, query);
// return R.data(pages);
// }
@GetMapping("/details/v2")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "配送明细报表v2", notes = "配送明细报表v2")
public R<IPage<ReportDetailVO>> detailsPageV2(ReportDetailVO vo, DevilerDetailsQuery query) {
IPage<ReportDetailVO> pages = reportDeliverService.detailsPageV2(vo, query);
public R<IPage<ReportDetailVO>> detailsPageV2(DevilerDetailsQuery query) {
IPage<ReportDetailVO> pages = reportDeliverService.detailsPageV3(query);
return R.data(pages);
}
@ -105,12 +113,19 @@ public class ReportDeliveryController extends BladeController {
reportDeliverService.exportDetails(response, vo, query);
}
// @GetMapping("/exportDetails/v2")
// @ApiOperationSupport(order = 6)
// @ApiOperation(value = "导出配送明细报表v2", notes = "导出配送明细报表v2")
// public void exportDetailsV2(HttpServletResponse response, ReportDetailVO vo, DevilerDetailsQuery query) {
// reportDeliverService.exportDetailsV2(response, vo, query);
//
// }
@GetMapping("/exportDetails/v2")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "导出配送明细报表v2", notes = "导出配送明细报表v2")
public void exportDetailsV2(HttpServletResponse response, ReportDetailVO vo, DevilerDetailsQuery query) {
reportDeliverService.exportDetailsV2(response, vo, query);
public void exportDetailsV3(HttpServletResponse response, DevilerDetailsQuery query) {
reportDeliverService.exportDetailsV3(response, query);
}
@GetMapping("/stockOrder")

3
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.dto.DeliveryTrainLoadedScanDTO;
import com.logpm.report.query.DevilerDetailsQuery;
import com.logpm.report.vo.ReportCustomerVO;
import com.logpm.report.vo.ReportDetailVO;
import com.logpm.report.vo.ReportDevilerVO;
@ -75,4 +76,6 @@ public interface ReportDeliverMapeer extends BaseMapper {
List<ReportDetailVO> getDetailsPageExport(@Param("ew") Wrapper queryWrapper, @Param("current") Integer current, @Param("size") Integer size);
List<ReportDetailVO> getDetailsPageV2(IPage<ReportDetailVO> page, @Param("ew") Wrapper queryWrapper);
List<ReportDetailVO> getDetailsPageV3(@Param("page") IPage<ReportDetailVO> page, @Param("query") DevilerDetailsQuery query);
}

84
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml

@ -908,4 +908,88 @@
<include refid="detailsPageSql"></include>
limit #{current},#{size}
</select>
<select id="getDetailsPageV3" resultType="com.logpm.report.vo.ReportDetailVO">
select plan_train_number train_number,
case when retention_user_name is not null then '已回库' else '' end returnToStockStatus,
plan_reservation_code reservation_code,
delivery_time task_time,
warehouse_name warehouse_name,
warehouse_id warehouse_id,
delivery_type type,
delivery_kind kind,
vehicle_name vehicle_name,
driver_name driver_name,
distribution_company distribution_company,
custom_name dr_consignee,
custom_phone delivery_phone,
custom_address delivery_address,
consignee_unit consignee,
consignee_person consignee_name,
consignee_mobile consignee_mobile,
waybill_number waybill_no,
order_code stock_article_id,
order_package_code order_package_code,
train_number customer_train,
case
when conditions = 1 then '订制品'
when conditions = 2 then '零担'
when conditions = 3 then '库存品' end conditions,
firsts_product firsts,
second_product decond,
third_product third_product,
materiel_code material_code,
materiel_name material_name,
begin_warehouse_name start_war,
begin_warehouse_in_time start_war_in_time,
begin_warehouse_out_time start_war_out_time,
end_warehouse_in_time warehouse_entry_time_end,
case
when sign_status = 1 then '已签收'
when sign_status = 0 then '未签收'
when sign_status = -1 then '已回库' end driver_signing,
load_time unload_time,
load_user_name un_administrators_name,
sign_time sjsigning_time,
sign_user_name lds_signee_name,
case when review_time is null then '未复核' else '已复核' end signing_status,
review_time signing_time,
sign_num sign_num,
sign_type sign_type,
load_type loading_mode,
brand_name brand,
review_user_name examine_user_name,
case
when plan_reservation_code = sign_reservation_code then '否'
when plan_reservation_code != sign_reservation_code then '是'
else '' end abnormal_signing
from logpm_quality_deliver
<where>
<if test="query.startTaskTime != null and query.endTaskTime != null">
and delivery_time between #{query.startTaskTime} and #{query.endTaskTime}
</if>
<if test="query.startSjsigningTime != null and query.startSjsigningTime != null">
and sign_time between #{query.startSjsigningTime} and #{query.endSjsigningTime}
</if>
<if test="query.trainNumber != null and query.trainNumber != null">
and plan_train_number = #{query.trainNumber}
</if>
<if test="query.reservationCode != null and query.reservationCode != null">
and plan_reservation_code = #{query.reservationCode}
</if>
<if test="query.stockArticleId != null and query.stockArticleId != null">
and order_code = #{query.stockArticleId}
</if>
<if test="query.orderPackageCode != null and query.orderPackageCode != null">
and order_package_code = #{query.orderPackageCode}
</if>
<if test="query.warehouseNameRange != null and query.warehouseNameRange != null">
and warehouse_name in
<foreach collection="query.warehouseNameRange.split(',')" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</where>
order by id desc
</select>
</mapper>

46
blade-service/logpm-report/src/main/java/com/logpm/report/query/DevilerDetailsQuery.java

@ -26,23 +26,23 @@ public class DevilerDetailsQuery extends Query {
@ApiModelProperty(value = "仓库(范围)", position = 5)
private String warehouseNameRange;
@ApiModelProperty(value = "配送类型(范围)", position = 7)
private String typeRange;
@ApiModelProperty(value = "配送种类(范围)", position = 9)
private String kindRange;
@ApiModelProperty(value = "配送车辆(范围)", position = 11)
private String vehicleNameRange;
@ApiModelProperty(value = "配送司机(范围)", position = 13)
private String driverNameRange;
@ApiModelProperty(value = "客户名称(范围)", position = 15)
private String consigneeRange;
@ApiModelProperty(value = "运单收货人", position = 17)
private String consigneeNameRange;
// @ApiModelProperty(value = "配送类型(范围)", position = 7)
// private String typeRange;
//
// @ApiModelProperty(value = "配送种类(范围)", position = 9)
// private String kindRange;
//
// @ApiModelProperty(value = "配送车辆(范围)", position = 11)
// private String vehicleNameRange;
//
// @ApiModelProperty(value = "配送司机(范围)", position = 13)
// private String driverNameRange;
//
// @ApiModelProperty(value = "客户名称(范围)", position = 15)
// private String consigneeRange;
//
// @ApiModelProperty(value = "运单收货人", position = 17)
// private String consigneeNameRange;
@ApiModelProperty(value = "签收时间开始(范围)", position = 18)
private Date startSjsigningTime;
@ -50,4 +50,16 @@ public class DevilerDetailsQuery extends Query {
@ApiModelProperty(value = "签收时间结束(范围)", position = 19)
private Date endSjsigningTime;
@ApiModelProperty(value = "车次")
private String trainNumber;
@ApiModelProperty(value = "预约单号")
private String reservationCode;
@ApiModelProperty(value = "订单自编码")
private String stockArticleId;
@ApiModelProperty(value = "包条码")
private String orderPackageCode;
}

3
blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportDeliverService.java

@ -101,4 +101,7 @@ public interface ReportDeliverService {
void exportDetailsV2(HttpServletResponse response, ReportDetailVO vo, DevilerDetailsQuery query);
IPage<ReportDetailVO> detailsPageV3(DevilerDetailsQuery query);
void exportDetailsV3(HttpServletResponse response, DevilerDetailsQuery query);
}

128
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java

@ -2,13 +2,17 @@ package com.logpm.report.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.report.dto.DeliveryTrainLoadedScanDTO;
import com.logpm.report.mapper.ReportDeliverMapeer;
@ -44,6 +48,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -198,7 +203,7 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
trainCustomQuery(query, queryWrapper);
// 仓库权限
ReportUtil.buildReportWarehouseAuth(vo.getWarehouseName(), query.getWarehouseNameRange(), queryWrapper, warehouseClient);
reportExcelUtil.export(response, deliveryTrainReader, ReportDevilerVO.class, queryWrapper, "配送车次维度报表",1000L, ReportExcelUtil.SHEETDATANUM);
reportExcelUtil.export(response, deliveryTrainReader, ReportDevilerVO.class, queryWrapper, "配送车次维度报表", 1000L, ReportExcelUtil.SHEETDATANUM);
}
@Override
@ -281,7 +286,7 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
int zeroSize = zeroTotal % size;
long limitA = 0;
long limitB = 0;
if(zeroSize == 0){
if (zeroSize == 0) {
zeroSize = size;
}
if (!NumberUtil.equals(zeroCurrent, 1)) {
@ -290,7 +295,7 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
}
limitB = zeroSize;
List<ReportDetailVO> zeroPage = reportDeliverMapeer.getDetailsZeroPage(limitA, limitB, queryWrapper);
if(CollUtil.isEmpty(detailsPage)){
if (CollUtil.isEmpty(detailsPage)) {
detailsPage = new ArrayList<>();
}
detailsPage.addAll(zeroPage);
@ -310,18 +315,18 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
QueryUtil.timeLe("sjsigning_time", query.getEndSjsigningTime(), queryWrapper);
// 仓库
QueryUtil.splitEqQuery("warehouse_name", query.getWarehouseNameRange(), queryWrapper);
// 配送类型
QueryUtil.splitEqQuery("type", query.getTypeRange(), queryWrapper);
// 配送种类
QueryUtil.splitEqQuery("kind", query.getKindRange(), queryWrapper);
// 配送车辆
QueryUtil.splitEqQuery("vehicle_name", query.getVehicleNameRange(), queryWrapper);
// 配送司机
QueryUtil.splitEqQuery("driver_name", query.getDriverNameRange(), queryWrapper);
// 客户名称
QueryUtil.splitEqQuery("dr_consignee", query.getConsigneeRange(), queryWrapper);
// 运单收货人
QueryUtil.splitEqQuery("consignee_name", query.getConsigneeNameRange(), queryWrapper);
// // 配送类型
// QueryUtil.splitEqQuery("type", query.getTypeRange(), queryWrapper);
// // 配送种类
// QueryUtil.splitEqQuery("kind", query.getKindRange(), queryWrapper);
// // 配送车辆
// QueryUtil.splitEqQuery("vehicle_name", query.getVehicleNameRange(), queryWrapper);
// // 配送司机
// QueryUtil.splitEqQuery("driver_name", query.getDriverNameRange(), queryWrapper);
// // 客户名称
// QueryUtil.splitEqQuery("dr_consignee", query.getConsigneeRange(), queryWrapper);
// // 运单收货人
// QueryUtil.splitEqQuery("consignee_name", query.getConsigneeNameRange(), queryWrapper);
}
@Override
@ -336,14 +341,14 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
private static void checkDetailDate(ReportDetailVO vo, DevilerDetailsQuery query) {
// 添加时间校验
if(ReportUtil.areAllPropertiesEmpty(vo)){
if (ReportUtil.areAllPropertiesEmpty(vo)) {
if (ObjectUtil.isEmpty(query.getStartTaskTime()) && ObjectUtil.isEmpty(query.getEndTaskTime()) && ObjectUtil.isEmpty(query.getStartSjsigningTime()) && ObjectUtil.isEmpty(query.getEndSjsigningTime())) {
throw new ServiceException("配送日期和签收日期必须要填一个");
}
if (ObjectUtil.isNotEmpty(query.getStartTaskTime()) && ObjectUtil.isNotEmpty(query.getEndTaskTime())) {
ReportUtil.dateIsWithinOneMonth(vo.getTaskTime(), query.getStartTaskTime(), query.getEndTaskTime(), "配送日期");
}
if(ObjectUtil.isNotEmpty(query.getStartSjsigningTime()) && ObjectUtil.isNotEmpty(query.getEndSjsigningTime())){
if (ObjectUtil.isNotEmpty(query.getStartSjsigningTime()) && ObjectUtil.isNotEmpty(query.getEndSjsigningTime())) {
ReportUtil.dateIsWithinOneMonth(null, query.getStartSjsigningTime(), query.getEndSjsigningTime(), "签收日期");
}
}
@ -433,4 +438,93 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
reportExcelUtil.export(response, deliveryDetailV2Reader, ReportDetailVO.class, queryWrapper, "配送明细报表");
}
@Override
public IPage<ReportDetailVO> detailsPageV3(DevilerDetailsQuery query) {
IPage<ReportDetailVO> page = Condition.getPage(query);
if (StrUtil.isEmpty(query.getWarehouseNameRange())) {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (ObjectUtil.isNotEmpty(myCurrentWarehouse)) {
query.setWarehouseNameRange(myCurrentWarehouse.getName());
} else {
List<BasicdataWarehouseEntity> warehouseEntities = warehouseClient.getMyWarehouseList();
query.setWarehouseNameRange(warehouseEntities.stream().map(BasicdataWarehouseEntity::getName).collect(Collectors.joining(",")));
}
}
List<ReportDetailVO> detailsPage = reportDeliverMapeer.getDetailsPageV3(page, query);
return page.setRecords(detailsPage);
}
@Override
public void exportDetailsV3(HttpServletResponse response, DevilerDetailsQuery query) {
IPage<ReportDetailVO> page = Condition.getPage(query);
page.setPages(1);
page.setSize(-1);
Integer more = 1;
if (StrUtil.isEmpty(query.getWarehouseNameRange())) {
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (ObjectUtil.isNotEmpty(myCurrentWarehouse)) {
query.setWarehouseNameRange(myCurrentWarehouse.getName());
} else {
more = 2;
List<BasicdataWarehouseEntity> warehouseEntities = warehouseClient.getMyWarehouseList();
query.setWarehouseNameRange(warehouseEntities.stream().map(BasicdataWarehouseEntity::getName).collect(Collectors.joining(",")));
}
} else {
String warehouseNameRange = query.getWarehouseNameRange();
if (StrUtil.contains(warehouseNameRange, ",")) {
more = 2;
}
}
if (more == 1) {
// 单仓,最多导出1个月的数据
if (StrUtil.isNotEmpty(query.getTrainNumber()) || StrUtil.isNotEmpty(query.getOrderPackageCode()) || StrUtil.isNotEmpty(query.getReservationCode()) || StrUtil.isNotEmpty(query.getStockArticleId())) {
} else {
if (ObjectUtil.isNotEmpty(query.getStartTaskTime()) || ObjectUtil.isNotEmpty(query.getEndTaskTime())) {
boolean withinOneMonth = DateUtil.between(query.getStartTaskTime(), query.getEndTaskTime(), DateUnit.DAY) <= 30;
if (!withinOneMonth) {
throw new ServiceException("配送日期必选且时间不超过一个月");
}
} else {
throw new ServiceException("导出时配送日期必填");
}
if (ObjectUtil.isNotEmpty(query.getStartSjsigningTime()) || ObjectUtil.isNotEmpty(query.getEndSjsigningTime())) {
boolean withinOneMonth = DateUtil.between(query.getStartSjsigningTime(), query.getEndSjsigningTime(), DateUnit.DAY) <= 30;
if (!withinOneMonth) {
throw new ServiceException("签收日期必选且时间不超过一个月");
}
} else {
throw new ServiceException("导出时签收日期必填");
}
}
} else {
// 多仓,最多导出1个星期的数据
if (StrUtil.isNotEmpty(query.getTrainNumber()) || StrUtil.isNotEmpty(query.getOrderPackageCode()) || StrUtil.isNotEmpty(query.getReservationCode()) || StrUtil.isNotEmpty(query.getStockArticleId())) {
} else {
if (ObjectUtil.isNotEmpty(query.getStartTaskTime()) || ObjectUtil.isNotEmpty(query.getEndTaskTime())) {
boolean withinOneMonth = DateUtil.between(query.getStartTaskTime(), query.getEndTaskTime(), DateUnit.DAY) <= 7;
if (!withinOneMonth) {
throw new ServiceException("配送日期必选且时间不超过7天");
}
} else {
throw new ServiceException("导出时配送日期必填");
}
if (ObjectUtil.isNotEmpty(query.getStartSjsigningTime()) || ObjectUtil.isNotEmpty(query.getEndSjsigningTime())) {
boolean withinOneMonth = DateUtil.between(query.getStartSjsigningTime(), query.getEndSjsigningTime(), DateUnit.DAY) <= 7;
if (!withinOneMonth) {
throw new ServiceException("签收日期必选且时间不超过7天 ");
}
} else {
throw new ServiceException("导出时签收日期必填");
}
}
}
List<ReportDetailVO> detailsPage = reportDeliverMapeer.getDetailsPageV3(page, query);
ReportExcelUtil.setExportHeader(response, "配送明细报表");
try {
EasyExcel.write(response.getOutputStream(), ReportDetailVO.class).sheet("配送明细").doWrite(detailsPage);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

6
blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDetailVO.java

@ -97,7 +97,7 @@ public class ReportDetailVO implements Serializable {
@ExcelProperty("订单自编码")
private String stockArticleId;
@ApiModelProperty(value = "客户电话")
@ApiModelProperty(value = "包条码")
@ExcelProperty("包条码")
private String orderPackageCode;
@ -209,4 +209,8 @@ public class ReportDetailVO implements Serializable {
@ExcelProperty("签收方式")
private String signType;
@ApiModelProperty(value = "回库状态")
@ExcelProperty("回库状态")
private String returnToStockStatus;
}

44
blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java

@ -217,12 +217,12 @@ public class WaybillCheckListener {
Integer totalCount = waybillEntity.getTotalCount();
// BigDecimal pickupPrice = pickupFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal trunklineComletPrice;
@ -230,14 +230,14 @@ public class WaybillCheckListener {
if(NumberUtil.equals(trunklineCompleteOrNot,1)){
BigDecimal totalFreight = waybillEntity.getTotalFreight();
trunklineComletPrice = totalFreight.divide(new BigDecimal(totalCount),2, BigDecimal.ROUND_HALF_UP);
trunklineComletPrice = totalFreight.divide(new BigDecimal(totalCount),8, BigDecimal.ROUND_HALF_UP);
} else {
trunklineComletPrice = BigDecimal.ZERO;
}
if(NumberUtil.equals(pickupCompleteOrNot,1)){
BigDecimal pickupFee = waybillEntity.getPickupFee();
trunklinePickupPrice = pickupFee.divide(new BigDecimal(totalCount),2, BigDecimal.ROUND_HALF_UP);
trunklinePickupPrice = pickupFee.divide(new BigDecimal(totalCount),8, BigDecimal.ROUND_HALF_UP);
} else {
trunklinePickupPrice = BigDecimal.ZERO;
}
@ -499,14 +499,14 @@ public class WaybillCheckListener {
Integer totalCount = waybillEntity.getTotalCount();
// BigDecimal pickupPrice = pickupFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal sortingPrice = sortingFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal deliveryPrice = deliveryFee.divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal warehouseManagementPrice = warehouseManagementFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal warehousePrice = warehouseFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal handlingPrice = handlingFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal insurancePrice = insuranceFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal otherPrice = otherFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal thirdOperationPrice = thirdOperationFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal sortingPrice = sortingFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal deliveryPrice = deliveryFee.divide(new BigDecimal(totalCount), 8, BigDecimal.ROUND_HALF_UP);
//查询运单下所有的订单
@ -632,8 +632,8 @@ public class WaybillCheckListener {
trunklinePackageEntity.setPickupChargeType(systemPickupChargeType);
trunklinePackageEntity.setSystemPickupChargeType(systemPickupChargeType);
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积
trunklinePackageEntity.setWeight(Objects.isNull(packageWeight) ? BigDecimal.ZERO : packageWeight);
trunklinePackageEntity.setVolume(Objects.isNull(packageVolume) ? BigDecimal.ZERO : packageVolume);
@ -740,8 +740,8 @@ public class WaybillCheckListener {
Integer num = warehouseWayBillDetail.getNum();//运单品类的总数量
BigDecimal productTotalVolume = warehouseWayBillDetail.getVolume();//运单品类总体积
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);//平摊到包件的质量
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);//平摊到包件的体积
warehousePackageEntity.setWeight(packageWeight);
warehousePackageEntity.setVolume(packageVolume);
@ -794,8 +794,8 @@ public class WaybillCheckListener {
Integer num = warehouseWayBillDetail.getNum();
BigDecimal productTotalVolume = warehouseWayBillDetail.getVolume();
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal packageWeight = productTotalWeight.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);
BigDecimal packageVolume = productTotalVolume.divide(new BigDecimal(num), 8, BigDecimal.ROUND_HALF_UP);
distributionPackageEntity.setWeight(packageWeight);
distributionPackageEntity.setVolume(packageVolume);

12
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineBillladingMapper.xml

@ -61,6 +61,18 @@
<if test="param.createUserName != null and param.createUserName != '' ">
and ltb.create_user_name = #{param.createUserName}
</if>
<if test="param.startTimeStart != null ">
and ltb.start_time &gt;= #{param.startTimeStart}
</if>
<if test="param.startTimeEnd != null ">
and ltb.start_time &lt;= #{param.startTimeEnd}
</if>
<if test="param.completeTimeStart != null ">
and ltb.end_time &gt;= #{param.completeTimeStart}
</if>
<if test="param.completeTimeEnd != null ">
and ltb.end_time &lt;= #{param.completeTimeEnd}
</if>
group by ltb.id
order by ltb.create_time desc
</select>

7
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml

@ -557,8 +557,7 @@
IFNULL(sum(IF(unload_node_id = null,0,unload_num)),0) unloadNum
from logpm_trunkline_cars_load_scan
where load_id = #{loadId}
and final_node_id = #{nodeId}
and (unload_node_id = #{nodeId} or unload_node_id is null)
and unload_node_id = #{nodeId}
and waybill_no is not null
group by waybill_no
</select>
@ -761,7 +760,9 @@
ltcls.customer_name customerName,
ltcls.customer_telephone customerTelephone,
ltcls.customer_address customerAddress,
ltcls.unload_tray_name unloadTrayName
ltcls.unload_tray_name unloadTrayName,
ltcls.material_code materialCode,
ltcls.material_name materialName
from logpm_trunkline_cars_load_scan ltcls
left join logpm_warehouse_waybill lww on ltcls.waybill_id = lww.id
where ltcls.load_id = #{param.loadId}

8
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingServiceImpl.java

@ -61,6 +61,12 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
page.setCurrent(billladingDTO.getPageNum());
page.setSize(billladingDTO.getPageSize());
billladingDTO.setStartTimeStart(CommonUtil.getStartByDateStr(billladingDTO.getStartTimeStartStr()));
billladingDTO.setStartTimeEnd(CommonUtil.getEndByDateStr(billladingDTO.getStartTimeEndStr()));
billladingDTO.setCompleteTimeStart(CommonUtil.getStartByDateStr(billladingDTO.getCompleteTimeStartStr()));
billladingDTO.setCompleteTimeEnd(CommonUtil.getEndByDateStr(billladingDTO.getCompleteTimeEndStr()));
return baseMapper.pageList(page,billladingDTO);
}
@ -407,7 +413,7 @@ public class TrunklineBillladingServiceImpl extends BaseServiceImpl<TrunklineBil
//开始提货
if ("1".equals(billladingStatus)) {
billladingEntity.setBillladingStatus("2");
billladingEntity.setStartTime(new Date());
billladingEntity.setStartTime(CommonUtil.StringToDate(completeTime));
stringBuffer.append(",未开始变更为提货中");
} else {
log.warn("##################updateBillladingStatus: 提货单不能更新为提货中 billladingStatus={}", billladingStatus);

Loading…
Cancel
Save