瀏覽代碼

Merge remote-tracking branch 'origin/master'

颜琼丽 2 天之前
父節點
當前提交
9a723c26aa
共有 49 個文件被更改,包括 618 次插入91 次删除
  1. 4 0
      jd-logistics-api/jd-logistics-api-system/src/main/java/com/ruoyi/system/api/RemoteMonthSummaryService.java
  2. 3 0
      jd-logistics-common/ruoyi-common-core/pom.xml
  3. 13 1
      jd-logistics-modules/jd-logistics-file/pom.xml
  4. 83 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/config/OBSConfig.java
  5. 15 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/constant/RedisCacheConstants.java
  6. 17 4
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
  7. 6 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java
  8. 9 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/ISysFileService.java
  9. 6 1
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java
  10. 7 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java
  11. 80 0
      jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/OBSSysFileServiceImpl.java
  12. 11 8
      jd-logistics-modules/jd-logistics-job/src/main/java/com/ruoyi/job/task/FinancialMonthSummaryTask.java
  13. 13 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/annotation/Dict.java
  14. 65 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/annotation/SimpleDictExportUtil.java
  15. 7 1
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizFinancialAdjustmentRecordController.java
  16. 3 4
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInvoiceController.java
  17. 19 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizWaybillCostDetailsController.java
  18. 6 1
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/RptFinancialMonthSummaryController.java
  19. 3 3
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizAddressBook.java
  20. 9 4
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizFinancialAdjustmentRecord.java
  21. 38 12
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizWaybillOrder.java
  22. 1 1
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/InvoiceRequest.java
  23. 9 7
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/RptFinancialMonthSummary.java
  24. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizWaybillCostDetailsMapper.java
  25. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/RptFinancialMonthSummaryMapper.java
  26. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizWaybillCostDetailsService.java
  27. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IRptFinancialMonthSummaryService.java
  28. 1 1
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/InvoiceService.java
  29. 7 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizAddressBookServiceImpl.java
  30. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizFinancialAdjustmentRecordServiceImpl.java
  31. 6 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillCostDetailsServiceImpl.java
  32. 1 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java
  33. 8 2
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/FeePushService.java
  34. 73 31
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/InvoiceServiceImpl.java
  35. 6 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/RptFinancialMonthSummaryServiceImpl.java
  36. 0 3
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/util/SignUtil.java
  37. 12 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java
  38. 2 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
  39. 10 0
      jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
  40. 5 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizFinancialAdjustmentRecordMapper.xml
  41. 9 3
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillCostDetailsMapper.xml
  42. 8 1
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillOrderMapper.xml
  43. 23 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/RptFinancialMonthSummaryMapper.xml
  44. 1 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysConfigMapper.xml
  45. 1 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysDictTypeMapper.xml
  46. 4 0
      jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysUserMapper.xml
  47. 1 1
      jd-logistics-ui-v3/src/api/logistics/order.js
  48. 2 1
      jd-logistics-ui-v3/src/views/logistics/monthSummary/index.vue
  49. 1 1
      jd-logistics-ui-v3/src/views/system/dept/index.vue

+ 4 - 0
jd-logistics-api/jd-logistics-api-system/src/main/java/com/ruoyi/system/api/RemoteMonthSummaryService.java

@@ -11,4 +11,8 @@ import java.util.Map;
 public interface RemoteMonthSummaryService {
     @PostMapping("/monthSummary/creatMontSummary")
     public AjaxResult creatMontSummary(@RequestBody Map param);
+
+
+    @PostMapping("/invoice/updateInvoice")
+    public void updateInvoice();
 }

+ 3 - 0
jd-logistics-common/ruoyi-common-core/pom.xml

@@ -83,6 +83,8 @@
             <artifactId>jaxb-api</artifactId>
         </dependency>
 
+
+
         <!-- Apache Lang3 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
@@ -140,6 +142,7 @@
             <artifactId>ECAP</artifactId>
             <version>6.9</version>
         </dependency>
+
     </dependencies>
 
 </project>

+ 13 - 1
jd-logistics-modules/jd-logistics-file/pom.xml

@@ -65,7 +65,19 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>jd-logistics-api-system</artifactId>
         </dependency>
-        
+
+        <dependency>
+            <groupId>com.huaweicloud</groupId>
+            <artifactId>esdk-obs-java-bundle</artifactId>
+            <version>3.25.10</version>
+        </dependency>
+
+        <!-- RuoYi Common Redis-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-redis</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 83 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/config/OBSConfig.java

@@ -0,0 +1,83 @@
+package com.ruoyi.file.config;
+
+import com.obs.services.ObsClient;
+import io.minio.MinioClient;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * OBS 配置信息
+ *
+ * @author lydgt
+ */
+@Configuration
+@ConfigurationProperties(prefix = "obs")
+public class OBSConfig
+{
+    /**
+     * 服务地址
+     */
+    private String url;
+
+    /**
+     * 用户名
+     */
+    private String accessKey;
+
+    /**
+     * 密码
+     */
+    private String secretKey;
+
+    /**
+     * 存储桶名称
+     */
+    private String bucketName;
+
+    public String getUrl()
+    {
+        return url;
+    }
+
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    public String getAccessKey()
+    {
+        return accessKey;
+    }
+
+    public void setAccessKey(String accessKey)
+    {
+        this.accessKey = accessKey;
+    }
+
+    public String getSecretKey()
+    {
+        return secretKey;
+    }
+
+    public void setSecretKey(String secretKey)
+    {
+        this.secretKey = secretKey;
+    }
+
+    public String getBucketName()
+    {
+        return bucketName;
+    }
+
+    public void setBucketName(String bucketName)
+    {
+        this.bucketName = bucketName;
+    }
+
+    @Bean
+    public ObsClient getObsClient()
+    {
+        return new ObsClient(accessKey, secretKey, url);
+    }
+}

+ 15 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/constant/RedisCacheConstants.java

@@ -0,0 +1,15 @@
+package com.ruoyi.file.constant;
+
+/**
+ * Redis缓存常量
+ * 
+ * @author lydgt
+ * @date 2026-02-04
+ */
+public class RedisCacheConstants {
+
+    /**
+     * 轮播图缓存key
+     */
+    public static final String LOGISTICS_BANNER_CACHE = "logistics:banner:";
+}

+ 17 - 4
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/controller/SysFileController.java

@@ -1,15 +1,17 @@
 package com.ruoyi.file.controller;
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.file.FileUtils;
+import com.ruoyi.file.service.ISysFileService;
+import com.ruoyi.system.api.domain.SysFile;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.file.FileUtils;
-import com.ruoyi.file.service.ISysFileService;
-import com.ruoyi.system.api.domain.SysFile;
 
 /**
  * 文件请求处理
@@ -45,4 +47,15 @@ public class SysFileController
             return R.fail(e.getMessage());
         }
     }
+
+    /**
+     * 文件下载
+     * @param fileName
+     * @return
+     */
+    @GetMapping("download")
+    public R<String> download(@RequestParam("fileName") String fileName) {
+        String base64Data = sysFileService.getObsFile(fileName);
+        return R.ok(base64Data);
+    }
 }

+ 6 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/FastDfsSysFileServiceImpl.java

@@ -2,6 +2,7 @@ package com.ruoyi.file.service;
 
 import java.io.InputStream;
 import com.alibaba.nacos.common.utils.IoUtils;
+import com.obs.services.model.ObsObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -53,4 +54,9 @@ public class FastDfsSysFileServiceImpl implements ISysFileService
             IoUtils.closeQuietly(inputStream);
         }
     }
+
+    @Override
+    public String getObsFile(String fileName) {
+        return null;
+    }
 }

+ 9 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/ISysFileService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.file.service;
 
+import com.obs.services.model.ObsObject;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -17,4 +18,12 @@ public interface ISysFileService
      * @throws Exception
      */
     public String uploadFile(MultipartFile file) throws Exception;
+
+    /**
+     * 获取文件
+     *
+     * @param fileName 文件名称
+     * @return  文件
+     */
+    public String getObsFile(String fileName);
 }

+ 6 - 1
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.file.service;
 
+import com.obs.services.model.ObsObject;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
@@ -11,7 +12,6 @@ import com.ruoyi.file.utils.FileUploadUtils;
  * 
  * @author lydgt
  */
-@Primary
 @Service
 public class LocalSysFileServiceImpl implements ISysFileService
 {
@@ -47,4 +47,9 @@ public class LocalSysFileServiceImpl implements ISysFileService
         String url = domain + localFilePrefix + name;
         return url;
     }
+
+    @Override
+    public String getObsFile(String fileName) {
+        return null;
+    }
 }

+ 7 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java

@@ -1,6 +1,8 @@
 package com.ruoyi.file.service;
 
 import java.io.InputStream;
+
+import com.obs.services.model.ObsObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -57,4 +59,9 @@ public class MinioSysFileServiceImpl implements ISysFileService
             IoUtils.closeQuietly(inputStream);
         }
     }
+
+    @Override
+    public String getObsFile(String fileName) {
+        return null;
+    }
 }

+ 80 - 0
jd-logistics-modules/jd-logistics-file/src/main/java/com/ruoyi/file/service/OBSSysFileServiceImpl.java

@@ -0,0 +1,80 @@
+package com.ruoyi.file.service;
+
+import com.alibaba.nacos.common.utils.IoUtils;
+import com.obs.services.ObsClient;
+import com.obs.services.model.ObsObject;
+import com.obs.services.model.PutObjectResult;
+import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.file.config.MinioConfig;
+import com.ruoyi.file.config.OBSConfig;
+import com.ruoyi.file.constant.RedisCacheConstants;
+import com.ruoyi.file.utils.FileUploadUtils;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import org.apache.poi.util.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.Base64;
+
+/**
+ * Minio 文件存储
+ *
+ * @author lydgt
+ */
+@Primary
+@Service
+public class OBSSysFileServiceImpl implements ISysFileService
+{
+    @Autowired
+    private OBSConfig obsConfig;
+
+    @Autowired
+    private RedisService redisService;
+
+    /**
+     * Minio文件上传接口
+     *
+     * @param file 上传的文件
+     * @return 访问地址
+     * @throws Exception
+     */
+    @Override
+    public String uploadFile(MultipartFile file) throws Exception {
+        InputStream inputStream = null;
+        try {
+            String fileName = FileUploadUtils.extractFilename(file);
+            inputStream = file.getInputStream();
+
+            PutObjectResult putObjectResult = obsConfig.getObsClient().putObject(obsConfig.getBucketName(), fileName, inputStream);
+            return putObjectResult.getObjectKey();
+        } catch (Exception e) {
+            throw new RuntimeException("Obs Failed to upload file", e);
+        } finally {
+            IoUtils.closeQuietly(inputStream);
+        }
+    }
+
+    @Override
+    public String getObsFile(String fileName) {
+        String key = RedisCacheConstants.LOGISTICS_BANNER_CACHE + fileName;
+        if (redisService.hasKey(key)) {
+            return redisService.getCacheObject(key);
+        }
+        try {
+            ObsObject object = obsConfig.getObsClient().getObject(obsConfig.getBucketName(), fileName);
+            byte[] byteArray = IOUtils.toByteArray(object.getObjectContent());
+            String base64String = Base64.getEncoder().encodeToString(byteArray);
+            String contentType = object.getMetadata().getContentType();
+            String base64Data = "data:" + contentType + ";base64," + base64String;
+            redisService.setCacheObject(key, base64Data);
+            return base64Data;
+        } catch (Exception e) {
+            throw new RuntimeException("Obs Failed to get file", e);
+        }
+    }
+}

+ 11 - 8
jd-logistics-modules/jd-logistics-job/src/main/java/com/ruoyi/job/task/FinancialMonthSummaryTask.java

@@ -20,13 +20,9 @@ import java.util.Map;
  */
 @Component("financialMonthSummaryTask")
 public class FinancialMonthSummaryTask {
-
     private static final Logger logger = LoggerFactory.getLogger(FinancialMonthSummaryTask.class);
-
-
     @Autowired
     RemoteMonthSummaryService remoteMonthSummaryService;
-
     /**
      * 每个月月初 执行生成上个月的月度账单
      * @author zxf
@@ -42,12 +38,19 @@ public class FinancialMonthSummaryTask {
         param.put("monthCode",formattedDate);
         remoteMonthSummaryService.creatMontSummary(param);
     }
+
     /**
-     * 每次调账时  都会重新生成该供应商的月度账单
-     *  这里的定时任务  作为方便测试
+     * 每天定时回写电子发票
      * @author zxf
      */
-    public void doTask(Integer deptName, String month) {
-        System.out.println("月度汇总定时任务,部门ID:" + deptName + ", 月份:" + month);
+    public void updateInvoice() {
+        logger.info("已申请电子发票地址查询回写任务开始");
+        remoteMonthSummaryService.updateInvoice();
+        logger.info("电子发票地址回写完成");
     }
+
+
+
+
+
 }

+ 13 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/annotation/Dict.java

@@ -0,0 +1,13 @@
+package com.ruoyi.logistics.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD) // 仅作用于字段
+@Retention(RetentionPolicy.RUNTIME) // 运行时可反射获取
+public @interface Dict {
+    // 仅需配置字典类型(如:sys_user_sex、order_status)
+    String value();
+}

+ 65 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/annotation/SimpleDictExportUtil.java

@@ -0,0 +1,65 @@
+package com.ruoyi.logistics.annotation;
+
+import cn.hutool.core.util.ReflectUtil;
+import com.ruoyi.system.service.ISysDictTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+/**
+ * 极简版字典映射工具
+ * 仅处理导出DTO的字典注解字段
+ */
+@Component // 必须加!让Spring扫描并创建实例,@Autowired才会生效
+public class SimpleDictExportUtil {
+
+  /*  // 1. 非静态变量(静态变量无法直接@Autowired注入)
+    private final RemoteDictService dictFeignClient;
+
+    // 2. 构造器注入(推荐,比@Autowired字段注入更稳定)
+    @Autowired
+    public SimpleDictExportUtil(RemoteDictService dictFeignClient) {
+        this.dictFeignClient = dictFeignClient;
+    }*/
+
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+
+    /**
+     * 处理单个对象的字典映射(非静态方法,通过Spring容器调用)
+     */
+    public void handleDict(Object obj) {
+        if (obj == null) return;
+        Field[] fields = ReflectUtil.getFields(obj.getClass());
+        for (Field field : fields) {
+            if (field.isAnnotationPresent(Dict.class)) {
+                Dict dictAnno = field.getAnnotation(Dict.class);
+                String dictType = dictAnno.value();
+
+                try {
+                    field.setAccessible(true);
+                    String dictCode = (String) field.get(obj);
+                    if (ObjectUtils.isEmpty(dictCode)) continue;
+
+                    // 调用Feign客户端获取字典名称(核心)
+                    String dictName = dictTypeService.getDictLabel(dictType, dictCode);
+                    field.set(obj, dictName);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    /**
+     * 批量处理列表(非静态方法)
+     */
+    public void handleDictList(List<?> list) {
+        if (list == null || list.isEmpty()) return;
+        list.forEach(this::handleDict);
+    }
+}

+ 7 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizFinancialAdjustmentRecordController.java

@@ -2,7 +2,10 @@ package com.ruoyi.logistics.controller;
 
 import java.util.List;
 import java.io.IOException;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.logistics.annotation.SimpleDictExportUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,7 +37,8 @@ public class BizFinancialAdjustmentRecordController extends BaseController
 {
     @Autowired
     private IBizFinancialAdjustmentRecordService bizFinancialAdjustmentRecordService;
-
+    @Resource
+    SimpleDictExportUtil simpleDictExportUtil;
     /**
      * 查询调账流水记录列表
      */
@@ -56,6 +60,8 @@ public class BizFinancialAdjustmentRecordController extends BaseController
     public void export(HttpServletResponse response, BizFinancialAdjustmentRecord bizFinancialAdjustmentRecord)
     {
         List<BizFinancialAdjustmentRecord> list = bizFinancialAdjustmentRecordService.selectBizFinancialAdjustmentRecordList(bizFinancialAdjustmentRecord);
+        simpleDictExportUtil.handleDictList(list);
+
         ExcelUtil<BizFinancialAdjustmentRecord> util = new ExcelUtil<BizFinancialAdjustmentRecord>(BizFinancialAdjustmentRecord.class);
         util.exportExcel(response, list, "调账流水记录数据");
     }

+ 3 - 4
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizInvoiceController.java

@@ -51,9 +51,8 @@ public class BizInvoiceController {
     /**
      * 发票查询
      */
-    @PostMapping("/selectInvoice")
-    public AjaxResult selectInvoice(@RequestBody Map param) throws JsonProcessingException {
-        Map result=invoiceService.selectInvoice(param);
-        return  null;
+    @PostMapping("/updateInvoice")
+    public void updateInvoice() throws JsonProcessingException {
+       invoiceService.updateInvoice();
     }
 }

+ 19 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizWaybillCostDetailsController.java

@@ -1,7 +1,10 @@
 package com.ruoyi.logistics.controller;
 
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.logistics.annotation.SimpleDictExportUtil;
 import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
 import com.ruoyi.logistics.service.IRptFinancialMonthSummaryService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +43,22 @@ public class BizWaybillCostDetailsController extends BaseController
 
 
 
+    //运单中的费用明细
+    @GetMapping("/detaillist")
+    public TableDataInfo detaillist(BizWaybillCostDetails bizWaybillCostDetails)
+    {
+        startPage();
+        List<BizWaybillCostDetails> list = bizWaybillCostDetailsService.detaillist(bizWaybillCostDetails);
+        return getDataTable(list);
+    }
+
+
+
+
+
+
+
+
     /**
      * 查询运单明细列表
      * 这个在财务月度汇总需传入供应商id以及外部运单号  查询详情列表

+ 6 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/RptFinancialMonthSummaryController.java

@@ -3,7 +3,10 @@ package com.ruoyi.logistics.controller;
 import java.util.List;
 import java.io.IOException;
 import java.util.Map;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.logistics.annotation.SimpleDictExportUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -35,7 +38,8 @@ public class RptFinancialMonthSummaryController extends BaseController
 {
     @Autowired
     private IRptFinancialMonthSummaryService rptFinancialMonthSummaryService;
-
+    @Resource
+    SimpleDictExportUtil simpleDictExportUtil;
     /**
      * 查询财务月度汇总列表
      */
@@ -57,6 +61,7 @@ public class RptFinancialMonthSummaryController extends BaseController
     public void export(HttpServletResponse response, RptFinancialMonthSummary rptFinancialMonthSummary)
     {
         List<RptFinancialMonthSummary> list = rptFinancialMonthSummaryService.selectRptFinancialMonthSummaryList(rptFinancialMonthSummary);
+        simpleDictExportUtil.handleDictList(list);
         ExcelUtil<RptFinancialMonthSummary> util = new ExcelUtil<RptFinancialMonthSummary>(RptFinancialMonthSummary.class);
         util.exportExcel(response, list, "财务月度汇总数据");
     }

+ 3 - 3
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizAddressBook.java

@@ -47,15 +47,15 @@ public class BizAddressBook extends BaseEntity
     private String detailedAddress;
 
     /** 是否默认 0非默认1默认 */
-    @Excel(name = "是否默认 0非默认1默认")
+    @Excel(name = "是否默认", readConverterExp = "0=非默认,1=默认")
     private String defaultFlag;
 
     /** 部门ID */
-    @Excel(name = "部门ID")
+//    @Excel(name = "部门ID")
     private Long deptId;
 
     /** 用户ID */
-    @Excel(name = "用户ID")
+//    @Excel(name = "用户ID")
     private Long userId;
 
     /** 删除标志(0代表存在 2代表删除) */

+ 9 - 4
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizFinancialAdjustmentRecord.java

@@ -1,5 +1,6 @@
 package com.ruoyi.logistics.domain;
 
+import com.ruoyi.logistics.annotation.Dict;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.core.annotation.Excel;
@@ -17,6 +18,8 @@ public class BizFinancialAdjustmentRecord extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
+    @Excel(name = "供应商")
+    private String deptName;
     /** 调账流水id */
     private Long financialAdjustId;
 
@@ -30,6 +33,7 @@ public class BizFinancialAdjustmentRecord extends BaseEntity
 
     /** 调账类型 */
     @Excel(name = "调账类型")
+    @Dict("adjustment_type")
     private String adjustmentType;
 
     /** 原金额 */
@@ -49,15 +53,16 @@ public class BizFinancialAdjustmentRecord extends BaseEntity
     private String adjustmentReason;
 
     /** 部门ID */
-    @Excel(name = "部门ID")
+
     private Long deptId;
 
     /** 用户ID */
-    @Excel(name = "用户ID")
-    private Long userId;
 
+    private Long userId;
+    @Excel(name = "操作人")
     private String userName;
-    private String deptName;
+
+
 
     public void setUserName(String userName) {
         this.userName = userName;

+ 38 - 12
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizWaybillOrder.java

@@ -3,6 +3,10 @@ package com.ruoyi.logistics.domain;
 import java.math.BigDecimal;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excels;
+import com.ruoyi.logistics.annotation.Dict;
+import com.ruoyi.system.api.domain.SysDept;
+import com.ruoyi.system.api.domain.SysUser;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.core.annotation.Excel;
@@ -22,15 +26,15 @@ public class BizWaybillOrder extends BaseEntity
     private Long waybillId;
 
     /** 运单号 内部生成 */
-    @Excel(name = "运单号 内部生成")
+    @Excel(name = "运单号")
     private String waybillNo;
 
     /** 外部运单号 JD/SF的运单号 */
-    @Excel(name = "外部运单号 JD/SF的运单号")
+    @Excel(name = "外部运单号")
     private String externalWaybillNo;
 
     /** 订单类型 1-非时效件(京东),2-时效件(顺丰) */
-    @Excel(name = "订单类型 1-非时效件(京东),2-时效件(顺丰)")
+    @Excel(name = "订单类型", readConverterExp = "1=京东,2=顺丰")
     private Integer orderType;
 
     /** 发件人姓名 */
@@ -98,36 +102,36 @@ public class BizWaybillOrder extends BaseEntity
     private Long goodsQty;
 
     /** 订单状态 */
-    @Excel(name = "订单状态")
+    @Excel(name = "订单状态", readConverterExp = "1=待揽件,2=已揽件,3=运输中,4=派送中,5=已签收,6=已取消")
     private Integer orderStatus;
 
     /** 取件类型 */
-    @Excel(name = "取件类型")
+    @Excel(name = "取件类型", readConverterExp = "1=上门取件,2=自提")
     private Integer pickupType;
 
     /** 上门取件开始时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "上门取件开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "上门取件开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date sendStartTime;
 
     /** 上门取件结束时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "上门取件结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "上门取件结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date sendEndTime;
 
     /** 揽收时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "揽收时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "揽收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date pickupTime;
 
     /** 派送时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "派送时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "派送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date deliveryTime;
 
     /** 签收时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "签收时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "签收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date signTime;
 
     /** 取消原因 */
@@ -150,13 +154,19 @@ public class BizWaybillOrder extends BaseEntity
     private String delFlag;
 
     /** 部门ID */
-    @Excel(name = "部门ID")
+//    @Excel(name = "部门ID")
     private Long deptId;
 
+    @Excel(name = "部门名称")
+    private String deptName;
+
     /** 用户ID */
-    @Excel(name = "用户ID")
+//    @Excel(name = "用户ID")
     private Long userId;
 
+    @Excel(name = "用户昵称")
+    private String nickName;
+
     /** 产品类型 */
     @Excel(name = "产品类型")
     private String productCode;
@@ -518,6 +528,22 @@ public class BizWaybillOrder extends BaseEntity
         this.addedService = addedService;
     }
 
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/InvoiceRequest.java

@@ -23,7 +23,7 @@ public class InvoiceRequest {
     private  String bz;         //备注
 
 
-
+    private  Long summaryId;         //月度报表id
 
 
 }

+ 9 - 7
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/RptFinancialMonthSummary.java

@@ -1,5 +1,6 @@
 package com.ruoyi.logistics.domain;
 
+import com.ruoyi.logistics.annotation.Dict;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.core.annotation.Excel;
@@ -33,14 +34,15 @@ public class RptFinancialMonthSummary extends BaseEntity
     private String transactionCount;
 
     /** 账单状态 1.待对账 2.已对账 3.待开票 4.已开票 */
-    @Excel(name = "账单状态 1.待对账 2.已对账 3.待开票 4.已开票")
+    @Excel(name = "账单状态")
+    @Dict("monthly_report_status")
     private String status;
 
     /** 删除标志 */
     private String delFlag;
 
     /** 部门ID */
-    @Excel(name = "部门ID")
+
     private Long deptId;
 
     /** 供应商名称 */
@@ -48,23 +50,23 @@ public class RptFinancialMonthSummary extends BaseEntity
     private String deptName;
 
     /** 用户id */
-    @Excel(name = "用户id")
+
     private Long userId;
 
     /** 百旺开票单据编号 */
-    @Excel(name = "百旺开票单据编号")
+
     private String bwDjbh;
 
     /** 电子发票pdf地址 */
-    @Excel(name = "电子发票pdf地址")
+
     private String bwDzfpPdfUrl;
 
     /** 电子发票ofd地址 */
-    @Excel(name = "电子发票ofd地址")
+
     private String bwDzfpOfdUrl;
 
     /** 电子发票xml地址 */
-    @Excel(name = "电子发票xml地址")
+
     private String bwDzfpXmlUrl;
 
     public void setSummaryMonthEnd(String summaryMonthEnd) {

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizWaybillCostDetailsMapper.java

@@ -62,4 +62,6 @@ public interface BizWaybillCostDetailsMapper
     List<BizWaybillCostDetails> selectBizWaybillCostDetailsListByWx(BizWaybillCostDetails bizWaybillCostDetails);
 
     BizWaybillCostDetails getAccountAdjustmentById(BizWaybillCostDetails bizWaybillCostDetails);
+
+    List<BizWaybillCostDetails> detaillist(BizWaybillCostDetails bizWaybillCostDetails);
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/RptFinancialMonthSummaryMapper.java

@@ -67,4 +67,6 @@ public interface RptFinancialMonthSummaryMapper
     int insertBachRptFinancialMonthSummary(List<Map<String, Object>> monthSummaryList);
 
     List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary);
+
+    int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary);
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizWaybillCostDetailsService.java

@@ -69,4 +69,6 @@ public interface IBizWaybillCostDetailsService
     int accountAdjustment(BizWaybillCostDetails bizWaybillCostDetails);
 
     BizWaybillCostDetails getAccountAdjustmentById(BizWaybillCostDetails bizWaybillCostDetails);
+
+    List<BizWaybillCostDetails> detaillist(BizWaybillCostDetails bizWaybillCostDetails);
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IRptFinancialMonthSummaryService.java

@@ -68,4 +68,6 @@ public interface IRptFinancialMonthSummaryService
     int creatMontSummary(Map param);
 
     List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary);
+
+    public int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary);
 }

+ 1 - 1
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/InvoiceService.java

@@ -16,5 +16,5 @@ public interface InvoiceService {
 
     Map invoiceIssuance(InvoiceRequest invoiceRequest) throws JsonProcessingException;
 
-    Map selectInvoice(Map param) throws JsonProcessingException;
+    void updateInvoice() throws JsonProcessingException;
 }

+ 7 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizAddressBookServiceImpl.java

@@ -79,9 +79,16 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService
     @Override
     public int updateBizAddressBook(BizAddressBook bizAddressBook)
     {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+
         bizAddressBook.setCreateTime(DateUtils.getNowDate());
         bizAddressBook.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
         bizAddressBook.setUpdateTime(DateUtils.getNowDate());
+
+        if ("1".equals(bizAddressBook.getDefaultFlag())) {
+            bizAddressBookMapper.updateBizAddressBookDefault(loginUser.getUserid());
+        }
+
         return bizAddressBookMapper.updateBizAddressBook(bizAddressBook);
     }
 

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizFinancialAdjustmentRecordServiceImpl.java

@@ -2,6 +2,7 @@ package com.ruoyi.logistics.service.impl;
 
 import java.util.List;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.datascope.annotation.DataScope;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.logistics.mapper.BizFinancialAdjustmentRecordMapper;
@@ -39,6 +40,7 @@ public class BizFinancialAdjustmentRecordServiceImpl implements IBizFinancialAdj
      * @return 调账流水记录
      */
     @Override
+    @DataScope(deptAlias = "d")
     public List<BizFinancialAdjustmentRecord> selectBizFinancialAdjustmentRecordList(BizFinancialAdjustmentRecord bizFinancialAdjustmentRecord)
     {
         return bizFinancialAdjustmentRecordMapper.selectBizFinancialAdjustmentRecordList(bizFinancialAdjustmentRecord);

+ 6 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillCostDetailsServiceImpl.java

@@ -171,4 +171,10 @@ catch(Exception e)
     public BizWaybillCostDetails getAccountAdjustmentById(BizWaybillCostDetails bizWaybillCostDetails) {
         return bizWaybillCostDetailsMapper.getAccountAdjustmentById(bizWaybillCostDetails);
     }
+
+    @Override
+    public List<BizWaybillCostDetails> detaillist(BizWaybillCostDetails bizWaybillCostDetails) {
+        return bizWaybillCostDetailsMapper.detaillist(bizWaybillCostDetails);
+
+    }
 }

+ 1 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizWaybillOrderServiceImpl.java

@@ -98,6 +98,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
                 }
             }
         }
+        bizWaybillOrder.setPickupType(1);
         bizWaybillOrder.setCreateTime(DateUtils.getNowDate());
         bizWaybillOrder.setUserId(loginUser.getUserid());
         bizWaybillOrder.setDeptId(loginUser.getSysUser().getDeptId());

+ 8 - 2
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/FeePushService.java

@@ -5,6 +5,8 @@ import com.ruoyi.logistics.domain.*;
 import com.ruoyi.logistics.service.IBizFinancialFeeItemsService;
 import com.ruoyi.logistics.service.IBizWaybillCostDetailsService;
 import com.ruoyi.logistics.service.IBizWaybillOrderService;
+import com.ruoyi.system.api.domain.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
@@ -23,7 +25,8 @@ import java.util.List;
 @Service
 public class FeePushService {
     private static final Logger logger = LoggerFactory.getLogger(FeePushService.class);
-
+    @Autowired
+    private ISysDeptService sysDeptService;
     @Autowired
     private IBizWaybillOrderService bizWaybillOrderService;
     @Autowired
@@ -57,8 +60,11 @@ public class FeePushService {
             Long deptId=orderList.get(0).getDeptId();
             Long userId=orderList.get(0).getUserId();
             Long waybillId=orderList.get(0).getWaybillId();
+
+            SysDept sysDept = sysDeptService.selectDeptById(orderList.get(0).getDeptId());
+
             // TODO:先写死  这里差一个查询供应商费率的查询
-            String  Rate="1.5";
+            String  Rate=sysDept.getRateValue();
             /*处理费用明细*/
             if (feeList != null && !feeList.isEmpty()) {
                 for (SfFeeInfo fee : feeList) {

+ 73 - 31
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/InvoiceServiceImpl.java

@@ -2,9 +2,12 @@ package com.ruoyi.logistics.service.impl;
 import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisIdGenerator;
 import com.ruoyi.logistics.config.InvoiceConfig;
 import com.ruoyi.logistics.domain.InvoiceRequest;
+import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
+import com.ruoyi.logistics.service.IRptFinancialMonthSummaryService;
 import com.ruoyi.logistics.service.InvoiceService;
 import com.ruoyi.logistics.util.Base64Util;
 import com.ruoyi.logistics.util.HttpUtil;
@@ -13,10 +16,12 @@ import com.ruoyi.logistics.util.TaxAmountCalculator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import com.fasterxml.jackson.core.type.TypeReference;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 
@@ -34,8 +39,11 @@ public class InvoiceServiceImpl implements InvoiceService {
     private RedisIdGenerator redisIdGenerator;
     @Autowired
     private InvoiceConfig invoiceConfig;
+    @Autowired
+    JdbcTemplate jdbcTemplate;
 
-
+    @Autowired
+    private IRptFinancialMonthSummaryService rptFinancialMonthSummaryService;
 
     /**
      * 电子发票专票开据
@@ -49,15 +57,16 @@ public class InvoiceServiceImpl implements InvoiceService {
         // 1. 组装正票申请的业务报文(content)
         JSONObject content = new JSONObject();
         // 必选参数
-        content.put("djbh", redisIdGenerator.generateUniqueId("BWKP")); // 全局唯一单据编号
+        String djbh=redisIdGenerator.generateUniqueId("BWKP");
+        content.put("djbh", djbh); // 全局唯一单据编号
         content.put("kpzddm", invoiceConfig.getKpZddm());      // 开票终端代码
         content.put("fplxdm", "01");                           // 发票类型:01=专票,02=普票
         content.put("kplx", "0");                              // 开票类型:0=蓝字发票
         content.put("zsfs", "0");                              // 征收方式:0=普通征税
         content.put("khmc", invoiceRequest.getKhmc());         // 购货单位名称
         content.put("hsje", invoiceRequest.getHsje());                           // 含税金额(价税合计)
-        content.put("gsdm", "7600");                           // 公司代码
-        content.put("yhdm", "ec014266e63344698642d6e5c5b8b556"); // 用户代码
+        content.put("gsdm", "3204");                           // 公司代码
+        content.put("yhdm", "393e8941f3f1409e8cbc7fc981ca1774"); // 用户代码
         content.put("sjlx", "1"); // 数据类型(批发系统,由平台提供)
         content.put("sfwzzfp", "N"); // 非纸质发票(默认N)
         content.put("hsbz", "1"); // 含税标志(1=含税,默认)
@@ -72,14 +81,14 @@ public class InvoiceServiceImpl implements InvoiceService {
         JSONObject goodsItem = new JSONObject();
         goodsItem.put("djhh", "1"); // 单据行号
         goodsItem.put("fphxz", "0"); // 发票行性质:0=正常行
-        goodsItem.put("spmc", "测试商品"); // 商品名称
+        goodsItem.put("spmc", "*经纪代理服务*物流辅助服务代理服务费"); // 商品名称
         goodsItem.put("jldw", "月"); //计量单位
         goodsItem.put("spsl", 1.00); // 商品数量
         goodsItem.put("ssbm", "3040802010100000000"); // 19位税收编码
         goodsItem.put("hsdj", invoiceRequest.getHsje()); // 含税单价
         goodsItem.put("hsje", invoiceRequest.getHsje()); // 商品含税金额
         BigDecimal[] result =TaxAmountCalculator.calculateFromTaxIncluded(invoiceRequest.getHsje(), BigDecimal.valueOf(0.06));
-        goodsItem.put("tax", 0.06); // 税率13%
+        goodsItem.put("tax", 0.06); // 税率6%
         goodsItem.put("se", result[1]); // 商品税额
         content.put("mxxx", new JSONObject[]{goodsItem});
         logger.info("开票参数组装完成  参数{}",content);
@@ -99,11 +108,20 @@ public class InvoiceServiceImpl implements InvoiceService {
         requestParam.put("signType", invoiceConfig.getSignType());
         String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
         ObjectMapper objectMapper = new ObjectMapper();
-       // JsonNode jsonNode = objectMapper.readTree(responseJson);
         Map<String, Object> invoiceMap = objectMapper.readValue(
                 responseJson,
                 new TypeReference<Map<String, Object>>() {}
         );
+
+        if("0".equals(invoiceMap.get("code").toString())){
+            //这里成功后也要将单据编号进行回传月度报表
+            RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+            rptFinancialMonthSummary.setStatus("3");
+            rptFinancialMonthSummary.setBwDjbh(djbh);
+            rptFinancialMonthSummary.setSummaryId(invoiceRequest.getSummaryId());
+            rptFinancialMonthSummaryService.updateRptFinancialMonthSummary(rptFinancialMonthSummary);
+        }
+
         return invoiceMap;
     }
 
@@ -116,29 +134,53 @@ public class InvoiceServiceImpl implements InvoiceService {
      */
 
     @Override
-    public Map selectInvoice(Map param) throws JsonProcessingException {
-        // 1. 组装正票申请的业务报文(content)
-        JSONObject content = new JSONObject();
-        content.put("djbh",param.get("djbh"));
-        String contentBase64 = Base64Util.encode(content.toJSONString());
-        Map<String, String> signParams = new HashMap<>();
-        signParams.put("appid", invoiceConfig.getAppId());
-        signParams.put("serviceid", invoiceConfig.getServiceSelect());
-        signParams.put("content", contentBase64);
-        String signature = SignUtil.sign(invoiceConfig.getSignType(), invoiceConfig.getAppSecret(), signParams);
-        JSONObject requestParam = new JSONObject();
-        requestParam.put("appid", invoiceConfig.getAppId());
-        requestParam.put("serviceid", invoiceConfig.getServiceSelect());
-        requestParam.put("content", contentBase64);
-        requestParam.put("signature", signature);
-        requestParam.put("signType", invoiceConfig.getSignType());
-        String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
-        ObjectMapper objectMapper = new ObjectMapper();
-        // JsonNode jsonNode = objectMapper.readTree(responseJson);
-        Map<String, Object> invoiceMap = objectMapper.readValue(
-                responseJson,
-                new TypeReference<Map<String, Object>>() {}
-        );
-        return invoiceMap;
+    public void updateInvoice() throws JsonProcessingException {
+
+        //查询所有未开票的
+        List<Map<String,Object>> invoiceList= jdbcTemplate.queryForList("SELECT bw_djbh FROM `rpt_financial_month_summary` where bw_djbh is  not null  and  bw_dzfp_pdf_url  is null");
+        for(int i=0;i<invoiceList.size();i++){
+            // 1.组装查询的报文
+            JSONObject content = new JSONObject();
+            String djbh=invoiceList.get(i).get("bw_djbh").toString();
+            content.put("djbh",djbh);
+            String contentBase64 = Base64Util.encode(content.toJSONString());
+            // 3. 构建签名参数,生成签名值
+            Map<String, String> signParams = new HashMap<>();
+            signParams.put("appid", invoiceConfig.getAppId());
+            signParams.put("serviceid", invoiceConfig.getServiceSelect());
+            signParams.put("content", contentBase64);
+            String signature = SignUtil.sign("3", invoiceConfig.getAppSecret(), signParams);
+
+            JSONObject requestParam = new JSONObject();
+            requestParam.put("appid", invoiceConfig.getAppId());
+            requestParam.put("serviceid", invoiceConfig.getServiceSelect());
+            requestParam.put("content", contentBase64);
+            requestParam.put("signature", signature);
+            requestParam.put("signType","3");
+            String responseJson = HttpUtil.doPostJson(invoiceConfig.getBaseUrl(), requestParam.toJSONString());
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> invoiceMap = objectMapper.readValue(
+                    responseJson,
+                    new TypeReference<Map<String, Object>>() {}
+            );
+            Map<String, Object> dataMap= new HashMap<>();
+            if(StringUtils.isNotBlank(invoiceMap.get("data").toString())){
+                dataMap = objectMapper.readValue(
+                        Base64Util.decode(invoiceMap.get("data").toString()),
+                        new TypeReference<Map<String, Object>>() {}
+                );
+
+            }
+            //这里  需要将查询到的信息进行回写月度报表里面
+            if("0".equals(invoiceMap.get("code").toString())){
+                RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+                rptFinancialMonthSummary.setBwDjbh(djbh);
+                rptFinancialMonthSummary.setBwDzfpPdfUrl(dataMap.get("ofd").toString());
+                rptFinancialMonthSummary.setBwDzfpOfdUrl(dataMap.get("pdf").toString());
+                rptFinancialMonthSummary.setBwDzfpXmlUrl(dataMap.get("xml").toString());
+                rptFinancialMonthSummaryService.updateRptFinancialMonthSummaryByInvoice(rptFinancialMonthSummary);
+            }
+        }
+
     }
 }

+ 6 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/RptFinancialMonthSummaryServiceImpl.java

@@ -125,4 +125,10 @@ public class RptFinancialMonthSummaryServiceImpl implements IRptFinancialMonthSu
     public List<RptFinancialMonthSummary> selectRptFinancialMonthSummaryListToCheck(RptFinancialMonthSummary rptFinancialMonthSummary) {
         return rptFinancialMonthSummaryMapper.selectRptFinancialMonthSummaryListToCheck(rptFinancialMonthSummary);
     }
+
+    @Override
+    public int updateRptFinancialMonthSummaryByInvoice(RptFinancialMonthSummary rptFinancialMonthSummary) {
+        rptFinancialMonthSummary.setUpdateTime(DateUtils.getNowDate());
+        return rptFinancialMonthSummaryMapper.updateRptFinancialMonthSummaryByInvoice(rptFinancialMonthSummary);
+    }
 }

+ 0 - 3
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/util/SignUtil.java

@@ -74,9 +74,6 @@ public class SignUtil {
             sb.append(SPE5);
             sb.append(sbParam);
         }
-        System.out.println(">>>>>>>>>>>>>>>>>>>>");
-        System.out.println(sb.toString());
-        System.out.println(">>>>>>>>>>>>>>>>>>>>");
         return sb.toString();
     }
     private static String buildResource2(Map<String, String> querys) {

+ 12 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java

@@ -1,8 +1,10 @@
 package com.ruoyi.system.controller;
 
 import java.util.List;
+import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -35,6 +37,7 @@ public class SysDictTypeController extends BaseController
     @Autowired
     private ISysDictTypeService dictTypeService;
 
+
     @RequiresPermissions("system:dict:list")
     @GetMapping("/list")
     public TableDataInfo list(SysDictType dictType)
@@ -129,4 +132,13 @@ public class SysDictTypeController extends BaseController
         List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
         return success(dictTypes);
     }
+
+
+    @GetMapping("/getDictLabel")
+    public String  getDictLabel(String dictType, String dictCode)
+    {
+      return dictTypeService.getDictLabel(dictType,dictCode);
+    }
+
+
 }

+ 2 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java

@@ -95,4 +95,6 @@ public interface ISysDictTypeService
      * @return 结果
      */
     public boolean checkDictTypeUnique(SysDictType dictType);
+
+    String getDictLabel(String dictType, String dictCode);
 }

+ 10 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 import javax.annotation.PostConstruct;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.ruoyi.common.core.constant.UserConstants;
@@ -220,4 +221,13 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService
         }
         return UserConstants.UNIQUE;
     }
+
+
+    @Autowired
+    JdbcTemplate jdbcTemplate;
+    @Override
+    public String getDictLabel(String dictType, String dictCode) {
+        List<Map<String,Object>>  dictList=jdbcTemplate.queryForList(" select dict_label from sys_dict_data  where dict_type=? and dict_value=?",dictType,dictCode);
+        return dictList.get(0).get("dict_label").toString();
+    }
 }

+ 5 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizFinancialAdjustmentRecordMapper.xml

@@ -45,7 +45,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="adjustmentReason != null  and adjustmentReason != ''"> and adjustment_reason = #{adjustmentReason}</if>
             <if test="deptId != null "> and a.dept_id = #{deptId}</if>
             <if test="userId != null "> and a.user_id = #{userId}</if>
+
+            <!-- 数据范围过滤 -->
+            ${params.dataScope}
         </where>
+     order by a.create_time DESC
+
     </select>
     
     <select id="selectBizFinancialAdjustmentRecordByFinancialAdjustId" parameterType="Long" resultMap="BizFinancialAdjustmentRecordResult">

+ 9 - 3
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillCostDetailsMapper.xml

@@ -74,9 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="summaryMonth != null "> AND DATE_FORMAT( b.sign_time, '%Y.%m' ) = #{summaryMonth}</if>
             <if test="deptId != null "> AND a.dept_id = #{deptId}</if>
             <if test="externalWaybillNo != null  and externalWaybillNo != ''"> and a.external_waybill_no = #{externalWaybillNo}</if>
-
-   <!--         &lt;!&ndash; 数据范围过滤 &ndash;&gt;
-            ${params.dataScope}-->
+            ${params.dataScope}
 
            <!-- <if test="waybillId != null "> and waybill_id = #{waybillId}</if>
 
@@ -92,6 +90,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
+    <select id="detaillist" parameterType="com.ruoyi.logistics.domain.BizWaybillCostDetails" resultMap="BizWaybillCostDetailsResult">
+        <include refid="selectBizWaybillCostDetailsVo"/>
+        <where>
+
+            <if test="waybillId != null "> and a.waybill_id = #{waybillId}</if>
+
+        </where>
+    </select>
 
     <select id="selectBizWaybillCostDetailsListByWx" parameterType="com.ruoyi.logistics.domain.BizWaybillCostDetails" resultMap="BizWaybillCostDetailsResult">
         select waybill_detail_id, waybill_id, external_waybill_no, fee_item_code, fee_item_name, fee_name, amount, rate_amount, adjust_amount, remark, create_time, update_time, dept_id, user_id, del_flag, create_by, update_by from biz_waybill_cost_details

+ 8 - 1
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizWaybillOrderMapper.xml

@@ -46,13 +46,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="userId"    column="user_id"    />
         <result property="productCode"    column="product_code"    />
         <result property="addedService"    column="added_service"    />
+        <result property="nickName"    column="nick_name"    />
+        <result property="deptName"    column="dept_name"    />
     </resultMap>
 
     <sql id="selectBizWaybillOrderVo">
         select bwo.waybill_id, bwo.waybill_no, bwo.external_waybill_no, bwo.order_type, bwo.sender_name, bwo.sender_phone, bwo.sender_province, bwo.sender_city, bwo.sender_county, bwo.sender_address, bwo.receiver_name,
                bwo.receiver_phone, bwo.receiver_province, bwo.receiver_city, bwo.receiver_county, bwo.receiver_address, bwo.goods_name, bwo.goods_weight, bwo.goods_volume, bwo.goods_qty, bwo.order_status, bwo.pickup_type,
                bwo.send_start_time, bwo.send_end_time, bwo.pickup_time, bwo.delivery_time, bwo.sign_time, bwo.cancel_reason, bwo.parent_waybill_id, bwo.invoice_flag, bwo.adjust_flag, bwo.remark, bwo.create_time, bwo.update_time,
-               bwo.del_flag, bwo.create_by, bwo.update_by, bwo.dept_id, bwo.user_id, bwo.product_code, bwo.added_service
+               bwo.del_flag, bwo.create_by, bwo.update_by, bwo.dept_id, bwo.user_id, bwo.product_code, bwo.added_service, u.nick_name, d.dept_name
         from biz_waybill_order bwo
                  left join sys_user u on bwo.user_id = u.user_id
                  left join sys_dept d on bwo.dept_id = d.dept_id
@@ -91,6 +93,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="parentWaybillId != null "> and parent_waybill_id = #{parentWaybillId}</if>
             <if test="invoiceFlag != null  and invoiceFlag != ''"> and invoice_flag = #{invoiceFlag}</if>
             <if test="adjustFlag != null  and adjustFlag != ''"> and adjust_flag = #{adjustFlag}</if>
+            <if test="searchKeyword != null and searchKeyword != ''"> and (external_waybill_no like concat('%', #{searchKeyword}, '%') or
+                sender_name like concat('%', #{searchKeyword}, '%') or
+                sender_phone like concat('%', #{searchKeyword}, '%') or
+                receiver_name like concat('%', #{searchKeyword}, '%') or
+                receiver_phone like concat('%', #{searchKeyword}, '%'))</if>
 
             <!-- 数据范围过滤 -->
             ${params.dataScope}

+ 23 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/RptFinancialMonthSummaryMapper.xml

@@ -141,6 +141,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where summary_id = #{summaryId}
     </update>
 
+    <update id="updateRptFinancialMonthSummaryByInvoice" parameterType="com.ruoyi.logistics.domain.RptFinancialMonthSummary">
+        update rpt_financial_month_summary
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="summaryMonth != null">summary_month = #{summaryMonth},</if>
+            <if test="payableAmount != null">payable_amount = #{payableAmount},</if>
+            <if test="transactionCount != null">transaction_count = #{transactionCount},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="bwDjbh != null">bw_djbh = #{bwDjbh},</if>
+            <if test="bwDzfpPdfUrl != null">bw_dzfp_pdf_url = #{bwDzfpPdfUrl},</if>
+            <if test="bwDzfpOfdUrl != null">bw_dzfp_ofd_url = #{bwDzfpOfdUrl},</if>
+            <if test="bwDzfpXmlUrl != null">bw_dzfp_xml_url = #{bwDzfpXmlUrl},</if>
+        </trim>
+        where bw_djbh =  #{bwDjbh}
+    </update>
+
     <delete id="deleteRptFinancialMonthSummaryBySummaryId" parameterType="Long">
         delete from rpt_financial_month_summary where summary_id = #{summaryId}
     </delete>

+ 1 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysConfigMapper.xml

@@ -57,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 				and date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
 			</if>
 		</where>
+		order by create_time desc
     </select>
     
     <select id="selectConfigById" parameterType="Long" resultMap="SysConfigResult">

+ 1 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysDictTypeMapper.xml

@@ -39,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 				and date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
 			</if>
 	    </where>
+		order by create_time desc
 	</select>
 	
 	<select id="selectDictTypeAll" resultMap="SysDictTypeResult">

+ 4 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -67,6 +67,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
 		</if>
+		<if test="nickName != null and nickName != ''">
+			AND u.nick_name like concat('%', #{nickName}, '%')
+		</if>
 		<if test="status != null and status != ''">
 			AND u.status = #{status}
 		</if>
@@ -84,6 +87,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
+		order by u.create_time desc
 	</select>
 	
 	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">

+ 1 - 1
jd-logistics-ui-v3/src/api/logistics/order.js

@@ -67,7 +67,7 @@ export function deliverTrace(data) {
 // 查询物流费用
 export function deliverFree(data) {
   return request({
-    url: '/system/costDetails/list',
+    url: '/system/costDetails/detaillist',
     method: 'get',
     params: data
   })

+ 2 - 1
jd-logistics-ui-v3/src/views/logistics/monthSummary/index.vue

@@ -83,6 +83,7 @@
     <el-table v-loading="loading" :data="monthSummaryList">
 <!--      <el-table-column type="selection" width="55" align="center" />-->
 <!--      <el-table-column label="月度汇总id" align="center" prop="summaryId" width="90" />-->
+      <el-table-column label="供应商" align="center" prop="deptName" />
       <el-table-column label="汇总月份" align="center" >
         <template #default="scope">
           <el-button
@@ -101,7 +102,7 @@
           <dict-tag :options="monthly_report_status" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="供应商" align="center" prop="deptName" />
+
 <!--      <el-table-column label="用户id" align="center" prop="userId" />-->
 <!--      <el-table-column label="百旺开票单据编号" align="center" prop="bwDjbh" />-->
 <!--      <el-table-column label="电子发票pdf地址" align="center" prop="bwDzfpPdfUrl" />-->

+ 1 - 1
jd-logistics-ui-v3/src/views/system/dept/index.vue

@@ -55,7 +55,7 @@
          :default-expand-all="isExpandAll"
          :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
       >
-         <el-table-column prop="deptName" label="供应商名称" width="180"></el-table-column>
+         <el-table-column prop="deptName" label="供应商名称" width="230" :show-overflow-tooltip="true"></el-table-column>
 <!--         <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>-->
         <el-table-column prop="rateValue" label="费率" width="50"></el-table-column>
         <el-table-column prop="status" label="状态" width="100">