Browse Source

自提备货无视批次出库、客户保存

visual
汤建军 4 months ago
parent
commit
e1fa394405
  1. 8
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataClientClient.java
  2. 13
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataClientClient.java
  3. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java
  4. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryDetailsMapper.java
  5. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryDetailsMapper.xml
  6. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  7. 18
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java
  8. 32
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml
  9. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryDetailsService.java
  10. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryDetailsServiceImpl.java
  11. 152
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

8
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataClientClient.java

@ -119,4 +119,12 @@ public interface IBasicdataClientClient {
@GetMapping(API_PREFIX+"/findBasicdataClientEntitysTenantId")
List<BasicdataClientEntity> findBasicdataClientEntitysTenantId(@RequestParam String tenantId) ;
/**
* 查询制定租户下面的客户结合
* @return
*/
@PostMapping(API_PREFIX+"/saveEntity")
Long saveEntity(@RequestBody BasicdataClientEntity clientEntity) ;
}

13
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataClientClient.java

@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.security.NoSuchAlgorithmException;
import java.util.List;
/**
@ -151,4 +152,16 @@ public class BasicdataClientClient implements IBasicdataClientClient {
lambdaQueryWrapper.eq(BasicdataClientEntity::getIsDeleted, 0);// 查询未删除的客户信息
return basicdataClientService.list(lambdaQueryWrapper);
}
@Override
public Long saveEntity(BasicdataClientEntity clientEntity) {
try {
String finallyClientCode = basicdataClientService.getFinallyClientCode();
clientEntity.setClientCode(finallyClientCode);
basicdataClientService.ownSaveOrUpdate(clientEntity);
return clientEntity.getId();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java

@ -658,7 +658,6 @@ public class DistributionStockupAppController extends BladeController {
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)) {
return R.data(403, "未授权!");
}
if (scanType == 2) {
//库存品扫描

9
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryDetailsMapper.java

@ -83,4 +83,13 @@ public interface DistributionDeliveryDetailsMapper extends BaseMapper<Distributi
List<DistributionBillInventoryExcel> getBillOrderInventoryExcel(@Param("param") DistributionDeliveryDetailsEntity deliveryDetails);
List<DistributionBillInventoryExcel> getBillLadingDetailOrderInventoryExcel(@Param("id")Long id);
/**
* 查询老的计划信息
* @param billLadingId
* @param cargoNumber
* @param stockListId
* @return
*/
List<DistributionDeliveryDetailsEntity> selectStockListByReservationIdAndCargoNumber(@Param("billId")Long billId,@Param("cargoNumber") String cargoNumber,@Param("oldStockId") Long oldStockId);
}

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

@ -156,5 +156,15 @@
WHERE
lddd.bill_lading_id = #{id} and lddd.inventory_status in (1,3)
</select>
<select id="selectStockListByReservationIdAndCargoNumber"
resultType="com.logpm.distribution.entity.DistributionDeliveryDetailsEntity">
SELECT
lddd.*
FROM
logpm_distribution_delivery_details AS lddd
LEFT JOIN logpm_distribution_stock_list AS ldsl ON lddd.stock_list_id = ldsl.id
WHERE
lddd.bill_lading_id = #{billId} AND ldsl.cargo_number = #{cargoNumber} AND lddd.inventory_status in ('1','3') AND lddd.stock_list_id != #{oldStockId}
</select>
</mapper>

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

@ -890,7 +890,7 @@
ldrs.packet_bar_status IN ('1','3') and reservation_id = #{reservationId} AND ldpl.conditions = 1
</select>
<select id="getReservationNumStockSelf" resultType="Integer">
select SUM(lddd.quantity)
select IFNULL(SUM(lddd.quantity),0)
from logpm_distribution_delivery_details lddd
where lddd.inventory_status in (1,3) and lddd.bill_lading_id = #{reservationId} and lddd.stock_list_id =
#{stockListId}

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

@ -24,6 +24,7 @@ import com.logpm.distribution.dto.DistrilbutionBillLadingDTO;
import com.logpm.distribution.dto.app.BillLadingAppDTO;
import com.logpm.distribution.entity.DistributionDeliveryDetailsEntity;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionReservationStocklistEntity;
import com.logpm.distribution.entity.DistrilbutionBillLadingEntity;
import com.logpm.distribution.excel.DistrilbutionBillLadingExcel;
import com.logpm.distribution.vo.*;
@ -197,6 +198,23 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper<DistrilbutionB
*/
List<WaybillLogDTO> getWaybillSignforData(@Param("id")Long id,@Param("userId") Long userId,@Param("nickName") String nickName);
/**
* 查询库存品物料数量
* @param reservationId
* @param stockListId
* @return
*/
Integer getPlanInventoryNumByInventoryId(@Param("billId") Long billId,@Param("stockListId") Long stockListId);
/**
* 查询自提存在同物料的库存品
* @param reservationId
* @param cargoNumber
* @return
*/
List<DistributionDeliveryDetailsEntity> selectInventoryListByIdAndMateriel(@Param("billId") Long billId, @Param("cargoNumber") String cargoNumber);
// Page<DistrilbutionBillLadingAppVO> getInventoryPage(IPage<Object> page, DistrilbutionBillLadingEntity distrilbutionBillLadingEntity);
}

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

@ -1081,6 +1081,38 @@
GROUP BY
t.waybillNo
</select>
<select id="getPlanInventoryNumByInventoryId" resultType="java.lang.Integer">
SELECT
IFNULL(oldInventory.num,0)
FROM
( SELECT ldsl.cargo_number, ldsl.market_name FROM logpm_distribution_stock_list AS ldsl WHERE ldsl.id = #{stockListId} AND ldsl.is_deleted = 0 ) AS newInventory
LEFT JOIN (
SELECT
ldsl.cargo_number,
ldsl.market_name,
IFNULL( SUM( lddd.quantity ), 0 ) AS num
FROM
logpm_distribution_delivery_details AS lddd
LEFT JOIN logpm_distribution_stock_list AS ldsl ON lddd.stock_list_id = ldsl.id
WHERE
lddd.bill_lading_id = #{billId}
AND lddd.inventory_status != 2
AND lddd.is_deleted = 0
GROUP BY
ldsl.cargo_number
) AS oldInventory ON newInventory.cargo_number = oldInventory.cargo_number
AND newInventory.market_name = oldInventory.market_name
</select>
<select id="selectInventoryListByIdAndMateriel"
resultType="com.logpm.distribution.entity.DistributionDeliveryDetailsEntity">
SELECT
lddd.*
FROM
logpm_distribution_delivery_details AS lddd
LEFT JOIN logpm_distribution_stock_list AS ldsl ON lddd.stock_list_id = ldsl.id
WHERE
lddd.bill_lading_id = #{billId} AND ldsl.cargo_number = #{cargoNumber} AND lddd.inventory_status != 2
</select>
</mapper>

11
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryDetailsService.java

@ -24,6 +24,7 @@ import com.logpm.distribution.excel.DistributionDeliveryDetailsExcel;
import com.logpm.distribution.vo.DistributionBillInventoryVO;
import com.logpm.distribution.vo.DistributionDeliveryDetailsVO;
import com.logpm.distribution.vo.app.DistrilbutionBillLadingInventoryAppVO;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
@ -89,4 +90,14 @@ public interface IDistributionDeliveryDetailsService extends BaseService<Distrib
List<DistributionBillInventoryExcel> getBillLadingDetailOrderInventoryExcel(Long id);
void maintainInvnetory(Long l);
/**
* 查询库存品
* @param billLadingId
* @param cargoNumber
* @param stockListId
* @return
*/
List<DistributionDeliveryDetailsEntity> selectStockListByReservationIdAndCargoNumber( Long billLadingId, String cargoNumber, Long stockListId);
}

5
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryDetailsServiceImpl.java

@ -196,4 +196,9 @@ public class DistributionDeliveryDetailsServiceImpl extends BaseServiceImpl<Dist
}
}
@Override
public List<DistributionDeliveryDetailsEntity> selectStockListByReservationIdAndCargoNumber(Long billLadingId, String cargoNumber, Long stockListId) {
return baseMapper.selectStockListByReservationIdAndCargoNumber(billLadingId,cargoNumber,stockListId);
}
}

152
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

@ -241,6 +241,8 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
private IBasicMaterialClient basicMaterialClient;
@Override
public IPage<DistributionStockupVO> selectDistributionStockupPage(IPage<DistributionStockupVO> page, DistributionStockupVO distributionStockup) {
return page.setRecords(baseMapper.selectDistributionStockupPage(page, distributionStockup));
@ -1778,7 +1780,8 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if (ObjectUtils.isNotNull(one) && "3".equals(one.getStockUpType())) {
//自提
//通过预约单id和订单
Integer num = distributionReservationService.getReservationNumStockSelf(reservationId, stockListId);
// Integer num = distributionReservationService.getReservationNumStockSelf(reservationId, stockListId);
Integer num =distrilbutionBillLadingMapper.getPlanInventoryNumByInventoryId(reservationId, stockListId);
if (packageNum.compareTo(num) > 0) {
log.warn("###################createPackageCode: 包条数量与预约数量不正确");
throw new CustomerException(405, "包条数量与预约数量不正确");
@ -2358,8 +2361,6 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
//查询仓库信息 库存品信息
DistributionStockListEntity byId = distributionStockListService.getById(stockupDTO.getStockListId());
//有 绑定 查询有没有库存品信息
List<DisStockListDetailEntity> list1 = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getStockListId, stockupDTO.getStockListId())
.eq(DisStockListDetailEntity::getReservationId, stockupDTO.getReservationId())
@ -3949,6 +3950,7 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
Long stockupId = stockupDTO.getStockupId();//备货区
Long allocationId = stockupDTO.getAllocationId();//备货区
Integer stockPrint = stockupDTO.getStockPrint(); // 库存
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)) {
return R.data(403, "未授权!!!");
@ -4015,13 +4017,6 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
.map(DistributionReservationStocklistEntity::getStocklistId)
.anyMatch(s -> s.equals(finalById.getId()));
if (!flag) {
DistributionReservationStocklistEntity rs = getDistributionReservationStocklistEntity(stockupDTO, byId);
distributionReservationStocklistService.save(rs);
DistributionStockListEntity stockListEntity = distributionStockListService.getById(byId.getId());
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + 1);
distributionStockListService.updateById(stockListEntity);
//原来对应的需要进行计划减少
//收集满足修改条件的计划库存品
List<DistributionReservationStocklistEntity> reservationStocklistEntities = new ArrayList<>();
@ -4033,6 +4028,15 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if (Func.isEmpty(reservationStocklistEntities)) {
return R.fail("该物料库存品备货已完成");
}
DistributionReservationStocklistEntity rs = getDistributionReservationStocklistEntity(stockupDTO, byId);
distributionReservationStocklistService.save(rs);
DistributionStockListEntity stockListEntity = distributionStockListService.getById(byId.getId());
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + 1);
distributionStockListService.updateById(stockListEntity);
DistributionReservationStocklistEntity reservationStocklistEntity = reservationStocklistEntities.get(0);
int oldRsNum = reservationStocklistEntity.getReservationNum() - 1;
if (oldRsNum < 0) {
@ -4118,6 +4122,121 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
}
}
//当前库位最先入库的批次和计划批次一致
}else {
//查询是否存在于自提的库存品信息中
List<DistributionDeliveryDetailsEntity> billStocklistEntityList = distrilbutionBillLadingMapper.selectInventoryListByIdAndMateriel(stockupDTO.getReservationId(), stockupDTO.getCargoNumber());
if (!billStocklistEntityList.isEmpty()) {
DistributionStockListEntity finalById = byId;
//检测是否存在计划中
boolean flag = billStocklistEntityList.stream()
.map(DistributionDeliveryDetailsEntity::getStockListId)
.anyMatch(s -> s.equals(finalById.getId()));
if (!flag){
//不存在计划中
List<DistributionDeliveryDetailsEntity> targetDeliveryDetailsEntity = new ArrayList<>();
for (DistributionDeliveryDetailsEntity deliveryDetails : billStocklistEntityList) {
if (deliveryDetails.getQuantity() >= deliveryDetails.getRealityQuantity() && deliveryDetails.getRealityQuantity() > 0) {
targetDeliveryDetailsEntity.add(deliveryDetails);
}
}
if (Func.isEmpty(targetDeliveryDetailsEntity)) {
return R.fail("该物料库存品备货已完成");
}
//新增此物料计划
DistributionDeliveryDetailsEntity distributionBillStocklistEntity = getDistributionBillStocklistEntity(stockupDTO, byId);
distributionDeliveryDetailsService.save(distributionBillStocklistEntity);
DistributionStockListEntity stockListEntity = distributionStockListService.getById(byId.getId());
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() + 1);
distributionStockListService.updateById(stockListEntity);
DistributionDeliveryDetailsEntity deliveryDetails = targetDeliveryDetailsEntity.get(0);
int oldRsNum = deliveryDetails.getQuantity() - 1;
if (oldRsNum < 0) {
return R.fail("操作数据错误");
}
deliveryDetails.setQuantity(oldRsNum);
if (deliveryDetails.getQuantity() == 0) {
deliveryDetails.setInventoryStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
distributionDeliveryDetailsService.updateById(deliveryDetails);
//维护老的的冻结数量
DistributionStockListEntity oldStockList = distributionStockListService.getById(deliveryDetails.getStockListId());
oldStockList.setQuantityOccupied(oldStockList.getQuantityOccupied() - 1);
distributionStockListService.updateById(oldStockList);
//查询对应的包件进行修改
List<DisStockListDetailEntity> stockListDetailEntities = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, stockupDTO.getReservationId())
.eq(DisStockListDetailEntity::getStockListId, oldStockList.getId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
DisStockListDetailEntity disStockListDetailEntity = stockListDetailEntities.stream().filter(s -> Func.isBlank(s.getStockPackageCode())).collect(Collectors.toList()).get(0);
disStockListDetailEntity.setStockListId(distributionBillStocklistEntity.getStockListId());
// disStockListDetailEntity.setStockStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
disStockListDetailService.updateById(disStockListDetailEntity);
}else {
//判断是否是为增加库存品进行数据维护
DistributionStockListEntity finalById1 = byId;
DistributionDeliveryDetailsEntity deliveryDetails = billStocklistEntityList.stream().filter(f -> f.getStockListId().equals(finalById1.getId())).collect(Collectors.toList()).get(0);
//因为新增库存品的时候会完成扫描 此时的增加数和备货数量时一样的
if (deliveryDetails.getInventoryStatus().equals(ReservationOrderStatusConstant.zengjia.getValue()) && Objects.equals(deliveryDetails.getQuantity(), deliveryDetails.getRealityQuantity())) {
List<DistributionDeliveryDetailsEntity> oldRS = distributionDeliveryDetailsService.selectStockListByReservationIdAndCargoNumber(deliveryDetails.getBillLadingId(), stockupDTO.getCargoNumber(), deliveryDetails.getStockListId());
//收集满足条件的库存品
List<DistributionDeliveryDetailsEntity> rs = new ArrayList<>();
for (DistributionDeliveryDetailsEntity oldR : oldRS) {
if (oldR.getQuantity() >= oldR.getRealityQuantity() && oldR.getQuantity() > 0) {
rs.add(oldR);
}
}
if (Func.isEmpty(rs)) {
//不存在还需要进行备货的库存品
return R.fail("该物料库存品备货已完成");
}
DistributionDeliveryDetailsEntity oldReservationStockList = rs.get(0);
int oldReservationNum = oldReservationStockList.getQuantity() - 1;
oldReservationStockList.setQuantity(oldReservationNum);
if (oldReservationNum == 0) {
oldReservationStockList.setInventoryStatus(ReservationOrderStatusConstant.quxiao.getValue());
}
distributionDeliveryDetailsService.updateById(oldReservationStockList);
//修改对应库存品数量
DistributionStockListEntity stockListEntity = distributionStockListService.getById(oldReservationStockList.getStockListId());
stockListEntity.setQuantityOccupied(stockListEntity.getQuantityOccupied() - 1);
distributionStockListService.updateById(stockListEntity);
//找出对库存品包件信息进行包件的修改
List<DisStockListDetailEntity> oldRsPack = disStockListDetailService.list(Wrappers.<DisStockListDetailEntity>query().lambda()
.eq(DisStockListDetailEntity::getReservationId, oldReservationStockList.getBillLadingId())
.eq(DisStockListDetailEntity::getStockListId, oldReservationStockList.getStockListId())
.ne(DisStockListDetailEntity::getStockPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
if (Func.isEmpty(oldRsPack)) {
return R.fail("该物料库存品备货已完成");
}
List<DisStockListDetailEntity> collect = oldRsPack.stream().filter(f -> Func.isBlank(f.getStockPackageCode())).collect(Collectors.toList());
DisStockListDetailEntity disStockListDetailEntity = collect.get(0);
disStockListDetailEntity.setStockListId(deliveryDetails.getStockListId());
disStockListDetailService.updateById(disStockListDetailEntity);
deliveryDetails.setQuantity(deliveryDetails.getQuantity() + 1);
distributionDeliveryDetailsService.updateById(deliveryDetails);
//维护库存品在库数量
DistributionStockListEntity newStockList = distributionStockListService.getById(deliveryDetails.getStockListId());
newStockList.setQuantityOccupied(newStockList.getQuantityOccupied() + 1);
distributionStockListService.updateById(newStockList);
}
}
}
}
}
if (Func.isNotEmpty(byId)) {
@ -4542,4 +4661,17 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
rs.setStocklistId(byId.getId());
return rs;
}
@NotNull
private static DistributionDeliveryDetailsEntity getDistributionBillStocklistEntity(StockupDTO stockupDTO, DistributionStockListEntity byId) {
DistributionDeliveryDetailsEntity ddd = new DistributionDeliveryDetailsEntity();
ddd.setInventoryStatus(ReservationOrderStatusConstant.zengjia.getValue());
ddd.setBillLadingId(stockupDTO.getReservationId());
ddd.setRealityQuantity(0);
ddd.setConditions("10");
ddd.setStockStatus("1");
ddd.setStockListId(byId.getId());
return ddd;
}
}

Loading…
Cancel
Save