Explorar o código

Merge remote-tracking branch 'origin/master' into master

# Conflicts:
#	ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java
肖路 hai 12 horas
pai
achega
e4e14bf7d2
Modificáronse 23 ficheiros con 270 adicións e 97 borrados
  1. 8 0
      ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerPreparedService.java
  2. 3 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java
  3. 15 9
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/PartnerPreparedController.java
  4. 21 21
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/PartnerPreparedProductController.java
  5. 2 1
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/PartnerPreparedVo.java
  6. 18 17
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemotePartnerPreparedServiceImpl.java
  7. 9 5
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/IPartnerPreparedService.java
  8. 2 2
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java
  9. 42 19
      ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/PartnerPreparedServiceImpl.java
  10. 3 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/pc/PcOrderController.java
  11. 14 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderAssignment.java
  12. 3 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderMain.java
  13. 15 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderAssignmentBo.java
  14. 3 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderMainBo.java
  15. 14 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderSplitAssignBo.java
  16. 20 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderAssignmentVo.java
  17. 8 0
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderMainVo.java
  18. 2 1
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderStatusLogVo.java
  19. 4 4
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/IOrderMainService.java
  20. 24 6
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderAssignmentServiceImpl.java
  21. 1 1
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderDeliverServiceImpl.java
  22. 34 5
      ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java
  23. 5 5
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java

+ 8 - 0
ruoyi-api/ruoyi-api-customer/src/main/java/org/dromara/customer/api/RemotePartnerPreparedService.java

@@ -3,6 +3,9 @@ package org.dromara.customer.api;
 import org.dromara.common.core.domain.zhongche.vo.PrepareOrderDetailRespVo;
 import org.dromara.customer.api.domain.dto.PartnerPreparedDTO;
 
+import java.util.Map;
+import java.util.Set;
+
 /**
  * author
  * 时间:2026/2/3,17:49
@@ -14,4 +17,9 @@ public interface RemotePartnerPreparedService {
     PartnerPreparedDTO cancelPartnerPreparedById(String prepareOrderNo, String cancelReason);
 
     PartnerPreparedDTO createPartnerPrepared(PrepareOrderDetailRespVo prepareOrderDetailRespVo);
+
+    /**
+     * 根据ids查询报备订单号
+     */
+    Map<Long, String> selectPreparedOrderNoByIds(Set<Long> ids);
 }

+ 3 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java

@@ -110,7 +110,9 @@ public class PlatformDataScopeInterceptor implements Interceptor {
         "sys_tax_code",
         "erp_company",
         "erp_dept",
-        "erp_staff"
+        "erp_staff",
+        "partner_prepared",
+        "partner_prepared_product"
         // 注意:前缀匹配需特殊处理(如 qrtz_),见 isIgnoreTable 方法
     ));
 

+ 15 - 9
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/PartnerPreparedController.java

@@ -2,10 +2,12 @@ package org.dromara.customer.controller;
 
 import java.util.List;
 
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.satoken.utils.LoginHelper;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -40,16 +42,20 @@ public class PartnerPreparedController extends BaseController {
     /**
      * 查询伙伴商备货单列表
      */
-    @SaCheckPermission("customer:prepared:list")
+//    @SaCheckPermission("customer:prepared:list")
     @GetMapping("/list")
     public TableDataInfo<PartnerPreparedVo> list(PartnerPreparedBo bo, PageQuery pageQuery) {
+        Long partnerId = LoginHelper.getLoginUser().getPartnerId();
+        if (ObjectUtil.isNotEmpty(partnerId)) {
+            bo.setPartnerId(partnerId);
+        }
         return partnerPreparedService.queryPageList(bo, pageQuery);
     }
 
     /**
      * 导出伙伴商备货单列表
      */
-    @SaCheckPermission("customer:prepared:export")
+//    @SaCheckPermission("customer:prepared:export")
     @Log(title = "伙伴商备货单", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(PartnerPreparedBo bo, HttpServletResponse response) {
@@ -62,28 +68,28 @@ public class PartnerPreparedController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("customer:prepared:query")
+//    @SaCheckPermission("customer:prepared:query")
     @GetMapping("/{id}")
     public R<PartnerPreparedVo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable("id") Long id) {
+                                        @PathVariable("id") Long id) {
         return R.ok(partnerPreparedService.queryById(id));
     }
 
     /**
      * 新增伙伴商备货单
      */
-    @SaCheckPermission("customer:prepared:add")
+//    @SaCheckPermission("customer:prepared:add")
     @Log(title = "伙伴商备货单", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody PartnerPreparedBo bo) {
-        return toAjax(partnerPreparedService.insertByBo(bo));
+    public R<Long> add(@Validated(AddGroup.class) @RequestBody PartnerPreparedBo bo) {
+        return R.ok(partnerPreparedService.insertByBo(bo));
     }
 
     /**
      * 修改伙伴商备货单
      */
-    @SaCheckPermission("customer:prepared:edit")
+//    @SaCheckPermission("customer:prepared:edit")
     @Log(title = "伙伴商备货单", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -96,7 +102,7 @@ public class PartnerPreparedController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("customer:prepared:remove")
+//    @SaCheckPermission("customer:prepared:remove")
     @Log(title = "伙伴商备货单", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 21 - 21
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/controller/PartnerPreparedProductController.java

@@ -1,26 +1,26 @@
 package org.dromara.customer.controller;
 
-import java.util.List;
-
-import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.*;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.mybatis.core.page.PageQuery;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.customer.domain.vo.PartnerPreparedProductVo;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
 import org.dromara.customer.domain.bo.PartnerPreparedProductBo;
+import org.dromara.customer.domain.vo.PartnerPreparedProductVo;
 import org.dromara.customer.service.IPartnerPreparedProductService;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 伙伴商备货单产品明细
@@ -40,7 +40,7 @@ public class PartnerPreparedProductController extends BaseController {
     /**
      * 查询伙伴商备货单产品明细列表
      */
-    @SaCheckPermission("customer:preparedProduct:list")
+//    @SaCheckPermission("customer:preparedProduct:list")
     @GetMapping("/list")
     public TableDataInfo<PartnerPreparedProductVo> list(PartnerPreparedProductBo bo, PageQuery pageQuery) {
         return partnerPreparedProductService.queryPageList(bo, pageQuery);
@@ -49,7 +49,7 @@ public class PartnerPreparedProductController extends BaseController {
     /**
      * 导出伙伴商备货单产品明细列表
      */
-    @SaCheckPermission("customer:preparedProduct:export")
+//    @SaCheckPermission("customer:preparedProduct:export")
     @Log(title = "伙伴商备货单产品明细", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(PartnerPreparedProductBo bo, HttpServletResponse response) {
@@ -62,17 +62,17 @@ public class PartnerPreparedProductController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("customer:preparedProduct:query")
+//    @SaCheckPermission("customer:preparedProduct:query")
     @GetMapping("/{id}")
     public R<PartnerPreparedProductVo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable("id") Long id) {
+                                               @PathVariable("id") Long id) {
         return R.ok(partnerPreparedProductService.queryById(id));
     }
 
     /**
      * 新增伙伴商备货单产品明细
      */
-    @SaCheckPermission("customer:preparedProduct:add")
+//    @SaCheckPermission("customer:preparedProduct:add")
     @Log(title = "伙伴商备货单产品明细", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -83,7 +83,7 @@ public class PartnerPreparedProductController extends BaseController {
     /**
      * 修改伙伴商备货单产品明细
      */
-    @SaCheckPermission("customer:preparedProduct:edit")
+//    @SaCheckPermission("customer:preparedProduct:edit")
     @Log(title = "伙伴商备货单产品明细", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -96,7 +96,7 @@ public class PartnerPreparedProductController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("customer:preparedProduct:remove")
+//    @SaCheckPermission("customer:preparedProduct:remove")
     @Log(title = "伙伴商备货单产品明细", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 2 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/PartnerPreparedVo.java

@@ -1,6 +1,7 @@
 package org.dromara.customer.domain.vo;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.dromara.customer.domain.PartnerPrepared;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
@@ -15,7 +16,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 
-
 /**
  * 伙伴商备货单视图对象 partner_prepared
  *
@@ -154,5 +154,6 @@ public class PartnerPreparedVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    private Date createTime;
 
 }

+ 18 - 17
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/dubbo/RemotePartnerPreparedServiceImpl.java

@@ -23,9 +23,7 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -50,7 +48,7 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
     public PartnerPreparedDTO updatePartnerPreparedById(String id) {
         PartnerPreparedDTO partnerPreparedDTO = new PartnerPreparedDTO();
         PartnerPreparedThird one = partnerPreparedThirdService.lambdaQuery().eq(PartnerPreparedThird::getPrepareOrderNo, id).one();
-        if (one == null){
+        if (one == null) {
             partnerPreparedDTO.setFlag(false);
             partnerPreparedDTO.setMessage("未找到该数据");
         }
@@ -58,10 +56,10 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
         boolean update = partnerPreparedThirdService.lambdaUpdate().set(PartnerPreparedThird::getPrepareOrderStatus, 1)
             .eq(PartnerPreparedThird::getPrepareOrderNo, one.getId())
             .update();
-        if (update){
+        if (update) {
             partnerPreparedDTO.setFlag(true);
             partnerPreparedDTO.setMessage("修改成功");
-        }else {
+        } else {
             partnerPreparedDTO.setFlag(false);
             partnerPreparedDTO.setMessage("修改失败");
         }
@@ -74,7 +72,7 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
     public PartnerPreparedDTO cancelPartnerPreparedById(String prepareOrderNo, String cancelReason) {
         PartnerPreparedDTO partnerPreparedDTO = new PartnerPreparedDTO();
         PartnerPreparedThird one = partnerPreparedThirdService.lambdaQuery().eq(PartnerPreparedThird::getPrepareOrderNo, prepareOrderNo).one();
-        if (one == null){
+        if (one == null) {
             partnerPreparedDTO.setFlag(false);
             partnerPreparedDTO.setMessage("未找到该数据");
         }
@@ -89,10 +87,10 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
             .eq(PartnerPrepared::getId, one.getId())
             .update();
 
-        if (update && update1){
+        if (update && update1) {
             partnerPreparedDTO.setFlag(true);
             partnerPreparedDTO.setMessage("修改成功");
-        }else {
+        } else {
             partnerPreparedDTO.setFlag(false);
             partnerPreparedDTO.setMessage("修改失败");
         }
@@ -107,15 +105,15 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
         //4、备货单金额
         partnerPrepared.setAmount(prepareOrderDetailRespVo.getPrepareOrderAmount());
         //7、备货单备注
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getMemo())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getMemo())) {
             partnerPrepared.setRemark(prepareOrderDetailRespVo.getMemo());
         }
         //11、采购单位
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getPurchaserName())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getPurchaserName())) {
             partnerPrepared.setPurchasingUnit(prepareOrderDetailRespVo.getPurchaserName());
         }
         //12、采购部门
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getPurchaserDeptName())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getPurchaserDeptName())) {
             partnerPrepared.setDeptName(prepareOrderDetailRespVo.getPurchaserDeptName());
         }
         partnerPrepared.setPreparedNo(partnerPreparedService.generatePreparedNo());
@@ -137,15 +135,15 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
         Date date = parseDate(prepareOrderDetailRespVo.getPrepareOrderTime());
         partnerPreparedThird.setPrepareOrderTime(date);
         //9、备货人名称
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getBuyer())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getBuyer())) {
             partnerPreparedThird.setBuyer(prepareOrderDetailRespVo.getBuyer());
         }
         //10、备货人电话
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getBuyer())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getBuyer())) {
             partnerPreparedThird.setBuyer(prepareOrderDetailRespVo.getBuyer());
         }
         //13、附件
-        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getAttach())){
+        if (ObjectUtil.isNotEmpty(prepareOrderDetailRespVo.getAttach())) {
             partnerPreparedThird.setAttach(prepareOrderDetailRespVo.getAttach());
         }
         boolean partnerPreparedThirdFlag = partnerPreparedThirdService.save(partnerPreparedThird);
@@ -186,7 +184,7 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
             partnerPreparedDTO.setFlag(true);
             partnerPreparedDTO.setMessage("创建成功");
             return partnerPreparedDTO;
-        }else {
+        } else {
             PartnerPreparedDTO partnerPreparedDTO = new PartnerPreparedDTO();
             partnerPreparedDTO.setFlag(false);
             partnerPreparedDTO.setMessage("创建失败");
@@ -205,5 +203,8 @@ public class RemotePartnerPreparedServiceImpl implements RemotePartnerPreparedSe
         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
     }
 
-
+    @Override
+    public Map<Long, String> selectPreparedOrderNoByIds(Set<Long> ids) {
+        return partnerPreparedService.selectPreparedOrderNoByIds(ids);
+    }
 }

+ 9 - 5
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/IPartnerPreparedService.java

@@ -1,14 +1,16 @@
 package org.dromara.customer.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.customer.domain.PartnerPrepared;
-import org.dromara.customer.domain.vo.PartnerPreparedVo;
 import org.dromara.customer.domain.bo.PartnerPreparedBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.customer.domain.vo.PartnerPreparedVo;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * 伙伴商备货单Service接口
@@ -16,7 +18,7 @@ import java.util.List;
  * @author LionLi
  * @date 2026-01-21
  */
-public interface IPartnerPreparedService extends IService<PartnerPrepared>{
+public interface IPartnerPreparedService extends IService<PartnerPrepared> {
 
     /**
      * 查询伙伴商备货单
@@ -49,7 +51,7 @@ public interface IPartnerPreparedService extends IService<PartnerPrepared>{
      * @param bo 伙伴商备货单
      * @return 是否新增成功
      */
-    Boolean insertByBo(PartnerPreparedBo bo);
+    Long insertByBo(PartnerPreparedBo bo);
 
     /**
      * 修改伙伴商备货单
@@ -69,4 +71,6 @@ public interface IPartnerPreparedService extends IService<PartnerPrepared>{
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     String generatePreparedNo();
+
+    Map<Long, String> selectPreparedOrderNoByIds(Set<Long> ids);
 }

+ 2 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java

@@ -576,7 +576,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
                     .last("LIMIT 1");
                 CustomerInfo maxCustomer = baseMapper.selectOne(lambdaQueryWrapper);
                 long l = Long.parseLong(maxCustomer.getCustomerNo()) + 1;
-                entity.setCustomerNo(String.valueOf(l));
+                entity.setCustomerNo(String.format("%06d", l));
 
                 int insertResult = baseMapper.insert(entity);
                 if (insertResult > 0) {
@@ -995,7 +995,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
             .last("LIMIT 1");
         CustomerInfo maxCustomer = baseMapper.selectOne(lambdaQueryWrapper);
         long l = Long.parseLong(maxCustomer.getCustomerNo()) + 1;
-        customerEntity.setCustomerNo(String.valueOf(l));
+        customerEntity.setCustomerNo(String.format("%06d", l));
 
        /* int maxRetries = 3;
 

+ 42 - 19
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/PartnerPreparedServiceImpl.java

@@ -1,27 +1,25 @@
 package org.dromara.customer.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.enums.FormatsType;
 import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.customer.domain.PartnerPrepared;
 import org.dromara.customer.domain.bo.PartnerPreparedBo;
 import org.dromara.customer.domain.vo.PartnerPreparedVo;
-import org.dromara.customer.domain.PartnerPrepared;
 import org.dromara.customer.mapper.PartnerPreparedMapper;
 import org.dromara.customer.service.IPartnerPreparedService;
+import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * 伙伴商备货单Service业务层处理
@@ -32,7 +30,7 @@ import java.util.Collection;
 @Slf4j
 @RequiredArgsConstructor
 @Service
-public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapper, PartnerPrepared> implements IPartnerPreparedService {
+public class PartnerPreparedServiceImpl extends ServiceImpl<PartnerPreparedMapper, PartnerPrepared> implements IPartnerPreparedService {
 
     private final PartnerPreparedMapper baseMapper;
 
@@ -43,7 +41,7 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
      * @return 伙伴商备货单
      */
     @Override
-    public PartnerPreparedVo queryById(Long id){
+    public PartnerPreparedVo queryById(Long id) {
         return baseMapper.selectVoById(id);
     }
 
@@ -106,7 +104,7 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
      * @return 是否新增成功
      */
     @Override
-    public Boolean insertByBo(PartnerPreparedBo bo) {
+    public Long insertByBo(PartnerPreparedBo bo) {
         PartnerPrepared add = MapstructUtils.convert(bo, PartnerPrepared.class);
 
         // TODO: 【重要】partner_id 用于关联当前登录的伙伴商用户
@@ -146,7 +144,7 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
         if (flag) {
             bo.setId(add.getId());
         }
-        return flag;
+        return add.getId();
     }
 
     /**
@@ -162,8 +160,8 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
         // 查询当天最大的流水号
         LambdaQueryWrapper<PartnerPrepared> wrapper = Wrappers.lambdaQuery();
         wrapper.likeRight(PartnerPrepared::getPreparedNo, prefix)
-               .orderByDesc(PartnerPrepared::getPreparedNo)
-               .last("LIMIT 1");
+            .orderByDesc(PartnerPrepared::getPreparedNo)
+            .last("LIMIT 1");
         PartnerPrepared lastOrder = baseMapper.selectOne(wrapper);
 
         int sequence = 1;
@@ -194,7 +192,7 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(PartnerPrepared entity){
+    private void validEntityBeforeSave(PartnerPrepared entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -207,9 +205,34 @@ public class PartnerPreparedServiceImpl  extends ServiceImpl<PartnerPreparedMapp
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Override
+    public Map<Long, String> selectPreparedOrderNoByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<PartnerPrepared> partnerPrepareds = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (partnerPrepareds != null) {
+            partnerPrepareds.stream()
+                .filter(order -> order.getId() != null && order.getPreparedNo() != null)
+                .forEach(order -> resultMap.put(order.getId(), order.getPreparedNo()));
+        }
+        return resultMap;
+    }
 }

+ 3 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/controller/pc/PcOrderController.java

@@ -351,6 +351,9 @@ public class PcOrderController extends BaseController {
             // 设置审核状态为待审核
             mainBo.setCheckStatus("0");
 
+            //商城下单默认需要审核--如果设置审批流则不需要
+            mainBo.setIsNeedCheck(SysPlatformYesNo.YES.getCode());
+
             mainBo.setOrderSource(OrderSourceEnum.BEFORE_ADD.getCode());
 
             // 设置订单商品列表

+ 14 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderAssignment.java

@@ -94,5 +94,19 @@ public class OrderAssignment extends TenantEntity {
      */
     private String assigneeType;
 
+    /**
+     * 报备状态(0 已报备 1 未报备)
+     */
+    private String preparedStatus;
+
+    /**
+     * 报备订单ID
+     */
+    private Long preparedOrderId;
+
+    /**
+     * 附件地址
+     */
+    private String attachmentUrl;
 
 }

+ 3 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/OrderMain.java

@@ -272,6 +272,9 @@ public class OrderMain extends TenantEntity {
     /*审核状态(0 待审核 1已通过 2已驳回)*/
     private String checkStatus;
 
+    /*是否需要审核(0 需要审核 1不需要)*/
+    private String isNeedCheck;
+
     /*分配状态(0待分配 1已分配 )*/
     private String assignmentStatus;
 

+ 15 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderAssignmentBo.java

@@ -83,4 +83,19 @@ public class OrderAssignmentBo extends BaseEntity {
      * 分配对象类型(srm=供应商, bp=伙伴商)
      */
     private String assigneeType;
+
+    /**
+     * 报备状态(0 已报备 1 未报备)
+     */
+    private String preparedStatus;
+
+    /**
+     * 报备订单ID
+     */
+    private Long preparedOrderId;
+
+    /**
+     * 附件地址
+     */
+    private String attachmentUrl;
 }

+ 3 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderMainBo.java

@@ -282,6 +282,9 @@ public class OrderMainBo extends BaseEntity {
     /*审核状态(0 待审核 1已通过 2已驳回)*/
     private String checkStatus;
 
+    /*是否需要审核(0 需要审核 1不需要)*/
+    private String isNeedCheck;
+
     /*分配状态(0待分配 1已分配 )*/
     private String assignmentStatus;
 

+ 14 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/bo/OrderSplitAssignBo.java

@@ -14,5 +14,19 @@ public class OrderSplitAssignBo {
 
     private String remark;
 
+    /**
+     * 报备状态(0 已报备 1 未报备)
+     */
+    private String preparedStatus;
+
+    /**
+     * 报备订单ID
+     */
+    private Long preparedOrderId;
+
+    /**
+     * 附件地址
+     */
+    private String attachmentUrl;
 
 }

+ 20 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderAssignmentVo.java

@@ -3,6 +3,8 @@ package org.dromara.order.domain.vo;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.order.domain.OrderAssignment;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
@@ -110,5 +112,23 @@ public class OrderAssignmentVo implements Serializable {
 
     private Date createTime;
 
+    /**
+     * 报备状态(0 已报备 1 未报备)
+     */
+    private String preparedStatus;
+
+    /**
+     * 报备订单ID
+     */
+    private Long preparedOrderId;
+
+    private String preparedOrderNo;
+
+    /**
+     * 附件地址
+     */
+    private String attachmentUrl;
 
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "attachmentUrl")
+    private String attachmentUrlStr;
 }

+ 8 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderMainVo.java

@@ -349,6 +349,9 @@ public class OrderMainVo implements Serializable {
     /*审核状态(0 待审核 1已通过 2已驳回)*/
     private String checkStatus;
 
+    /*是否需要审核(0 需要审核 1不需要)*/
+    private String isNeedCheck;
+
     /*分配状态(0待分配 1已分配 )*/
     private String assignmentStatus;
 
@@ -431,4 +434,9 @@ public class OrderMainVo implements Serializable {
 
     private Date updateTime;
 
+    /**
+     * 项目订单号
+     */
+    private String projectOrderNo;
+
 }

+ 2 - 1
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderStatusLogVo.java

@@ -15,7 +15,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 
-
 /**
  * 订单状态流转记录视图对象 order_status_log
  *
@@ -122,5 +121,7 @@ public class OrderStatusLogVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    private Date createTime;
+
 
 }

+ 4 - 4
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/IOrderMainService.java

@@ -11,10 +11,7 @@ import org.dromara.order.domain.bo.PcSubmitOrderBo;
 import org.dromara.order.domain.vo.*;
 import org.dromara.order.utils.kd100.domain.TrackData;
 
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 订单主信息Service接口
@@ -127,4 +124,7 @@ public interface IOrderMainService extends IService<OrderMain> {
     boolean setdeadline(Long id, Date deadline);
 
     boolean uploadInvoice(Long id, String invoice);
+
+    /*根据id查询订单编号*/
+    Map<Long, String> selectOrderNoByIds(Set<Long> ids);
 }

+ 24 - 6
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderAssignmentServiceImpl.java

@@ -22,6 +22,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.redis.utils.SequenceUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.customer.api.RemotePartnerInfoService;
+import org.dromara.customer.api.RemotePartnerPreparedService;
 import org.dromara.customer.api.RemoteSupplierInfoService;
 import org.dromara.order.domain.OrderAssignment;
 import org.dromara.order.domain.OrderMain;
@@ -67,6 +68,9 @@ public class OrderAssignmentServiceImpl extends ServiceImpl<OrderAssignmentMappe
     @DubboReference
     private RemoteUserService remoteUserService;
 
+    @DubboReference
+    private RemotePartnerPreparedService remotePartnerPreparedService;
+
     private final OrderAssignmentMapper baseMapper;
 
     private final OrderMainMapper orderMainMapper;
@@ -101,39 +105,47 @@ public class OrderAssignmentServiceImpl extends ServiceImpl<OrderAssignmentMappe
 
 
             Set<Long> partnerIds = records.stream()
-                .filter(r -> AssigneeTypeConstants.PARTNER.getCode().equals(r.getAssignType()))
+                .filter(r -> AssigneeTypeConstants.PARTNER.getCode().equals(r.getAssigneeType()))
                 .map(OrderAssignmentVo::getAssigneeId)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toSet());
 
             Set<Long> supplierIds = records.stream()
-                .filter(r -> AssigneeTypeConstants.SUPPLIER.getCode().equals(r.getAssignType()))
+                .filter(r -> AssigneeTypeConstants.SUPPLIER.getCode().equals(r.getAssigneeType()))
                 .map(OrderAssignmentVo::getAssigneeId)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toSet());
+
+            Set<Long> preparedOrderIds = records.stream()
+                .filter(r -> AssigneeTypeConstants.PARTNER.getCode().equals(r.getAssigneeType()))
+                .map(OrderAssignmentVo::getPreparedOrderId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toSet());
             // 批量查询名称
             Map<Long, String> createUserNameMap = remoteUserService.selectUserNamesByIds(createUserIds.stream().toList());
             Map<Long, String> partnerNameMap = remotePartnerInfoService.selectPartnerNameByIds(partnerIds);
             Map<Long, String> supplierNameMap = remoteSupplierInfoService.selectSupplierNameByIds(supplierIds);
+            Map<Long, String> preparedOrderNoMap = remotePartnerPreparedService.selectPreparedOrderNoByIds(preparedOrderIds);
 
             // 设置 assigneeName
             for (OrderAssignmentVo record : records) {
                 Long assigneeId = record.getAssigneeId();
-                String assignType = record.getAssignType();
+                String assigneeType = record.getAssigneeType();
 
-                if (assigneeId == null || assignType == null) {
+                if (assigneeId == null || assigneeType == null) {
                     record.setAssigneeName(null);
                     continue;
                 }
 
                 String name = null;
-                if (AssigneeTypeConstants.PARTNER.getCode().equals(assignType)) {
+                if (AssigneeTypeConstants.PARTNER.getCode().equals(assigneeType)) {
                     name = partnerNameMap.get(assigneeId);
-                } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(assignType)) {
+                } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(assigneeType)) {
                     name = supplierNameMap.get(assigneeId);
                 }
                 record.setAssigneeName(name);
                 record.setCreateName(createUserNameMap.get(record.getCreateBy()));
+                record.setPreparedOrderNo(preparedOrderNoMap.get(record.getPreparedOrderId()));
             }
         }
         return TableDataInfo.build(result);
@@ -422,6 +434,9 @@ public class OrderAssignmentServiceImpl extends ServiceImpl<OrderAssignmentMappe
             assignment.setRemark(bo.getRemark());
             assignment.setAssigneeId(key.id());
             assignment.setAssigneeType(key.type());
+            assignment.setPreparedStatus(bo.getPreparedStatus());
+            assignment.setPreparedOrderId(bo.getPreparedOrderId());
+            assignment.setAttachmentUrl(bo.getAttachmentUrl());
             baseMapper.insert(assignment);
         }
 
@@ -473,6 +488,9 @@ public class OrderAssignmentServiceImpl extends ServiceImpl<OrderAssignmentMappe
         assignment.setAssignTime(now);
         assignment.setAssignType(bo.getAssignType());
         assignment.setRemark(bo.getRemark());
+        assignment.setPreparedStatus(bo.getPreparedStatus());
+        assignment.setPreparedOrderId(bo.getPreparedOrderId());
+        assignment.setAttachmentUrl(bo.getAttachmentUrl());
         return assignment;
     }
 

+ 1 - 1
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderDeliverServiceImpl.java

@@ -305,7 +305,7 @@ public class OrderDeliverServiceImpl extends ServiceImpl<OrderDeliverMapper, Ord
                 orderStatusLog.setCustomerId(orderMain.getCustomerId());
                 orderStatusLog.setStatusName("已下单");
                 orderStatusLog.setDeliverMethod("0");
-                orderStatusLog.setLogisticNos(deliver.getLogisticNo());
+                orderStatusLog.setLogisticNos(deliver.getDeliverCode());
                 orderStatusLogMapper.insert(orderStatusLog);
             }
 

+ 34 - 5
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java

@@ -11,9 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.common.core.enums.AssigneeTypeConstants;
-import org.dromara.common.core.enums.OrderPayType;
-import org.dromara.common.core.enums.OrderStatus;
+import org.dromara.common.core.enums.*;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.exception.api.ZhongcheException;
 import org.dromara.common.core.utils.MapstructUtils;
@@ -265,11 +263,14 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
             Set<Long> customerIds = records.stream().map(OrderMainVo::getCustomerId).collect(Collectors.toSet());
             Set<Long> createUserIds = records.stream().map(OrderMainVo::getCreateBy).collect(Collectors.toSet());
             Set<Long> createDeptIds = records.stream().map(OrderMainVo::getCreateDept).collect(Collectors.toSet());
+            Set<Long> orderIds = records.stream().map(OrderMainVo::getParentOrderId).filter(Objects::nonNull).collect(Collectors.toSet());
 
             Map<Long, String> UserMap = remoteUserService.selectUserNamesByIds(createUserIds.stream().toList());
             Map<Long, String> deptMap = remoteDeptService.selectDeptNameByIds(createDeptIds);
             Map<Long, String> customerMap = remoteCustomerService.selectCustomerNameByIds(customerIds);
+            Map<Long, String> orderNoMap = selectOrderNoByIds(orderIds);
             records.forEach(orderMainVo -> {
+                orderMainVo.setProjectOrderNo(orderNoMap.get(orderMainVo.getParentOrderId()));
                 orderMainVo.setCreateName(UserMap.get(orderMainVo.getCreateBy()));
                 orderMainVo.setCreateDeptName(deptMap.get(orderMainVo.getCreateDept()));
                 orderMainVo.setCustomerName(customerMap.get(orderMainVo.getCustomerId()));
@@ -616,12 +617,15 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
                 log.info("成功初始化审批流程,订单ID: {}", orderId);
                 this.update(Wrappers.lambdaUpdate(OrderMain.class)
                     .eq(OrderMain::getId, orderId)
-                    .set(OrderMain::getOrderStatus, 1)); // 假设 1 代表某种特定状态,需确认枚举值
+                    .set(OrderMain::getOrderStatus, 1)// 假设 1 代表某种特定状态,需确认枚举值
+                    .set(OrderMain::getIsNeedCheck, SysPlatformYesNo.YES.getCode())
+                );
+
             } else {
                 log.info("失败初始化审批流程,订单ID: {}", orderId);
                 this.update(Wrappers.lambdaUpdate(OrderMain.class)
                     .eq(OrderMain::getId, orderId)
-                    .set(OrderMain::getCheckStatus, "1")
+                    .set(OrderMain::getCheckStatus, "1").set(OrderMain::getIsNeedCheck, SysPlatformYesNo.NO.getCode())
                 );
             }
 
@@ -1159,4 +1163,29 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
             .update();
         return update;
     }
+
+    @Override
+    public Map<Long, String> selectOrderNoByIds(Set<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyMap();
+        }
+
+        // 限制批量大小
+        if (ids.size() > 1000) {
+            throw new IllegalArgumentException("Batch size exceeds limit: " + ids.size());
+        }
+
+        List<OrderMain> orderMainList = baseMapper.selectByIds(ids);
+        Map<Long, String> resultMap = new HashMap<>(ids.size());
+
+        // 初始化所有请求的 ID 为 null
+        ids.forEach(id -> resultMap.put(id, null));
+
+        if (orderMainList != null) {
+            orderMainList.stream()
+                .filter(order -> order.getId() != null && order.getOrderNo() != null)
+                .forEach(order -> resultMap.put(order.getId(), order.getOrderNo()));
+        }
+        return resultMap;
+    }
 }

+ 5 - 5
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java

@@ -43,7 +43,7 @@ public class SysOssController extends BaseController {
     /**
      * 查询OSS对象存储列表
      */
-    //@SaCheckPermission("system:oss:list")
+//    @SaCheckPermission("system:oss:list")
     @GetMapping("/list")
     public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
         return iSysOssService.queryPageList(bo, pageQuery);
@@ -54,7 +54,7 @@ public class SysOssController extends BaseController {
      *
      * @param ossIds OSS对象ID串
      */
-    //@SaCheckPermission("system:oss:query")
+//    @SaCheckPermission("system:oss:query")
     @GetMapping("/listByIds/{ossIds}")
     public R<List<SysOssVo>> listByIds(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) {
         List<SysOssVo> list = iSysOssService.listByIds(Arrays.asList(ossIds));
@@ -66,7 +66,7 @@ public class SysOssController extends BaseController {
      *
      * @param file 文件
      */
-//    //@SaCheckPermission("system:oss:upload")
+//    @SaCheckPermission("system:oss:upload")
     @Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
     public R<SysOssUploadVo> upload(@RequestPart("file") MultipartFile file) {
@@ -86,7 +86,7 @@ public class SysOssController extends BaseController {
      *
      * @param ossId OSS对象ID
      */
-    //@SaCheckPermission("system:oss:download")
+//    @SaCheckPermission("system:oss:download")
     @GetMapping("/download/{ossId}")
     public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
         iSysOssService.download(ossId, response);
@@ -97,7 +97,7 @@ public class SysOssController extends BaseController {
      *
      * @param ossIds OSS对象ID串
      */
-    //@SaCheckPermission("system:oss:remove")
+//    @SaCheckPermission("system:oss:remove")
     @Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ossIds}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) {