Browse Source

代码合并

chenw 7 years ago
parent
commit
46d6c2a9ee
100 changed files with 2534 additions and 427 deletions
  1. 5 0
      applications/commons/commons-api/pom.xml
  2. 18 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/ConfigsApi.java
  3. 12 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java
  4. 5 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberServiceFallback.java
  5. 99 0
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/cache/ConfigsCache.java
  6. 5 2
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  7. 11 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java
  8. 4 0
      applications/commons/commons-server/pom.xml
  9. 5 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/ConfigsController.java
  10. 6 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java
  11. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/ConfigsMapper.java
  12. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/ConfigsService.java
  13. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MaxnumberService.java
  14. 24 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ConfigsServiceImpl.java
  15. 12 12
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  16. 2 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/SystemRemindServiceImpl.java
  17. 3 0
      applications/commons/commons-server/src/main/resources/mapper/ConfigsMapper.xml
  18. 3 14
      applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/ProductApi.java
  19. 6 4
      applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/VendorApi.java
  20. 2 0
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/CustomerDTO.java
  21. 12 0
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProdStorageDTO.java
  22. 2 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Customer.java
  23. 2 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendor.java
  24. 14 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CustomerController.java
  25. 7 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java
  26. 13 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java
  27. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  28. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductMapper.java
  29. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java
  30. 22 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  31. 44 6
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  32. 6 4
      applications/document/document-server/src/main/resources/application.yml
  33. 10 2
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  34. 5 4
      applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml
  35. 5 5
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  36. 3 3
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  37. 211 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDTO.java
  38. 90 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDetailDTO.java
  39. 6 6
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckFormDTO.java
  40. 3 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationListDTO.java
  41. 10 10
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/Apcheck.java
  42. 36 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransfer.java
  43. 3 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VerificationList.java
  44. 14 12
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  45. 1 1
      applications/money/money-server/src/main/resources/application.yml
  46. 7 1
      applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml
  47. 1 1
      applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml
  48. 3 1
      applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml
  49. 3 3
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  50. 35 0
      applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/ProdInOutApi.java
  51. 32 0
      applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseApi.java
  52. 0 15
      applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseService.java
  53. 5 0
      applications/purchase/purchase-server/pom.xml
  54. 13 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/ProdInOutController.java
  55. 12 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java
  56. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java
  57. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java
  58. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/Purchase.java
  59. 7 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java
  60. 7 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java
  61. 49 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  62. 56 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  63. 6 4
      applications/purchase/purchase-server/src/main/resources/application.yml
  64. 2 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  65. 3 0
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml
  66. 5 1
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  67. 24 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/QuotationRspDTO.java
  68. 33 109
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java
  69. 18 77
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDetailDTO.java
  70. 8 3
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  71. 6 4
      applications/sale/sale-server/src/main/resources/application.yml
  72. 1 0
      applications/sale/sale-server/src/main/resources/mapper/ProdInOutListMapper.xml
  73. 2 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java
  74. 4 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/InquiryApi.java
  75. 72 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/InquiryApiFallback.java
  76. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/SearchUUApi.java
  77. 302 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/Purchase.java
  78. 313 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseDetail.java
  79. 55 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseDetailEnd.java
  80. 207 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseProdInOut.java
  81. 132 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseProdInOutDetail.java
  82. 22 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/SavePurchaseListReq.java
  83. 22 0
      applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/SavePurchaseListResp.java
  84. 1 1
      applications/transfers/mall-api/src/test/resources/application.yml
  85. 2 2
      applications/transfers/transfers-api/src/main/java/com/usoftchina/saas/transfers/api/SendMessageApi.java
  86. 0 19
      applications/transfers/transfers-api/src/main/java/com/usoftchina/saas/transfers/api/SendMessageApiFallBack.java
  87. 3 2
      applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/interceptor/OpenApiAuthInterceptor.java
  88. 8 0
      applications/transfers/transfers-server/pom.xml
  89. 2 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/TransfersApplication.java
  90. 48 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/B2BConfig.java
  91. 21 8
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java
  92. 18 3
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java
  93. 6 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/ApcheckMapper.java
  94. 6 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/SaledownMapper.java
  95. 46 46
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDown.java
  96. 9 9
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDownDetail.java
  97. 44 11
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java
  98. 32 5
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/ApCheckServiceImpl.java
  99. 61 3
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java
  100. 1 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/Executable.java

+ 5 - 0
applications/commons/commons-api/pom.xml

@@ -32,5 +32,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>auth-client</artifactId>
         </dependency>
+      <dependency>
+        <groupId>org.springframework.data</groupId>
+        <artifactId>spring-data-redis</artifactId>
+        <version>RELEASE</version>
+      </dependency>
     </dependencies>
 </project>

+ 18 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/ConfigsApi.java

@@ -0,0 +1,18 @@
+package com.usoftchina.saas.commons.api;
+
+import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.po.Configs;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+@FeignClient(name = "commons-server", configuration = ServiceFeignInterceptor.class)
+public interface ConfigsApi {
+
+    @GetMapping("/configs/list/{companyId}")
+    Result<List<Configs>> getConfigsByCompanyId(@PathVariable("companyId") Long companyId);
+
+}

+ 12 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java

@@ -31,4 +31,16 @@ public interface MaxnumberService {
      */
     @PostMapping("/number/getMaxnumber")
     public Result<String> getMaxnumber(@RequestParam("caller") String caller, @RequestParam("update") boolean update);
+
+    /**
+     * @Description 获取单号
+     * @Param: [caller, update]
+     * @return: com.usoftchina.saas.base.Result
+     * @Author: guq
+     * @Date: 2018/10/22
+     */
+    @PostMapping("/number/getMaxnumberByCompanyid")
+    public Result<String> getMaxnumberByCompanyid(@RequestParam("caller") String caller, @RequestParam("update") boolean update,
+                                       @RequestParam("companyid") Long companyid);
+
 }

+ 5 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberServiceFallback.java

@@ -18,4 +18,9 @@ public class MaxnumberServiceFallback implements MaxnumberService {
     public Result<String> getMaxnumber(String caller, boolean update) {
         return Result.error("网络异常,请稍后重试!");
     }
+
+    @Override
+    public Result<String> getMaxnumberByCompanyid(String caller, boolean update, Long companyid) {
+        return Result.error("网络异常,请稍后重试!");
+    }
 }

+ 99 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/cache/ConfigsCache.java

@@ -0,0 +1,99 @@
+package com.usoftchina.saas.commons.cache;
+
+
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.cache.RedisHashCache;
+import com.usoftchina.saas.commons.api.ConfigsApi;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.context.SpringContextHolder;
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.utils.JsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Supplier;
+
+/**
+ * @Description 系统参数配置
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class ConfigsCache extends RedisHashCache<String, String, String> {
+
+    /**
+     * 企业ID
+     */
+    private Long id;
+
+    @Autowired
+    private ConfigsApi configsApi;
+
+    private static final RedisTemplate<String, String> REDIS_TEMPLATE = SpringContextHolder.getBean("redisTemplate", RedisTemplate.class);
+
+    public ConfigsCache() {
+        super(() -> REDIS_TEMPLATE);
+    }
+
+    public static ConfigsCache of(Long id){
+        ConfigsCache cache = new ConfigsCache();
+        cache.id = id;
+        return cache;
+    }
+
+    /**
+     * 当前企业的缓存信息
+     *
+     * @return
+     */
+    public static ConfigsCache current() {
+        return of(BaseContextHolder.getCompanyId());
+    }
+
+    @Override
+    protected String field() {
+        return String.valueOf("companyId:" + id);
+    }
+
+    @Override
+    protected String key() {
+        return generatePublicKey("common", "configs");
+    }
+
+    @Override
+    protected Supplier<String> getSupplier() {
+        return () -> {
+            if (null == configsApi) {
+                configsApi = SpringContextHolder.getBean(ConfigsApi.class);
+            }
+            Result<List<Configs>> result = null;
+            if (null != id && id > 0) {
+                result = configsApi.getConfigsByCompanyId(id);
+            } else {
+                return null;
+            }
+            if (result.isSuccess()) {
+                return JsonUtils.toJsonString(result.getData());
+            }
+            throw new BizException(result.getCode(), result.getMessage());
+        };
+    }
+
+    public List<Configs> getConfigs(){
+        Optional<String> value = get();
+        if (value.isPresent()){
+            return JsonUtils.fromJsonArray(value.get(), Configs.class);
+        }
+        return null;
+    }
+
+    /**
+     * 是否启用B2B
+     * @return
+     */
+    public boolean enableB2B(){
+        return getConfigs().stream().filter(configs -> "enableB2B".equals(configs.getCode()) && "1".equals(configs.getData())).count() > 0;
+    }
+}

+ 5 - 2
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -41,6 +41,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_REPORT_NOCALLER(79316, "报表配置不存在"),
     BIZ_REPORT_NOTCORRECT(79317, "导入数据无效"),
     BIZ_IMPORT_ERROREXCEL(79318, "请导入对应的单据数据"),
+    BIZ_ENABLE_B2B(79350, "未启用B2B"),
+
 
     NO_OPRATIONDATA(79400,"无可操作单据"),
     NULL_DATA(23232,"无数据"),
@@ -73,6 +75,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     REQUIREDFIELD_NULL(79508,"存在必填字段为空"),
     USER_EXIST(79509, ""),
     CURRENCY_VALID(79510, "币别与源单据不一致不允许修改"),
+    BIZ_SAME(79511, "账户名称重复"),
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),
@@ -80,7 +83,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     PURCHASE_DETAIL_OVERNUM(70001, "明细行数量超过来源采购验收单明细行数量"),
     PURCHASE_ORDER_HASAUDIT(70002, "存在已审核单据,单据编号:%s"),
     PURCHASE_ORDER_HASUNAUDIT(70003, "存在未审核单据,单据编号:%s"),
-
+    PURCHASE_ORDER_HASUPLOAD(70004, "已上传优软商务平台的采购订单不允许反审核,如交易信息发生变更请关闭该订单重新新增订单"),
 
 
     //销售
@@ -116,7 +119,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     DOCUMENTS_AUDITED(74009,"存在已审核单据:%S"),
     DOCUMENTS_UNAUDITED(74010,"存在未审核单据:%S"),
     BANK_AMOUNT_NOTENOUGHS(74011, "资金账户:%S 余额不足"),
-    CURRENCY_NOT_EQUALS(74012, "币别不一致"),
+    BANKNAME_NOT_EQUALS(74012, "转出账户与转入账户相同"),
 
     //反结账
     EARLY_USERING(74012, "期初余额被使用,无法反结账"),

+ 11 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java

@@ -58,7 +58,17 @@ public enum  BillCodeSeq {
 
     CUSTOMERFEDBACK ("客户反馈", "CUSTOMERFEDBACK"),
 
-    BOM("BOM资料", "Bom");
+    SALEDOWN ("客户订单", "SALEDOWN"),
+
+    BOM("BOM资料", "Bom"),
+
+    PURCHASEEND("采购单结案", "PURCHASEEND"),
+
+    PURCHASEINRES("采购验收单反过账","PURCHASEINRES"),
+
+    PURCHASEOUTRES("采购验退单反过账","PURCHASEINRES"),
+
+    APCHECK("对账单", "APCHECK");
 
 
 

+ 4 - 0
applications/commons/commons-server/pom.xml

@@ -35,6 +35,10 @@
           <groupId>com.usoftchina.saas</groupId>
           <artifactId>document-api</artifactId>
         </dependency>
+        <dependency>
+          <groupId>com.usoftchina.saas</groupId>
+          <artifactId>commons-api</artifactId>
+        </dependency>
         <!-- db -->
         <dependency>
             <groupId>mysql</groupId>

+ 5 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/ConfigsController.java

@@ -29,6 +29,11 @@ public class ConfigsController {
         return Result.success(listData);
     }
 
+    @GetMapping("/list/{companyId}")
+    public Result<List<Configs>> getListByConmapyId(@PathVariable("companyId") Long companyId){
+        return Result.success(configsService.getListByConmapyId(companyId));
+    }
+
     @GetMapping("/getConfigByCode")
     public Result<Configs> getConfigByCode(String code) {
         Configs data = configsService.getConfigByCode(code);

+ 6 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java

@@ -25,7 +25,12 @@ public class MaxnumberController {
 
     @PostMapping("/getMaxnumber")
     public Result<String> getMaxnumber(String caller, boolean update) {
-        return Result.success(maxnumberService.getMaxnumner(caller, update));
+        return Result.success(maxnumberService.getMaxnumner(caller, update, null));
+    }
+
+    @PostMapping("/getMaxnumberByCompanyid")
+    public Result<String> getMaxnumberByCompanyid(String caller, boolean update, Long companyid) {
+        return Result.success(maxnumberService.getMaxnumner(caller, update, companyid));
     }
 
     @PostMapping("/pushMaxnubmer")

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/ConfigsMapper.java

@@ -23,4 +23,6 @@ public interface ConfigsMapper {
     void updateCreator(@Param("userId") Long userId, @Param("userName") String userName, @Param("id") Long id);
 
     void updateByCodeSelective(Configs con);
+
+    int selectByCodeAndCompanyId(@Param("code") String code, @Param("companyId") Long companyId);
 }

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/ConfigsService.java

@@ -16,4 +16,6 @@ public interface ConfigsService {
     DocBaseDTO save(Configs data);
 
     void update(List<Configs> data);
+
+    List<Configs> getListByConmapyId(Long companyId);
 }

+ 1 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/MaxnumberService.java

@@ -14,7 +14,7 @@ import com.usoftchina.saas.page.PageRequest;
  * @create: 2018-10-18 18:01
  **/
 public interface MaxnumberService extends CommonBaseService<MaxnumbersMapper, Maxnumbers> {
-    String getMaxnumner(String caller, boolean update);
+    String getMaxnumner(String caller, boolean update, Long companyid);
 
     Result pushMaxnubmer(Integer count, String code, String caller);
 

+ 24 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ConfigsServiceImpl.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.commons.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.mapper.ConfigsMapper;
@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -45,6 +47,11 @@ public class ConfigsServiceImpl implements ConfigsService{
         return pageInfo;
     }
 
+    @Override
+    public List<Configs> getListByConmapyId(Long companyId){
+        return configsMapper.selectByCondition(null, companyId);
+    }
+
     @Override
     public Configs getConfigByCode(String code) {
         if (StringUtils.isEmpty(code)) {
@@ -104,11 +111,28 @@ public class ConfigsServiceImpl implements ConfigsService{
                 currencyDTO.setCr_name(con.getData());
                 currencyDTO.setCr_standard(1L);
                 currencyApi.setStandard(currencyDTO);
+            } else if("enableB2B".equals(con.getCode())){
+                int count = configsMapper.selectByCodeAndCompanyId(con.getCode(), BaseContextHolder.getCompanyId());
+                if (count == 0){
+                    //不存在,则插入
+                    Configs configs = new Configs();
+                    configs.setCode(con.getCode());
+                    configs.setDescription("启用B2B");
+                    configs.setData(con.getData());
+                    configs.setCompanyId(BaseContextHolder.getCompanyId());
+                    configs.setCreateTime(new Date());
+                    configs.setCreatorName(BaseContextHolder.getUserName());
+                    configs.setCreatorId(Integer.parseInt(String.valueOf(BaseContextHolder.getUserId())));
+                    configsMapper.insertSelective(configs);
+                    continue;
+                }
             }
             configsMapper.updateByCodeSelective(con);
         }
         DocBaseDTO baseDTO = new DocBaseDTO(null, "", "Configs");
         //日志记录
         messageLogService.update(baseDTO);
+        //清除configs缓存
+        ConfigsCache.current().hdel();
     }
 }

+ 12 - 12
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java

@@ -51,7 +51,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Date: 2018/10/18
     */
     @Override
-    public String getMaxnumner(String caller, boolean update) {
+    public String getMaxnumner(String caller, boolean update, Long companyId) {
         if (null == caller) {
             throw new BizException(BizExceptionCode.BIZ_NULLCALLER);
         }
@@ -65,17 +65,17 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         Integer length = 0;
         //流水最大数
         Integer maxno = 1;
-        Long companyId = BaseContextHolder.getCompanyId();
+        companyId = companyId == null ? BaseContextHolder.getCompanyId() : companyId;
         Long userId = BaseContextHolder.getUserId();
         //查询编号规则
-        Maxnumbers maxnumbers = findMaxnumbers(caller);
+        Maxnumbers maxnumbers = findMaxnumbers(caller, companyId);
         if (maxnumbers == null) {
             throw new BizException(BizExceptionCode.NULL_CODERULE);
         }
        rulecode = getRulecode(maxnumbers);
        length = maxnumbers.getMn_number();
         //查询从表是否存在该规则数据
-        Maxnumbersdetail detail = getMaxDetail(caller, rulecode);
+        Maxnumbersdetail detail = getMaxDetail(caller, rulecode, companyId);
         if (null == detail) {
             //不存在则插入
             detail = new Maxnumbersdetail();
@@ -93,7 +93,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         maxcode = rulecode + createSerialNum(length, maxno);
         //如果以更新方式取编号
         if (update) {
-            maxnumbersdetailMapper.updateMaxno(detail.getId(), maxno, BaseContextHolder.getCompanyId());
+            maxnumbersdetailMapper.updateMaxno(detail.getId(), maxno, companyId);
         }
         return maxcode;
     }
@@ -118,7 +118,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         //流水位数
         Integer length = 0;
         //查询编号规则
-        Maxnumbers maxnumbers = findMaxnumbers(caller);
+        Maxnumbers maxnumbers = findMaxnumbers(caller, companyId);
         if (null == maxnumbers) {
             throw new BizException(BizExceptionCode.NULL_CODERULE);
         }
@@ -132,11 +132,11 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         }
         //与规则匹配的编号
         if (count > 0) {
-            return Result.success(getMaxnumner(caller, true));
+            return Result.success(getMaxnumner(caller, true, null));
         }
 
         //查询从表是否存在该规则数据
-        Maxnumbersdetail detail = getMaxDetail(caller, rulecode);
+        Maxnumbersdetail detail = getMaxDetail(caller, rulecode, companyId);
         if (null != detail) {
             //存在则更新表中最大流水号
             length = maxnumbers.getMn_number();
@@ -241,8 +241,8 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Author: guq
     * @Date: 2018/10/19
     */
-    private Maxnumbers findMaxnumbers(String caller) {
-       Long companyId = BaseContextHolder.getCompanyId();
+    private Maxnumbers findMaxnumbers(String caller, Long companyId) {
+       //Long companyId = BaseContextHolder.getCompanyId();
         return maxnumbersMapper.selectByCaller(caller, companyId);
     }
     /**
@@ -253,10 +253,10 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     * @Author: guq
     * @Date: 2018/10/18
     */
-    private Maxnumbersdetail getMaxDetail(String caller, String rulecode) {
+    private Maxnumbersdetail getMaxDetail(String caller, String rulecode, Long companyid) {
         MaxnumbersdetailExample detailexample = new MaxnumbersdetailExample();
         MaxnumbersdetailExample.Criteria detailcta = detailexample.createCriteria();
-        detailcta.andCompanyIdEqualTo(BaseContextHolder.getCompanyId());
+        detailcta.andCompanyIdEqualTo(companyid);
         detailcta.andMd_callerEqualTo(caller);
         detailcta.andMd_leadcodeEqualTo(rulecode);
         List<Maxnumbersdetail> details = maxnumbersdetailMapper.selectByExample(detailexample);

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/SystemRemindServiceImpl.java

@@ -100,6 +100,8 @@ public class SystemRemindServiceImpl implements SystemRemindService {
                 accountApi.bindCompany(accountDTO.getId(), BaseContextHolder.getCompanyId());
                 //绑定角色
                 accountApi.bindRoles(accountDTO.getId(), addApplyDTO.getRoles());
+                //账户缓存清除
+                accountApi.clearCache(accountDTO.getId());
             }
         }
         //更新申请单状态

+ 3 - 0
applications/commons/commons-server/src/main/resources/mapper/ConfigsMapper.xml

@@ -180,5 +180,8 @@
     </set>
     where code = #{code,jdbcType=VARCHAR} and companyid = #{companyId}
   </update>
+  <select id="selectByCodeAndCompanyId" resultType="int">
+    SELECT COUNT(*) FROM CONFIGS WHERE CODE = #{code} AND COMPANYID = #{companyId}
+  </select>
 
 </mapper>

+ 3 - 14
applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/ProductApi.java

@@ -2,9 +2,7 @@ package com.usoftchina.saas.document.api;
 
 import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
 import com.usoftchina.saas.base.Result;
-import com.usoftchina.saas.document.dto.ProductDTO;
 import com.usoftchina.saas.document.dto.ProductUploadDTO;
-import com.usoftchina.saas.page.PageRequest;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -16,15 +14,6 @@ import java.util.List;
 @FeignClient(name = "document-server", configuration = ServiceFeignInterceptor.class)
 public interface ProductApi {
 
-    /**
-     * 查询Products
-     * @param page
-     * @param condition
-     * @return
-     */
-   /* @GetMapping("/api/document/product/getProductsByCondition")
-    public List<ProductDTO> getProductsByCondition(@RequestParam(value = "page") PageRequest page, @RequestParam(value = "condition") String condition);*/
-
     /**
     * @Description
     * 更新最新采购单价
@@ -40,8 +29,8 @@ public interface ProductApi {
      * 获取需要上传的物料数据
      * @return
      */
-    @GetMapping("/b2b/upload/data")
-    Result<List<ProductUploadDTO>> getUploadData();
+    @GetMapping("/product/b2b/upload/data")
+    Result<List<ProductUploadDTO>> getUploadData(@RequestParam("companyId") Long companyId);
 
     /**
      * 批量更新物料上传状态
@@ -49,6 +38,6 @@ public interface ProductApi {
      * @param status
      * @return
      */
-    @PostMapping("/b2b/status/update")
+    @PostMapping("/product/b2b/status/update")
     Result updateStatus(@RequestParam("ids") String ids, @RequestParam("status") String status);
 }

+ 6 - 4
applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/VendorApi.java

@@ -3,9 +3,11 @@ package com.usoftchina.saas.document.api;
 import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.document.dto.VendorDTO;
+import com.usoftchina.saas.document.dto.VendorListDTO;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
@@ -14,10 +16,10 @@ import java.util.List;
 public interface VendorApi {
 
     /**
-     * 查询Vendors
-     * @param condition
+     * 通过供应商ID查找  供应商主从表数据
+     * @param id
      * @return
      */
-    /*@GetMapping("/api/document/vendor/getVendorsByCondition")
-    public List<VendorDTO> getVendorsByCondition(@RequestParam(value = "page") PageRequest page, @RequestParam(value = "condition") String condition);*/
+    @GetMapping("/read/{id}")
+    Result<VendorListDTO> getDataById(@PathVariable("id") Long id);
 }

+ 2 - 0
applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/CustomerDTO.java

@@ -63,4 +63,6 @@ public class CustomerDTO extends CommonBaseDTO implements Serializable {
     private String cu_remark;
 
     private String cu_currency;
+
+    private Double cr_rate;
 }

+ 12 - 0
applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProdStorageDTO.java

@@ -17,6 +17,10 @@ public class ProdStorageDTO implements Serializable {
     private String prodBrand;
     private String prodUnit;
     private String prodLeadtime;
+    /**
+     * 上传状态
+     */
+    private String b2bStatus;
     /**
      * 绑定状态
      */
@@ -86,6 +90,14 @@ public class ProdStorageDTO implements Serializable {
         this.prodLeadtime = prodLeadtime;
     }
 
+    public String getB2bStatus() {
+        return b2bStatus;
+    }
+
+    public void setB2bStatus(String b2bStatus) {
+        this.b2bStatus = b2bStatus;
+    }
+
     public Short getStatus() {
         return status;
     }

+ 2 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Customer.java

@@ -59,4 +59,6 @@ public class Customer extends CommonBaseEntity implements Serializable {
     private String cu_remark;
 
     private String cu_currency;
+
+    private Double cr_rate;
 }

+ 2 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendor.java

@@ -117,4 +117,6 @@ public class Vendor extends CommonBaseEntity implements Serializable{
 
     private String ve_currency;
 
+    private Double cr_rate;
+
 }

+ 14 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/CustomerController.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.document.controller;
 
 import com.github.pagehelper.PageInfo;
+import com.netflix.discovery.converters.Auto;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.ComboDTO;
@@ -9,6 +10,7 @@ import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.document.dto.CustomerFormDTO;
 import com.usoftchina.saas.document.entities.CustomerList;
 import com.usoftchina.saas.document.service.CustomerService;
+import com.usoftchina.saas.inquiry.api.SearchUUApi;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -25,6 +27,8 @@ public class CustomerController {
 
     @Autowired
     private CustomerService customerService;
+    @Autowired
+    private SearchUUApi searchUUApi;
 
     /**
      * 客户资料列表
@@ -180,4 +184,14 @@ public class CustomerController {
         customerService.saveToFormal(id, update);
         return Result.success();
     }
+
+    /**
+     * 获取客户UU
+     * @param name
+     * @return
+     */
+    @GetMapping("/getCustomerUU")
+    public Result getVendorUU(@RequestParam("name") String name){
+        return Result.success(searchUUApi.queryEnterprises(name));
+    }
 }

+ 7 - 2
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java

@@ -140,8 +140,8 @@ public class ProductController {
      * @return
      */
     @GetMapping("/b2b/upload/data")
-    public Result<List<ProductUploadDTO>> getUploadData(){
-        return Result.success(productService.getUploadData());
+    public Result<List<ProductUploadDTO>> getUploadData(@RequestParam("companyId") Long companyId){
+        return Result.success(productService.getUploadData(companyId));
     }
 
     /**
@@ -167,6 +167,11 @@ public class ProductController {
         return Result.success(productService.getProdStorage(page, listReqDTO));
     }
 
+    /**
+     * 上传个人物料库
+     * @param productSalerDTO
+     * @return
+     */
     @PostMapping("/prodStorage/saler")
     public Result createProdSaler(@RequestBody ProductSalerDTO productSalerDTO){
         productService.createProdSaler(productSalerDTO);

+ 13 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.document.dto.VendorDTO;
 import com.usoftchina.saas.document.dto.VendorListDTO;
 import com.usoftchina.saas.document.entities.VendorList;
 import com.usoftchina.saas.document.service.VendorService;
+import com.usoftchina.saas.inquiry.api.SearchUUApi;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -22,6 +23,8 @@ public class VendorController {
 
     @Autowired
     private VendorService vendorService;
+    @Autowired
+    private SearchUUApi searchUUApi;
 
     /**
      * 获取供应商信息
@@ -141,4 +144,14 @@ public class VendorController {
         return Result.success();
     }
 
+    /**
+     * 获取供应商UU
+     * @param name
+     * @return
+     */
+    @GetMapping("/getVendorUU")
+    public Result getVendorUU(@RequestParam("name") String name){
+        return Result.success(searchUUApi.queryEnterprises(name));
+    }
+
 }

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -36,4 +36,8 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
 
     int validateCodeWhenUpdate(@Param("code") String code, @Param("id") Long id, @Param("companyId") Long company);
 
+    int getBankNameSame(@Param("name") String name, @Param("companyId") Long company);
+
+    int getBankNameSameById(@Param("name") String name, @Param("id") Long id, @Param("companyId") Long company);
+
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductMapper.java

@@ -67,7 +67,7 @@ public interface ProductMapper extends CommonBaseMapper<Product> {
 
     List<ProductUploadDTO> selectUploadProdByCompanyId(@Param("companyId") Long companyId);
 
-    void updateB2BStatus(List<String> idsList, @Param("status") String status);
+    void updateB2BStatus(@Param("list") List<String> idsList, @Param("status") String status);
 
     List<ProdStorageDTO> getProdStorage(@Param("condition") String condition, @Param("companyId") Long companyId, @Param("userId") Long userId);
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java

@@ -127,7 +127,7 @@ public interface ProductService extends CommonBaseService<ProductMapper, Product
     /**
      * 获取需要上传的数据
      */
-    List<ProductUploadDTO> getUploadData();
+    List<ProductUploadDTO> getUploadData(Long companyId);
 
     /**
      * 批量更新物料上传状态

+ 22 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java

@@ -33,6 +33,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.usoftchina.saas.commons.exception.BizExceptionCode.BIZ_SAME;
+
 /**
  * @author heqw
  * @date 2018/10/25 15:36
@@ -77,6 +79,16 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
             docBaseDTO.setName(BillCodeSeq.BANKINFORMATION.getCaller());
             messageLogService.save(docBaseDTO);
             Banksubledger banksubledger = this.changBanksubledger(bankinformation);
+
+            //判断账户名称是否存在
+            if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) > 1){
+                throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+            }else if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) == 1){
+                if (bankinformationMapper.getBankNameSameById(bankinformation.getBk_bankname(), docBaseDTO.getId(),
+                        BaseContextHolder.getCompanyId()) == 1){
+                    throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+                }
+            }
             banksubledgerMapper.insertSelective(banksubledger);
         }else {
             docBaseDTO = this.getBaseDTOById(bid);
@@ -101,6 +113,16 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
                 }
             }
 
+
+            //判断账户名称是否存在
+            if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) > 1){
+                throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+            }else if (bankinformationMapper.getBankNameSame(bankinformation.getBk_bankname(), BaseContextHolder.getCompanyId()) == 1){
+                if (bankinformationMapper.getBankNameSameById(bankinformation.getBk_bankname(), docBaseDTO.getId(),
+                        BaseContextHolder.getCompanyId()) == 1){
+                    throw new BizException(BIZ_SAME.getCode(),BIZ_SAME.getMessage());
+                }
+            }
 //            Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode(), BaseContextHolder.getCompanyId());
             if (bktion > 0){
                     bankinformationMapper.updateByPrimaryKeySelective(bankinformation);

+ 44 - 6
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
@@ -28,6 +29,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.inquiry.api.PublicProductApi;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.transfers.api.SendMessageApi;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.ObjectUtils;
@@ -159,6 +161,9 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                 validEnableUpdateCode(product.getId());
             }
 
+            //上传至B2B
+            uploadChangeToB2B(product);
+
             //明细数据有更新/插入动作
             if (productDetailList.size() > 0){
                 //物料发生过除库存初始化外的出入库单时,不能新增,修改,删除
@@ -220,6 +225,21 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         return docBaseDTO;
     }
 
+    /**
+     * 物料规格/型号/品牌三者任何一个发生变化时,将物料的B2B上传状态更新为 "待上传",
+     * 用户在下一次点击上传产品库时一起上传至B2B
+     * @param product
+     */
+    private void uploadChangeToB2B(Product product) {
+        if (ConfigsCache.current().enableB2B()){
+            Product oldProduct = getMapper().selectByPrimaryKey(product.getId());
+            if (!oldProduct.getPr_spec().equals(product.getPr_spec()) || !oldProduct.getPr_orispeccode().equals(product.getPr_orispeccode())
+                || !oldProduct.getPr_brand().equals(product.getPr_brand())){
+                updateB2BStatus(String.valueOf(product.getId()), "待上传");
+            }
+        }
+    }
+
     /**
      * 校验明细仓库是否重复
      * @param productDetailList
@@ -752,8 +772,24 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      */
     @Override
     public void uploadToB2B() {
-        /*MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PRODUCT.name(), "", BaseContextHolder.getCompanyId());
-        sendMessageApi.sendMsg(messageInfo);*/
+        boolean enable = ConfigsCache.current().enableB2B();
+        if (enable) {
+            //生成消息
+            MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PRODUCT.name(), "", BaseContextHolder.getCompanyId());
+            sendMessageApi.sendMsg(messageInfo);
+            //更新状态为  上传中
+            List<ProductUploadDTO> productUploadDTOList = getMapper().selectUploadProdByCompanyId(BaseContextHolder.getCompanyId());
+            StringBuilder sb = new StringBuilder();
+            Iterator<ProductUploadDTO> it = productUploadDTOList.iterator();
+            while (it.hasNext()){
+                sb.append(it.next().getPr_id() + ",");
+            }
+            if (sb.length() > 0) {
+                updateB2BStatus(sb.substring(0, sb.length() - 1), "上传中");
+            }
+        }else {
+            throw new BizException(BizExceptionCode.BIZ_ENABLE_B2B);
+        }
     }
 
     /**
@@ -761,8 +797,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      * @return
      */
     @Override
-    public List<ProductUploadDTO> getUploadData(){
-        return getMapper().selectUploadProdByCompanyId(BaseContextHolder.getCompanyId());
+    public List<ProductUploadDTO> getUploadData(Long companyId){
+        return getMapper().selectUploadProdByCompanyId(companyId);
     }
 
     /**
@@ -802,13 +838,15 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         Long enUU = companyApi.getCompanyById(BaseContextHolder.getCompanyId()).getData().getUu();
         Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
         ProductSalerUploadDTO productSalerUploadDTO = new ProductSalerUploadDTO(productSalerDTO.getProdId(), productSalerDTO.getProdCode(), enUU, userUU);
+        List<ProductSalerDTO> productSalerDTOList = new ArrayList<ProductSalerDTO>();
+        productSalerDTOList.add(productSalerDTO);
         if (productSalerDTO.getOperate() == 0){
             //解绑
-            publicProductApi.uploadProductSalerForCancel(JsonUtils.toJsonString(productSalerDTO));
+            publicProductApi.uploadProductSalerForCancel(JsonUtils.toJsonString(productSalerDTOList));
             productSalerMapper.unbind(productSalerDTO.getProdId(), BaseContextHolder.getUserId(), BaseContextHolder.getCompanyId());
         }else if (productSalerDTO.getOperate() == 1){
             //绑定
-            publicProductApi.updateProdSaler(JsonUtils.toJsonString(productSalerDTO));
+            publicProductApi.updateProdSaler(JsonUtils.toJsonString(productSalerDTOList));
             productSalerMapper.bind(productSalerDTO.getProdId(), BaseContextHolder.getUserId(), BaseContextHolder.getCompanyId());
         }
     }

+ 6 - 4
applications/document/document-server/src/main/resources/application.yml

@@ -75,8 +75,10 @@ mybatis:
 auth:
   public-key: auth/pub.key
 ribbon:
-  ReadTimeout: 5000
-  ConnectTimeout: 5000
+  ReadTimeout: 10000
+  ConnectTimeout: 10000
+  eager-load:
+    enabled: true
 feign:
   hystrix:
     enabled: true
@@ -90,10 +92,10 @@ hystrix:
                 enabled: true
               isolation:
                     thread:
-                        timeoutInMilliseconds: 4000
+                        timeoutInMilliseconds: 5000
 b2b:
   baseUrl:
     inquiry: https://test-inquiry.uuzcc.cn
     Component: https://test-mall.uuzcc.cn
     product: http://test-product.uuzcc.cn
-    uu: https://test-b2b.uuzcc.cn
+    common: https://test-b2b.uuzcc.cn

+ 10 - 2
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -32,7 +32,7 @@
   <sql id="Base_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount, 
     bk_status, bk_statuscode, bk_ym, bankinformation.companyid companyid,
-    bankinformation.updaterId updaterId, bankinformation.updateTime updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_currency,cr_rate
+    bankinformation.updaterId updaterId, bankinformation.updateTime updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark,bk_currency
   </sql>
   <sql id="Blob_Column_List" >
     bk_remark
@@ -319,7 +319,7 @@
 
   <select id="selectBankinformationBycondition" resultMap="BaseResultMap">
     select
-    <include refid="Base_Column_List" />
+    <include refid="Base_Column_List" /> ,cr_rate
     from bankinformation
     left join currencys on currencys.companyId = Bankinformation.companyid and cr_name = bk_currency
     <where>
@@ -367,4 +367,12 @@
   <select id="validateCodeWhenUpdate" resultType="int" >
         select count(*) from bankinformation where bk_bankcode = #{code} and bk_id != #{id} and companyId =#{companyId}
     </select>
+
+  <select id="getBankNameSame" resultType="int">
+    select count(*) from bankinformation where bk_bankname = #{name} and companyId =#{companyId}
+  </select>
+
+  <select id="getBankNameSameById" resultType="int">
+    select count(*) from bankinformation where bk_bankname = #{name} and bk_id != #{id} and companyId =#{companyId}
+  </select>
 </mapper>

+ 5 - 4
applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml

@@ -32,18 +32,19 @@
     <result column="cu_preamount" jdbcType="DOUBLE" property="cu_preamount" />
     <result column="cu_remark" jdbcType="VARCHAR" property="cu_remark" />
     <result column="cu_currency" jdbcType="VARCHAR" property="cu_currency" />
+    <result column="cr_rate" jdbcType="DOUBLE" property="cr_rate" />
   </resultMap>
   <sql id="Base_Column_List">
     cu_id, cu_code,cu_shortname, cu_name, cu_uu, cu_type, cu_begindate, cu_beginaramount, cu_beginprerecamount,
     cu_promisedays, cu_taxrate, cu_sellerid, cu_sellercode, cu_sellername, cu_credit, 
-    cu_status, cu_statuscode, companyid,
-    updaterid, updatetime, cu_text1, cu_text2, cu_text3, cu_text4, cu_text5, cu_leftamount, 
-    cu_recamount,cu_preamount,cu_remark,cu_currency
+    cu_status, cu_statuscode, customer.companyid companyid,
+    customer.updaterid updaterid, customer.updatetime updatetime, cu_text1, cu_text2, cu_text3, cu_text4, cu_text5, cu_leftamount,
+    cu_recamount,cu_preamount,cu_remark,cu_currency,cr_rate
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />
-    from customer
+    from customer left join currencys on cr_name = cu_currency and customer.companyId = currencys.companyId
     where cu_id = #{cu_id,jdbcType=INTEGER}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">

+ 5 - 5
applications/document/document-server/src/main/resources/mapper/ProductMapper.xml

@@ -962,7 +962,7 @@
     </select>
     <select id="selectUploadProdByCompanyId" resultType="com.usoftchina.saas.document.dto.ProductUploadDTO">
         SELECT pr_id,pr_code,pr_spec,pr_detail,pr_leadtime,pr_unit,pr_zxbzs,pr_brand,pr_orispeccode
-        FROM PRODUCT WHERE COMPANYID = #{companyId} AND IFNULL(B2BSTATUS, '待上传') = '待上传'
+        FROM PRODUCT WHERE COMPANYID = #{companyId} AND IFNULL(B2BSTATUS, '待上传') IN ('待上传','上传中')
     </select>
     <update id="updateB2BStatus">
         UPDATE PRODUCT SET B2BSTATUS = #{status} WHERE PR_ID IN
@@ -972,8 +972,8 @@
     </update>
     <select id="getProdStorage" resultType="com.usoftchina.saas.document.dto.ProdStorageDTO">
       SELECT * FROM (
-      SELECT pr_id prodId, pr_detail prodName, pr_code prodCode, pr_spec prodSpec, pr_unid prodUnit, pr_brand prodBrand,
-      pr_orispeccode prodSpeccode,pr_leadtime prodLeadtime, 1 status
+      SELECT pr_id prodId, pr_detail prodName, pr_code prodCode, pr_spec prodSpec, pr_unit prodUnit, pr_brand prodBrand,
+      pr_orispeccode prodOrispeccode,pr_leadtime prodLeadtime, 1 status, b2bStatus
       FROM product
       <where>
           <if test="userId != null">
@@ -984,8 +984,8 @@
           </if>
         </where>
         union all
-        SELECT pr_id prodId, pr_detail prodName, pr_code prodCode, pr_spec prodSpec, pr_unid prodUnit, pr_brand prodBrand,
-        pr_orispeccode prodSpeccode,pr_leadtime prodLeadtime, 0 status
+        SELECT pr_id prodId, pr_detail prodName, pr_code prodCode, pr_spec prodSpec, pr_unit prodUnit, pr_brand prodBrand,
+        pr_orispeccode prodOrispeccode,pr_leadtime prodLeadtime, 0 status, b2bStatus
         FROM product
         <where>
           <if test="userId != null">

+ 3 - 3
applications/document/document-server/src/main/resources/mapper/VendorMapper.xml

@@ -118,14 +118,14 @@
     <sql id="Base_Column_List" >
         ve_id, ve_code, ve_shortname,ve_name, ve_uu, ve_type, ve_begindate, ve_beginapamount, ve_beginprepayamount,
         ve_promisedays, ve_taxrate, ve_nsrzh, ve_bankaccount, ve_bankcode, ve_status, ve_statuscode,
-        companyId, updaterId, updateTime, ve_text1,
+        vendor.companyId companyId, vendor.updaterId updaterId, vendor.updateTime updateTime, ve_text1,
         ve_text2, ve_text3, ve_text4, ve_text5, ve_payamount, ve_leftamount, ve_beginym, ve_preamount,ve_remark,
-        ve_buyerid,ve_buyercode,ve_buyername,ve_address,ve_currency
+        ve_buyerid,ve_buyercode,ve_buyername,ve_address,ve_currency,cr_rate
     </sql>
     <select id="selectByPrimaryKey" resultMap="VendorResultMapper" parameterType="java.lang.Long" >
         select
         <include refid="Base_Column_List" />
-        from vendor
+        from vendor left join currencys on cr_name = ve_currency and vendor.companyId = currencys.companyId
         where ve_id = #{id}
     </select>
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >

+ 211 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDTO.java

@@ -0,0 +1,211 @@
+package com.usoftchina.saas.money.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-14 11:54
+ **/
+public class ApcheckDTO implements Serializable {
+
+    @ApiModelProperty(value = "平台来源Id")
+    private Long ac_b2bid;//平台来源Id
+
+    @ApiModelProperty(value = "对账日期")
+    private Date ac_date;//对账日期
+
+    @ApiModelProperty(value = "应付日期")
+    private Date ac_apdate;//应付日期
+
+    @ApiModelProperty(value = "对账起始日期")
+    private Date ac_fromdate;//对账起始日期
+
+    @ApiModelProperty(value = "对账截至日期")
+    private Date ac_todate;//对账截至日期
+
+    @ApiModelProperty(value = "供应商uu")
+    private Long ac_venduu;//供应商uu
+
+    @ApiModelProperty(value = "币别")
+    private String ac_currency;//币别
+
+    @ApiModelProperty(value = "汇率")
+    private Double ac_rate;//汇率
+
+    @ApiModelProperty(value = "对账金额")
+    private Double ac_checkamount;//对账金额
+
+    @ApiModelProperty(value = "备注")
+    private String ac_remark;//备注
+
+    @ApiModelProperty(value = "本期应付金额")
+    private Double ac_thisamount;//本期应付金额
+
+    @ApiModelProperty(value = "本期未对账")
+    private Double ac_thisuncheck;//本期未对账
+
+    @ApiModelProperty(value = "本期已付")
+    private Double ac_thispay;//本期已付
+
+    @ApiModelProperty(value = "本期发货")
+    private Double ac_thissend;//本期发货
+
+    @ApiModelProperty(value = "本期已对账")
+    private Double ac_thischeck;//本期已对账
+
+    @ApiModelProperty(value = "应付总额")
+    private Double ac_payamont;//应付总额
+
+    public Long getAc_b2bid() {
+        return ac_b2bid;
+    }
+
+    public void setAc_b2bid(Long ac_b2bid) {
+        this.ac_b2bid = ac_b2bid;
+    }
+
+    public Date getAc_date() {
+        return ac_date;
+    }
+
+    public void setAc_date(Date ac_date) {
+        this.ac_date = ac_date;
+    }
+
+    public Date getAc_apdate() {
+        return ac_apdate;
+    }
+
+    public void setAc_apdate(Date ac_apdate) {
+        this.ac_apdate = ac_apdate;
+    }
+
+    public Date getAc_fromdate() {
+        return ac_fromdate;
+    }
+
+    public void setAc_fromdate(Date ac_fromdate) {
+        this.ac_fromdate = ac_fromdate;
+    }
+
+    public Date getAc_todate() {
+        return ac_todate;
+    }
+
+    public void setAc_todate(Date ac_todate) {
+        this.ac_todate = ac_todate;
+    }
+
+    public Long getAc_venduu() {
+        return ac_venduu;
+    }
+
+    public void setAc_venduu(Long ac_venduu) {
+        this.ac_venduu = ac_venduu;
+    }
+
+    public String getAc_currency() {
+        return ac_currency;
+    }
+
+    public void setAc_currency(String ac_currency) {
+        this.ac_currency = ac_currency;
+    }
+
+    public Double getAc_rate() {
+        return ac_rate;
+    }
+
+    public void setAc_rate(Double ac_rate) {
+        this.ac_rate = ac_rate;
+    }
+
+    public Double getAc_checkamount() {
+        return ac_checkamount;
+    }
+
+    public void setAc_checkamount(Double ac_checkamount) {
+        this.ac_checkamount = ac_checkamount;
+    }
+
+    public String getAc_remark() {
+        return ac_remark;
+    }
+
+    public void setAc_remark(String ac_remark) {
+        this.ac_remark = ac_remark;
+    }
+
+    public Double getAc_thisamount() {
+        return ac_thisamount;
+    }
+
+    public void setAc_thisamount(Double ac_thisamount) {
+        this.ac_thisamount = ac_thisamount;
+    }
+
+    public Double getAc_thisuncheck() {
+        return ac_thisuncheck;
+    }
+
+    public void setAc_thisuncheck(Double ac_thisuncheck) {
+        this.ac_thisuncheck = ac_thisuncheck;
+    }
+
+    public Double getAc_thispay() {
+        return ac_thispay;
+    }
+
+    public void setAc_thispay(Double ac_thispay) {
+        this.ac_thispay = ac_thispay;
+    }
+
+    public Double getAc_thissend() {
+        return ac_thissend;
+    }
+
+    public void setAc_thissend(Double ac_thissend) {
+        this.ac_thissend = ac_thissend;
+    }
+
+    public Double getAc_thischeck() {
+        return ac_thischeck;
+    }
+
+    public void setAc_thischeck(Double ac_thischeck) {
+        this.ac_thischeck = ac_thischeck;
+    }
+
+    public Double getAc_payamont() {
+        return ac_payamont;
+    }
+
+    public void setAc_payamont(Double ac_payamont) {
+        this.ac_payamont = ac_payamont;
+    }
+
+    @Override
+    public String toString() {
+        return "ApcheckDTO{" +
+                "ac_b2bid=" + ac_b2bid +
+                ", ac_date=" + ac_date +
+                ", ac_apdate=" + ac_apdate +
+                ", ac_fromdate=" + ac_fromdate +
+                ", ac_todate=" + ac_todate +
+                ", ac_venduu=" + ac_venduu +
+                ", ac_currency='" + ac_currency + '\'' +
+                ", ac_rate=" + ac_rate +
+                ", ac_checkamount=" + ac_checkamount +
+                ", ac_remark='" + ac_remark + '\'' +
+                ", ac_thisamount=" + ac_thisamount +
+                ", ac_thisuncheck=" + ac_thisuncheck +
+                ", ac_thispay=" + ac_thispay +
+                ", ac_thissend=" + ac_thissend +
+                ", ac_thischeck=" + ac_thischeck +
+                ", ac_payamont=" + ac_payamont +
+                '}';
+    }
+}

+ 90 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckDetailDTO.java

@@ -0,0 +1,90 @@
+package com.usoftchina.saas.money.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author: guq
+ * @create: 2019-01-14 12:39
+ **/
+public class ApcheckDetailDTO implements Serializable{
+
+    private Integer ad_detno;//序号
+
+    private String ad_inoutno;//出入库单号
+
+    private Integer ad_pdno;//出入库序号
+
+    private String ad_prodcode;//物料编号
+
+    private String ad_pucode;//采购单号
+
+    private Double ad_price;//单价
+
+    private Double ad_taxrate;//税率%
+
+    private Double ad_b2bqty;//供应商对账数
+
+    public Integer getAd_detno() {
+        return ad_detno;
+    }
+
+    public void setAd_detno(Integer ad_detno) {
+        this.ad_detno = ad_detno;
+    }
+
+    public String getAd_inoutno() {
+        return ad_inoutno;
+    }
+
+    public void setAd_inoutno(String ad_inoutno) {
+        this.ad_inoutno = ad_inoutno;
+    }
+
+    public Integer getAd_pdno() {
+        return ad_pdno;
+    }
+
+    public void setAd_pdno(Integer ad_pdno) {
+        this.ad_pdno = ad_pdno;
+    }
+
+    public String getAd_prodcode() {
+        return ad_prodcode;
+    }
+
+    public void setAd_prodcode(String ad_prodcode) {
+        this.ad_prodcode = ad_prodcode;
+    }
+
+    public String getAd_pucode() {
+        return ad_pucode;
+    }
+
+    public void setAd_pucode(String ad_pucode) {
+        this.ad_pucode = ad_pucode;
+    }
+
+    public Double getAd_price() {
+        return ad_price;
+    }
+
+    public void setAd_price(Double ad_price) {
+        this.ad_price = ad_price;
+    }
+
+    public Double getAd_taxrate() {
+        return ad_taxrate;
+    }
+
+    public void setAd_taxrate(Double ad_taxrate) {
+        this.ad_taxrate = ad_taxrate;
+    }
+
+    public Double getAd_b2bqty() {
+        return ad_b2bqty;
+    }
+
+    public void setAd_b2bqty(Double ad_b2bqty) {
+        this.ad_b2bqty = ad_b2bqty;
+    }
+}

+ 6 - 6
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckFormDTO.java

@@ -12,23 +12,23 @@ import java.util.List;
  **/
 public class ApcheckFormDTO implements Serializable {
 
-    private Apcheck main;
+    private ApcheckDTO main;
 
-    private List<ApcheckDetail> items;
+    private List<ApcheckDetailDTO> items;
 
-    public Apcheck getMain() {
+    public ApcheckDTO getMain() {
         return main;
     }
 
-    public void setMain(Apcheck main) {
+    public void setMain(ApcheckDTO main) {
         this.main = main;
     }
 
-    public List<ApcheckDetail> getItems() {
+    public List<ApcheckDetailDTO> getItems() {
         return items;
     }
 
-    public void setItems(List<ApcheckDetail> items) {
+    public void setItems(List<ApcheckDetailDTO> items) {
         this.items = items;
     }
 }

+ 3 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationListDTO.java

@@ -128,4 +128,7 @@ public class VerificationListDTO implements Serializable {
     private String vcd_text4;
 
     private String vcd_text5;
+    private String vc_currency;
+
+    private Double vc_rate;
 }

+ 10 - 10
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/Apcheck.java

@@ -10,7 +10,7 @@ import java.util.Date;
  **/
 public class Apcheck extends CommonBaseEntity{
 
-    private Integer ac_b2bid;
+    private Long ac_b2bid;
 
     private String ac_code;
 
@@ -22,9 +22,9 @@ public class Apcheck extends CommonBaseEntity{
 
     private Date ac_todate;
 
-    private String ac_venduu;
+    private Long ac_venduu;
 
-    private Integer ac_vendid;
+    private Long ac_vendid;
 
     private String ac_vendcode;
 
@@ -60,11 +60,11 @@ public class Apcheck extends CommonBaseEntity{
 
     private Long companyId;
 
-    public Integer getAc_b2bid() {
+    public Long getAc_b2bid() {
         return ac_b2bid;
     }
 
-    public void setAc_b2bid(Integer ac_b2bid) {
+    public void setAc_b2bid(Long ac_b2bid) {
         this.ac_b2bid = ac_b2bid;
     }
 
@@ -108,19 +108,19 @@ public class Apcheck extends CommonBaseEntity{
         this.ac_todate = ac_todate;
     }
 
-    public String getAc_venduu() {
+    public Long getAc_venduu() {
         return ac_venduu;
     }
 
-    public void setAc_venduu(String ac_venduu) {
-        this.ac_venduu = ac_venduu == null ? null : ac_venduu.trim();
+    public void setAc_venduu(Long ac_venduu) {
+        this.ac_venduu = ac_venduu;
     }
 
-    public Integer getAc_vendid() {
+    public Long getAc_vendid() {
         return ac_vendid;
     }
 
-    public void setAc_vendid(Integer ac_vendid) {
+    public void setAc_vendid(Long ac_vendid) {
         this.ac_vendid = ac_vendid;
     }
 

+ 36 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransfer.java

@@ -44,6 +44,42 @@ public class Fundtransfer extends CommonBaseEntity implements Serializable {
 
     private Date ft_auditdate;
 
+    private String ftd_currency;
+    private String ftd_incurrency;
+    private Double ftd_innowbalance;
+    private Double ftd_rate;
+
+    public String getFtd_currency() {
+        return ftd_currency;
+    }
+
+    public void setFtd_currency(String ftd_currency) {
+        this.ftd_currency = ftd_currency;
+    }
+
+    public String getFtd_incurrency() {
+        return ftd_incurrency;
+    }
+
+    public void setFtd_incurrency(String ftd_incurrency) {
+        this.ftd_incurrency = ftd_incurrency;
+    }
+
+    public Double getFtd_innowbalance() {
+        return ftd_innowbalance;
+    }
+
+    public void setFtd_innowbalance(Double ftd_innowbalance) {
+        this.ftd_innowbalance = ftd_innowbalance;
+    }
+
+    public Double getFtd_rate() {
+        return ftd_rate;
+    }
+
+    public void setFtd_rate(Double ftd_rate) {
+        this.ftd_rate = ftd_rate;
+    }
 
     public String getFtd_remark() {
         return ftd_remark;

+ 3 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VerificationList.java

@@ -96,6 +96,9 @@ public class VerificationList extends CommonBaseEntity implements Serializable {
     private String vd_text4;
 
     private String vd_text5;
+    private String vc_currency;
+
+    private Double vc_rate;
 //
 //    private Integer vcd_id;
 //

+ 14 - 12
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -93,9 +93,9 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             fundtransferdetail.setCompanyId(BaseContextHolder.getCompanyId());
             fundtransferdetail.setFtd_ftid(Math.toIntExact(id));
             fundtransferdetail.setFt_date(fundtransfer.getFt_date());
-//            if (!(fundtransferdetail.getFtd_currency().equals(fundtransferdetail.getFtd_incurrency()))){
-//                throw new BizException(500, BizExceptionCode.CURRENCY_NOT_EQUALS.getMessage());
-//            }
+            if (fundtransferdetail.getFtd_inbankname().equals(fundtransferdetail.getFtd_bankname())){
+                throw new BizException(BizExceptionCode.BANKNAME_NOT_EQUALS.getCode(), BizExceptionCode.BANKNAME_NOT_EQUALS.getMessage());
+            }
             if (fundtransferdetail.getId() > 0 ){
                 fundtransferdetailMapper.updateByPrimaryKeySelective(fundtransferdetail);
             }else {
@@ -118,12 +118,13 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         DocBaseDTO docBaseDTO = this.insert(fundtran);
         Long id = docBaseDTO.getId();
 
-        List<String> bankName = fundtransferMapper.checkAmount(BaseContextHolder.getCompanyId(), id);
-        if (bankName.size() > 0){
-            String name = org.apache.commons.lang3.StringUtils.join(bankName, ",");
-            String message = BizExceptionCode.BANK_AMOUNT_NOTENOUGHS.getMessage();
-            throw new BizException(500, String.format(message, name));
-        }
+        //判断资金余额
+//        List<String> bankName = fundtransferMapper.checkAmount(BaseContextHolder.getCompanyId(), id);
+//        if (bankName.size() > 0){
+//            String name = org.apache.commons.lang3.StringUtils.join(bankName, ",");
+//            String message = BizExceptionCode.BANK_AMOUNT_NOTENOUGHS.getMessage();
+//            throw new BizException(500, String.format(message, name));
+//        }
 
 
         //取从表金额更新中间表、资金账号表
@@ -227,7 +228,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double inamount = banksubledgerMapper.selectThisamount(fundtransferdetail.getFtd_inbankcode(), BaseContextHolder.getCompanyId());
             banksubledgerMapper.updateBankcode(amount, fundtransferdetail.getFtd_nowbalance(),
                     fundtransferdetail.getFtd_bankcode(), "+", BaseContextHolder.getCompanyId());
-            banksubledgerMapper.updateBankcode(inamount, fundtransferdetail.getFtd_nowbalance(),
+            banksubledgerMapper.updateBankcode(inamount, fundtransferdetail.getFtd_innowbalance(),
                     fundtransferdetail.getFtd_bankcode(), "-", BaseContextHolder.getCompanyId());
 
             //资金账号表
@@ -235,6 +236,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             int bk_inid = fundtransferdetail.getFtd_inbankid();
 
             Double bk_amount = fundtransferdetail.getFtd_nowbalance();
+            Double bk_inamount = fundtransferdetail.getFtd_innowbalance();
             //付款方
             Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_id);
             Double beginamount = bankinformation.getBk_beginamount()== null ? new Double(0) : bankinformation.getBk_beginamount();
@@ -253,8 +255,8 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double inspending = inbankinformation.getBk_spending() == null ? new Double(0) : inbankinformation.getBk_spending();
             Double inincomme = inbankinformation.getBk_income() == null ? new Double(0) : inbankinformation.getBk_income();
             Bankinformation newinbankinformation = new Bankinformation();
-            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme-bk_amount) - inspending );
-            newinbankinformation.setBk_income(inincomme-bk_amount);
+            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme-bk_inamount) - inspending );
+            newinbankinformation.setBk_income(inincomme-bk_inamount);
             newinbankinformation.setBk_spending(inspending);
             newinbankinformation.setId(Long.valueOf(bk_inid));
             newinbankinformation.setCompanyId(BaseContextHolder.getCompanyId());

+ 1 - 1
applications/money/money-server/src/main/resources/application.yml

@@ -82,4 +82,4 @@ b2b:
     inquiry: https://test-inquiry.uuzcc.cn
     Component: https://test-mall.uuzcc.cn
     product: http://test-product.uuzcc.cn
-    uu: https://test-b2b.uuzcc.cn
+    common: https://test-b2b.uuzcc.cn

+ 7 - 1
applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml

@@ -27,6 +27,11 @@
     <result column="ft_auditman" property="ft_auditman" jdbcType="VARCHAR" />
     <result column="ft_auditdate" property="ft_auditdate" jdbcType="TIMESTAMP" />
     <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+
+    <result column="ftd_currency" property="ftd_currency" jdbcType="VARCHAR" />
+    <result column="ftd_incurrency" property="ftd_incurrency" jdbcType="VARCHAR" />
+    <result column="ftd_innowbalance" property="ftd_innowbalance" jdbcType="DOUBLE" />
+    <result column="ftd_rate" property="ftd_rate" jdbcType="DOUBLE" />
   </resultMap>
   <sql id="Base_Column_List" >
     ft_id, ft_code, ft_date, ft_status, ft_statuscode,
@@ -35,7 +40,8 @@
     ft_auditman, ft_auditdate
   </sql>
   <sql id="Detail_Column_List" >
-    ftd_bankname,ftd_inbankname,ftd_nowbalance,ftd_paymethod,ftd_paycode,ftd_remark
+    ftd_bankname,ftd_inbankname,ftd_nowbalance,ftd_paymethod,ftd_paycode,ftd_remark,ftd_currency,
+    ftd_incurrency,ftd_innowbalance,ftd_rate
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/ProfitdetailMapper.xml

@@ -98,7 +98,7 @@ prodinout.companyid= prodiodetail.companyid
 		pi_custname,
 		cu_type,
 		cu_sellername,
-		SUM( (IFNULL( pd_sendprice, 0 ) * ( IFNULL( pd_outqty, 0 ) - IFNULL( pd_inqty, 0 ) )) * ifnull(cr_rate,1) ) AS saamount,,
+		SUM( (IFNULL( pd_sendprice, 0 ) * ( IFNULL( pd_outqty, 0 ) - IFNULL( pd_inqty, 0 ) )) * ifnull(cr_rate,1) ) AS saamount,
 		SUM(
 		IFNULL(pd_netprice,0) * (IFNULL(pd_outqty,0) - IFNULL(pd_inqty,0))
 		) AS netamount,

+ 3 - 1
applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml

@@ -40,11 +40,13 @@
         <result column="vd_amount" property="vd_amount" jdbcType="DOUBLE" />
         <result column="vd_nowbalance" property="vd_nowbalance" jdbcType="DOUBLE" />
         <result column="vd_remark" property="vd_remark" jdbcType="VARCHAR" />
+        <result column="vc_rate" property="vc_rate" jdbcType="DOUBLE" />
+        <result column="vc_currency" property="vc_currency" jdbcType="VARCHAR" />
 
     </resultMap>
     <sql id="Base_Column_List">
     vc_id, vc_code, vc_kind, vc_date, vc_vendid, vc_vendcode ,vc_custcode ,vc_custid ,vc_amount1,
-    vc_status,vc_statuscode,vc_vendname,vc_custname
+    vc_status,vc_statuscode,vc_vendname,vc_custname,vc_currency,vc_rate
   </sql>
     <select id="selectVerificationListByCondition"  resultMap="BaseResultMap">
         select

+ 3 - 3
applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml

@@ -346,12 +346,12 @@
       <if test="createTime != null" >
         #{createTime,jdbcType=TIMESTAMP},
       </if>
-      <if test="vc_rate != null" >
-        #{vc_rate,jdbcType=DOUBLE},
-      </if>
       <if test="vc_currency != null" >
         #{vc_currency,jdbcType=VARCHAR},
       </if>
+      <if test="vc_rate != null" >
+        #{vc_rate,jdbcType=DOUBLE},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

+ 35 - 0
applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/ProdInOutApi.java

@@ -0,0 +1,35 @@
+package com.usoftchina.saas.purchase.api;
+
+import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/16
+ */
+@FeignClient(name = "purchase-server", configuration = ServiceFeignInterceptor.class)
+public interface ProdInOutApi {
+
+    /**
+     * 获取出入库单表单
+     *
+     * @return
+     */
+    @GetMapping("/prodinout/read/{id}")
+    Result<ProdInOutFormDTO> getProdFormData(@PathVariable("id") Long id);
+
+    /**
+     * 更新采购出入库单B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/prodinout/b2bStatus/update")
+    Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status);
+}

+ 32 - 0
applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseApi.java

@@ -0,0 +1,32 @@
+package com.usoftchina.saas.purchase.api;
+
+import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
+import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+@FeignClient(name = "purchase-server", configuration = ServiceFeignInterceptor.class)
+public interface PurchaseApi {
+
+    @PostMapping("/purchase/getPurchaseCode")
+    String getPurchaseCode(@RequestBody DocBaseDTO baseDTO);
+
+    /**
+     * 获取采购单数据
+     * @param id
+     * @return
+     */
+    @GetMapping("/purchase/read/{id}")
+    Result<PurchaseFormDTO> getFormData(@PathVariable("id") Long id);
+    /**
+     * 更新采购单B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/purchase/b2bStatus/update")
+    Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status);
+}

+ 0 - 15
applications/purchase/purchase-api/src/main/java/com/usoftchina/saas/purchase/api/PurchaseService.java

@@ -1,15 +0,0 @@
-package com.usoftchina.saas.purchase.api;
-
-import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
-import com.usoftchina.saas.commons.dto.DocBaseDTO;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-@FeignClient(name = "purchase-server", configuration = ServiceFeignInterceptor.class)
-public interface PurchaseService {
-
-    @PostMapping("/purchase/getPurchaseCode")
-    public String getPurchaseCode(@RequestBody DocBaseDTO baseDTO);
-
-}

+ 5 - 0
applications/purchase/purchase-server/pom.xml

@@ -34,6 +34,11 @@
             <artifactId>mall-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+          <groupId>com.usoftchina.saas</groupId>
+          <artifactId>transfers-api</artifactId>
+          <version>1.0.0-SNAPSHOT</version>
+        </dependency>
 
         <!--test-->
         <dependency>

+ 13 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/ProdInOutController.java

@@ -213,6 +213,18 @@ public class ProdInOutController {
     @GetMapping("/homepageList")
     public Result homepageList(PageRequest page, ListReqDTO req){
         PageInfo pageInfo = prodInOutService.homepageList(page, req);
-         return Result.success(pageInfo);
+        return Result.success(pageInfo);
+    }
+
+    /**
+     * 更新B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/b2bStatus/update")
+    public Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status){
+        prodInOutService.updateB2BStatus(id, status);
+        return Result.success();
     }
 }

+ 12 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java

@@ -223,4 +223,16 @@ public class PurchaseController {
         List<InquiryAddDTO> inquiryAddDTOList = JsonUtils.fromJsonArray(data, InquiryAddDTO.class);
         return Result.success(purchaseService.saveInquiry(inquiryAddDTOList));
     }
+
+    /**
+     * 更新采购单B2B上传状态
+     * @param id
+     * @param status
+     * @return
+     */
+    @PostMapping("/b2bStatus/update")
+    public Result updateB2BStatus(@RequestParam("id") Long id, @RequestParam("status") String status){
+        purchaseService.updateB2BStatus(id, status);
+        return Result.success();
+    }
 }

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java

@@ -92,4 +92,6 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
     private String pi_seller;
 
     private Double pi_rate;
+
+    private String b2bStatus;
 }

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java

@@ -70,6 +70,8 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private String pi_currency;
 
+    private Double pi_rate;
+
     private Integer pi_buyerid;
 
     private String pi_buyercode;

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/Purchase.java

@@ -70,4 +70,6 @@ public class Purchase extends CommonBaseEntity implements Serializable {
     private String pu_currency;
 
     private Double pu_rate;
+
+    private String b2bStatus;
 }

+ 7 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java

@@ -85,4 +85,11 @@ public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, Pro
     void getDefaultWarehouseByProduct(Long pi_id);
 
     PageInfo homepageList(PageRequest page, ListReqDTO req);
+
+    /**
+     * 更新B2B上传状态
+     * @param id
+     * @param status
+     */
+    void updateB2BStatus(Long id, String status);
 }

+ 7 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java

@@ -166,4 +166,11 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param inquiryAddDTO
      */
     List<Map<String, String>> saveInquiry(List<InquiryAddDTO> inquiryAddDTO);
+
+    /**
+     * 更新采购单对接B2B上传状态
+     * @param id
+     * @param status
+     */
+    void updateB2BStatus(Long id, String status);
 }

+ 49 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -7,6 +7,7 @@ import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -28,6 +29,8 @@ import com.usoftchina.saas.purchase.po.ProdIODetail;
 import com.usoftchina.saas.purchase.po.ProdInOut;
 import com.usoftchina.saas.purchase.po.ProdInOutList;
 import com.usoftchina.saas.purchase.service.ProdInOutService;
+import com.usoftchina.saas.transfers.api.SendMessageApi;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -60,6 +63,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     private MaxnumberService maxnumberService;
     @Autowired
     private CommonService commonService;
+    @Autowired
+    private SendMessageApi sendMessageApi;
 
     @Override
     public PageInfo homepageList(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
@@ -76,6 +81,14 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return pageInfo;
     }
 
+    @Override
+    public void updateB2BStatus(Long id, String status) {
+        ProdInOut prodInOut = new ProdInOut();
+        prodInOut.setId(id);
+        prodInOut.setB2bStatus(status);
+        getMapper().updateByPrimaryKeySelective(prodInOut);
+    }
+
     @Override
     public PageInfo<ProdInOutList> getListData(PageRequest page, ListReqDTO req) {
         //设置默认分页
@@ -303,6 +316,24 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             DocBaseDTO docBaseDTO = getBaseDTOById(prodInOutDTO.getId(),pi_class,prodInOutDTO.getPi_inoutno());
             //日志
             messageLogService.audit(docBaseDTO);
+            //上传到B2B
+            uploadToB2B(prodInOutDTO);
+        }
+    }
+
+    /**
+     * 采购验收/验退过账后上传至B2B
+     * @param prodInOutDTO
+     */
+    private void uploadToB2B(ProdInOutDTO prodInOutDTO) {
+        if (ConfigsCache.current().enableB2B()){
+            MessageInfo messageInfo = null;
+            if ("采购验收单".equals(prodInOutDTO.getPi_class())){
+                messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEIN.name(), String.valueOf(prodInOutDTO.getId()), BaseContextHolder.getCompanyId());
+            } else if ("采购验退单".equals(prodInOutDTO.getPi_class())){
+                messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEOUT.name(), String.valueOf(prodInOutDTO.getId()), BaseContextHolder.getCompanyId());
+            }
+            sendMessageApi.sendMsg(messageInfo);
         }
     }
 
@@ -356,6 +387,24 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             DocBaseDTO docBaseDTO = getBaseDTOById(prodInOutDTO.getId(),pi_class,prodInOutDTO.getPi_inoutno());
             //日志
             messageLogService.unAudit(docBaseDTO);
+            //上传至B2B
+            uploadResToB2B(prodInOutDTO);
+        }
+    }
+
+    /**
+     * 采购验收/验退反过账上传至B2B
+     * @param prodInOutDTO
+     */
+    private void uploadResToB2B(ProdInOutDTO prodInOutDTO) {
+        if (ConfigsCache.current().enableB2B()){
+            MessageInfo messageInfo = null;
+            if ("采购验收单".equals(prodInOutDTO.getPi_class())){
+                messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEINRES.name(), String.valueOf(prodInOutDTO.getId()), BaseContextHolder.getCompanyId());
+            } else if ("采购验退单".equals(prodInOutDTO.getPi_class())){
+                messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEOUTRES.name(), String.valueOf(prodInOutDTO.getId()), BaseContextHolder.getCompanyId());
+            }
+            sendMessageApi.sendMsg(messageInfo);
         }
     }
 

+ 56 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.purchase.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.inquiry.api.InquiryApi;
 import com.usoftchina.saas.inquiry.api.SearchApi;
 import com.usoftchina.saas.inquiry.po.inquiry.*;
@@ -36,6 +37,8 @@ import com.usoftchina.saas.purchase.mapper.*;
 import com.usoftchina.saas.purchase.po.*;
 import com.usoftchina.saas.purchase.service.ProdInOutService;
 import com.usoftchina.saas.purchase.service.PurchaseService;
+import com.usoftchina.saas.transfers.api.SendMessageApi;
+import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
@@ -84,6 +87,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     private CompanyApi companyApi;
     @Autowired
     private AccountApi accountApi;
+    @Autowired
+    private SendMessageApi sendMessageApi;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(PurchaseServiceImpl.class);
 
@@ -189,6 +194,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             calcPurchase(pu_id);
             //日志记录
             messageLogService.save(baseDTO);
+
+            //上传至B2B
+            uploadB2B(pu_id);
+
             return baseDTO;
         }
         //校验有来源的验收验退币别是否与源单据一致
@@ -233,6 +242,37 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         return baseDTO;
     }
 
+    /**
+     * 上传至B2B
+     * @param id
+     */
+    private void uploadB2B(Long id) {
+        Long userId = BaseContextHolder.getUserId();
+        Long companyId = BaseContextHolder.getCompanyId();
+        //是否启用B2B
+        boolean enable = ConfigsCache.current().enableB2B();
+        if (enable) {
+            //更新上传状态
+            updateB2BStatus(id, "待上传");
+            //生成消息
+            MessageInfo messageInfo = new MessageInfo(userId, BillCodeSeq.PURCHASE.name(), String.valueOf(id), companyId);
+            sendMessageApi.sendMsg(messageInfo);
+        }
+    }
+
+    /**
+     * 更新采购案B2B上传状态
+     * @param id
+     * @param status
+     */
+    @Override
+    public void updateB2BStatus(Long id, String status){
+        Purchase purchase = new Purchase();
+        purchase.setId(id);
+        purchase.setB2bStatus(status);
+        getMapper().updateByPrimaryKeySelective(purchase);
+    }
+
 
     @Override
     @Transactional
@@ -298,6 +338,13 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
     @Override
     public void unAudit(Long id) {
+        boolean enable = ConfigsCache.current().enableB2B();
+        if (enable){
+            Purchase purchase = purchaseMapper.selectByPrimaryKey(id);
+            if ("已上传".equals(purchase.getB2bStatus())){
+                throw new BizException(BizExceptionCode.PURCHASE_ORDER_HASUPLOAD);
+            }
+        }
         if (null == id) {
             return;
         }
@@ -354,6 +401,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         //日志
         messageLogService.close(docBaseDTO);
+        if (ConfigsCache.current().enableB2B()){
+            MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEEND.name(), String.valueOf(id), BaseContextHolder.getCompanyId());
+            sendMessageApi.sendMsg(messageInfo);
+        }
         return docBaseDTO;
     }
 
@@ -417,6 +468,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             docBaseDTO = getBaseDTOById(id);
             //日志
             messageLogService.open(docBaseDTO);
+            //启用B2B,采购单结案反结案状态上传
+            if (ConfigsCache.current().enableB2B()){
+                MessageInfo messageInfo = new MessageInfo(BaseContextHolder.getUserId(), BillCodeSeq.PURCHASEEND.name(), String.valueOf(id), BaseContextHolder.getCompanyId());
+                sendMessageApi.sendMsg(messageInfo);
+            }
             return docBaseDTO;
         }
         return docBaseDTO;

+ 6 - 4
applications/purchase/purchase-server/src/main/resources/application.yml

@@ -75,8 +75,10 @@ mybatis:
 auth:
   public-key: auth/pub.key
 ribbon:
-  ReadTimeout: 5000
-  ConnectTimeout: 5000
+  ReadTimeout: 10000
+  ConnectTimeout: 10000
+  eager-load:
+    enabled: true
 feign:
   hystrix:
     enabled: true
@@ -88,10 +90,10 @@ hystrix:
                 enabled: true
               isolation:
                     thread:
-                        timeoutInMilliseconds: 4000
+                        timeoutInMilliseconds: 5000
 b2b:
   baseUrl:
     inquiry: https://test-inquiry.uuzcc.cn
     Component: https://test-mall.uuzcc.cn
     product: http://test-product.uuzcc.cn
-    uu: https://test-b2b.uuzcc.cn
+    common: https://test-b2b.uuzcc.cn

+ 2 - 1
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -31,6 +31,7 @@
     <result column="pi_address" jdbcType="VARCHAR" property="pi_address" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pi_currency" jdbcType="VARCHAR" property="pi_currency" />
+    <result column="pi_rate" jdbcType="DOUBLE" property="pi_rate" />
     <result column="pi_buyerid" jdbcType="INTEGER" property="pi_buyerid" />
     <result column="pi_buyercode" jdbcType="VARCHAR" property="pi_buyercode" />
     <result column="pi_buyername" jdbcType="VARCHAR" property="pi_buyername" />
@@ -203,7 +204,7 @@
 
   <sql id="Prodinout_Column_List" >
     prodinout.pi_id pi_id,prodinout.pi_inoutno pi_inoutno,prodinout.pi_class pi_class,prodinout.pi_date pi_date,prodinout.pi_vendid pi_vendid,prodinout.pi_vendcode pi_vendcode,prodinout.pi_vendname pi_vendname,prodinout.pi_custid pi_custid,prodinout.pi_custcode pi_custcode,prodinout.pi_custname pi_custname,prodinout.pi_puid pi_puid,prodinout.pi_pucode pi_pucode,prodinout.pi_said pi_said,prodinout.pi_sacode pi_sacode,prodinout.pi_total pi_total,prodinout.pi_address pi_address,prodinout.pi_ioid pi_ioid,prodinout.pi_status pi_status,prodinout.pi_statuscode pi_statuscode,prodinout.pi_printstatus pi_printstatus,prodinout.pi_printstatuscode pi_printstatuscode,prodinout.companyid companyid,prodinout.updaterId updaterId,prodinout.updatetime updatetime,prodinout.pi_text1 pi_text1,prodinout.pi_text2 pi_text2,prodinout.pi_text3 pi_text3,prodinout.pi_text4 pi_text4,prodinout.pi_text5 pi_text5,prodinout.pi_nettotal pi_nettotal,prodinout.pi_auditdate pi_auditdate,prodinout.pi_auditman pi_auditman,prodinout.pi_remark pi_remark,
-prodinout.creatorName creatorName,prodinout.creatorId creatorId,prodinout.createTime createTime,prodinout.updaterName updaterName,prodinout.pi_macode pi_macode,prodinout.pi_maid pi_maid,prodinout.pi_prstatuscode pi_prstatuscode,prodinout.pi_prstatus pi_prstatus,prodinout.pi_iocode pi_iocode,prodinout.pi_currency pi_currency,
+prodinout.creatorName creatorName,prodinout.creatorId creatorId,prodinout.createTime createTime,prodinout.updaterName updaterName,prodinout.pi_macode pi_macode,prodinout.pi_maid pi_maid,prodinout.pi_prstatuscode pi_prstatuscode,prodinout.pi_prstatus pi_prstatus,prodinout.pi_iocode pi_iocode,prodinout.pi_currency pi_currency,pi_rate,
   </sql>
   <sql id="Prodiodetail_Column_List" >
     prodiodetail.pd_id pd_id,prodiodetail.pd_piid pd_piid,prodiodetail.pd_inoutno pd_inoutno,prodiodetail.pd_piclass pd_piclass,prodiodetail.pd_pdno pd_pdno,prodiodetail.pd_ordercode pd_ordercode,prodiodetail.pd_orderdetno pd_orderdetno,prodiodetail.pd_prodid pd_prodid,prodiodetail.pd_prodcode pd_prodcode,prodiodetail.pd_unit pd_unit,prodiodetail.pd_inqty pd_inqty,prodiodetail.pd_outqty pd_outqty,prodiodetail.pd_orderprice pd_orderprice,prodiodetail.pd_sendprice pd_sendprice,prodiodetail.pd_price pd_price,prodiodetail.pd_total pd_total,prodiodetail.pd_taxrate pd_taxrate,prodiodetail.pd_netprice pd_netprice,prodiodetail.pd_nettotal pd_nettotal,prodiodetail.pd_whid pd_whid,prodiodetail.pd_whcode pd_whcode,prodiodetail.pd_whname pd_whname,prodiodetail.pd_inwhid pd_inwhid,prodiodetail.pd_inwhcode pd_inwhcode,prodiodetail.pd_inwhname pd_inwhname,prodiodetail.pd_orderid pd_orderid,prodiodetail.pd_sdid pd_sdid,prodiodetail.pd_status pd_status,prodiodetail.pd_remark pd_remark,prodiodetail.pd_text1 pd_text1,prodiodetail.pd_text2 pd_text2,prodiodetail.pd_text3 pd_text3,

+ 3 - 0
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -461,6 +461,9 @@
       <if test="pi_rate != null">
         pi_rate = #{pi_rate,jdbcType=VARCHAR},
       </if>
+      <if test="b2bStatus != null">
+        b2bStatus = #{b2bStatus,jdbcType=VARCHAR},
+      </if>
     </set>
     where pi_id = #{id,jdbcType=INTEGER}
   </update>

+ 5 - 1
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -38,6 +38,7 @@
     <result column="pu_text5" property="pu_text5" jdbcType="VARCHAR" />
     <result column="pu_currency" property="pu_currency" jdbcType="VARCHAR" />
     <result column="pu_rate" property="pu_rate" jdbcType="DOUBLE" />
+    <result column="b2bStatus" property="b2bStatus" jdbcType="VARCHAR" />
   </resultMap>
  <resultMap id="ResultMapWithBLOBs" type="com.usoftchina.saas.purchase.po.Purchase" extends="BaseResultMap" >
     <result column="PU_SHIPADDRESSCODE" property="pu_shipaddresscode" jdbcType="LONGVARCHAR" />
@@ -48,7 +49,7 @@
     PU_BUYERNAME, PU_DELIVERY, PU_TAXTOTAL, PU_TOTAL, PU_REMARK, PU_TOTALUPPER,
     PU_PRINTSTATUS, PU_PRINTSTATUSCODE, PU_ACCEPTSTATUSCODE, PU_ACCEPTSTATUS, PU_STATUSCODE, 
     PU_STATUS, companyid, updaterId,updaterName,updateTime,creatorid,creatorName,createtime, pu_text1, pu_text2, pu_text3, pu_text4,
-    pu_text5,pu_auditman,pu_auditdate,pu_currency,pu_rate
+    pu_text5,pu_auditman,pu_auditdate,pu_currency,pu_rate,b2bStatus
   </sql>
   <sql id="Blob_Column_List" >
     PU_SHIPADDRESSCODE
@@ -382,6 +383,9 @@
       <if test="pu_rate != null" >
         pu_rate = #{pu_rate,jdbcType=DOUBLE},
       </if>
+      <if test="b2bStatus != null">
+        b2bStatus = #{b2bStatus,jdbcType=DOUBLE}
+      </if>
     </set>
     where pu_id = #{id,jdbcType=INTEGER}
   </update>

+ 24 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/QuotationRspDTO.java

@@ -17,9 +17,33 @@ public class QuotationRspDTO implements Serializable {
      * 拒绝采纳理由
      */
     private String refusereason;
+    /**
+     * 交期
+     */
+    private Long leadTime;
+    /**
+     * 税率
+     */
+    private Double taxRate;
 
     private List<InquiryReplayDTO> replies;
 
+    public Long getLeadTime() {
+        return leadTime;
+    }
+
+    public void setLeadTime(Long leadTime) {
+        this.leadTime = leadTime;
+    }
+
+    public Double getTaxRate() {
+        return taxRate;
+    }
+
+    public void setTaxRate(Double taxRate) {
+        this.taxRate = taxRate;
+    }
+
     public Short getAgreed() {
         return agreed;
     }

+ 33 - 109
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java

@@ -2,99 +2,37 @@ package com.usoftchina.saas.sale.dto;
 
 import com.usoftchina.saas.base.dto.CommonBaseDTO;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
  * @author: guq
  * @create: 2019-01-11 15:28
  **/
-public class SaleDownDTO extends CommonBaseDTO {
+public class SaleDownDTO implements Serializable{
 
-    private String sa_code;
+    private Long sa_customeruu;//客户UU
 
-    private String sa_customeruu;
+    private String sa_toplace;//收货地址
 
-    private Integer sa_custid;
+    private String sa_currency;//币别
 
-    private String sa_custcode;
+    private Double sa_rate;//汇率
 
-    private String sa_custname;
+    private Long sa_selleruu;//业务员UU
 
-    private Date sa_date;
+    private String sa_custcontact; //客户联系人
 
-    private String sa_toplace;
+    private Long sa_custcontactuu;//客户联系人UU
 
-    private String sa_currency;
+    private String sa_custmobile;//客户手机
 
-    private Double sa_rate;
+    private String sa_pocode;//PO号
 
-    private Integer sa_selleruu;
+    private Long b2b_pu_id;//B2BID
 
-    private Integer sa_sellerid;
+    private String sa_remark;//备注
 
-    private String sa_seller;
-
-    private String sa_sellercode;
-
-    private String sa_custcontact;
-
-    private Integer sa_custcontactuu;
-
-    private String sa_custmobile;
-
-    private String sa_pocode;
-
-    private Integer b2b_pu_id;
-
-    private String sa_remark;
-
-    public String getSa_code() {
-        return sa_code;
-    }
-
-    public void setSa_code(String sa_code) {
-        this.sa_code = sa_code;
-    }
-
-    public String getSa_customeruu() {
-        return sa_customeruu;
-    }
-
-    public void setSa_customeruu(String sa_customeruu) {
-        this.sa_customeruu = sa_customeruu;
-    }
-
-    public Integer getSa_custid() {
-        return sa_custid;
-    }
-
-    public void setSa_custid(Integer sa_custid) {
-        this.sa_custid = sa_custid;
-    }
-
-    public String getSa_custcode() {
-        return sa_custcode;
-    }
-
-    public void setSa_custcode(String sa_custcode) {
-        this.sa_custcode = sa_custcode;
-    }
-
-    public String getSa_custname() {
-        return sa_custname;
-    }
-
-    public void setSa_custname(String sa_custname) {
-        this.sa_custname = sa_custname;
-    }
-
-    public Date getSa_date() {
-        return sa_date;
-    }
-
-    public void setSa_date(Date sa_date) {
-        this.sa_date = sa_date;
-    }
 
     public String getSa_toplace() {
         return sa_toplace;
@@ -120,36 +58,28 @@ public class SaleDownDTO extends CommonBaseDTO {
         this.sa_rate = sa_rate;
     }
 
-    public Integer getSa_selleruu() {
-        return sa_selleruu;
-    }
-
-    public void setSa_selleruu(Integer sa_selleruu) {
-        this.sa_selleruu = sa_selleruu;
-    }
-
-    public Integer getSa_sellerid() {
-        return sa_sellerid;
+    public Long getSa_customeruu() {
+        return sa_customeruu;
     }
 
-    public void setSa_sellerid(Integer sa_sellerid) {
-        this.sa_sellerid = sa_sellerid;
+    public void setSa_customeruu(Long sa_customeruu) {
+        this.sa_customeruu = sa_customeruu;
     }
 
-    public String getSa_seller() {
-        return sa_seller;
+    public Long getSa_selleruu() {
+        return sa_selleruu;
     }
 
-    public void setSa_seller(String sa_seller) {
-        this.sa_seller = sa_seller;
+    public void setSa_selleruu(Long sa_selleruu) {
+        this.sa_selleruu = sa_selleruu;
     }
 
-    public String getSa_sellercode() {
-        return sa_sellercode;
+    public Long getSa_custcontactuu() {
+        return sa_custcontactuu;
     }
 
-    public void setSa_sellercode(String sa_sellercode) {
-        this.sa_sellercode = sa_sellercode;
+    public void setSa_custcontactuu(Long sa_custcontactuu) {
+        this.sa_custcontactuu = sa_custcontactuu;
     }
 
     public String getSa_custcontact() {
@@ -160,13 +90,7 @@ public class SaleDownDTO extends CommonBaseDTO {
         this.sa_custcontact = sa_custcontact;
     }
 
-    public Integer getSa_custcontactuu() {
-        return sa_custcontactuu;
-    }
 
-    public void setSa_custcontactuu(Integer sa_custcontactuu) {
-        this.sa_custcontactuu = sa_custcontactuu;
-    }
 
     public String getSa_custmobile() {
         return sa_custmobile;
@@ -184,14 +108,6 @@ public class SaleDownDTO extends CommonBaseDTO {
         this.sa_pocode = sa_pocode;
     }
 
-    public Integer getB2b_pu_id() {
-        return b2b_pu_id;
-    }
-
-    public void setB2b_pu_id(Integer b2b_pu_id) {
-        this.b2b_pu_id = b2b_pu_id;
-    }
-
     public String getSa_remark() {
         return sa_remark;
     }
@@ -199,4 +115,12 @@ public class SaleDownDTO extends CommonBaseDTO {
     public void setSa_remark(String sa_remark) {
         this.sa_remark = sa_remark;
     }
+
+    public Long getB2b_pu_id() {
+        return b2b_pu_id;
+    }
+
+    public void setB2b_pu_id(Long b2b_pu_id) {
+        this.b2b_pu_id = b2b_pu_id;
+    }
 }

+ 18 - 77
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDetailDTO.java

@@ -2,61 +2,42 @@ package com.usoftchina.saas.sale.dto;
 
 import com.usoftchina.saas.base.dto.CommonBaseDTO;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
  * @author: guq
  * @create: 2019-01-11 15:39
  **/
-public class SaleDownDetailDTO extends CommonBaseDTO{
+public class SaleDownDetailDTO implements Serializable{
 
-    private String sd_code;
+    private Integer sd_detno;//序号
 
-    private Integer sd_detno;
+    private Long b2b_pd_id;//B2BID
 
-    private Integer b2b_pd_id;
+    private String sd_custorispeccode;//客户物料型号
 
-    private Integer sd_prodid;
+    private String sd_custprodcode;//客户料号
 
-    private String sd_prodcode;
+    private String sd_custproddetail;//客户产品名称
 
-    private String sd_prodspec;
+    private String sd_custprodspec;//客户产品规格
 
-    private String sd_orispeccode;
+    private Double sd_qty;//数量
 
-    private String sd_custorispeccode;
+    private Double sd_price;//单价(含税)
 
-    private String sd_custprodcode;
+    private Double sd_total;//总额(含税)
 
-    private String sd_custproddetail;
+    private Double sd_taxrate;//税率(%)
 
-    private String sd_custprodspec;
+    private Double sd_costprice;//不含税单价
 
-    private String sd_produnit;
+    private Double sd_taxtotal;//不含税金额
 
-    private Double sd_qty;
+    private Date sd_delivery;//交货日期
 
-    private Double sd_price;
-
-    private Double sd_total;
-
-    private Double sd_taxrate;
-
-    private Double sd_costprice;
-
-    private Double sd_taxtotal;
-
-    private Date sd_delivery;
-
-    private String sd_remark;
-
-    public String getSd_code() {
-        return sd_code;
-    }
-
-    public void setSd_code(String sd_code) {
-        this.sd_code = sd_code;
-    }
+    private String sd_remark;//备注
 
     public Integer getSd_detno() {
         return sd_detno;
@@ -66,46 +47,14 @@ public class SaleDownDetailDTO extends CommonBaseDTO{
         this.sd_detno = sd_detno;
     }
 
-    public Integer getB2b_pd_id() {
+    public Long getB2b_pd_id() {
         return b2b_pd_id;
     }
 
-    public void setB2b_pd_id(Integer b2b_pd_id) {
+    public void setB2b_pd_id(Long b2b_pd_id) {
         this.b2b_pd_id = b2b_pd_id;
     }
 
-    public Integer getSd_prodid() {
-        return sd_prodid;
-    }
-
-    public void setSd_prodid(Integer sd_prodid) {
-        this.sd_prodid = sd_prodid;
-    }
-
-    public String getSd_prodcode() {
-        return sd_prodcode;
-    }
-
-    public void setSd_prodcode(String sd_prodcode) {
-        this.sd_prodcode = sd_prodcode;
-    }
-
-    public String getSd_prodspec() {
-        return sd_prodspec;
-    }
-
-    public void setSd_prodspec(String sd_prodspec) {
-        this.sd_prodspec = sd_prodspec;
-    }
-
-    public String getSd_orispeccode() {
-        return sd_orispeccode;
-    }
-
-    public void setSd_orispeccode(String sd_orispeccode) {
-        this.sd_orispeccode = sd_orispeccode;
-    }
-
     public String getSd_custorispeccode() {
         return sd_custorispeccode;
     }
@@ -138,14 +87,6 @@ public class SaleDownDetailDTO extends CommonBaseDTO{
         this.sd_custprodspec = sd_custprodspec;
     }
 
-    public String getSd_produnit() {
-        return sd_produnit;
-    }
-
-    public void setSd_produnit(String sd_produnit) {
-        this.sd_produnit = sd_produnit;
-    }
-
     public Double getSd_qty() {
         return sd_qty;
     }

+ 8 - 3
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -21,7 +21,7 @@ import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.purchase.api.PurchaseService;
+import com.usoftchina.saas.purchase.api.PurchaseApi;
 import com.usoftchina.saas.sale.dto.*;
 import com.usoftchina.saas.sale.mapper.*;
 import com.usoftchina.saas.sale.po.Sale;
@@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -68,7 +69,7 @@ public class SaleServiceImpl implements SaleService{
     @Autowired
     private CommonService commonService;
     @Autowired
-    private PurchaseService purchaseService;
+    private PurchaseApi purchaseApi;
     @Autowired
     private InquiryApi inquiryApi;
     @Autowired
@@ -617,7 +618,7 @@ public class SaleServiceImpl implements SaleService{
        // Result<String> result = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASE.getCaller(),false);
         baseDTO.setId(0l);
         baseDTO.setName(BillCodeSeq.PURCHASE.getCaller());
-        String result = purchaseService.getPurchaseCode(baseDTO);
+        String result = purchaseApi.getPurchaseCode(baseDTO);
         purchase.setPu_code(result);
         purchase.setPu_status(Status.UNAUDITED.getDisplay());
         purchase.setPu_statuscode(Status.UNAUDITED.toString());
@@ -782,6 +783,8 @@ public class SaleServiceImpl implements SaleService{
                 if (!ObjectUtils.isEmpty(publicInquiryItem)) {
                     quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
                     quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
+                    quotationRspDTO.setLeadTime(publicInquiryItem.getLeadtime());
+                    quotationRspDTO.setTaxRate(new BigDecimal(publicInquiryItem.getTaxrate()).doubleValue());
                     //分段报价明细
                     List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
                     List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();
@@ -829,6 +832,8 @@ public class SaleServiceImpl implements SaleService{
                 if (!ObjectUtils.isEmpty(publicInquiryItem)) {
                     quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
                     quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
+                    quotationRspDTO.setLeadTime(publicInquiryItem.getLeadtime());
+                    quotationRspDTO.setTaxRate(new BigDecimal(publicInquiryItem.getTaxrate()).doubleValue());
                     //分段报价明细
                     List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
                     List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();

+ 6 - 4
applications/sale/sale-server/src/main/resources/application.yml

@@ -75,8 +75,10 @@ mybatis:
 auth:
   public-key: auth/pub.key
 ribbon:
-  ReadTimeout: 5000
-  ConnectTimeout: 5000
+  ReadTimeout: 10000
+  ConnectTimeout: 10000
+  eager-load:
+    enabled: true
 feign:
   hystrix:
     enabled: true
@@ -88,10 +90,10 @@ hystrix:
                 enabled: true
               isolation:
                     thread:
-                        timeoutInMilliseconds: 4000
+                        timeoutInMilliseconds: 5000
 b2b:
   baseUrl:
     inquiry: https://test-inquiry.uuzcc.cn
     Component: https://test-mall.uuzcc.cn
     product: http://test-product.uuzcc.cn
-    uu: https://test-b2b.uuzcc.cn
+    common: https://test-b2b.uuzcc.cn

+ 1 - 0
applications/sale/sale-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -78,6 +78,7 @@
     <result column="pd_ordertotal" jdbcType="DOUBLE" property="pd_ordertotal" />
     <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
     <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
+    <result column="pi_rate" jdbcType="DOUBLE" property="pi_rate" />
   </resultMap>
 
   <resultMap id="homePageList" type="com.usoftchina.saas.sale.po.ProdHomePageList">

+ 2 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOutList.java

@@ -150,6 +150,8 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private String pi_currency;
 
+    private Double pi_rate;
+
     private Integer pi_sellerid;
 
     private String pi_sellercode;

+ 4 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/InquiryApi.java

@@ -1,11 +1,14 @@
 package com.usoftchina.saas.inquiry.api;
 
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.inquiry.po.inquiry.*;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Component;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
-@FeignClient(url = "${b2b.baseUrl.inquiry}", name = "inquiry-server")
+@FeignClient(url = "${b2b.baseUrl.inquiry}", name = "inquiry-server"/*, fallback = InquiryApiFallback.class*/)
 @RequestMapping("/inquiry")
 public interface InquiryApi {
 

+ 72 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/InquiryApiFallback.java

@@ -0,0 +1,72 @@
+/*
+package com.usoftchina.saas.inquiry.api;
+
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.exception.ExceptionCode;
+import com.usoftchina.saas.inquiry.po.inquiry.*;
+import org.springframework.stereotype.Component;
+import org.springframework.ui.ModelMap;
+
+*/
+/**
+ * @Author chenwei
+ * @Date 2019/01/16
+ *//*
+
+@Component
+public class InquiryApiFallback implements InquiryApi {
+
+    @Override
+    public IPage<PurcInquiryItemInfo> getInquiry(int pageNumber, int pageSize, String keyword, int isLogin) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public IPage<InquiryEnRemind> findEnRemind(Long useruu, Long enuu, int pageNumber, int pageSize, Integer enableOffer, String keyword, Integer quoted, Long fromDate, Long endDate) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public IPage<InquiryRemind> findRemindByUserInfo(Long useruu, Long enuu, int pageNumber, int pageSize, Integer enableOffer, String keyword, Integer quoted, Long fromDate, Long endDate) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public ModelMap saveQuote(PublicInquiryItem publicInquiryItem) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public PurcInquiry saveInquiry(PurcInquiry inquiry) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public IPage<PurcInquiryItemInfo> getInquiryList(Long enUU, Integer overdue, int pageNumber, int pageSize, String state, Long fromDate, String keyword, Long endDate) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public IPage<PurcInquiryItemInfo> findQuotationsByPage(String state, Long enUU, int pageNumber, int pageSize, Long fromDate, String keyword, Integer overdue, Long endDate) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+        return null;
+    }
+
+    @Override
+    public void adoptQuote(Long id, Short status, Long enuu, Long useruu) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+    }
+
+    @Override
+    public void refuseQuote(Long id, Short status, Long enuu, Long useruu, String refusereason) {
+        //throw new BizException(ExceptionCode.SYSTEM_BUSY);
+    }
+
+}
+*/

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/api/SearchUUApi.java

@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Map;
 
-@FeignClient(url = "${b2b.baseUrl.uu}", name = "b2b-server")
+@FeignClient(url = "${b2b.baseUrl.common}", name = "b2b-server")
 @RequestMapping("/public")
 public interface SearchUUApi {
     /**

+ 302 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/Purchase.java

@@ -0,0 +1,302 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description 采购单
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class Purchase implements Serializable {
+
+    private String pu_code;
+    private Date pu_date;
+    private Long em_uu;
+    private String em_name;
+    private String em_sex;
+    private String em_mobile;
+    private String em_email;
+    private Long ve_uu;
+    private String pu_cop;
+    private Long ve_contactuu;
+    private String ve_contact;
+    private String pu_currency;
+    private Float pu_rate;
+    private String pu_kind;  // 采购类型
+    private String pu_payments;
+    private String pu_remark;
+    private String pu_recordman;
+    private String pu_auditman;
+    private Date pu_indate;
+    private String pu_shipaddresscode;
+    private String pu_receivename;
+    private String pu_receivecode;
+    private Long pu_id;
+    private List<PurchaseDetail> purchaseDetails;
+    private String pu_purpose; // 用途,
+    private String pu_arcustcode; // 买家应收客户,
+    private String pu_shcustcode; // 收货客户,
+    private String pu_refcode; // 销售单号
+    private String pu_custcode; // 客户编号,
+    private String pu_custname; // 客户名称。
+    private String pu_transport;
+    private Long pu_b2bid;// 查询平台的id号
+
+    public String getPu_code() {
+        return pu_code;
+    }
+
+    public void setPu_code(String pu_code) {
+        this.pu_code = pu_code;
+    }
+
+    public Date getPu_date() {
+        return pu_date;
+    }
+
+    public void setPu_date(Date pu_date) {
+        this.pu_date = pu_date;
+    }
+
+    public Long getEm_uu() {
+        return em_uu;
+    }
+
+    public void setEm_uu(Long em_uu) {
+        this.em_uu = em_uu;
+    }
+
+    public String getEm_name() {
+        return em_name;
+    }
+
+    public void setEm_name(String em_name) {
+        this.em_name = em_name;
+    }
+
+    public String getEm_sex() {
+        return em_sex;
+    }
+
+    public void setEm_sex(String em_sex) {
+        this.em_sex = em_sex;
+    }
+
+    public String getEm_mobile() {
+        return em_mobile;
+    }
+
+    public void setEm_mobile(String em_mobile) {
+        this.em_mobile = em_mobile;
+    }
+
+    public String getEm_email() {
+        return em_email;
+    }
+
+    public void setEm_email(String em_email) {
+        this.em_email = em_email;
+    }
+
+    public Long getVe_uu() {
+        return ve_uu;
+    }
+
+    public void setVe_uu(Long ve_uu) {
+        this.ve_uu = ve_uu;
+    }
+
+    public String getPu_cop() {
+        return pu_cop;
+    }
+
+    public void setPu_cop(String pu_cop) {
+        this.pu_cop = pu_cop;
+    }
+
+    public Long getVe_contactuu() {
+        return ve_contactuu;
+    }
+
+    public void setVe_contactuu(Long ve_contactuu) {
+        this.ve_contactuu = ve_contactuu;
+    }
+
+    public String getVe_contact() {
+        return ve_contact;
+    }
+
+    public void setVe_contact(String ve_contact) {
+        this.ve_contact = ve_contact;
+    }
+
+    public String getPu_currency() {
+        return pu_currency;
+    }
+
+    public void setPu_currency(String pu_currency) {
+        this.pu_currency = pu_currency;
+    }
+
+    public Float getPu_rate() {
+        return pu_rate;
+    }
+
+    public void setPu_rate(Float pu_rate) {
+        this.pu_rate = pu_rate;
+    }
+
+    public String getPu_kind() {
+        return pu_kind;
+    }
+
+    public void setPu_kind(String pu_kind) {
+        this.pu_kind = pu_kind;
+    }
+
+    public String getPu_payments() {
+        return pu_payments;
+    }
+
+    public void setPu_payments(String pu_payments) {
+        this.pu_payments = pu_payments;
+    }
+
+    public String getPu_remark() {
+        return pu_remark;
+    }
+
+    public void setPu_remark(String pu_remark) {
+        this.pu_remark = pu_remark;
+    }
+
+    public String getPu_recordman() {
+        return pu_recordman;
+    }
+
+    public void setPu_recordman(String pu_recordman) {
+        this.pu_recordman = pu_recordman;
+    }
+
+    public String getPu_auditman() {
+        return pu_auditman;
+    }
+
+    public void setPu_auditman(String pu_auditman) {
+        this.pu_auditman = pu_auditman;
+    }
+
+    public Date getPu_indate() {
+        return pu_indate;
+    }
+
+    public void setPu_indate(Date pu_indate) {
+        this.pu_indate = pu_indate;
+    }
+
+    public String getPu_shipaddresscode() {
+        return pu_shipaddresscode;
+    }
+
+    public void setPu_shipaddresscode(String pu_shipaddresscode) {
+        this.pu_shipaddresscode = pu_shipaddresscode;
+    }
+
+    public String getPu_receivename() {
+        return pu_receivename;
+    }
+
+    public void setPu_receivename(String pu_receivename) {
+        this.pu_receivename = pu_receivename;
+    }
+
+    public String getPu_receivecode() {
+        return pu_receivecode;
+    }
+
+    public void setPu_receivecode(String pu_receivecode) {
+        this.pu_receivecode = pu_receivecode;
+    }
+
+    public Long getPu_id() {
+        return pu_id;
+    }
+
+    public void setPu_id(Long pu_id) {
+        this.pu_id = pu_id;
+    }
+
+    public List<PurchaseDetail> getPurchaseDetails() {
+        return purchaseDetails;
+    }
+
+    public void setPurchaseDetails(List<PurchaseDetail> purchaseDetails) {
+        this.purchaseDetails = purchaseDetails;
+    }
+
+    public String getPu_purpose() {
+        return pu_purpose;
+    }
+
+    public void setPu_purpose(String pu_purpose) {
+        this.pu_purpose = pu_purpose;
+    }
+
+    public String getPu_arcustcode() {
+        return pu_arcustcode;
+    }
+
+    public void setPu_arcustcode(String pu_arcustcode) {
+        this.pu_arcustcode = pu_arcustcode;
+    }
+
+    public String getPu_shcustcode() {
+        return pu_shcustcode;
+    }
+
+    public void setPu_shcustcode(String pu_shcustcode) {
+        this.pu_shcustcode = pu_shcustcode;
+    }
+
+    public String getPu_refcode() {
+        return pu_refcode;
+    }
+
+    public void setPu_refcode(String pu_refcode) {
+        this.pu_refcode = pu_refcode;
+    }
+
+    public String getPu_custcode() {
+        return pu_custcode;
+    }
+
+    public void setPu_custcode(String pu_custcode) {
+        this.pu_custcode = pu_custcode;
+    }
+
+    public String getPu_custname() {
+        return pu_custname;
+    }
+
+    public void setPu_custname(String pu_custname) {
+        this.pu_custname = pu_custname;
+    }
+
+    public String getPu_transport() {
+        return pu_transport;
+    }
+
+    public void setPu_transport(String pu_transport) {
+        this.pu_transport = pu_transport;
+    }
+
+    public Long getPu_b2bid() {
+        return pu_b2bid;
+    }
+
+    public void setPu_b2bid(Long pu_b2bid) {
+        this.pu_b2bid = pu_b2bid;
+    }
+}

+ 313 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseDetail.java

@@ -0,0 +1,313 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 采购单明细
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class PurchaseDetail implements Serializable {
+
+    private String pd_code;
+    private String pd_prodcode;
+    private Double pd_qty;
+    private Double pd_price;
+    private Date pd_delivery;
+    private String pd_remark;
+    private Float pd_rate;
+    private short pd_detno;
+    private String pd_factory;
+    private String pd_vendspec;
+    private Integer pd_beipin;
+    //终端供应商名称
+    private String pd_purcvendname;
+    //终端供应商uu
+    private Long pd_purcvenduu;
+    //客户采购订单号
+    private String pd_custpurchasecode;
+    //客户采购订单序号
+    private Short pd_custpurchasedetno;
+    //收货客户
+    private String pd_acceptcustname;
+    //收货地址
+    private String pd_acceptcustaddress;
+    //收货客户uu
+    private Long pd_acceptcustuu;
+    //是否能发货
+    private String pd_hasissued;
+    //终端价格
+    private Float pd_purcprice;
+    //终端税率
+    private Float pd_purctaxrate;
+    //终端币别
+    private String pd_purccurrency;
+    //税收分类编码
+    private String pd_taxcode;
+    //开票名称
+    private String pd_billname;
+    //开票型号
+    private String pd_orispeccode;
+    //替代料号
+    private String pd_repprodcode;
+    //替代料名称
+    private String pd_repdetail;
+    //替代料规格
+    private String pd_repspec;
+
+    //旧料编号
+    private String pr_oldcode;
+    //旧料名称
+    private String pr_oldname;
+    //旧料规格
+    private String pr_oldspec;
+
+    public String getPd_code() {
+        return pd_code;
+    }
+
+    public void setPd_code(String pd_code) {
+        this.pd_code = pd_code;
+    }
+
+    public String getPd_prodcode() {
+        return pd_prodcode;
+    }
+
+    public void setPd_prodcode(String pd_prodcode) {
+        this.pd_prodcode = pd_prodcode;
+    }
+
+    public Double getPd_qty() {
+        return pd_qty;
+    }
+
+    public void setPd_qty(Double pd_qty) {
+        this.pd_qty = pd_qty;
+    }
+
+    public Double getPd_price() {
+        return pd_price;
+    }
+
+    public void setPd_price(Double pd_price) {
+        this.pd_price = pd_price;
+    }
+
+    public Date getPd_delivery() {
+        return pd_delivery;
+    }
+
+    public void setPd_delivery(Date pd_delivery) {
+        this.pd_delivery = pd_delivery;
+    }
+
+    public String getPd_remark() {
+        return pd_remark;
+    }
+
+    public void setPd_remark(String pd_remark) {
+        this.pd_remark = pd_remark;
+    }
+
+    public Float getPd_rate() {
+        return pd_rate;
+    }
+
+    public void setPd_rate(Float pd_rate) {
+        this.pd_rate = pd_rate;
+    }
+
+    public short getPd_detno() {
+        return pd_detno;
+    }
+
+    public void setPd_detno(short pd_detno) {
+        this.pd_detno = pd_detno;
+    }
+
+    public String getPd_factory() {
+        return pd_factory;
+    }
+
+    public void setPd_factory(String pd_factory) {
+        this.pd_factory = pd_factory;
+    }
+
+    public String getPd_vendspec() {
+        return pd_vendspec;
+    }
+
+    public void setPd_vendspec(String pd_vendspec) {
+        this.pd_vendspec = pd_vendspec;
+    }
+
+    public Integer getPd_beipin() {
+        return pd_beipin;
+    }
+
+    public void setPd_beipin(Integer pd_beipin) {
+        this.pd_beipin = pd_beipin;
+    }
+
+    public String getPd_purcvendname() {
+        return pd_purcvendname;
+    }
+
+    public void setPd_purcvendname(String pd_purcvendname) {
+        this.pd_purcvendname = pd_purcvendname;
+    }
+
+    public Long getPd_purcvenduu() {
+        return pd_purcvenduu;
+    }
+
+    public void setPd_purcvenduu(Long pd_purcvenduu) {
+        this.pd_purcvenduu = pd_purcvenduu;
+    }
+
+    public String getPd_custpurchasecode() {
+        return pd_custpurchasecode;
+    }
+
+    public void setPd_custpurchasecode(String pd_custpurchasecode) {
+        this.pd_custpurchasecode = pd_custpurchasecode;
+    }
+
+    public Short getPd_custpurchasedetno() {
+        return pd_custpurchasedetno;
+    }
+
+    public void setPd_custpurchasedetno(Short pd_custpurchasedetno) {
+        this.pd_custpurchasedetno = pd_custpurchasedetno;
+    }
+
+    public String getPd_acceptcustname() {
+        return pd_acceptcustname;
+    }
+
+    public void setPd_acceptcustname(String pd_acceptcustname) {
+        this.pd_acceptcustname = pd_acceptcustname;
+    }
+
+    public String getPd_acceptcustaddress() {
+        return pd_acceptcustaddress;
+    }
+
+    public void setPd_acceptcustaddress(String pd_acceptcustaddress) {
+        this.pd_acceptcustaddress = pd_acceptcustaddress;
+    }
+
+    public Long getPd_acceptcustuu() {
+        return pd_acceptcustuu;
+    }
+
+    public void setPd_acceptcustuu(Long pd_acceptcustuu) {
+        this.pd_acceptcustuu = pd_acceptcustuu;
+    }
+
+    public String getPd_hasissued() {
+        return pd_hasissued;
+    }
+
+    public void setPd_hasissued(String pd_hasissued) {
+        this.pd_hasissued = pd_hasissued;
+    }
+
+    public Float getPd_purcprice() {
+        return pd_purcprice;
+    }
+
+    public void setPd_purcprice(Float pd_purcprice) {
+        this.pd_purcprice = pd_purcprice;
+    }
+
+    public Float getPd_purctaxrate() {
+        return pd_purctaxrate;
+    }
+
+    public void setPd_purctaxrate(Float pd_purctaxrate) {
+        this.pd_purctaxrate = pd_purctaxrate;
+    }
+
+    public String getPd_purccurrency() {
+        return pd_purccurrency;
+    }
+
+    public void setPd_purccurrency(String pd_purccurrency) {
+        this.pd_purccurrency = pd_purccurrency;
+    }
+
+    public String getPd_taxcode() {
+        return pd_taxcode;
+    }
+
+    public void setPd_taxcode(String pd_taxcode) {
+        this.pd_taxcode = pd_taxcode;
+    }
+
+    public String getPd_billname() {
+        return pd_billname;
+    }
+
+    public void setPd_billname(String pd_billname) {
+        this.pd_billname = pd_billname;
+    }
+
+    public String getPd_orispeccode() {
+        return pd_orispeccode;
+    }
+
+    public void setPd_orispeccode(String pd_orispeccode) {
+        this.pd_orispeccode = pd_orispeccode;
+    }
+
+    public String getPd_repprodcode() {
+        return pd_repprodcode;
+    }
+
+    public void setPd_repprodcode(String pd_repprodcode) {
+        this.pd_repprodcode = pd_repprodcode;
+    }
+
+    public String getPd_repdetail() {
+        return pd_repdetail;
+    }
+
+    public void setPd_repdetail(String pd_repdetail) {
+        this.pd_repdetail = pd_repdetail;
+    }
+
+    public String getPd_repspec() {
+        return pd_repspec;
+    }
+
+    public void setPd_repspec(String pd_repspec) {
+        this.pd_repspec = pd_repspec;
+    }
+
+    public String getPr_oldcode() {
+        return pr_oldcode;
+    }
+
+    public void setPr_oldcode(String pr_oldcode) {
+        this.pr_oldcode = pr_oldcode;
+    }
+
+    public String getPr_oldname() {
+        return pr_oldname;
+    }
+
+    public void setPr_oldname(String pr_oldname) {
+        this.pr_oldname = pr_oldname;
+    }
+
+    public String getPr_oldspec() {
+        return pr_oldspec;
+    }
+
+    public void setPr_oldspec(String pr_oldspec) {
+        this.pr_oldspec = pr_oldspec;
+    }
+}

+ 55 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseDetailEnd.java

@@ -0,0 +1,55 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/15
+ */
+public class PurchaseDetailEnd {
+
+    private String pd_code;
+    private short pd_detno;
+    private short pd_ended;
+    private Integer pd_id;
+
+    public String getPd_code() {
+        return pd_code;
+    }
+
+    public void setPd_code(String pd_code) {
+        this.pd_code = pd_code;
+    }
+
+    public short getPd_detno() {
+        return pd_detno;
+    }
+
+    public void setPd_detno(short pd_detno) {
+        this.pd_detno = pd_detno;
+    }
+
+    public short getPd_ended() {
+        return pd_ended;
+    }
+
+    public void setPd_ended(short pd_ended) {
+        this.pd_ended = pd_ended;
+    }
+
+    public Integer getPd_id() {
+        return pd_id;
+    }
+
+    public void setPd_id(Integer pd_id) {
+        this.pd_id = pd_id;
+    }
+
+    public PurchaseDetailEnd() {
+    }
+
+    public PurchaseDetailEnd(String pd_code, short pd_detno, short pd_ended, Integer pd_id) {
+        this.pd_code = pd_code;
+        this.pd_detno = pd_detno;
+        this.pd_ended = pd_ended;
+        this.pd_id = pd_id;
+    }
+}

+ 207 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseProdInOut.java

@@ -0,0 +1,207 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/16
+ */
+public class PurchaseProdInOut implements Serializable {
+
+    /**
+     * erp出入库单据的id
+     */
+    private Long pi_id;
+
+    /**
+     * erp出入库单据单号
+     */
+    private String pi_inoutno;
+
+    /**
+     * 供应商UU
+     */
+    private Long pi_vendoruu;
+
+    /**
+     * 币别
+     */
+    private String pi_currency;
+
+    /**
+     * 汇率
+     */
+    private Float pi_rate;
+
+    /**
+     * 付款方式
+     */
+    private String pi_payment;
+
+    /**
+     * 运输方式
+     */
+    private String pi_transport;
+
+    /**
+     * 备注
+     */
+    private String pi_remark;
+
+    /**
+     * 过账人
+     */
+    private String pi_inoutman;
+
+    /**
+     * 过账日期
+     */
+    private Date pi_date;
+
+    /**
+     * 送货单号
+     */
+    private String pi_sendcode;
+
+    /**
+     * 应付供应商名
+     */
+    private String pi_receivename;
+
+    /**
+     * 应付供应商编号
+     */
+    private String pi_receivecode;
+
+    /**
+     * 明细
+     */
+    private List<PurchaseProdInOutDetail> details;
+
+    /**
+     * b2bId
+     */
+    private Long pi_b2b_id;
+
+    public Long getPi_id() {
+        return pi_id;
+    }
+
+    public void setPi_id(Long pi_id) {
+        this.pi_id = pi_id;
+    }
+
+    public String getPi_inoutno() {
+        return pi_inoutno;
+    }
+
+    public void setPi_inoutno(String pi_inoutno) {
+        this.pi_inoutno = pi_inoutno;
+    }
+
+    public Long getPi_vendoruu() {
+        return pi_vendoruu;
+    }
+
+    public void setPi_vendoruu(Long pi_vendoruu) {
+        this.pi_vendoruu = pi_vendoruu;
+    }
+
+    public String getPi_currency() {
+        return pi_currency;
+    }
+
+    public void setPi_currency(String pi_currency) {
+        this.pi_currency = pi_currency;
+    }
+
+    public Float getPi_rate() {
+        return pi_rate;
+    }
+
+    public void setPi_rate(Float pi_rate) {
+        this.pi_rate = pi_rate;
+    }
+
+    public String getPi_payment() {
+        return pi_payment;
+    }
+
+    public void setPi_payment(String pi_payment) {
+        this.pi_payment = pi_payment;
+    }
+
+    public String getPi_transport() {
+        return pi_transport;
+    }
+
+    public void setPi_transport(String pi_transport) {
+        this.pi_transport = pi_transport;
+    }
+
+    public String getPi_remark() {
+        return pi_remark;
+    }
+
+    public void setPi_remark(String pi_remark) {
+        this.pi_remark = pi_remark;
+    }
+
+    public String getPi_inoutman() {
+        return pi_inoutman;
+    }
+
+    public void setPi_inoutman(String pi_inoutman) {
+        this.pi_inoutman = pi_inoutman;
+    }
+
+    public Date getPi_date() {
+        return pi_date;
+    }
+
+    public void setPi_date(Date pi_date) {
+        this.pi_date = pi_date;
+    }
+
+    public String getPi_sendcode() {
+        return pi_sendcode;
+    }
+
+    public void setPi_sendcode(String pi_sendcode) {
+        this.pi_sendcode = pi_sendcode;
+    }
+
+    public String getPi_receivename() {
+        return pi_receivename;
+    }
+
+    public void setPi_receivename(String pi_receivename) {
+        this.pi_receivename = pi_receivename;
+    }
+
+    public String getPi_receivecode() {
+        return pi_receivecode;
+    }
+
+    public void setPi_receivecode(String pi_receivecode) {
+        this.pi_receivecode = pi_receivecode;
+    }
+
+    public List<PurchaseProdInOutDetail> getDetails() {
+        return details;
+    }
+
+    public void setDetails(List<PurchaseProdInOutDetail> details) {
+        this.details = details;
+    }
+
+    public Long getPi_b2b_id() {
+        return pi_b2b_id;
+    }
+
+    public void setPi_b2b_id(Long pi_b2b_id) {
+        this.pi_b2b_id = pi_b2b_id;
+    }
+}

+ 132 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/PurchaseProdInOutDetail.java

@@ -0,0 +1,132 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/16
+ */
+public class PurchaseProdInOutDetail implements Serializable {
+
+    private Long pd_id;//id
+    private Short pd_detno;//明细行序号
+    private String pd_ordercode;//采购单编号
+    private Short pd_orderdetno;//采购单明细行号
+    private Double pd_inqty;//入库数量
+    private Double pd_outqty;//出库数量
+    private Double pd_orderprice;//采购成本
+    private Double pd_taxrate;//税率
+    private String pd_batchcode;//批号
+    private String pd_remark;//备注
+    private String pd_prodcode;//物料编号
+    private String pd_whname;//仓库名称
+
+    /**
+     * 平台送货单明细id
+     */
+    private Long b2b_si_id;
+
+    public Long getPd_id() {
+        return pd_id;
+    }
+
+    public void setPd_id(Long pd_id) {
+        this.pd_id = pd_id;
+    }
+
+    public Short getPd_detno() {
+        return pd_detno;
+    }
+
+    public void setPd_detno(Short pd_detno) {
+        this.pd_detno = pd_detno;
+    }
+
+    public String getPd_ordercode() {
+        return pd_ordercode;
+    }
+
+    public void setPd_ordercode(String pd_ordercode) {
+        this.pd_ordercode = pd_ordercode;
+    }
+
+    public Short getPd_orderdetno() {
+        return pd_orderdetno;
+    }
+
+    public void setPd_orderdetno(Short pd_orderdetno) {
+        this.pd_orderdetno = pd_orderdetno;
+    }
+
+    public Double getPd_inqty() {
+        return pd_inqty;
+    }
+
+    public void setPd_inqty(Double pd_inqty) {
+        this.pd_inqty = pd_inqty;
+    }
+
+    public Double getPd_outqty() {
+        return pd_outqty;
+    }
+
+    public void setPd_outqty(Double pd_outqty) {
+        this.pd_outqty = pd_outqty;
+    }
+
+    public Double getPd_orderprice() {
+        return pd_orderprice;
+    }
+
+    public void setPd_orderprice(Double pd_orderprice) {
+        this.pd_orderprice = pd_orderprice;
+    }
+
+    public Double getPd_taxrate() {
+        return pd_taxrate;
+    }
+
+    public void setPd_taxrate(Double pd_taxrate) {
+        this.pd_taxrate = pd_taxrate;
+    }
+
+    public String getPd_batchcode() {
+        return pd_batchcode;
+    }
+
+    public void setPd_batchcode(String pd_batchcode) {
+        this.pd_batchcode = pd_batchcode;
+    }
+
+    public String getPd_remark() {
+        return pd_remark;
+    }
+
+    public void setPd_remark(String pd_remark) {
+        this.pd_remark = pd_remark;
+    }
+
+    public String getPd_prodcode() {
+        return pd_prodcode;
+    }
+
+    public void setPd_prodcode(String pd_prodcode) {
+        this.pd_prodcode = pd_prodcode;
+    }
+
+    public String getPd_whname() {
+        return pd_whname;
+    }
+
+    public void setPd_whname(String pd_whname) {
+        this.pd_whname = pd_whname;
+    }
+
+    public Long getB2b_si_id() {
+        return b2b_si_id;
+    }
+
+    public void setB2b_si_id(Long b2b_si_id) {
+        this.b2b_si_id = b2b_si_id;
+    }
+}

+ 22 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/SavePurchaseListReq.java

@@ -0,0 +1,22 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description 保存采购单上传对象
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class SavePurchaseListReq implements Serializable {
+
+    List<Purchase> data;
+
+    public List<Purchase> getData() {
+        return data;
+    }
+
+    public void setData(List<Purchase> data) {
+        this.data = data;
+    }
+}

+ 22 - 0
applications/transfers/mall-api/src/main/java/com/usoftchina/saas/inquiry/po/purchase/SavePurchaseListResp.java

@@ -0,0 +1,22 @@
+package com.usoftchina.saas.inquiry.po.purchase;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description 保存采购单响应对象
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class SavePurchaseListResp implements Serializable {
+
+    List<Purchase> data;
+
+    public List<Purchase> getData() {
+        return data;
+    }
+
+    public void setData(List<Purchase> data) {
+        this.data = data;
+    }
+}

+ 1 - 1
applications/transfers/mall-api/src/test/resources/application.yml

@@ -3,4 +3,4 @@ b2b:
     inquiry: https://test-inquiry.uuzcc.cn
     Component: https://test-mall.uuzcc.cn
     product: http://test-product.uuzcc.cn
-    uu: https://test-b2b.uuzcc.cn
+    common: https://test-b2b.uuzcc.cn

+ 2 - 2
applications/transfers/transfers-api/src/main/java/com/usoftchina/saas/transfers/api/SendMessageApi.java

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-@FeignClient(name = "transfers-server" , fallback = SendMessageApiFallBack.class)
+@FeignClient(name = "transfers-server" , fallback = SendMessageApi.SendMessageApiFallBack.class)
 public interface SendMessageApi {
 
     @PostMapping("/send/Message")
@@ -17,7 +17,7 @@ public interface SendMessageApi {
     class SendMessageApiFallBack implements SendMessageApi {
         @Override
         public Result sendMsg(MessageInfo info) {
-            return null;
+            return Result.error("网络异常,请稍后重试!");
         }
     }
 }

+ 0 - 19
applications/transfers/transfers-api/src/main/java/com/usoftchina/saas/transfers/api/SendMessageApiFallBack.java

@@ -1,19 +0,0 @@
-package com.usoftchina.saas.transfers.api;
-
-import com.usoftchina.saas.base.Result;
-import com.usoftchina.saas.transfers.dto.MessageInfo;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestBody;
-
-/**
- * @author: guq
- * @create: 2019-01-09 13:50
- **/
-@Component
-public class SendMessageApiFallBack implements SendMessageApi {
-
-    @Override
-    public Result sendMsg(@RequestBody MessageInfo info) {
-        return Result.error("网络异常,请稍后重试!");
-    }
-}

+ 3 - 2
applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/interceptor/OpenApiAuthInterceptor.java

@@ -53,7 +53,7 @@ public class OpenApiAuthInterceptor extends HandlerInterceptorAdapter{
             String sign = request.getParameter(openApiConfig.getSignatureParam());
             String companyuu = request.getParameter(openApiConfig.getCompanyuu());
             if (!StringUtils.isEmpty(sign) && !StringUtils.isEmpty(companyuu)) {
-                String urlMessage = request.getRequestURL() + "?"
+                String urlMessage = request.getRequestURI() + "?"
                         + request.getQueryString().substring(0, request.getQueryString().indexOf(openApiConfig.getSignatureParam()) - 1);
 
                 logger.info("urlMessage:{}", urlMessage);
@@ -71,7 +71,8 @@ public class OpenApiAuthInterceptor extends HandlerInterceptorAdapter{
                     localSign = companyResult.getData().getAccessKey() == null ? HmacUtils.encode(urlMessage) :
                                 HmacUtils.encode(urlMessage, companyResult.getData().getAccessKey());
 
-                    if (servletPath.indexOf("openapi") > -1) {
+                    if (servletPath.indexOf("b2b") > -1) {
+                        logger.info("自己生产的sign:{}-----传入的sign:{}", localSign, sign);
                         check = sign.equals(localSign);
                     }
 

+ 8 - 0
applications/transfers/transfers-server/pom.xml

@@ -68,6 +68,10 @@
           <groupId>com.usoftchina.saas</groupId>
           <artifactId>mall-api</artifactId>
         </dependency>
+        <dependency>
+          <groupId>com.usoftchina.saas</groupId>
+          <artifactId>purchase-api</artifactId>
+        </dependency>
         <!-- db -->
         <dependency>
             <groupId>mysql</groupId>
@@ -89,6 +93,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>money-dto</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>commons-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/TransfersApplication.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.transfers;
 
+import com.usoftchina.saas.auth.client.EnableAuthClient;
 import com.usoftchina.saas.transfers.auth.EnableOpenApiAuthClient;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
@@ -12,6 +13,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 @EnableFeignClients("com.usoftchina.saas")
 @MapperScan("com.usoftchina.saas.transfers.mapper")
 @EnableOpenApiAuthClient
+@EnableAuthClient
 public class TransfersApplication {
     public static void main(String[] args) {
         SpringApplication.run(TransfersApplication.class, args);

+ 48 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/B2BConfig.java

@@ -0,0 +1,48 @@
+package com.usoftchina.saas.transfers.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @Author chenwei
+ * @Date 2019/01/15
+ */
+@ConfigurationProperties(prefix = "b2b.baseurl")
+public class B2BConfig {
+
+    private String inquiry;
+    private String Component;
+    private String product;
+    private String common;
+
+    public String getInquiry() {
+        return inquiry;
+    }
+
+    public void setInquiry(String inquiry) {
+        this.inquiry = inquiry;
+    }
+
+    public String getComponent() {
+        return Component;
+    }
+
+    public void setComponent(String component) {
+        Component = component;
+    }
+
+    public String getProduct() {
+        return product;
+    }
+
+    public void setProduct(String product) {
+        this.product = product;
+    }
+
+    public String getCommon() {
+        return common;
+    }
+
+    public void setCommon(String common) {
+        this.common = common;
+    }
+}

+ 21 - 8
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java

@@ -1,19 +1,22 @@
 package com.usoftchina.saas.transfers.controller;
 
+import com.usoftchina.saas.auth.client.annotation.IgnoreAuth;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.money.dto.ApcheckDTO;
 import com.usoftchina.saas.money.dto.ApcheckFormDTO;
-import com.usoftchina.saas.sale.dto.SaleDownFormDTO;
+import com.usoftchina.saas.transfers.auth.annotation.IgnoreOpenApiAuth;
 import com.usoftchina.saas.transfers.service.ApCheckService;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.List;
 
 /**
@@ -21,21 +24,31 @@ import java.util.List;
  * @author: guq
  * @create: 2019-01-12 15:03
  **/
+@IgnoreAuth
 @RestController
 @RequestMapping("/b2b/apcheck")
+@Api(value = "ApcheckController", description = "对账单下载接口")
 public class ApCheckController {
 
 
     @Autowired
     private ApCheckService apcheckService;
 
+    @ApiOperation(value = "对账单下载")
     @PostMapping("/save")
-    public Result saveApcheck(@RequestParam("data") String data) {
+    public Result saveApcheck(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         List<ApcheckFormDTO> forms = JsonUtils.fromJsonArray(data, ApcheckFormDTO.class);
-        apcheckService.save(forms);
-        return Result.success();
+        String ids = apcheckService.save(forms);
+        return Result.success(ids);
+    }
+
+    @PostMapping("/test")
+    @ApiOperation(value = "测试")
+    public void test(@RequestBody ApcheckDTO apcheckDTO) {
+        System.out.println(apcheckDTO);
     }
 }

+ 18 - 3
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java

@@ -1,16 +1,23 @@
 package com.usoftchina.saas.transfers.controller;
 
+import com.usoftchina.saas.auth.client.annotation.IgnoreAuth;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.sale.dto.SaleDownDTO;
 import com.usoftchina.saas.sale.dto.SaleDownFormDTO;
+import com.usoftchina.saas.transfers.auth.annotation.IgnoreOpenApiAuth;
 import com.usoftchina.saas.transfers.service.SaleDownService;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.util.List;
 
 /**
@@ -18,8 +25,10 @@ import java.util.List;
  * @author: guq
  * @create: 2019-01-11 16:42
  **/
+@IgnoreAuth
 @RestController
 @RequestMapping("/b2b/saledown")
+@Api(value = "SaleDownController", description = "客户订单下载、更新")
 public class SaleDownController {
 
     @Autowired
@@ -29,11 +38,13 @@ public class SaleDownController {
      *从b2b下载客户采购单
      * @return
      */
+    @ApiOperation(value = "客户订单下载")
     @PostMapping("/save")
-    public Result<String> saveSaleDown(@RequestParam("data") String data) {
+    public Result<String> saveSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         List<SaleDownFormDTO> forms = JsonUtils.fromJsonArray(data, SaleDownFormDTO.class);
         String idStr = saleDownService.saveData(forms);
         return Result.success(idStr);
@@ -43,11 +54,13 @@ public class SaleDownController {
      *从b2b更新为结案
      * @return
      */
+    @ApiOperation(value = "结案更新")
     @PostMapping("/close")
-    public Result<String> closeSaleDown(@RequestParam("data") String data) {
+    public Result<String> closeSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
          saleDownService.closeSaleDown(data);
         return Result.success();
     }
@@ -56,11 +69,13 @@ public class SaleDownController {
      *从b2b更新为结案
      * @return
      */
+    @ApiOperation(value = "反结案更新")
     @PostMapping("/resClose")
-    public Result<String> resCloseSaleDown(@RequestParam("data") String data) {
+    public Result<String> resCloseSaleDown(@RequestParam("data") String data) throws UnsupportedEncodingException {
         if (StringUtils.isEmpty(data)) {
             throw new BizException(BizExceptionCode.NULL_DATA);
         }
+        data = URLDecoder.decode(data, "UTF-8");
         saleDownService.resCloseSaleDown(data);
         return Result.success();
     }

+ 6 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/ApcheckMapper.java

@@ -1,7 +1,9 @@
 package com.usoftchina.saas.transfers.mapper;
 
+import com.usoftchina.saas.document.entities.Vendor;
 import com.usoftchina.saas.money.po.Apcheck;
 import com.usoftchina.saas.money.po.ApcheckDetail;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,6 +14,9 @@ public interface ApcheckMapper {
 
     Apcheck selectByPrimaryKey(Integer ac_id);
 
-
     void batchInsert(List<ApcheckDetail> details);
+
+    Vendor getVendorByuu(@Param("uu") Long uu, @Param("companyid") Long companyid);
+
+    Integer count(Long id);
 }

+ 6 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/SaledownMapper.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.transfers.mapper;
 
+import com.usoftchina.saas.document.entities.Customer;
 import com.usoftchina.saas.document.entities.Product;
 import com.usoftchina.saas.transfers.po.SaleDown;
 import com.usoftchina.saas.transfers.po.SaleDownDetail;
@@ -24,5 +25,9 @@ public interface SaledownMapper {
 
     void batchUpdateClose(@Param("data") String data, @Param("companyid") Long companyid);
 
-    void batchUpdateResClose(String data, Long companyId);
+    void batchUpdateResClose(@Param("data") String data, @Param("companyid") Long companyid);
+
+    Customer getCustomer(@Param("uu") Long uu, @Param("companyid") Long companyid);
+
+    Integer count(Long id);
 }

+ 46 - 46
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDown.java

@@ -12,9 +12,9 @@ public class SaleDown extends CommonBaseEntity{
 
     private String sa_code;
 
-    private String sa_customeruu;
+    private Long sa_customeruu;
 
-    private Integer sa_custid;
+    private Long sa_custid;
 
     private String sa_custcode;
 
@@ -28,9 +28,9 @@ public class SaleDown extends CommonBaseEntity{
 
     private Double sa_rate;
 
-    private Integer sa_selleruu;
+    private Long sa_selleruu;
 
-    private Integer sa_sellerid;
+    private Long sa_sellerid;
 
     private String sa_seller;
 
@@ -38,16 +38,24 @@ public class SaleDown extends CommonBaseEntity{
 
     private String sa_custcontact;
 
-    private Integer sa_custcontactuu;
+    private Long sa_custcontactuu;
 
     private String sa_custmobile;
 
     private String sa_pocode;
 
-    private Integer b2b_pu_id;
+    private Long b2b_pu_id;
 
     private String sa_printstatus;
 
+    public Long getSa_sellerid() {
+        return sa_sellerid;
+    }
+
+    public void setSa_sellerid(Long sa_sellerid) {
+        this.sa_sellerid = sa_sellerid;
+    }
+
     private String sa_printstatuscode;
 
     private String sa_attach;
@@ -78,7 +86,13 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_turnstatuscode = sa_turnstatuscode;
     }
 
+    public Long getSa_custid() {
+        return sa_custid;
+    }
 
+    public void setSa_custid(Long sa_custid) {
+        this.sa_custid = sa_custid;
+    }
 
     public String getSa_code() {
         return sa_code;
@@ -88,21 +102,6 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_code = sa_code == null ? null : sa_code.trim();
     }
 
-    public String getSa_customeruu() {
-        return sa_customeruu;
-    }
-
-    public void setSa_customeruu(String sa_customeruu) {
-        this.sa_customeruu = sa_customeruu == null ? null : sa_customeruu.trim();
-    }
-
-    public Integer getSa_custid() {
-        return sa_custid;
-    }
-
-    public void setSa_custid(Integer sa_custid) {
-        this.sa_custid = sa_custid;
-    }
 
     public String getSa_custcode() {
         return sa_custcode;
@@ -112,6 +111,10 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_custcode = sa_custcode == null ? null : sa_custcode.trim();
     }
 
+    public void setB2b_pu_id(Long b2b_pu_id) {
+        this.b2b_pu_id = b2b_pu_id;
+    }
+
     public String getSa_custname() {
         return sa_custname;
     }
@@ -152,21 +155,6 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_rate = sa_rate;
     }
 
-    public Integer getSa_selleruu() {
-        return sa_selleruu;
-    }
-
-    public void setSa_selleruu(Integer sa_selleruu) {
-        this.sa_selleruu = sa_selleruu;
-    }
-
-    public Integer getSa_sellerid() {
-        return sa_sellerid;
-    }
-
-    public void setSa_sellerid(Integer sa_sellerid) {
-        this.sa_sellerid = sa_sellerid;
-    }
 
     public String getSa_seller() {
         return sa_seller;
@@ -192,11 +180,31 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_custcontact = sa_custcontact == null ? null : sa_custcontact.trim();
     }
 
-    public Integer getSa_custcontactuu() {
+    public Long getSa_customeruu() {
+        return sa_customeruu;
+    }
+
+    public void setSa_customeruu(Long sa_customeruu) {
+        this.sa_customeruu = sa_customeruu;
+    }
+
+    public Long getSa_selleruu() {
+        return sa_selleruu;
+    }
+
+    public Long getB2b_pu_id() {
+        return b2b_pu_id;
+    }
+
+    public void setSa_selleruu(Long sa_selleruu) {
+        this.sa_selleruu = sa_selleruu;
+    }
+
+    public Long getSa_custcontactuu() {
         return sa_custcontactuu;
     }
 
-    public void setSa_custcontactuu(Integer sa_custcontactuu) {
+    public void setSa_custcontactuu(Long sa_custcontactuu) {
         this.sa_custcontactuu = sa_custcontactuu;
     }
 
@@ -216,14 +224,6 @@ public class SaleDown extends CommonBaseEntity{
         this.sa_pocode = sa_pocode == null ? null : sa_pocode.trim();
     }
 
-    public Integer getB2b_pu_id() {
-        return b2b_pu_id;
-    }
-
-    public void setB2b_pu_id(Integer b2b_pu_id) {
-        this.b2b_pu_id = b2b_pu_id;
-    }
-
     public String getSa_printstatus() {
         return sa_printstatus;
     }

+ 9 - 9
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDownDetail.java

@@ -16,7 +16,7 @@ public class SaleDownDetail extends CommonBaseEntity{
 
     private Integer sd_detno;
 
-    private Integer b2b_pd_id;
+    private Long b2b_pd_id;
 
     private Long sd_prodid;
 
@@ -76,14 +76,6 @@ public class SaleDownDetail extends CommonBaseEntity{
         this.sd_detno = sd_detno;
     }
 
-    public Integer getB2b_pd_id() {
-        return b2b_pd_id;
-    }
-
-    public void setB2b_pd_id(Integer b2b_pd_id) {
-        this.b2b_pd_id = b2b_pd_id;
-    }
-
     public Long getSd_prodid() {
         return sd_prodid;
     }
@@ -100,6 +92,14 @@ public class SaleDownDetail extends CommonBaseEntity{
         this.sd_prodcode = sd_prodcode == null ? null : sd_prodcode.trim();
     }
 
+    public Long getB2b_pd_id() {
+        return b2b_pd_id;
+    }
+
+    public void setB2b_pd_id(Long b2b_pd_id) {
+        this.b2b_pd_id = b2b_pd_id;
+    }
+
     public String getSd_prodspec() {
         return sd_prodspec;
     }

+ 44 - 11
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java

@@ -30,16 +30,28 @@ public class ReceiveService {
 
     @Autowired
     private SendService sendService;
+    @Autowired
+    private SendProductTask sendProductTask;
+    @Autowired
+    private SendPurchaseEndTask sendPurchaseEndTask;
+    @Autowired
+    private SendPurchaseOutResTask sendPurchaseOutResTask;
+    @Autowired
+    private SendPurchaseOutTask sendPurchaseOutTask;
+    @Autowired
+    private SendPurchaseInResTask sendPurchaseInResTask;
+    @Autowired
+    private SendPurchaseInTask sendPurchaseInTask;
+    @Autowired
+    private SendPurchaseTask sendPurchaseTask;
 
     @Autowired
     private BrokerMessageLogMapper brokerMessageLogMapper;
 
     private Logger logger = LoggerFactory.getLogger(getClass());
 
-    private final static String EXCHANGE = "saas_trade_dev_exchange";
     private final static String DLEXCHANGE = "saas_trade_dev_dlexchange";
     private final static String QUEUE = "saas_trade_dev_queue";
-    private final static String DLQUEUE = "saas_trade_dev_dlqueue";
     private final static String ROUTINGKEY = "saas_trade_dev_dl.*";
 
 
@@ -52,21 +64,41 @@ public class ReceiveService {
     public void onMessage(@Payload MessageInfo info, @Headers Map<String,Object> headers, Channel channel)
             throws IOException {
         //消费者操作
-       logger.info("---------收到消息,消息id={},开始消费---------", info.getMsgId());
+        logger.info("---------收到消息,消息id={},开始消费---------", info.getMsgId());
         Executable task = null;
-       try {
+        try {
+            BillCodeSeq.valueOf(info.getBizType());
+        }catch (Exception e){
+            logger.info("没有此类型消息,直接丢弃");
+            Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
+            boolean multiple = false;
+            channel.basicAck(deliveryTag,multiple);
+            return;
+        }
+        try {
            switch(BillCodeSeq.valueOf(info.getBizType())) {
-               case PURCHASE:
-                   task = new SendPurchaseTask();
+               case PURCHASE:       //采购单上传
+                   task = sendPurchaseTask;
+                   break;
+               case PURCHASEIN:     //采购验收单过账
+                   task = sendPurchaseInTask;
                    break;
-               case PURCHASEIN:
-                   task = new SendPurchaseInTask();
+               case PURCHASEINRES:     //采购验收单反过账
+                   task = sendPurchaseInResTask;
                    break;
-               case PURCHASEOUT:
-                   task = new SendPurchaseOutTask();
+               case PURCHASEOUT:    //采购延退单过账
+                   task = sendPurchaseOutTask;
+                   break;
+               case PURCHASEOUTRES:     //采购验收单反过账
+                   task = sendPurchaseOutResTask;
                    break;
                case PRODUCT:        //物料库上传
-                   task = new SendProductTask();
+                   task = sendProductTask;
+                   break;
+               case PURCHASEEND:    //采购单结案
+                   task = sendPurchaseEndTask;
+                   break;
+               default:
                    break;
            }
 
@@ -95,6 +127,7 @@ public class ReceiveService {
 
         //ACK,确认一条消息已经被消费
         channel.basicAck(deliveryTag,multiple);
+        logger.info("消息成功消费,MessageInfo={}",info);
         //重新返回队列 重新消费
         //channel.basicNack(deliveryTag,false,true);
     }

+ 32 - 5
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/ApCheckServiceImpl.java

@@ -1,5 +1,8 @@
 package com.usoftchina.saas.transfers.service.impl;
 
+import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.document.entities.Vendor;
 import com.usoftchina.saas.money.dto.ApcheckFormDTO;
 import com.usoftchina.saas.money.po.Apcheck;
 import com.usoftchina.saas.money.po.ApcheckDetail;
@@ -8,10 +11,10 @@ import com.usoftchina.saas.transfers.mapper.ApcheckMapper;
 import com.usoftchina.saas.transfers.service.ApCheckService;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
+import com.usoftchina.saas.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -25,21 +28,45 @@ public class ApCheckServiceImpl implements ApCheckService{
     @Autowired
     private ApcheckMapper apcheckMapper;
 
+    @Autowired
+    private MaxnumberService maxnumberService;
+
     @Override
     public String save(List<ApcheckFormDTO> forms) {
         if (CollectionUtils.isEmpty(forms) || forms.size() == 0) {
-            return null;
+            throw new IllegalStateException("无效数据");
         }
         StringBuilder ids = new StringBuilder();
         Long companyId = TransfersContextHodler.getB2bCompanyId();
         String custspeccode = null;
         for (ApcheckFormDTO form : forms) {
-            Apcheck main = form.getMain();
-            List<ApcheckDetail> details = form.getItems();
+            Apcheck main = BeanMapper.map(form.getMain(), Apcheck.class);
+            List<ApcheckDetail> details = BeanMapper.mapList(form.getItems(), ApcheckDetail.class);
+            //检测单据是否存在
+            if (StringUtils.isEmpty(main.getAc_b2bid())) {
+                continue;
+            }
+            Integer count = apcheckMapper.count(main.getAc_b2bid());
+            if (count > 0) {
+                ids.append(main.getAc_b2bid());
+                ids.append(",");
+                continue;
+            }
 
+            //供应商获取
+            Vendor vendor = apcheckMapper.getVendorByuu(main.getAc_venduu(), companyId);
+            if ( null == vendor) {
+                continue;
+            }
             //补充必要数据
+            main.setAc_vendcode(vendor.getVe_code());
+            main.setAc_vendid(vendor.getId());
+            main.setAc_vendname(vendor.getVe_name());
             main.setCompanyId(companyId);
             main.setCreateTime(new Date());
+            //获取编号
+            String code = maxnumberService.getMaxnumberByCompanyid(BillCodeSeq.APCHECK.getCaller(), true, companyId).getData();
+            main.setAc_code(code);
             apcheckMapper.insertSelective(main);
 
             //根据型号匹配物料
@@ -55,6 +82,6 @@ public class ApCheckServiceImpl implements ApCheckService{
             ids.append(main.getAc_b2bid());
             ids.append(",");
         }
-        return ids.substring(0, ids.length() - 1);
+        return ids.length() > 0 ? ids.substring(0, ids.length() - 1) : "";
     }
 }

+ 61 - 3
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java

@@ -1,7 +1,17 @@
 package com.usoftchina.saas.transfers.service.impl;
 
+import com.usoftchina.saas.account.api.AccountApi;
+import com.usoftchina.saas.account.dto.AccountDTO;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
+import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.commons.po.Status;
+import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.document.entities.Customer;
 import com.usoftchina.saas.document.entities.Product;
+import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.sale.dto.SaleDownFormDTO;
 import com.usoftchina.saas.transfers.auth.context.TransfersContextHodler;
 import com.usoftchina.saas.transfers.mapper.SaledownMapper;
@@ -28,10 +38,16 @@ public class SaleDownServiceImpl implements SaleDownService{
     @Autowired
     private SaledownMapper saledownMapper;
 
+    @Autowired
+    private AccountApi accountApi;
+
+    @Autowired
+    private MaxnumberService maxnumberService;
+
     @Override
     public String saveData(List<SaleDownFormDTO> forms) {
         if (CollectionUtils.isEmpty(forms) || forms.size() == 0) {
-            return null;
+            throw new IllegalStateException("无效数据");
         }
         StringBuilder ids = new StringBuilder();
         Long companyId = TransfersContextHodler.getB2bCompanyId();
@@ -40,12 +56,38 @@ public class SaleDownServiceImpl implements SaleDownService{
             SaleDown main = BeanMapper.map(form.getMain(), SaleDown.class);
             List<SaleDownDetail> details = BeanMapper.mapList(form.getItems(), SaleDownDetail.class);
             List<SaleDownDetail> insertDetail = new ArrayList<>();
-
+            //检测单据是否存在
+            if (StringUtils.isEmpty(main.getB2b_pu_id())) {
+                continue;
+            }
+            Integer count = saledownMapper.count(main.getB2b_pu_id());
+            if (count > 0) {
+                ids.append(main.getB2b_pu_id());
+                ids.append(",");
+                continue;
+            }
+            //添加业务员
+            Result<AccountDTO> emp = accountApi.getAccountByUu(main.getSa_selleruu());
+            if (!emp.isSuccess()) {
+                continue;
+            }
+            //取客户
+            Customer customer = saledownMapper.getCustomer(main.getSa_customeruu(), companyId);
+            if (null != customer) {
+                main.setSa_custname(customer.getCu_name());
+                main.setSa_custcode(customer.getCu_code());
+                main.setSa_custid(customer.getId());
+            }
+            //取编号
+            String code = maxnumberService.getMaxnumberByCompanyid(BillCodeSeq.SALEDOWN.getCaller(), true, companyId).getData();
             //补充必要数据
+            main.setSa_code(code);
             main.setCreateTime(new Date());
             main.setCompanyId(companyId);
             main.setSa_status(Status.AUDITED.getDisplay());
             main.setSa_statuscode(Status.AUDITED.name());
+            main.setSa_seller(emp.getData().getRealname());
+            main.setSa_sellerid(emp.getData().getId());
             saledownMapper.insertSelective(main);
 
             //根据型号匹配物料
@@ -72,18 +114,34 @@ public class SaleDownServiceImpl implements SaleDownService{
             ids.append(main.getB2b_pu_id());
             ids.append(",");
         }
-        return ids.substring(0, ids.length() - 1);
+        return ids.length() > 0 ? ids.substring(0, ids.length() - 1) : "";
     }
 
     @Override
     public void closeSaleDown(String data) {
+        data = getIds(data);
         Long companyId = TransfersContextHodler.getB2bCompanyId();
         saledownMapper.batchUpdateClose(data, companyId);
     }
 
     @Override
     public void resCloseSaleDown(String data) {
+        data = getIds(data);
         Long companyId = TransfersContextHodler.getB2bCompanyId();
         saledownMapper.batchUpdateResClose(data, companyId);
     }
+
+    private String getIds(String str) {
+        if (str.startsWith("[")) {
+            return str.substring(1, str.length() - 1);
+        } else {
+            return str;
+        }
+    }
+   /* public String getMaxnumber(BillCodeSeq bill) {
+        String code = maxnumberService.getMaxnumber(bill.getCaller(), false).getData();
+        DocBaseDTO base = new DocBaseDTO(0l, code, bill.getName());
+        return pushMaxnubmer(base);
+    }*/
+
 }

+ 1 - 1
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/Executable.java

@@ -20,5 +20,5 @@ public abstract class Executable {
     /**
      * 执行任务
      */
-    public abstract void execute(MessageInfo messageInfo);
+    public abstract void execute(MessageInfo messageInfo) throws Exception;
 }

Some files were not shown because too many files changed in this diff