Преглед изворни кода

限制物流自动派单合同数量

tangyishan пре 1 месец
родитељ
комит
4f1be1f3ec

+ 19 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/repository/KwcContractLogisticsRepository.java

@@ -11,6 +11,7 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
@@ -78,4 +79,22 @@ public class KwcContractLogisticsRepository extends ServiceImpl<KwcContractLogis
                 .like(org.apache.commons.lang3.StringUtils.isNotBlank(contractNo),KwcContractLogistics::getContractNo, contractNo)
                 .like(org.apache.commons.lang3.StringUtils.isNotBlank(contractName),KwcContractLogistics::getName, contractName));
     }
+
+    /**
+     * 查询时间范围内的指定派车方式的物流合同
+     * @param contractIdList
+     * @param startTime
+     * @param endTime
+     * @param dispatchingType
+     * @return
+     */
+    public KwcContractLogistics queryBy(Set<Long> contractIdList, Date startTime, Date endTime, Integer dispatchingType) {
+        return getOne(Wrappers.<KwcContractLogistics>lambdaQuery()
+                .eq(KwcContractLogistics::getDelFlag, 0)
+                .in(KwcContractLogistics::getId, contractIdList)
+                .eq(KwcContractLogistics::getDispatching, dispatchingType)
+                .and(queryWrapper -> queryWrapper.between(KwcContractLogistics::getStartTime, startTime, endTime)
+                        .or().between(KwcContractLogistics::getEndTime, startTime, endTime)
+                        .or(queryWrapper1->queryWrapper1.le(KwcContractLogistics::getStartTime, startTime).ge(KwcContractLogistics::getEndTime, endTime))));
+    }
 }

+ 15 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java

@@ -1258,6 +1258,9 @@ public class KwcContractLogisticsService {
             saveContractLogistics.setEndTime(DateUtils.getEndOfDay(baseInfo.getEndTime()));
         }
 
+        //校验物流企业是否存在同时段的自动派车合同
+        checkAutoDispatchingContractExist(baseInfo);
+
         saveContractLogistics.setStatus(ContractStatusEnum.SUBMIT.getCode());
         saveContractLogistics.setCreateBy(LoginUserHolder.getUserId());
         saveContractLogistics.setCreateTime(date);
@@ -1286,6 +1289,18 @@ public class KwcContractLogisticsService {
 
         return Boolean.TRUE;
     }
+
+    public void checkAutoDispatchingContractExist(LogisticListReq.TradeBaseInfo baseInfo) {
+        List<KwcContractLogisticsUnit> units = kwcContractLogisticsUnitRepository.queryByEntIdAndEntType(baseInfo.getPurchaseEntId(), EntTypeEnum.LOGISTICS4.getCode());
+        if (CollectionUtils.isNotEmpty(units)) {
+            Set<Long> contractIdList = units.stream().map(KwcContractLogisticsUnit::getContractId).collect(Collectors.toSet());
+            KwcContractLogistics kwcContractLogistics = kwcContractLogisticsRepository.queryBy(contractIdList,baseInfo.getStartTime(),baseInfo.getEndTime(),Integer.parseInt(DictEnum.DISPATCHING_TYPE_2.getValue()));
+            if (Objects.nonNull(kwcContractLogistics)){
+                throw new BusinessException("当前物流企业在合同时间段内已存在自动派车合同");
+            }
+        }
+    }
+
     private String changeFile(String contractFile) {
         if (StringUtils.isNotBlank(contractFile)) {
             JSONArray jsonArray = JSONArray.parseArray(contractFile);