Browse Source

1.自提單打印

training
pref_mail@163.com 11 months ago
parent
commit
daeb1496d4
  1. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 8
      blade-biz-common/src/main/java/org/springblade/common/constant/printTemplate/PrintTemplateStatusConstant.java
  3. 3
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataWarehouseEntity.java
  4. 4
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java
  5. 3
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistrilbutionBillLadingEntity.java
  6. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistrilbutionBillLadingController.java
  7. 13
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java
  8. 23
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml
  9. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockMapper.java
  10. 275
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  11. 2
      blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java

2
blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java

@ -8,7 +8,7 @@ public interface ModuleNameConstant {
/**
* 如果不需要 ""
*/
public static final String DEVAUTH ="";
public static final String DEVAUTH ="-pref";
/**
* 工厂对接服务名称

8
blade-biz-common/src/main/java/org/springblade/common/constant/printTemplate/PrintTemplateStatusConstant.java

@ -8,7 +8,7 @@ package org.springblade.common.constant.printTemplate;
*/
public enum PrintTemplateStatusConstant {
daiqueren_1("配送任务打印模板-市配","1"),
daiqueren_2("配载计划打印模板","2"),
daiqueren_3("运单票据打印模板","3"),
daiqueren_4("托运单模板","4"),
@ -19,9 +19,9 @@ public enum PrintTemplateStatusConstant {
daiqueren_9("货架码模板","9"),
daiqueren_10("包件模板","10"),
daiqueren_11("库存品包件模板","11"),
daiqueren_12("配送任务打印模板-商配","12");
daiqueren_12("配送任务打印模板-商配","12"),
peisongtask_ziti("配送任务打印模板-自提","13"),
daiqueren_1("配送任务打印模板-市配","1");
/**
* 状态
*/

3
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataWarehouseEntity.java

@ -39,7 +39,8 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true)
public class BasicdataWarehouseEntity extends TenantEntity {
/**
public Object var;
/**
* 预留1
*/
@ApiModelProperty(value = "预留1")

4
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java

@ -25,14 +25,14 @@ import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
* 库存品详情信息 实体类
* PAD备货扫描记录 实体类
*
* @author cyz
* @since 2023-06-26
*/
@Data
@TableName("logpm_distribution_stock")
@ApiModel(value = "DistributionStock对象", description = "库存品详情信息")
@ApiModel(value = "DistributionStock对象", description = "PAD备货扫描记录")
@EqualsAndHashCode(callSuper = true)
public class DistributionStockEntity extends TenantEntity {

3
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistrilbutionBillLadingEntity.java

@ -82,6 +82,9 @@ public class DistrilbutionBillLadingEntity extends TenantEntity {
*/
@ApiModelProperty(value = "提货人")
private String consignee;
@ApiModelProperty(value = "提货人电话")
private String consigneePhone;
/**
* 提货车牌
*/

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistrilbutionBillLadingController.java

@ -285,6 +285,9 @@ public class DistrilbutionBillLadingController extends BladeController {
}
/**
* 导出数据
*/

13
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.java

@ -113,4 +113,17 @@ public interface DistributionParcelListMapper extends BaseMapper<DistributionPar
List<DistributionParcelListExcel> exportDistributionParcelList(@Param("paramMap")Map<String, Object> paramMap, @Param("idArr") List<String> idArr);
void freezeByOrderCode(@Param("orderCode") String orderCode,@Param("freezeStatus") String freezeStatus);
/**
* 包件列表查询库位信息
* @param orderCodes
* @param warehouseId
* @return
*/
List<String> selectAllocationInforByOrderPackageCode(@Param("orderCodes") List<String> orderCodes,@Param("warehouseId") Long warehouseId);
}

23
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionParcelListMapper.xml

@ -835,6 +835,29 @@
</where>
</select>
<select id="selectAllocationInforByOrderPackageCode" resultType="string">
select DISTINCT lwga.qr_code
from
logpm_distribution_parcel_list ldpl
left join logpm_warehouse_updown_goods lwug on lwug.association_id = ldpl.id
LEFT JOIN logpm_warehouse_goods_allocation lwga on lwga.id=lwug.allocation_id
where ldpl.is_deleted = 0
and lwug.warehouse_id=#{warehouseId}
<if test="orderCodes != null and orderCodes != ''">
and ldpl.order_package_code in
<foreach collection="orderCodes" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</select>
<update id="freezeByOrderCode" >
update logpm_distribution_parcel_list
set order_package_freeze_status = #{freezeStatus}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockMapper.java

@ -28,7 +28,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 库存品详情信息 Mapper 接口
* PAD备货扫描记录 Mapper 接口
*
* @author cyz
* @since 2023-06-26

275
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java

@ -154,6 +154,17 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
private final IDistributionParcelNumberService distributionParcelNumberService;
private final IWarehouseTrayGoodsClient warehouseTrayGoodsClient;
// 自提mapper
private final DistrilbutionBillLadingMapper distrilbutionBillLadingMapper;
// 自提关联订单
private final DistrilbutionBillStockMapper distrilbutionBillStockMapper;
// 自提关联包件
private final DistrilbutionBillPackageMapper distrilbutionBillPackageMapper;
private final DistributionParcelListMapper distributionParcelListMapper;
// private final IWarehouseRetentionScanClient warehouseRetentionScanClient;
// @Lazy
@ -4540,6 +4551,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
}
/**
* @param ids 预览Id
* @param type 1 市配 2 商配 3 自提
* @return
* @throws Exception
*/
@Override
public List<PrintPreviewVO> printBatch(String ids, Integer type) throws Exception {
@ -4556,18 +4573,240 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
throw new ServiceException("参数错误");
}
if (2 == type) {
return handleShiPeiData(template, idArray, html);
} else if (1 == type) {
return handleShangPeiData(template.getId(), idArray, html);
} else if (3 == type) {
// 自提
return handleZiTiData(template, idArray, html);
} else {
log.warn("###########printBatch: 未知的打印类型");
throw new CustomerException(403, "未知的打印类型");
}
}
/**
* 自提配送单
*
* @param template
* @param idArray
* @param html
* @return
*/
private List<PrintPreviewVO> handleZiTiData(BasicPrintTemplateEntity template, String[] idArray, String html) throws Exception {
List<PrintPreviewVO> result = new ArrayList<>();
for (String id : idArray) {
//查询自提预约单
DistrilbutionBillLadingEntity distrilbutionBillLadingEntity = distrilbutionBillLadingMapper.selectById(Long.parseLong(id));
// 查询自提预约单下面的订单
LambdaQueryWrapper<DistrilbutionBillStockEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistrilbutionBillStockEntity::getBillLadingId, distrilbutionBillLadingEntity.getId());
List<DistrilbutionBillStockEntity> distrilbutionBillStockEntities = distrilbutionBillStockMapper.selectList(queryWrapper);
// 查找自提预约单下面包件 排除取消的
LambdaQueryWrapper<DistrilbutionBillPackageEntity> distrilbutionBillStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
distrilbutionBillStockEntityLambdaQueryWrapper.eq(DistrilbutionBillPackageEntity::getBillLadingId, distrilbutionBillLadingEntity.getId());
distrilbutionBillStockEntityLambdaQueryWrapper.ne(DistrilbutionBillPackageEntity::getPacketBarStatus, 2);
List<DistrilbutionBillPackageEntity> distrilbutionBillPackageEntities = distrilbutionBillPackageMapper.selectList(distrilbutionBillStockEntityLambdaQueryWrapper);
Set<Long> ids = new HashSet<Long>();
for (DistrilbutionBillPackageEntity distrilbutionBillPackageEntity : distrilbutionBillPackageEntities) {
ids.add(distrilbutionBillPackageEntity.getParceListId());
}
// 得到所以的订单列表
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListMapper.selectBatchIds(ids);
Map<String, Object> map = new HashMap<>();
map.put("自提单号", distrilbutionBillLadingEntity.getPickupBatch());
String fileTypeName = QRCodeUtil.createCodeToFile(map.get("自提单号").toString());
map.put("自提单二维码", QRCodeUtil.getEmpAutograph(fileTypeName));
// map.put("收货单单位", reservationEntity.getReceivingUnit());//收货单单位
// map.put("商场名称", reservationEntity.getStoreName());//商场名称
// 构建map集合中收货单和商场名称
buildMapByDistrilbutionBillLadingEntity(map, distrilbutionBillStockEntities, distributionParcelListEntities,distrilbutionBillLadingEntity);
map.put("提货人", distrilbutionBillLadingEntity.getConsignee());//提货人
map.put("联系电话", distrilbutionBillLadingEntity.getConsigneePhone());//收货人电话
BasicdataWarehouseEntity entityWarehouseId = warehouseClient.getEntityWarehouseId(distrilbutionBillLadingEntity.getWarehouseId());
map.put("自提仓库", entityWarehouseId!=null?entityWarehouseId.getName():"");
map.put("自提时间", DateUtil.formatDateTime(distrilbutionBillLadingEntity.getPickUpTime()));
map.put("提货车牌号", distrilbutionBillLadingEntity.getPickUpPlate());
String popHtml = TemplateUtil.popTemplate("自提配送单", map, html);
PrintPreviewVO printPreviewVO = new PrintPreviewVO();
printPreviewVO.setTemplateId(template.getId());
printPreviewVO.setTemplateHtml(popHtml);
result.add(printPreviewVO);
}
return result;
}
private void buildMapByDistrilbutionBillLadingEntity(Map<String, Object> map, List<DistrilbutionBillStockEntity> distrilbutionBillStockEntities, List<DistributionParcelListEntity> distributionParcelListEntities,DistrilbutionBillLadingEntity distrilbutionBillLadingEntity) {
// 查询订单集合
Set<Long> ids = new HashSet<Long>();
for (DistrilbutionBillStockEntity distrilbutionBillStockEntity : distrilbutionBillStockEntities) {
ids.add(distrilbutionBillStockEntity.getStockArticleId());
}
// 得到所以的订单列表
List<DistributionStockArticleEntity> distributionStockArticleEntities = distributionStockArticleMapper.selectBatchIds(ids);
// 获取订单中的商城和收货单位
StringBuilder consigneeUnit = new StringBuilder();
StringBuilder mailNames = new StringBuilder();
List<Map<String, Object>> ls = new ArrayList<>();
int a = 1;
// 构建产品明细的表头 -- 这里目前只处理了定制品和有数据的库存品,对于零担 还没有处理
List<Map<String, Object>> listMapTemp = new ArrayList<>();
Map<String, Object> m = new HashMap<>();
for (DistributionParcelListEntity distributionParcelListEntity : distributionParcelListEntities) {
if (m.containsKey(distributionParcelListEntity.getThirdProduct())) {
int o = (int) m.get(distributionParcelListEntity.getThirdProduct());
o = o + 1;
m.put(distributionParcelListEntity.getThirdProduct(), o);
} else {
m.put(distributionParcelListEntity.getThirdProduct(), 1);
}
}
// 加入到集合中的去 目的是为了获取分类头部
listMapTemp.add(m);
for (DistributionStockArticleEntity distributionStockArticleEntity : distributionStockArticleEntities) {
// 需要从所有的包件的
List<DistributionParcelListEntity> ts = new ArrayList<>();
for (DistributionParcelListEntity distributionParcelListEntity : distributionParcelListEntities) {
if (distributionParcelListEntity.getStockArticleId().equals(distributionStockArticleEntity.getId())){
ts.add(distributionParcelListEntity);
}
}
if (!mailNames.toString().contains(distributionStockArticleEntity.getMallName())) {
if (!mailNames.toString().equals("")) {
mailNames.append(",");
}
mailNames.append(distributionStockArticleEntity.getMallName());
}
if (!consigneeUnit.toString().contains(distributionStockArticleEntity.getConsigneeUnit())) {
if (!consigneeUnit.toString().equals("")) {
consigneeUnit.append(",");
}
consigneeUnit.append(distributionStockArticleEntity.getConsigneeUnit());
}
Map<String, Object> tempMap = new HashMap<>();
tempMap.put("序号", a);
tempMap.put("运单号", distributionStockArticleEntity.getWaybillNumber());
tempMap.put("合同号", distributionStockArticleEntity.getOrderCode());
String materialNameStr = buildMaterialNameStr(distributionParcelListEntities);
tempMap.put("物料名称", materialNameStr);
// 构建产品明细 --对于每一个订单
buildProductDetail(tempMap, m, ts);
// 查询货物货位
//通过订单id和预约id查询对应包件的库位信息
List<String> orderPackageCodes = ts.stream()
.map(DistributionParcelListEntity::getOrderPackageCode) // 获取每个对象的orderPackageCode
.collect(Collectors.toList());
List<Long> orderPackageIds = ts.stream()
.map(DistributionParcelListEntity::getId) // 获取每个对象的包件ID
.collect(Collectors.toList());
List<String> allocationStrList = distributionParcelListMapper.selectAllocationInforByOrderPackageCode(orderPackageCodes, distrilbutionBillLadingEntity.getWarehouseId());
String allocationStr = StringUtils.join(allocationStrList, ",");
tempMap.put("货位", allocationStr);
//通过订单id和预约id查询对应包件的备货区信息
LambdaQueryWrapper<DistributionStockEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionStockEntity::getBillLadingId,distrilbutionBillLadingEntity.getId()).in(DistributionStockEntity::getParcelListId,orderPackageIds);
List<DistributionStockEntity> distributionStockEntities = distributionStockMapper.selectList(lambdaQueryWrapper);
Set<String> stockupAreaStrList=distributionStockEntities.stream().map(DistributionStockEntity::getStockupArea).collect(Collectors.toSet());
String stockupAreaStr = StringUtils.join(stockupAreaStrList, ",");
tempMap.put("备货区", stockupAreaStr);
ls.add(tempMap);
a++;
}
map.put("收货单单位", consigneeUnit.toString());
map.put("商场名称", mailNames.toString());
map.put("明细", ls);
}
/**
* 构建分类明细
* @param tempMap
* @param m
* @param distributionParcelListEntities
*/
private void buildProductDetail(Map<String, Object> tempMap, Map<String, Object> m, List<DistributionParcelListEntity> distributionParcelListEntities) {
Set<String> strings = m.keySet();
for (String string : strings) {
int count = buildCountNum(string, distributionParcelListEntities);
tempMap.put(string, count);
}
}
/**
* 统计分类对于件的数量
*
* @param string
* @param distributionParcelListEntities
* @return
*/
private int buildCountNum(String string, List<DistributionParcelListEntity> distributionParcelListEntities) {
int num = 0;
for (DistributionParcelListEntity distributionParcelListEntity : distributionParcelListEntities) {
if (distributionParcelListEntity.getThirdProduct().equals(string)) {
num++;
}
}
return num;
}
private String buildMaterialNameStr(List<DistributionParcelListEntity> distributionParcelListEntitie) {
StringBuffer sb = new StringBuffer();
for (DistributionParcelListEntity distributionParcelListEntity : distributionParcelListEntitie) {
if(ObjectUtils.isNotNull(distributionParcelListEntity.getMallName())){
if (!sb.toString().equals("")) {
sb.append(",");
}
sb.append(distributionParcelListEntity.getMaterialName());
}
}
return sb.toString();
}
@Override
public void testData(String s) throws Exception {
String[] split = s.split(",");
@ -5182,27 +5421,27 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//如果均不存在则就该判断该货物是否属于当前的配送任务,如果属于则是未装车,如果不属于则此码无效
List<DistributionParcelListEntity> distributionParcelListEntities = baseMapper.selectPackageListByDeliveryListId(deliveryListEntity.getId());
boolean flag = false;
if (Func.isNotEmpty(distributionParcelListEntities)){
if (Func.isNotEmpty(distributionParcelListEntities)) {
List<DistributionParcelListEntity> isHave = distributionParcelListEntities.stream().filter(p -> p.getOrderPackageCode().equals(distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList());
if (Func.isNotEmpty(isHave)){
if (Func.isNotEmpty(isHave)) {
flag = isHave.size() == 1;
}
}else {
} else {
List<DisStockListDetailEntity> disStockListDetailEntities = baseMapper.selectInventoryListByDeliveryListId(distrilbutionloadingscanDTO.getDeliveryId());
if (Func.isNotEmpty(disStockListDetailEntities)){
if (Func.isNotEmpty(disStockListDetailEntities)) {
List<DisStockListDetailEntity> isHaveinven = disStockListDetailEntities.stream().filter(inven -> Func.isNotEmpty(inven.getStockPackageCode()) && inven.getStockPackageCode().equals(distrilbutionloadingscanDTO.getBarcode())).collect(Collectors.toList());
if (Func.isNotEmpty(isHaveinven)){
if (Func.isNotEmpty(isHaveinven)) {
flag = isHaveinven.size() == 1;
}
}
}
if (flag){
if (flag) {
//存在该订制品或者库存品包件信息但是未进行装车操作
return Resp.scanFail("包件未装车","包件未装车");
}else {
return Resp.scanFail("包件未装车", "包件未装车");
} else {
//该配送任务查询无该包件信息
return Resp.scanFail("此配送无该包件","此配送无该包件信息");
return Resp.scanFail("此配送无该包件", "此配送无该包件信息");
}
}
@ -5429,10 +5668,10 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
if (Func.isNotEmpty(zeroLoadscanEntity)) {
//存在装车数据
int num = zeroLoadscanEntity.getLoadedNub() - retentionQuantity;
if (num < 0){
if (num < 0) {
zeroLoadscanEntity.setLoadedNub(0);
zeroLoadscanEntity.setPackageNub(0);
}else {
} else {
zeroLoadscanEntity.setLoadedNub(num);
zeroLoadscanEntity.setLoadedNub(num);
}
@ -5440,7 +5679,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
//扣减装车数量
int a = distributionSignforMapper.deductionLoadingPacjageNum(zeroLoadscanEntity.getReservationId(), zeroLoadscanEntity.getDeliveryId(), retentionQuantity);
}
distributionAsyncService.checkRetentionZeroPackageReservationAndDeliveryInfo(reservationId, deliveryId, orderPackageId,orderId);
distributionAsyncService.checkRetentionZeroPackageReservationAndDeliveryInfo(reservationId, deliveryId, orderPackageId, orderId);
return true;
} else {
return false;
@ -5449,8 +5688,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
return false;
}
}else {
log.error("#############查询出多条零担包件信息:{}",row);
} else {
log.error("#############查询出多条零担包件信息:{}", row);
return false;
}
@ -5768,6 +6007,8 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.daiqueren_1.getValue());
} else if (1 == type) {
template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.daiqueren_12.getValue());
} else if (3 == type) {
template = basicPrintTemplateClient.getPrintTemplate(PrintTemplateStatusConstant.peisongtask_ziti.getValue());
}
if (ObjectUtil.isEmpty(template)) {
throw new ServiceException("模板内容未找到");

2
blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java

@ -32,7 +32,7 @@ public class TestService {
@Test
public void test3() throws Exception {
List<PrintPreviewVO> ls = distributionDeliveryListService.printBatch("1704390271891935233",2);
List<PrintPreviewVO> ls = distributionDeliveryListService.printBatch("1725390137390186498",3);
System.out.println(ls);

Loading…
Cancel
Save