Bläddra i källkod

合并dev代码

chenw 7 år sedan
förälder
incheckning
533a270da4
68 ändrade filer med 3454 tillägg och 261 borttagningar
  1. 5 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/BillCodeSeq.java
  2. 12 0
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProdStorageDTO.java
  3. 5 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java
  4. 4 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  5. 4 4
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  6. 34 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/ApcheckFormDTO.java
  7. 289 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/Apcheck.java
  8. 100 0
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/ApcheckDetail.java
  9. 7 1
      applications/money/money-server/src/main/resources/application.yml
  10. 2 1
      applications/operation/operation-auth-server/src/main/java/com/usoftchina/saas/operation/auth/config/AuthConfig.java
  11. 13 0
      applications/operation/operation-auth-server/src/main/resources/config/application-dev.yml
  12. 126 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java
  13. 153 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDetailDTO.java
  14. 30 0
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownFormDTO.java
  15. 274 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleDown.java
  16. 222 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleDownDetail.java
  17. 26 22
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  18. 45 0
      applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/context/TransfersContextHodler.java
  19. 5 2
      applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/interceptor/OpenApiAuthInterceptor.java
  20. 12 1
      applications/transfers/transfers-server/pom.xml
  21. 2 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/TransfersApplication.java
  22. 42 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java
  23. 72 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java
  24. 20 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/ApcheckMapper.java
  25. 31 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/SaledownMapper.java
  26. 274 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDown.java
  27. 222 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/po/SaleDownDetail.java
  28. 9 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ApCheckService.java
  29. 14 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/SaleDownService.java
  30. 76 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/ApCheckServiceImpl.java
  31. 128 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/impl/SaleDownServiceImpl.java
  32. 7 1
      applications/transfers/transfers-server/src/main/resources/application.yml
  33. 325 0
      applications/transfers/transfers-server/src/main/resources/mapper/ApcheckMapper.xml
  34. 465 0
      applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml
  35. 2 1
      base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java
  36. 7 0
      base-servers/gateway-server/src/main/resources/application.yml
  37. 11 11
      frontend/operation-web/app/view/auth/ReLoginController.js
  38. 3 0
      frontend/saas-portal-web/src/components/conenter/addenterprise.vue
  39. 3 0
      frontend/saas-portal-web/src/components/conenter/company.vue
  40. 3 0
      frontend/saas-portal-web/src/components/conenter/details.vue
  41. 20 11
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  42. 114 53
      frontend/saas-portal-web/src/components/conenter/home.vue
  43. 2 1
      frontend/saas-portal-web/src/components/conenter/invitation.vue
  44. 1 1
      frontend/saas-portal-web/src/components/conenter/problem.vue
  45. 5 2
      frontend/saas-portal-web/src/components/footer/footer.vue
  46. 3 3
      frontend/saas-portal-web/static/css/main.css
  47. 1 1
      frontend/saas-web/app/model/report/RecDetail.js
  48. 6 1
      frontend/saas-web/app/view/core/dbfind/ConDbfindTrigger.js
  49. 4 1
      frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js
  50. 4 1
      frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js
  51. 15 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  52. 4 0
      frontend/saas-web/app/view/document/currencys/AddWindow.js
  53. 2 2
      frontend/saas-web/app/view/document/currencys/DataList.js
  54. 2 0
      frontend/saas-web/app/view/document/currencys/Window.js
  55. 1 1
      frontend/saas-web/app/view/document/customer/FormPanel.js
  56. 1 1
      frontend/saas-web/app/view/document/vendor/FormPanel.js
  57. 3 3
      frontend/saas-web/app/view/money/payBalance/FormPanel.js
  58. 18 19
      frontend/saas-web/app/view/money/payBalance/FormPanelController.js
  59. 95 74
      frontend/saas-web/app/view/money/verification/FormPanel.js
  60. 34 13
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  61. 4 4
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  62. 4 4
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js
  63. 4 4
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js
  64. 4 4
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  65. 4 4
      frontend/saas-web/app/view/sale/saleIn/FormPanel.js
  66. 4 4
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js
  67. 1 1
      frontend/saas-web/app/view/stock/report/DataList.js
  68. 10 0
      pom.xml

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

@@ -58,7 +58,11 @@ public enum  BillCodeSeq {
 
     CUSTOMERFEDBACK ("客户反馈", "CUSTOMERFEDBACK"),
 
-    BOM("BOM资料", "Bom");
+    SALEDOWN ("客户订单", "SALEDOWN"),
+
+    BOM("BOM资料", "Bom"),
+
+    APCHECK("对账单", "APCHECK");
 
 
 

+ 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;
     }

+ 5 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java

@@ -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);

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

@@ -802,13 +802,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());
         }
     }

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

@@ -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 prodSpeccode,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 prodSpeccode,pr_leadtime prodLeadtime, 0 status, b2bStatus
         FROM product
         <where>
           <if test="userId != null">

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

@@ -0,0 +1,34 @@
+package com.usoftchina.saas.money.dto;
+
+import com.usoftchina.saas.money.po.Apcheck;
+import com.usoftchina.saas.money.po.ApcheckDetail;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2019-01-12 15:52
+ **/
+public class ApcheckFormDTO implements Serializable {
+
+    private ApcheckDTO main;
+
+    private List<ApcheckDetailDTO> items;
+
+    public ApcheckDTO getMain() {
+        return main;
+    }
+
+    public void setMain(ApcheckDTO main) {
+        this.main = main;
+    }
+
+    public List<ApcheckDetailDTO> getItems() {
+        return items;
+    }
+
+    public void setItems(List<ApcheckDetailDTO> items) {
+        this.items = items;
+    }
+}

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

@@ -0,0 +1,289 @@
+package com.usoftchina.saas.money.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-12 15:46
+ **/
+public class Apcheck extends CommonBaseEntity{
+
+    private Integer ac_b2bid;
+
+    private String ac_code;
+
+    private Date ac_date;
+
+    private Date ac_apdate;
+
+    private Date ac_fromdate;
+
+    private Date ac_todate;
+
+    private Long ac_venduu;
+
+    private Long ac_vendid;
+
+    private String ac_vendcode;
+
+    private String ac_vendname;
+
+    private String ac_currency;
+
+    private Double ac_rate;
+
+    private Double ac_checkamount;
+
+    private String ac_confirmstatus;
+
+    private String ac_confirmstatuscode;
+
+    private Date ac_confirmdate;
+
+    private String ac_remark;
+
+    private String ac_sendstatus;
+
+    private Double ac_thisamount;
+
+    private Double ac_thisuncheck;
+
+    private Double ac_thispay;
+
+    private Double ac_thissend;
+
+    private Double ac_thischeck;
+
+    private Double ac_payamont;
+
+    private Long companyId;
+
+    public Integer getAc_b2bid() {
+        return ac_b2bid;
+    }
+
+    public void setAc_b2bid(Integer ac_b2bid) {
+        this.ac_b2bid = ac_b2bid;
+    }
+
+    public String getAc_code() {
+        return ac_code;
+    }
+
+    public void setAc_code(String ac_code) {
+        this.ac_code = ac_code == null ? null : ac_code.trim();
+    }
+
+    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 Long getAc_vendid() {
+        return ac_vendid;
+    }
+
+    public void setAc_vendid(Long ac_vendid) {
+        this.ac_vendid = ac_vendid;
+    }
+
+    public String getAc_vendcode() {
+        return ac_vendcode;
+    }
+
+    public void setAc_vendcode(String ac_vendcode) {
+        this.ac_vendcode = ac_vendcode == null ? null : ac_vendcode.trim();
+    }
+
+    public String getAc_vendname() {
+        return ac_vendname;
+    }
+
+    public void setAc_vendname(String ac_vendname) {
+        this.ac_vendname = ac_vendname == null ? null : ac_vendname.trim();
+    }
+
+    public String getAc_currency() {
+        return ac_currency;
+    }
+
+    public void setAc_currency(String ac_currency) {
+        this.ac_currency = ac_currency == null ? null : ac_currency.trim();
+    }
+
+    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_confirmstatus() {
+        return ac_confirmstatus;
+    }
+
+    public void setAc_confirmstatus(String ac_confirmstatus) {
+        this.ac_confirmstatus = ac_confirmstatus == null ? null : ac_confirmstatus.trim();
+    }
+
+    public String getAc_confirmstatuscode() {
+        return ac_confirmstatuscode;
+    }
+
+    public void setAc_confirmstatuscode(String ac_confirmstatuscode) {
+        this.ac_confirmstatuscode = ac_confirmstatuscode == null ? null : ac_confirmstatuscode.trim();
+    }
+
+    public Date getAc_confirmdate() {
+        return ac_confirmdate;
+    }
+
+    public void setAc_confirmdate(Date ac_confirmdate) {
+        this.ac_confirmdate = ac_confirmdate;
+    }
+
+    public String getAc_remark() {
+        return ac_remark;
+    }
+
+    public void setAc_remark(String ac_remark) {
+        this.ac_remark = ac_remark == null ? null : ac_remark.trim();
+    }
+
+    public String getAc_sendstatus() {
+        return ac_sendstatus;
+    }
+
+    public void setAc_sendstatus(String ac_sendstatus) {
+        this.ac_sendstatus = ac_sendstatus == null ? null : ac_sendstatus.trim();
+    }
+
+    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;
+    }
+
+    public String getCreatorName() {
+        return creatorName;
+    }
+
+    public void setCreatorName(String creatorName) {
+        this.creatorName = creatorName == null ? null : creatorName.trim();
+    }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+
+    public String getUpdaterName() {
+        return updaterName;
+    }
+
+    public void setUpdaterName(String updaterName) {
+        this.updaterName = updaterName == null ? null : updaterName.trim();
+    }
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+}

+ 100 - 0
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/po/ApcheckDetail.java

@@ -0,0 +1,100 @@
+package com.usoftchina.saas.money.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+/**
+ * @author: guq
+ * @create: 2019-01-12 15:49
+ **/
+public class ApcheckDetail extends CommonBaseEntity{
+
+    private Long ad_acid;
+
+    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 Long getAd_acid() {
+        return ad_acid;
+    }
+
+    public void setAd_acid(Long ad_acid) {
+        this.ad_acid = ad_acid;
+    }
+
+    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 == null ? null : ad_inoutno.trim();
+    }
+
+    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 == null ? null : ad_prodcode.trim();
+    }
+
+    public String getAd_pucode() {
+        return ad_pucode;
+    }
+
+    public void setAd_pucode(String ad_pucode) {
+        this.ad_pucode = ad_pucode == null ? null : ad_pucode.trim();
+    }
+
+    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;
+    }
+}

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

@@ -76,4 +76,10 @@ auth:
   public-key: auth/pub.key
 ribbon:
   ReadTimeout: 6000
-  ConnectTimeout: 6000
+  ConnectTimeout: 6000
+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

+ 2 - 1
applications/operation/operation-auth-server/src/main/java/com/usoftchina/saas/operation/auth/config/AuthConfig.java

@@ -13,7 +13,8 @@ public class AuthConfig {
     private String privateKey;
     private String authHeader = "Authorization";
     private List<Long> companies;
-    private int expire = 18000;
+    //一周时间
+    private int expire = 604800;
     private int maxErrors = 5;
 
     public String getPrivateKey() {

+ 13 - 0
applications/operation/operation-auth-server/src/main/resources/config/application-dev.yml

@@ -0,0 +1,13 @@
+eureka:
+  instance:
+    leaseRenewalIntervalInSeconds: 10
+    health-check-url-path: /actuator/health
+    status-page-url-path: /actuator/info
+    prefer-ip-address: true
+    metadata-map:
+      user.name: ${spring.security.user.name}
+      user.password: ${spring.security.user.password}
+  client:
+    registryFetchIntervalSeconds: 5
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@127.0.0.1:8500/eureka/

+ 126 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDTO.java

@@ -0,0 +1,126 @@
+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 implements Serializable{
+
+    private Long sa_customeruu;//客户UU
+
+    private String sa_toplace;//收货地址
+
+    private String sa_currency;//币别
+
+    private Double sa_rate;//汇率
+
+    private Long sa_selleruu;//业务员UU
+
+    private String sa_custcontact; //客户联系人
+
+    private Long sa_custcontactuu;//客户联系人UU
+
+    private String sa_custmobile;//客户手机
+
+    private String sa_pocode;//PO号
+
+    private Integer b2b_pu_id;//B2BID
+
+    private String sa_remark;//备注
+
+
+    public String getSa_toplace() {
+        return sa_toplace;
+    }
+
+    public void setSa_toplace(String sa_toplace) {
+        this.sa_toplace = sa_toplace;
+    }
+
+    public String getSa_currency() {
+        return sa_currency;
+    }
+
+    public void setSa_currency(String sa_currency) {
+        this.sa_currency = sa_currency;
+    }
+
+    public Double getSa_rate() {
+        return sa_rate;
+    }
+
+    public void setSa_rate(Double sa_rate) {
+        this.sa_rate = sa_rate;
+    }
+
+    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 void setSa_selleruu(Long sa_selleruu) {
+        this.sa_selleruu = sa_selleruu;
+    }
+
+    public Long getSa_custcontactuu() {
+        return sa_custcontactuu;
+    }
+
+    public void setSa_custcontactuu(Long sa_custcontactuu) {
+        this.sa_custcontactuu = sa_custcontactuu;
+    }
+
+    public String getSa_custcontact() {
+        return sa_custcontact;
+    }
+
+    public void setSa_custcontact(String sa_custcontact) {
+        this.sa_custcontact = sa_custcontact;
+    }
+
+
+
+    public String getSa_custmobile() {
+        return sa_custmobile;
+    }
+
+    public void setSa_custmobile(String sa_custmobile) {
+        this.sa_custmobile = sa_custmobile;
+    }
+
+    public String getSa_pocode() {
+        return sa_pocode;
+    }
+
+    public void setSa_pocode(String sa_pocode) {
+        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;
+    }
+
+    public void setSa_remark(String sa_remark) {
+        this.sa_remark = sa_remark;
+    }
+}

+ 153 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownDetailDTO.java

@@ -0,0 +1,153 @@
+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 implements Serializable{
+
+    private Integer sd_detno;//序号
+
+    private Integer b2b_pd_id;//B2BID
+
+    private String sd_custorispeccode;//客户物料型号
+
+    private String sd_custprodcode;//客户料号
+
+    private String sd_custproddetail;//客户产品名称
+
+    private String sd_custprodspec;//客户产品规格
+
+    private Double sd_qty;//数量
+
+    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 Integer getSd_detno() {
+        return sd_detno;
+    }
+
+    public void setSd_detno(Integer sd_detno) {
+        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 String getSd_custorispeccode() {
+        return sd_custorispeccode;
+    }
+
+    public void setSd_custorispeccode(String sd_custorispeccode) {
+        this.sd_custorispeccode = sd_custorispeccode;
+    }
+
+    public String getSd_custprodcode() {
+        return sd_custprodcode;
+    }
+
+    public void setSd_custprodcode(String sd_custprodcode) {
+        this.sd_custprodcode = sd_custprodcode;
+    }
+
+    public String getSd_custproddetail() {
+        return sd_custproddetail;
+    }
+
+    public void setSd_custproddetail(String sd_custproddetail) {
+        this.sd_custproddetail = sd_custproddetail;
+    }
+
+    public String getSd_custprodspec() {
+        return sd_custprodspec;
+    }
+
+    public void setSd_custprodspec(String sd_custprodspec) {
+        this.sd_custprodspec = sd_custprodspec;
+    }
+
+    public Double getSd_qty() {
+        return sd_qty;
+    }
+
+    public void setSd_qty(Double sd_qty) {
+        this.sd_qty = sd_qty;
+    }
+
+    public Double getSd_price() {
+        return sd_price;
+    }
+
+    public void setSd_price(Double sd_price) {
+        this.sd_price = sd_price;
+    }
+
+    public Double getSd_total() {
+        return sd_total;
+    }
+
+    public void setSd_total(Double sd_total) {
+        this.sd_total = sd_total;
+    }
+
+    public Double getSd_taxrate() {
+        return sd_taxrate;
+    }
+
+    public void setSd_taxrate(Double sd_taxrate) {
+        this.sd_taxrate = sd_taxrate;
+    }
+
+    public Double getSd_costprice() {
+        return sd_costprice;
+    }
+
+    public void setSd_costprice(Double sd_costprice) {
+        this.sd_costprice = sd_costprice;
+    }
+
+    public Double getSd_taxtotal() {
+        return sd_taxtotal;
+    }
+
+    public void setSd_taxtotal(Double sd_taxtotal) {
+        this.sd_taxtotal = sd_taxtotal;
+    }
+
+    public Date getSd_delivery() {
+        return sd_delivery;
+    }
+
+    public void setSd_delivery(Date sd_delivery) {
+        this.sd_delivery = sd_delivery;
+    }
+
+    public String getSd_remark() {
+        return sd_remark;
+    }
+
+    public void setSd_remark(String sd_remark) {
+        this.sd_remark = sd_remark;
+    }
+}

+ 30 - 0
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/SaleDownFormDTO.java

@@ -0,0 +1,30 @@
+package com.usoftchina.saas.sale.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 17:36
+ **/
+public class SaleDownFormDTO implements Serializable{
+
+    private SaleDownDTO main;
+    private List<SaleDownDetailDTO> items;
+
+    public SaleDownDTO getMain() {
+        return main;
+    }
+
+    public void setMain(SaleDownDTO main) {
+        this.main = main;
+    }
+
+    public List<SaleDownDetailDTO> getItems() {
+        return items;
+    }
+
+    public void setItems(List<SaleDownDetailDTO> items) {
+        this.items = items;
+    }
+}

+ 274 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleDown.java

@@ -0,0 +1,274 @@
+package com.usoftchina.saas.sale.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 15:04
+ **/
+public class SaleDown extends CommonBaseEntity{
+
+    private String sa_code;
+
+    private String sa_customeruu;
+
+    private Integer sa_custid;
+
+    private String sa_custcode;
+
+    private String sa_custname;
+
+    private Date sa_date;
+
+    private String sa_toplace;
+
+    private String sa_currency;
+
+    private Double sa_rate;
+
+    private Integer sa_selleruu;
+
+    private Integer sa_sellerid;
+
+    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_printstatus;
+
+    private String sa_printstatuscode;
+
+    private String sa_attach;
+
+    private String sa_status;
+
+    private String sa_statuscode;
+
+    private String sa_remark;
+
+    private String sa_turnstatus;
+
+    private String sa_turnstatuscode;
+
+    public String getSa_turnstatus() {
+        return sa_turnstatus;
+    }
+
+    public void setSa_turnstatus(String sa_turnstatus) {
+        this.sa_turnstatus = sa_turnstatus;
+    }
+
+    public String getSa_turnstatuscode() {
+        return sa_turnstatuscode;
+    }
+
+    public void setSa_turnstatuscode(String sa_turnstatuscode) {
+        this.sa_turnstatuscode = sa_turnstatuscode;
+    }
+
+
+
+    public String getSa_code() {
+        return sa_code;
+    }
+
+    public void setSa_code(String sa_code) {
+        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;
+    }
+
+    public void setSa_custcode(String sa_custcode) {
+        this.sa_custcode = sa_custcode == null ? null : sa_custcode.trim();
+    }
+
+    public String getSa_custname() {
+        return sa_custname;
+    }
+
+    public void setSa_custname(String sa_custname) {
+        this.sa_custname = sa_custname == null ? null : sa_custname.trim();
+    }
+
+    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;
+    }
+
+    public void setSa_toplace(String sa_toplace) {
+        this.sa_toplace = sa_toplace == null ? null : sa_toplace.trim();
+    }
+
+    public String getSa_currency() {
+        return sa_currency;
+    }
+
+    public void setSa_currency(String sa_currency) {
+        this.sa_currency = sa_currency == null ? null : sa_currency.trim();
+    }
+
+    public Double getSa_rate() {
+        return sa_rate;
+    }
+
+    public void setSa_rate(Double sa_rate) {
+        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;
+    }
+
+    public void setSa_seller(String sa_seller) {
+        this.sa_seller = sa_seller == null ? null : sa_seller.trim();
+    }
+
+    public String getSa_sellercode() {
+        return sa_sellercode;
+    }
+
+    public void setSa_sellercode(String sa_sellercode) {
+        this.sa_sellercode = sa_sellercode == null ? null : sa_sellercode.trim();
+    }
+
+    public String getSa_custcontact() {
+        return sa_custcontact;
+    }
+
+    public void setSa_custcontact(String sa_custcontact) {
+        this.sa_custcontact = sa_custcontact == null ? null : sa_custcontact.trim();
+    }
+
+    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;
+    }
+
+    public void setSa_custmobile(String sa_custmobile) {
+        this.sa_custmobile = sa_custmobile == null ? null : sa_custmobile.trim();
+    }
+
+    public String getSa_pocode() {
+        return sa_pocode;
+    }
+
+    public void setSa_pocode(String sa_pocode) {
+        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;
+    }
+
+    public void setSa_printstatus(String sa_printstatus) {
+        this.sa_printstatus = sa_printstatus == null ? null : sa_printstatus.trim();
+    }
+
+    public String getSa_printstatuscode() {
+        return sa_printstatuscode;
+    }
+
+    public void setSa_printstatuscode(String sa_printstatuscode) {
+        this.sa_printstatuscode = sa_printstatuscode == null ? null : sa_printstatuscode.trim();
+    }
+
+    public String getSa_attach() {
+        return sa_attach;
+    }
+
+    public void setSa_attach(String sa_attach) {
+        this.sa_attach = sa_attach == null ? null : sa_attach.trim();
+    }
+
+    public String getSa_status() {
+        return sa_status;
+    }
+
+    public void setSa_status(String sa_status) {
+        this.sa_status = sa_status == null ? null : sa_status.trim();
+    }
+
+    public String getSa_statuscode() {
+        return sa_statuscode;
+    }
+
+    public void setSa_statuscode(String sa_statuscode) {
+        this.sa_statuscode = sa_statuscode == null ? null : sa_statuscode.trim();
+    }
+
+    public String getSa_remark() {
+        return sa_remark;
+    }
+
+    public void setSa_remark(String sa_remark) {
+        this.sa_remark = sa_remark == null ? null : sa_remark.trim();
+    }
+}

+ 222 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/SaleDownDetail.java

@@ -0,0 +1,222 @@
+package com.usoftchina.saas.sale.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 15:06
+ **/
+public class SaleDownDetail extends CommonBaseEntity{
+
+    private Long sd_said;
+
+    private String sd_code;
+
+    private Integer sd_detno;
+
+    private Integer b2b_pd_id;
+
+    private Integer sd_prodid;
+
+    private String sd_prodcode;
+
+    private String sd_prodspec;
+
+    private String sd_orispeccode;
+
+    private String sd_custorispeccode;
+
+    private String sd_custprodcode;
+
+    private String sd_custproddetail;
+
+    private String sd_custprodspec;
+
+    private String sd_produnit;
+
+    private Double sd_qty;
+
+    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 Long getSd_said() {
+        return sd_said;
+    }
+
+    public void setSd_said(Long sd_said) {
+        this.sd_said = sd_said;
+    }
+
+    public String getSd_code() {
+        return sd_code;
+    }
+
+    public void setSd_code(String sd_code) {
+        this.sd_code = sd_code == null ? null : sd_code.trim();
+    }
+
+    public Integer getSd_detno() {
+        return sd_detno;
+    }
+
+    public void setSd_detno(Integer sd_detno) {
+        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 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 == null ? null : sd_prodcode.trim();
+    }
+
+    public String getSd_prodspec() {
+        return sd_prodspec;
+    }
+
+    public void setSd_prodspec(String sd_prodspec) {
+        this.sd_prodspec = sd_prodspec == null ? null : sd_prodspec.trim();
+    }
+
+    public String getSd_orispeccode() {
+        return sd_orispeccode;
+    }
+
+    public void setSd_orispeccode(String sd_orispeccode) {
+        this.sd_orispeccode = sd_orispeccode == null ? null : sd_orispeccode.trim();
+    }
+
+    public String getSd_custorispeccode() {
+        return sd_custorispeccode;
+    }
+
+    public void setSd_custorispeccode(String sd_custorispeccode) {
+        this.sd_custorispeccode = sd_custorispeccode == null ? null : sd_custorispeccode.trim();
+    }
+
+    public String getSd_custprodcode() {
+        return sd_custprodcode;
+    }
+
+    public void setSd_custprodcode(String sd_custprodcode) {
+        this.sd_custprodcode = sd_custprodcode == null ? null : sd_custprodcode.trim();
+    }
+
+    public String getSd_custproddetail() {
+        return sd_custproddetail;
+    }
+
+    public void setSd_custproddetail(String sd_custproddetail) {
+        this.sd_custproddetail = sd_custproddetail == null ? null : sd_custproddetail.trim();
+    }
+
+    public String getSd_custprodspec() {
+        return sd_custprodspec;
+    }
+
+    public void setSd_custprodspec(String sd_custprodspec) {
+        this.sd_custprodspec = sd_custprodspec == null ? null : sd_custprodspec.trim();
+    }
+
+    public String getSd_produnit() {
+        return sd_produnit;
+    }
+
+    public void setSd_produnit(String sd_produnit) {
+        this.sd_produnit = sd_produnit == null ? null : sd_produnit.trim();
+    }
+
+    public Double getSd_qty() {
+        return sd_qty;
+    }
+
+    public void setSd_qty(Double sd_qty) {
+        this.sd_qty = sd_qty;
+    }
+
+    public Double getSd_price() {
+        return sd_price;
+    }
+
+    public void setSd_price(Double sd_price) {
+        this.sd_price = sd_price;
+    }
+
+    public Double getSd_total() {
+        return sd_total;
+    }
+
+    public void setSd_total(Double sd_total) {
+        this.sd_total = sd_total;
+    }
+
+    public Double getSd_taxrate() {
+        return sd_taxrate;
+    }
+
+    public void setSd_taxrate(Double sd_taxrate) {
+        this.sd_taxrate = sd_taxrate;
+    }
+
+    public Double getSd_costprice() {
+        return sd_costprice;
+    }
+
+    public void setSd_costprice(Double sd_costprice) {
+        this.sd_costprice = sd_costprice;
+    }
+
+    public Double getSd_taxtotal() {
+        return sd_taxtotal;
+    }
+
+    public void setSd_taxtotal(Double sd_taxtotal) {
+        this.sd_taxtotal = sd_taxtotal;
+    }
+
+    public Date getSd_delivery() {
+        return sd_delivery;
+    }
+
+    public void setSd_delivery(Date sd_delivery) {
+        this.sd_delivery = sd_delivery;
+    }
+
+    public String getSd_remark() {
+        return sd_remark;
+    }
+
+    public void setSd_remark(String sd_remark) {
+        this.sd_remark = sd_remark == null ? null : sd_remark.trim();
+    }
+}

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

@@ -779,19 +779,21 @@ public class SaleServiceImpl implements SaleService{
 
                 QuotationRspDTO quotationRspDTO = new QuotationRspDTO();
                 PublicInquiryItem publicInquiryItem = inquiryEnRemind.getQuotation();
-                quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
-                quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
-                //分段报价明细
-                List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
-                List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();
-                if (!CollectionUtils.isEmpty(publicInquiryReplyList)) {
-                    for (PublicInquiryReply publicInquiryReply : publicInquiryReplyList) {
-                        InquiryReplayDTO inquiryReplayDTO = new InquiryReplayDTO(publicInquiryReply.getId(), publicInquiryReply.getLapQty(), publicInquiryReply.getPrice());
-                        inquiryReplayDTOList.add(inquiryReplayDTO);
+                if (!ObjectUtils.isEmpty(publicInquiryItem)) {
+                    quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
+                    quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
+                    //分段报价明细
+                    List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
+                    List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();
+                    if (!CollectionUtils.isEmpty(publicInquiryReplyList)) {
+                        for (PublicInquiryReply publicInquiryReply : publicInquiryReplyList) {
+                            InquiryReplayDTO inquiryReplayDTO = new InquiryReplayDTO(publicInquiryReply.getId(), publicInquiryReply.getLapQty(), publicInquiryReply.getPrice());
+                            inquiryReplayDTOList.add(inquiryReplayDTO);
+                        }
                     }
+                    quotationRspDTO.setReplies(inquiryReplayDTOList);
+                    remindRspDTO.setQutations(quotationRspDTO);
                 }
-                quotationRspDTO.setReplies(inquiryReplayDTOList);
-                remindRspDTO.setQutations(quotationRspDTO);
                 remindRspDTOList.add(remindRspDTO);
             }
         }else if("personal".equals(type)){
@@ -824,19 +826,21 @@ public class SaleServiceImpl implements SaleService{
                 //报价信息
                 QuotationRspDTO quotationRspDTO = new QuotationRspDTO();
                 PublicInquiryItem publicInquiryItem = inquiryRemind.getQuotation();
-                quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
-                quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
-                //分段报价明细
-                List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
-                List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();
-                if (!CollectionUtils.isEmpty(publicInquiryReplyList)) {
-                    for (PublicInquiryReply publicInquiryReply : publicInquiryReplyList) {
-                        InquiryReplayDTO inquiryReplayDTO = new InquiryReplayDTO(publicInquiryReply.getId(), publicInquiryReply.getLapQty(), publicInquiryReply.getPrice());
-                        inquiryReplayDTOList.add(inquiryReplayDTO);
+                if (!ObjectUtils.isEmpty(publicInquiryItem)) {
+                    quotationRspDTO.setAgreed(publicInquiryItem.getAgreed());
+                    quotationRspDTO.setRefusereason(publicInquiryItem.getRefusereason());
+                    //分段报价明细
+                    List<InquiryReplayDTO> inquiryReplayDTOList = new ArrayList<InquiryReplayDTO>();
+                    List<PublicInquiryReply> publicInquiryReplyList = publicInquiryItem.getReplies();
+                    if (!CollectionUtils.isEmpty(publicInquiryReplyList)) {
+                        for (PublicInquiryReply publicInquiryReply : publicInquiryReplyList) {
+                            InquiryReplayDTO inquiryReplayDTO = new InquiryReplayDTO(publicInquiryReply.getId(), publicInquiryReply.getLapQty(), publicInquiryReply.getPrice());
+                            inquiryReplayDTOList.add(inquiryReplayDTO);
+                        }
                     }
+                    quotationRspDTO.setReplies(inquiryReplayDTOList);
+                    remindRspDTO.setQutations(quotationRspDTO);
                 }
-                quotationRspDTO.setReplies(inquiryReplayDTOList);
-                remindRspDTO.setQutations(quotationRspDTO);
                 remindRspDTOList.add(remindRspDTO);
             }
         }

+ 45 - 0
applications/transfers/transfers-auth/src/main/java/com/usoftchina/saas/transfers/auth/context/TransfersContextHodler.java

@@ -0,0 +1,45 @@
+package com.usoftchina.saas.transfers.auth.context;
+
+import com.usoftchina.saas.constant.CommonConstants;
+import com.usoftchina.saas.utils.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 17:53
+ **/
+public class TransfersContextHodler {
+
+    private static final String BTOBCOMPANYID = "b2bcompanyid";
+
+    private static final ThreadLocal<Map<String, Object>> threadLocal = new ThreadLocal<>();
+
+    public static void set(String key, Object value) {
+        Map<String, Object> map = threadLocal.get();
+        if (map == null) {
+            map = new HashMap<>(1);
+            threadLocal.set(map);
+        }
+        map.put(key, value);
+    }
+
+    public static Object get(String key) {
+        Map<String, Object> map = threadLocal.get();
+        if (map == null) {
+            return null;
+        }
+        return map.get(key);
+    }
+
+    public static void setB2bCompanyId(Long companyId) {
+        set(BTOBCOMPANYID, companyId);
+    }
+
+    public static Long getB2bCompanyId() {
+        Object value = get(BTOBCOMPANYID);
+        return ObjectUtils.getLongValue(value);
+    }
+
+}

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

@@ -5,6 +5,7 @@ import com.usoftchina.saas.account.dto.CompanyDTO;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.transfers.auth.annotation.IgnoreOpenApiAuth;
 import com.usoftchina.saas.transfers.auth.configuration.OpenApiConfig;
+import com.usoftchina.saas.transfers.auth.context.TransfersContextHodler;
 import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.saas.utils.http.HmacUtils;
 import org.slf4j.Logger;
@@ -51,7 +52,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)) {
+            if (!StringUtils.isEmpty(sign) && !StringUtils.isEmpty(companyuu)) {
                 String urlMessage = request.getRequestURL() + "?"
                         + request.getQueryString().substring(0, request.getQueryString().indexOf(openApiConfig.getSignatureParam()) - 1);
 
@@ -65,10 +66,12 @@ public class OpenApiAuthInterceptor extends HandlerInterceptorAdapter{
                 if (companyResult.isSuccess()) {
                     String localSign = null;
 
+                    TransfersContextHodler.setB2bCompanyId(companyResult.getData().getId());
+
                     localSign = companyResult.getData().getAccessKey() == null ? HmacUtils.encode(urlMessage) :
                                 HmacUtils.encode(urlMessage, companyResult.getData().getAccessKey());
 
-                    if (servletPath.indexOf("openapi") > -1) {
+                    if (servletPath.indexOf("b2b") > -1) {
                         check = sign.equals(localSign);
                     }
 

+ 12 - 1
applications/transfers/transfers-server/pom.xml

@@ -67,7 +67,6 @@
         <dependency>
           <groupId>com.usoftchina.saas</groupId>
           <artifactId>mall-api</artifactId>
-          <version>1.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
           <groupId>com.usoftchina.saas</groupId>
@@ -86,6 +85,18 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>transfers-auth</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>sale-dto</artifactId>
+        </dependency>
+        <dependency>
+            <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);

+ 42 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/ApCheckController.java

@@ -0,0 +1,42 @@
+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.ApcheckFormDTO;
+import com.usoftchina.saas.transfers.service.ApCheckService;
+import com.usoftchina.saas.utils.JsonUtils;
+import com.usoftchina.saas.utils.StringUtils;
+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 java.util.List;
+
+/**
+ * 提供平台调用 下载应付对账单
+ * @author: guq
+ * @create: 2019-01-12 15:03
+ **/
+@IgnoreAuth
+@RestController
+@RequestMapping("/b2b/apcheck")
+public class ApCheckController {
+
+
+    @Autowired
+    private ApCheckService apcheckService;
+
+    @PostMapping("/save")
+    public Result saveApcheck(@RequestParam("data") String data) {
+        if (StringUtils.isEmpty(data)) {
+            throw new BizException(BizExceptionCode.NULL_DATA);
+        }
+        List<ApcheckFormDTO> forms = JsonUtils.fromJsonArray(data, ApcheckFormDTO.class);
+        apcheckService.save(forms);
+        return Result.success();
+    }
+}

+ 72 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/controller/SaleDownController.java

@@ -0,0 +1,72 @@
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 提供给平台调用,saas下载客户采购单
+ * @author: guq
+ * @create: 2019-01-11 16:42
+ **/
+@IgnoreAuth
+@RestController
+@RequestMapping("/b2b/saledown")
+@IgnoreOpenApiAuth
+public class SaleDownController {
+
+    @Autowired
+    private SaleDownService saleDownService;
+
+    /**
+     *从b2b下载客户采购单
+     * @return
+     */
+    @PostMapping("/save")
+    public Result<String> saveSaleDown(@RequestParam("data") String data) {
+        if (StringUtils.isEmpty(data)) {
+            throw new BizException(BizExceptionCode.NULL_DATA);
+        }
+        List<SaleDownFormDTO> forms = JsonUtils.fromJsonArray(data, SaleDownFormDTO.class);
+        String idStr = saleDownService.saveData(forms);
+        return Result.success(idStr);
+    }
+
+    /**
+     *从b2b更新为结案
+     * @return
+     */
+    @PostMapping("/close")
+    public Result<String> closeSaleDown(@RequestParam("data") String data) {
+        if (StringUtils.isEmpty(data)) {
+            throw new BizException(BizExceptionCode.NULL_DATA);
+        }
+         saleDownService.closeSaleDown(data);
+        return Result.success();
+    }
+
+    /**
+     *从b2b更新为结案
+     * @return
+     */
+    @PostMapping("/resClose")
+    public Result<String> resCloseSaleDown(@RequestParam("data") String data) {
+        if (StringUtils.isEmpty(data)) {
+            throw new BizException(BizExceptionCode.NULL_DATA);
+        }
+        saleDownService.resCloseSaleDown(data);
+        return Result.success();
+    }
+
+}

+ 20 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/ApcheckMapper.java

@@ -0,0 +1,20 @@
+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;
+
+public interface ApcheckMapper {
+    int deleteByPrimaryKey(Integer ac_id);
+
+    int insertSelective(Apcheck record);
+
+    Apcheck selectByPrimaryKey(Integer ac_id);
+
+    void batchInsert(List<ApcheckDetail> details);
+
+    Vendor getVendorByuu(@Param("uu") Long uu, @Param("companyid") Long companyid);
+}

+ 31 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/SaledownMapper.java

@@ -0,0 +1,31 @@
+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;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface SaledownMapper {
+    int deleteByPrimaryKey(Integer sa_id);
+
+    int insert(SaleDown record);
+
+    int insertSelective(SaleDown record);
+
+    SaleDown selectByPrimaryKey(Integer sa_id);
+
+    int updateByPrimaryKeySelective(SaleDown record);
+
+    Product findProductBySpec(@Param("spec") String spec, @Param("companyid") Long companyid);
+
+    void batchInsert(List<SaleDownDetail> insertDetail);
+
+    void batchUpdateClose(@Param("data") String data, @Param("companyid") Long companyid);
+
+    void batchUpdateResClose(@Param("data") String data, @Param("companyid") Long companyid);
+
+    Customer getCustomer(@Param("uu") Long uu, @Param("companyid") Long companyid);
+}

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

@@ -0,0 +1,274 @@
+package com.usoftchina.saas.transfers.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 15:04
+ **/
+public class SaleDown extends CommonBaseEntity{
+
+    private String sa_code;
+
+    private Long sa_customeruu;
+
+    private Long sa_custid;
+
+    private String sa_custcode;
+
+    private String sa_custname;
+
+    private Date sa_date;
+
+    private String sa_toplace;
+
+    private String sa_currency;
+
+    private Double sa_rate;
+
+    private Long sa_selleruu;
+
+    private Long sa_sellerid;
+
+    private String sa_seller;
+
+    private String sa_sellercode;
+
+    private String sa_custcontact;
+
+    private Long sa_custcontactuu;
+
+    private String sa_custmobile;
+
+    private String sa_pocode;
+
+    private Integer 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;
+
+    private String sa_status;
+
+    private String sa_statuscode;
+
+    private String sa_remark;
+
+    private String sa_turnstatus;
+
+    private String sa_turnstatuscode;
+
+    public String getSa_turnstatus() {
+        return sa_turnstatus;
+    }
+
+    public void setSa_turnstatus(String sa_turnstatus) {
+        this.sa_turnstatus = sa_turnstatus;
+    }
+
+    public String getSa_turnstatuscode() {
+        return sa_turnstatuscode;
+    }
+
+    public void setSa_turnstatuscode(String sa_turnstatuscode) {
+        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;
+    }
+
+    public void setSa_code(String sa_code) {
+        this.sa_code = sa_code == null ? null : sa_code.trim();
+    }
+
+
+    public String getSa_custcode() {
+        return sa_custcode;
+    }
+
+    public void setSa_custcode(String sa_custcode) {
+        this.sa_custcode = sa_custcode == null ? null : sa_custcode.trim();
+    }
+
+    public String getSa_custname() {
+        return sa_custname;
+    }
+
+    public void setSa_custname(String sa_custname) {
+        this.sa_custname = sa_custname == null ? null : sa_custname.trim();
+    }
+
+    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;
+    }
+
+    public void setSa_toplace(String sa_toplace) {
+        this.sa_toplace = sa_toplace == null ? null : sa_toplace.trim();
+    }
+
+    public String getSa_currency() {
+        return sa_currency;
+    }
+
+    public void setSa_currency(String sa_currency) {
+        this.sa_currency = sa_currency == null ? null : sa_currency.trim();
+    }
+
+    public Double getSa_rate() {
+        return sa_rate;
+    }
+
+    public void setSa_rate(Double sa_rate) {
+        this.sa_rate = sa_rate;
+    }
+
+
+    public String getSa_seller() {
+        return sa_seller;
+    }
+
+    public void setSa_seller(String sa_seller) {
+        this.sa_seller = sa_seller == null ? null : sa_seller.trim();
+    }
+
+    public String getSa_sellercode() {
+        return sa_sellercode;
+    }
+
+    public void setSa_sellercode(String sa_sellercode) {
+        this.sa_sellercode = sa_sellercode == null ? null : sa_sellercode.trim();
+    }
+
+    public String getSa_custcontact() {
+        return sa_custcontact;
+    }
+
+    public void setSa_custcontact(String sa_custcontact) {
+        this.sa_custcontact = sa_custcontact == null ? null : sa_custcontact.trim();
+    }
+
+    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 void setSa_selleruu(Long sa_selleruu) {
+        this.sa_selleruu = sa_selleruu;
+    }
+
+    public Long getSa_custcontactuu() {
+        return sa_custcontactuu;
+    }
+
+    public void setSa_custcontactuu(Long sa_custcontactuu) {
+        this.sa_custcontactuu = sa_custcontactuu;
+    }
+
+    public String getSa_custmobile() {
+        return sa_custmobile;
+    }
+
+    public void setSa_custmobile(String sa_custmobile) {
+        this.sa_custmobile = sa_custmobile == null ? null : sa_custmobile.trim();
+    }
+
+    public String getSa_pocode() {
+        return sa_pocode;
+    }
+
+    public void setSa_pocode(String sa_pocode) {
+        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;
+    }
+
+    public void setSa_printstatus(String sa_printstatus) {
+        this.sa_printstatus = sa_printstatus == null ? null : sa_printstatus.trim();
+    }
+
+    public String getSa_printstatuscode() {
+        return sa_printstatuscode;
+    }
+
+    public void setSa_printstatuscode(String sa_printstatuscode) {
+        this.sa_printstatuscode = sa_printstatuscode == null ? null : sa_printstatuscode.trim();
+    }
+
+    public String getSa_attach() {
+        return sa_attach;
+    }
+
+    public void setSa_attach(String sa_attach) {
+        this.sa_attach = sa_attach == null ? null : sa_attach.trim();
+    }
+
+    public String getSa_status() {
+        return sa_status;
+    }
+
+    public void setSa_status(String sa_status) {
+        this.sa_status = sa_status == null ? null : sa_status.trim();
+    }
+
+    public String getSa_statuscode() {
+        return sa_statuscode;
+    }
+
+    public void setSa_statuscode(String sa_statuscode) {
+        this.sa_statuscode = sa_statuscode == null ? null : sa_statuscode.trim();
+    }
+
+    public String getSa_remark() {
+        return sa_remark;
+    }
+
+    public void setSa_remark(String sa_remark) {
+        this.sa_remark = sa_remark == null ? null : sa_remark.trim();
+    }
+}

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

@@ -0,0 +1,222 @@
+package com.usoftchina.saas.transfers.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 15:06
+ **/
+public class SaleDownDetail extends CommonBaseEntity{
+
+    private Long sd_said;
+
+    private String sd_code;
+
+    private Integer sd_detno;
+
+    private Integer b2b_pd_id;
+
+    private Long sd_prodid;
+
+    private String sd_prodcode;
+
+    private String sd_prodspec;
+
+    private String sd_orispeccode;
+
+    private String sd_custorispeccode;
+
+    private String sd_custprodcode;
+
+    private String sd_custproddetail;
+
+    private String sd_custprodspec;
+
+    private String sd_produnit;
+
+    private Double sd_qty;
+
+    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 Long getSd_said() {
+        return sd_said;
+    }
+
+    public void setSd_said(Long sd_said) {
+        this.sd_said = sd_said;
+    }
+
+    public String getSd_code() {
+        return sd_code;
+    }
+
+    public void setSd_code(String sd_code) {
+        this.sd_code = sd_code == null ? null : sd_code.trim();
+    }
+
+    public Integer getSd_detno() {
+        return sd_detno;
+    }
+
+    public void setSd_detno(Integer sd_detno) {
+        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;
+    }
+
+    public void setSd_prodid(Long 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 == null ? null : sd_prodcode.trim();
+    }
+
+    public String getSd_prodspec() {
+        return sd_prodspec;
+    }
+
+    public void setSd_prodspec(String sd_prodspec) {
+        this.sd_prodspec = sd_prodspec == null ? null : sd_prodspec.trim();
+    }
+
+    public String getSd_orispeccode() {
+        return sd_orispeccode;
+    }
+
+    public void setSd_orispeccode(String sd_orispeccode) {
+        this.sd_orispeccode = sd_orispeccode == null ? null : sd_orispeccode.trim();
+    }
+
+    public String getSd_custorispeccode() {
+        return sd_custorispeccode;
+    }
+
+    public void setSd_custorispeccode(String sd_custorispeccode) {
+        this.sd_custorispeccode = sd_custorispeccode == null ? null : sd_custorispeccode.trim();
+    }
+
+    public String getSd_custprodcode() {
+        return sd_custprodcode;
+    }
+
+    public void setSd_custprodcode(String sd_custprodcode) {
+        this.sd_custprodcode = sd_custprodcode == null ? null : sd_custprodcode.trim();
+    }
+
+    public String getSd_custproddetail() {
+        return sd_custproddetail;
+    }
+
+    public void setSd_custproddetail(String sd_custproddetail) {
+        this.sd_custproddetail = sd_custproddetail == null ? null : sd_custproddetail.trim();
+    }
+
+    public String getSd_custprodspec() {
+        return sd_custprodspec;
+    }
+
+    public void setSd_custprodspec(String sd_custprodspec) {
+        this.sd_custprodspec = sd_custprodspec == null ? null : sd_custprodspec.trim();
+    }
+
+    public String getSd_produnit() {
+        return sd_produnit;
+    }
+
+    public void setSd_produnit(String sd_produnit) {
+        this.sd_produnit = sd_produnit == null ? null : sd_produnit.trim();
+    }
+
+    public Double getSd_qty() {
+        return sd_qty;
+    }
+
+    public void setSd_qty(Double sd_qty) {
+        this.sd_qty = sd_qty;
+    }
+
+    public Double getSd_price() {
+        return sd_price;
+    }
+
+    public void setSd_price(Double sd_price) {
+        this.sd_price = sd_price;
+    }
+
+    public Double getSd_total() {
+        return sd_total;
+    }
+
+    public void setSd_total(Double sd_total) {
+        this.sd_total = sd_total;
+    }
+
+    public Double getSd_taxrate() {
+        return sd_taxrate;
+    }
+
+    public void setSd_taxrate(Double sd_taxrate) {
+        this.sd_taxrate = sd_taxrate;
+    }
+
+    public Double getSd_costprice() {
+        return sd_costprice;
+    }
+
+    public void setSd_costprice(Double sd_costprice) {
+        this.sd_costprice = sd_costprice;
+    }
+
+    public Double getSd_taxtotal() {
+        return sd_taxtotal;
+    }
+
+    public void setSd_taxtotal(Double sd_taxtotal) {
+        this.sd_taxtotal = sd_taxtotal;
+    }
+
+    public Date getSd_delivery() {
+        return sd_delivery;
+    }
+
+    public void setSd_delivery(Date sd_delivery) {
+        this.sd_delivery = sd_delivery;
+    }
+
+    public String getSd_remark() {
+        return sd_remark;
+    }
+
+    public void setSd_remark(String sd_remark) {
+        this.sd_remark = sd_remark == null ? null : sd_remark.trim();
+    }
+}

+ 9 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ApCheckService.java

@@ -0,0 +1,9 @@
+package com.usoftchina.saas.transfers.service;
+
+import com.usoftchina.saas.money.dto.ApcheckFormDTO;
+
+import java.util.List;
+
+public interface ApCheckService {
+    String save(List<ApcheckFormDTO> forms);
+}

+ 14 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/SaleDownService.java

@@ -0,0 +1,14 @@
+package com.usoftchina.saas.transfers.service;
+
+
+import com.usoftchina.saas.sale.dto.SaleDownFormDTO;
+
+import java.util.List;
+
+public interface SaleDownService {
+    String saveData(List<SaleDownFormDTO> forms);
+
+    void closeSaleDown(String data);
+
+    void resCloseSaleDown(String data);
+}

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

@@ -0,0 +1,76 @@
+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;
+import com.usoftchina.saas.transfers.auth.context.TransfersContextHodler;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2019-01-12 15:55
+ **/
+@Service
+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;
+        }
+        StringBuilder ids = new StringBuilder();
+        Long companyId = TransfersContextHodler.getB2bCompanyId();
+        String custspeccode = null;
+        for (ApcheckFormDTO form : forms) {
+            Apcheck main = BeanMapper.map(form.getMain(), Apcheck.class);
+            List<ApcheckDetail> details = BeanMapper.mapList(form.getItems(), ApcheckDetail.class);
+
+            //供应商获取
+            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.getMaxnumber(BillCodeSeq.APCHECK.getCaller(), false).getData();
+            main.setAc_code(code);
+            apcheckMapper.insertSelective(main);
+
+            //根据型号匹配物料
+            for (ApcheckDetail detail : details) {
+                detail.setAd_acid(main.getId());
+                detail.setCreateTime(new Date());
+                detail.setCompanyId(companyId);
+            }
+            //插入从表
+            if (details.size() > 0) {
+                apcheckMapper.batchInsert(details);
+            }
+            ids.append(main.getAc_b2bid());
+            ids.append(",");
+        }
+        return ids.length() > 0 ? ids.substring(0, ids.length() - 1) : "";
+    }
+}

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

@@ -0,0 +1,128 @@
+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;
+import com.usoftchina.saas.transfers.po.SaleDown;
+import com.usoftchina.saas.transfers.po.SaleDownDetail;
+import com.usoftchina.saas.transfers.service.SaleDownService;
+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;
+
+/**
+ * @author: guq
+ * @create: 2019-01-11 17:40
+ **/
+@Service
+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;
+        }
+        StringBuilder ids = new StringBuilder();
+        Long companyId = TransfersContextHodler.getB2bCompanyId();
+        String custspeccode = null;
+        for (SaleDownFormDTO form : forms) {
+            SaleDown main = BeanMapper.map(form.getMain(), SaleDown.class);
+            List<SaleDownDetail> details = BeanMapper.mapList(form.getItems(), SaleDownDetail.class);
+            List<SaleDownDetail> insertDetail = new ArrayList<>();
+            //添加业务员
+            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.getMaxnumber(BillCodeSeq.SALEDOWN.getCaller(), false).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);
+
+            //根据型号匹配物料
+            for (SaleDownDetail detail : details) {
+                custspeccode = detail.getSd_custorispeccode();
+                if (!StringUtils.isEmpty(custspeccode)) {
+                    Product product = saledownMapper.findProductBySpec(custspeccode, companyId);
+                    if (product != null) {
+                        detail.setSd_said(main.getId());
+                        detail.setSd_prodcode(product.getPr_code());
+                        detail.setSd_prodid(product.getId());
+                        detail.setSd_prodspec(product.getPr_spec());
+                        detail.setSd_produnit(product.getPr_unit());
+                        detail.setSd_orispeccode(product.getPr_orispeccode());
+                        detail.setCompanyId(companyId);
+                        insertDetail.add(detail);
+                    }
+                }
+            }
+            //插入从表
+            if (insertDetail.size() > 0) {
+                saledownMapper.batchInsert(insertDetail);
+            }
+            ids.append(main.getB2b_pu_id());
+            ids.append(",");
+        }
+        return ids.length() > 0 ? ids.substring(0, ids.length() - 1) : "";
+    }
+
+    @Override
+    public void closeSaleDown(String data) {
+        Long companyId = TransfersContextHodler.getB2bCompanyId();
+        saledownMapper.batchUpdateClose(data, companyId);
+    }
+
+    @Override
+    public void resCloseSaleDown(String data) {
+        Long companyId = TransfersContextHodler.getB2bCompanyId();
+        saledownMapper.batchUpdateResClose(data, companyId);
+    }
+
+   /* public String getMaxnumber(BillCodeSeq bill) {
+        String code = maxnumberService.getMaxnumber(bill.getCaller(), false).getData();
+        DocBaseDTO base = new DocBaseDTO(0l, code, bill.getName());
+        return pushMaxnubmer(base);
+    }*/
+
+}

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

@@ -86,4 +86,10 @@ rabbit:
     queue: saas_trade_dev_queue
     dlqueue: saas_trade_dev_dlqueue
     routingkey: saas_trade_dev_dl.*
-    expired: 30000
+    expired: 30000
+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

+ 325 - 0
applications/transfers/transfers-server/src/main/resources/mapper/ApcheckMapper.xml

@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.transfers.mapper.ApcheckMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.money.po.Apcheck" >
+    <id column="ac_id" property="id" jdbcType="INTEGER" />
+    <result column="ac_b2bid" property="ac_b2bid" jdbcType="INTEGER" />
+    <result column="ac_code" property="ac_code" jdbcType="VARCHAR" />
+    <result column="ac_date" property="ac_date" jdbcType="TIMESTAMP" />
+    <result column="ac_apdate" property="ac_apdate" jdbcType="TIMESTAMP" />
+    <result column="ac_fromdate" property="ac_fromdate" jdbcType="TIMESTAMP" />
+    <result column="ac_todate" property="ac_todate" jdbcType="TIMESTAMP" />
+    <result column="ac_venduu" property="ac_venduu" jdbcType="VARCHAR" />
+    <result column="ac_vendid" property="ac_vendid" jdbcType="INTEGER" />
+    <result column="ac_vendcode" property="ac_vendcode" jdbcType="VARCHAR" />
+    <result column="ac_vendname" property="ac_vendname" jdbcType="VARCHAR" />
+    <result column="ac_currency" property="ac_currency" jdbcType="VARCHAR" />
+    <result column="ac_rate" property="ac_rate" jdbcType="DOUBLE" />
+    <result column="ac_checkamount" property="ac_checkamount" jdbcType="DOUBLE" />
+    <result column="ac_confirmstatus" property="ac_confirmstatus" jdbcType="VARCHAR" />
+    <result column="ac_confirmstatuscode" property="ac_confirmstatuscode" jdbcType="VARCHAR" />
+    <result column="ac_confirmdate" property="ac_confirmdate" jdbcType="TIMESTAMP" />
+    <result column="ac_remark" property="ac_remark" jdbcType="VARCHAR" />
+    <result column="ac_sendstatus" property="ac_sendstatus" jdbcType="VARCHAR" />
+    <result column="ac_thisamount" property="ac_thisamount" jdbcType="DOUBLE" />
+    <result column="ac_thisuncheck" property="ac_thisuncheck" jdbcType="DOUBLE" />
+    <result column="ac_thispay" property="ac_thispay" jdbcType="DOUBLE" />
+    <result column="ac_thissend" property="ac_thissend" jdbcType="DOUBLE" />
+    <result column="ac_thischeck" property="ac_thischeck" jdbcType="DOUBLE" />
+    <result column="ac_payamont" property="ac_payamont" jdbcType="DOUBLE" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="companyId" property="companyId" jdbcType="BIGINT" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+  </resultMap>
+
+  <resultMap id="detailMap" type="com.usoftchina.saas.money.po.ApcheckDetail">
+    <id column="ad_id" property="id" jdbcType="INTEGER" />
+    <result column="ad_acid" property="ad_acid" jdbcType="INTEGER" />
+    <result column="ad_detno" property="ad_detno" jdbcType="INTEGER" />
+    <result column="ad_inoutno" property="ad_inoutno" jdbcType="VARCHAR" />
+    <result column="ad_pdno" property="ad_pdno" jdbcType="INTEGER" />
+    <result column="ad_prodcode" property="ad_prodcode" jdbcType="VARCHAR" />
+    <result column="ad_pucode" property="ad_pucode" jdbcType="VARCHAR" />
+    <result column="ad_price" property="ad_price" jdbcType="DOUBLE" />
+    <result column="ad_taxrate" property="ad_taxrate" jdbcType="DOUBLE" />
+    <result column="ad_b2bqty" property="ad_b2bqty" jdbcType="DOUBLE" />
+    <result column="companyId" property="companyId" jdbcType="BIGINT" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+  </resultMap>
+
+  <sql id="Base_Column_List" >
+    ac_id, ac_b2bid, ac_code, ac_date, ac_apdate, ac_fromdate, ac_todate, ac_venduu, 
+    ac_vendid, ac_vendcode, ac_vendname, ac_currency, ac_rate, ac_checkamount, ac_confirmstatus, 
+    ac_confirmstatuscode, ac_confirmdate, ac_remark, ac_sendstatus, ac_thisamount, ac_thisuncheck, 
+    ac_thispay, ac_thissend, ac_thischeck, ac_payamont, creatorId, creatorName, companyId, 
+    updaterId, updaterName, updatetime, createTime
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from apcheck
+    where ac_id = #{ac_id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from apcheck
+    where ac_id = #{ac_id,jdbcType=INTEGER}
+  </delete>
+
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.money.po.Apcheck" >
+    <selectKey  resultType="java.lang.Long" keyProperty="id">
+      SELECT LAST_INSERT_ID() AS ID
+    </selectKey>
+    insert into apcheck
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="ac_b2bid != null" >
+        ac_b2bid,
+      </if>
+      <if test="ac_code != null" >
+        ac_code,
+      </if>
+      <if test="ac_date != null" >
+        ac_date,
+      </if>
+      <if test="ac_apdate != null" >
+        ac_apdate,
+      </if>
+      <if test="ac_fromdate != null" >
+        ac_fromdate,
+      </if>
+      <if test="ac_todate != null" >
+        ac_todate,
+      </if>
+      <if test="ac_venduu != null" >
+        ac_venduu,
+      </if>
+      <if test="ac_vendid != null" >
+        ac_vendid,
+      </if>
+      <if test="ac_vendcode != null" >
+        ac_vendcode,
+      </if>
+      <if test="ac_vendname != null" >
+        ac_vendname,
+      </if>
+      <if test="ac_currency != null" >
+        ac_currency,
+      </if>
+      <if test="ac_rate != null" >
+        ac_rate,
+      </if>
+      <if test="ac_checkamount != null" >
+        ac_checkamount,
+      </if>
+      <if test="ac_confirmstatus != null" >
+        ac_confirmstatus,
+      </if>
+      <if test="ac_confirmstatuscode != null" >
+        ac_confirmstatuscode,
+      </if>
+      <if test="ac_confirmdate != null" >
+        ac_confirmdate,
+      </if>
+      <if test="ac_remark != null" >
+        ac_remark,
+      </if>
+      <if test="ac_sendstatus != null" >
+        ac_sendstatus,
+      </if>
+      <if test="ac_thisamount != null" >
+        ac_thisamount,
+      </if>
+      <if test="ac_thisuncheck != null" >
+        ac_thisuncheck,
+      </if>
+      <if test="ac_thispay != null" >
+        ac_thispay,
+      </if>
+      <if test="ac_thissend != null" >
+        ac_thissend,
+      </if>
+      <if test="ac_thischeck != null" >
+        ac_thischeck,
+      </if>
+      <if test="ac_payamont != null" >
+        ac_payamont,
+      </if>
+      <if test="creatorId != null" >
+        creatorId,
+      </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="companyId != null" >
+        companyId,
+      </if>
+      <if test="updaterId != null" >
+        updaterId,
+      </if>
+      <if test="updaterName != null" >
+        updaterName,
+      </if>
+      <if test="updatetime != null" >
+        updatetime,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="ac_b2bid != null" >
+        #{ac_b2bid,jdbcType=INTEGER},
+      </if>
+      <if test="ac_code != null" >
+        #{ac_code,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_date != null" >
+        #{ac_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="ac_apdate != null" >
+        #{ac_apdate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="ac_fromdate != null" >
+        #{ac_fromdate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="ac_todate != null" >
+        #{ac_todate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="ac_venduu != null" >
+        #{ac_venduu,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_vendid != null" >
+        #{ac_vendid,jdbcType=INTEGER},
+      </if>
+      <if test="ac_vendcode != null" >
+        #{ac_vendcode,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_vendname != null" >
+        #{ac_vendname,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_currency != null" >
+        #{ac_currency,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_rate != null" >
+        #{ac_rate,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_checkamount != null" >
+        #{ac_checkamount,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_confirmstatus != null" >
+        #{ac_confirmstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_confirmstatuscode != null" >
+        #{ac_confirmstatuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_confirmdate != null" >
+        #{ac_confirmdate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="ac_remark != null" >
+        #{ac_remark,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_sendstatus != null" >
+        #{ac_sendstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="ac_thisamount != null" >
+        #{ac_thisamount,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_thisuncheck != null" >
+        #{ac_thisuncheck,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_thispay != null" >
+        #{ac_thispay,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_thissend != null" >
+        #{ac_thissend,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_thischeck != null" >
+        #{ac_thischeck,jdbcType=DOUBLE},
+      </if>
+      <if test="ac_payamont != null" >
+        #{ac_payamont,jdbcType=DOUBLE},
+      </if>
+      <if test="creatorId != null" >
+        #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        #{companyId,jdbcType=BIGINT},
+      </if>
+      <if test="updaterId != null" >
+        #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterName != null" >
+        #{updaterName,jdbcType=VARCHAR},
+      </if>
+      <if test="updatetime != null" >
+        #{updatetime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+
+
+  <insert id="batchInsert" parameterType="java.util.List" >
+    insert into apcheckdetail (ad_acid, ad_detno,
+    ad_inoutno, ad_pdno, ad_prodcode,
+    ad_pucode, ad_price, ad_taxrate,
+    ad_b2bqty, companyId, createTime,
+    creatorId, creatorName)
+    values
+    <foreach collection="list" item="item" index="index" open="" close="" separator=",">
+      (
+      #{ad_acid,jdbcType=INTEGER}, #{ad_detno,jdbcType=INTEGER},
+      #{ad_inoutno,jdbcType=VARCHAR}, #{ad_pdno,jdbcType=INTEGER}, #{ad_prodcode,jdbcType=VARCHAR},
+      #{ad_pucode,jdbcType=VARCHAR}, #{ad_price,jdbcType=DOUBLE}, #{ad_taxrate,jdbcType=DOUBLE},
+      #{ad_b2bqty,jdbcType=DOUBLE}, #{companyId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP},
+      #{creatorId,jdbcType=INTEGER}, #{creatorName,jdbcType=VARCHAR}
+      )
+    </foreach>
+  </insert>
+
+  <resultMap id="vendorMap" type="com.usoftchina.saas.document.entities.Vendor">
+    <result column="ve_code" property="ve_code" jdbcType="VARCHAR" />
+    <result column="ve_shortname" property="ve_shortname" jdbcType="VARCHAR"/>
+    <result column="ve_uu" property="ve_uu" jdbcType="VARCHAR" />
+    <result column="ve_name" property="ve_name" jdbcType="VARCHAR" />
+    <result column="ve_type" property="ve_type" jdbcType="VARCHAR" />
+    <result column="ve_begindate" property="ve_begindate" jdbcType="TIMESTAMP" />
+    <result column="ve_beginapamount" property="ve_beginapamount" jdbcType="DOUBLE" />
+    <result column="ve_beginprepayamount" property="ve_beginprepayamount" jdbcType="DOUBLE" />
+    <result column="ve_promisedays" property="ve_promisedays" jdbcType="INTEGER" />
+    <result column="ve_taxrate" property="ve_taxrate" jdbcType="DOUBLE" />
+    <result column="ve_nsrzh" property="ve_nsrzh" jdbcType="VARCHAR" />
+    <result column="ve_bankaccount" property="ve_bankaccount" jdbcType="VARCHAR" />
+    <result column="ve_bankcode" property="ve_bankcode" jdbcType="VARCHAR" />
+    <result column="ve_status" property="ve_status" jdbcType="VARCHAR" />
+    <result column="ve_statuscode" property="ve_statuscode" jdbcType="VARCHAR" />
+    <result column="companyId" property="companyId" jdbcType="INTEGER" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="ve_text1" property="ve_text1" jdbcType="VARCHAR" />
+    <result column="ve_text2" property="ve_text2" jdbcType="VARCHAR" />
+    <result column="ve_text3" property="ve_text3" jdbcType="VARCHAR" />
+    <result column="ve_text4" property="ve_text4" jdbcType="VARCHAR" />
+    <result column="ve_text5" property="ve_text5" jdbcType="VARCHAR" />
+    <result column="ve_payamount" property="ve_payamount" jdbcType="DOUBLE" />
+    <result column="ve_leftamount" property="ve_leftamount" jdbcType="DOUBLE" />
+    <result column="ve_beginym" property="ve_beginym" jdbcType="INTEGER" />
+    <result column="ve_preamount" property="ve_preamount" jdbcType="DOUBLE" />
+    <result column="ve_remark" property="ve_remark" jdbcType="VARCHAR" />
+    <result column="ve_address" property="ve_address" jdbcType="VARCHAR" />
+    <result column="ve_currency" property="ve_currency" jdbcType="VARCHAR" />
+  </resultMap>
+
+  <select id="getVendorByuu" resultMap="vendorMap">
+    select * from vendor where ve_uu=#{uu} and companyid=#{companyid}
+  </select>
+</mapper>

+ 465 - 0
applications/transfers/transfers-server/src/main/resources/mapper/SaledownMapper.xml

@@ -0,0 +1,465 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.transfers.mapper.SaledownMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.transfers.po.SaleDown" >
+    <id column="sa_id" property="id" jdbcType="INTEGER" />
+    <result column="sa_code" property="sa_code" jdbcType="VARCHAR" />
+    <result column="sa_customeruu" property="sa_customeruu" jdbcType="VARCHAR" />
+    <result column="sa_custid" property="sa_custid" jdbcType="INTEGER" />
+    <result column="sa_custcode" property="sa_custcode" jdbcType="VARCHAR" />
+    <result column="sa_custname" property="sa_custname" jdbcType="VARCHAR" />
+    <result column="sa_date" property="sa_date" jdbcType="TIMESTAMP" />
+    <result column="sa_toplace" property="sa_toplace" jdbcType="VARCHAR" />
+    <result column="sa_currency" property="sa_currency" jdbcType="VARCHAR" />
+    <result column="sa_rate" property="sa_rate" jdbcType="DOUBLE" />
+    <result column="sa_selleruu" property="sa_selleruu" jdbcType="INTEGER" />
+    <result column="sa_sellerid" property="sa_sellerid" jdbcType="INTEGER" />
+    <result column="sa_seller" property="sa_seller" jdbcType="VARCHAR" />
+    <result column="sa_sellercode" property="sa_sellercode" jdbcType="VARCHAR" />
+    <result column="sa_custcontact" property="sa_custcontact" jdbcType="VARCHAR" />
+    <result column="sa_custcontactuu" property="sa_custcontactuu" jdbcType="INTEGER" />
+    <result column="sa_custmobile" property="sa_custmobile" jdbcType="VARCHAR" />
+    <result column="sa_pocode" property="sa_pocode" jdbcType="VARCHAR" />
+    <result column="b2b_pu_id" property="b2b_pu_id" jdbcType="INTEGER" />
+    <result column="sa_printstatus" property="sa_printstatus" jdbcType="VARCHAR" />
+    <result column="sa_printstatuscode" property="sa_printstatuscode" jdbcType="VARCHAR" />
+    <result column="sa_attach" property="sa_attach" jdbcType="VARCHAR" />
+    <result column="sa_status" property="sa_status" jdbcType="VARCHAR" />
+    <result column="sa_statuscode" property="sa_statuscode" jdbcType="VARCHAR" />
+    <result column="sa_remark" property="sa_remark" jdbcType="VARCHAR" />
+    <result column="companyId" property="companyId" jdbcType="INTEGER" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+  </resultMap>
+
+  <resultMap id="productMap" type="com.usoftchina.saas.document.entities.Product">
+    <id column="pr_id" property="id" jdbcType="INTEGER"/>
+    <result column="pr_code" property="pr_code" jdbcType="VARCHAR"/>
+    <result column="pr_detail" property="pr_detail" jdbcType="VARCHAR"/>
+    <result column="pr_spec" property="pr_spec" jdbcType="VARCHAR"/>
+    <result column="pr_unit" property="pr_unit" jdbcType="VARCHAR"/>
+    <result column="pr_kind" property="pr_kind" jdbcType="VARCHAR"/>
+    <result column="pr_orispeccode" property="pr_orispeccode" jdbcType="VARCHAR"/>
+    <result column="pr_whid" property="pr_whid" jdbcType="INTEGER"/>
+    <result column="pr_whcode" property="pr_whcode" jdbcType="VARCHAR"/>
+    <result column="pr_whname" property="pr_whname" jdbcType="VARCHAR"/>
+    <result column="pr_zxbzs" property="pr_zxbzs" jdbcType="INTEGER"/>
+    <result column="pr_leadtime" property="pr_leadtime" jdbcType="INTEGER"/>
+    <result column="pr_brand" property="pr_brand" jdbcType="VARCHAR"/>
+    <result column="pr_standardprice" property="pr_standardprice" jdbcType="DOUBLE"/>
+    <result column="pr_purcprice" property="pr_purcprice" jdbcType="DOUBLE"/>
+    <result column="pr_saleprice" property="pr_saleprice" jdbcType="DOUBLE"/>
+    <result column="pr_vendid" property="pr_vendid" jdbcType="INTEGER"/>
+    <result column="pr_vendcode" property="pr_vendcode" jdbcType="VARCHAR"/>
+    <result column="pr_vendname" property="pr_vendname" jdbcType="VARCHAR"/>
+    <result column="pr_status" property="pr_status" jdbcType="VARCHAR"/>
+    <result column="pr_statuscode" property="pr_statuscode" jdbcType="VARCHAR"/>
+    <result column="companyId" property="companyId" jdbcType="INTEGER"/>
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER"/>
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP"/>
+    <result column="pr_text1" property="pr_text1" jdbcType="VARCHAR"/>
+    <result column="pr_text2" property="pr_text2" jdbcType="VARCHAR"/>
+    <result column="pr_text3" property="pr_text3" jdbcType="VARCHAR"/>
+    <result column="pr_text4" property="pr_text4" jdbcType="VARCHAR"/>
+    <result column="pr_text5" property="pr_text5" jdbcType="VARCHAR"/>
+    <result column="pr_remark" property="pr_remark" jdbcType="VARCHAR"/>
+  </resultMap>
+  <sql id="Base_Column_List" >
+    sa_id, sa_code, sa_customeruu, sa_custid, sa_custcode, sa_custname, sa_date, sa_toplace, 
+    sa_currency, sa_rate, sa_selleruu, sa_sellerid, sa_seller, sa_sellercode, sa_custcontact, 
+    sa_custcontactuu, sa_custmobile, sa_pocode, b2b_pu_id, sa_printstatus, sa_printstatuscode, 
+    sa_attach, sa_status, sa_statuscode, sa_remark, companyId, createTime, creatorId, 
+    updateTime, updaterId
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from saledown
+    where sa_id = #{sa_id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from saledown
+    where sa_id = #{sa_id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.transfers.po.SaleDown" >
+    insert into saledown (sa_code, sa_customeruu,
+      sa_custid, sa_custcode, sa_custname, 
+      sa_date, sa_toplace, sa_currency, 
+      sa_rate, sa_selleruu, sa_sellerid, 
+      sa_seller, sa_sellercode, sa_custcontact, 
+      sa_custcontactuu, sa_custmobile, sa_pocode, 
+      b2b_pu_id, sa_printstatus, sa_printstatuscode, 
+      sa_attach, sa_status, sa_statuscode, 
+      sa_remark, companyId, createTime, 
+      creatorId, updateTime, updaterId
+      )
+    values ( #{sa_code,jdbcType=VARCHAR}, #{sa_customeruu,jdbcType=VARCHAR},
+      #{sa_custid,jdbcType=INTEGER}, #{sa_custcode,jdbcType=VARCHAR}, #{sa_custname,jdbcType=VARCHAR}, 
+      #{sa_date,jdbcType=TIMESTAMP}, #{sa_toplace,jdbcType=VARCHAR}, #{sa_currency,jdbcType=VARCHAR}, 
+      #{sa_rate,jdbcType=DOUBLE}, #{sa_selleruu,jdbcType=INTEGER}, #{sa_sellerid,jdbcType=INTEGER}, 
+      #{sa_seller,jdbcType=VARCHAR}, #{sa_sellercode,jdbcType=VARCHAR}, #{sa_custcontact,jdbcType=VARCHAR}, 
+      #{sa_custcontactuu,jdbcType=INTEGER}, #{sa_custmobile,jdbcType=VARCHAR}, #{sa_pocode,jdbcType=VARCHAR}, 
+      #{b2b_pu_id,jdbcType=INTEGER}, #{sa_printstatus,jdbcType=VARCHAR}, #{sa_printstatuscode,jdbcType=VARCHAR}, 
+      #{sa_attach,jdbcType=VARCHAR}, #{sa_status,jdbcType=VARCHAR}, #{sa_statuscode,jdbcType=VARCHAR}, 
+      #{sa_remark,jdbcType=VARCHAR}, #{companyId,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 
+      #{creatorId,jdbcType=INTEGER}, #{updateTime,jdbcType=TIMESTAMP}, #{updaterId,jdbcType=INTEGER}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.transfers.po.SaleDown" >
+    <selectKey  resultType="java.lang.Long" keyProperty="id">
+      SELECT LAST_INSERT_ID() AS ID
+    </selectKey>
+    insert into saledown
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="sa_code != null" >
+        sa_code,
+      </if>
+      <if test="sa_customeruu != null" >
+        sa_customeruu,
+      </if>
+      <if test="sa_custid != null" >
+        sa_custid,
+      </if>
+      <if test="sa_custcode != null" >
+        sa_custcode,
+      </if>
+      <if test="sa_custname != null" >
+        sa_custname,
+      </if>
+      <if test="sa_date != null" >
+        sa_date,
+      </if>
+      <if test="sa_toplace != null" >
+        sa_toplace,
+      </if>
+      <if test="sa_currency != null" >
+        sa_currency,
+      </if>
+      <if test="sa_rate != null" >
+        sa_rate,
+      </if>
+      <if test="sa_selleruu != null" >
+        sa_selleruu,
+      </if>
+      <if test="sa_sellerid != null" >
+        sa_sellerid,
+      </if>
+      <if test="sa_seller != null" >
+        sa_seller,
+      </if>
+      <if test="sa_sellercode != null" >
+        sa_sellercode,
+      </if>
+      <if test="sa_custcontact != null" >
+        sa_custcontact,
+      </if>
+      <if test="sa_custcontactuu != null" >
+        sa_custcontactuu,
+      </if>
+      <if test="sa_custmobile != null" >
+        sa_custmobile,
+      </if>
+      <if test="sa_pocode != null" >
+        sa_pocode,
+      </if>
+      <if test="b2b_pu_id != null" >
+        b2b_pu_id,
+      </if>
+      <if test="sa_printstatus != null" >
+        sa_printstatus,
+      </if>
+      <if test="sa_printstatuscode != null" >
+        sa_printstatuscode,
+      </if>
+      <if test="sa_attach != null" >
+        sa_attach,
+      </if>
+      <if test="sa_status != null" >
+        sa_status,
+      </if>
+      <if test="sa_statuscode != null" >
+        sa_statuscode,
+      </if>
+      <if test="sa_remark != null" >
+        sa_remark,
+      </if>
+      <if test="companyId != null" >
+        companyId,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
+      <if test="creatorId != null" >
+        creatorId,
+      </if>
+      <if test="updateTime != null" >
+        updateTime,
+      </if>
+      <if test="updaterId != null" >
+        updaterId,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="sa_code != null" >
+        #{sa_code,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_customeruu != null" >
+        #{sa_customeruu,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custid != null" >
+        #{sa_custid,jdbcType=INTEGER},
+      </if>
+      <if test="sa_custcode != null" >
+        #{sa_custcode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custname != null" >
+        #{sa_custname,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_date != null" >
+        #{sa_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sa_toplace != null" >
+        #{sa_toplace,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_currency != null" >
+        #{sa_currency,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_rate != null" >
+        #{sa_rate,jdbcType=DOUBLE},
+      </if>
+      <if test="sa_selleruu != null" >
+        #{sa_selleruu,jdbcType=INTEGER},
+      </if>
+      <if test="sa_sellerid != null" >
+        #{sa_sellerid,jdbcType=INTEGER},
+      </if>
+      <if test="sa_seller != null" >
+        #{sa_seller,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_sellercode != null" >
+        #{sa_sellercode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custcontact != null" >
+        #{sa_custcontact,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custcontactuu != null" >
+        #{sa_custcontactuu,jdbcType=INTEGER},
+      </if>
+      <if test="sa_custmobile != null" >
+        #{sa_custmobile,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_pocode != null" >
+        #{sa_pocode,jdbcType=VARCHAR},
+      </if>
+      <if test="b2b_pu_id != null" >
+        #{b2b_pu_id,jdbcType=INTEGER},
+      </if>
+      <if test="sa_printstatus != null" >
+        #{sa_printstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_printstatuscode != null" >
+        #{sa_printstatuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_attach != null" >
+        #{sa_attach,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_status != null" >
+        #{sa_status,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_statuscode != null" >
+        #{sa_statuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_remark != null" >
+        #{sa_remark,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="creatorId != null" >
+        #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updaterId != null" >
+        #{updaterId,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.transfers.po.SaleDown" >
+    update saledown
+    <set >
+      <if test="sa_code != null" >
+        sa_code = #{sa_code,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_customeruu != null" >
+        sa_customeruu = #{sa_customeruu,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custid != null" >
+        sa_custid = #{sa_custid,jdbcType=INTEGER},
+      </if>
+      <if test="sa_custcode != null" >
+        sa_custcode = #{sa_custcode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custname != null" >
+        sa_custname = #{sa_custname,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_date != null" >
+        sa_date = #{sa_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sa_toplace != null" >
+        sa_toplace = #{sa_toplace,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_currency != null" >
+        sa_currency = #{sa_currency,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_rate != null" >
+        sa_rate = #{sa_rate,jdbcType=DOUBLE},
+      </if>
+      <if test="sa_selleruu != null" >
+        sa_selleruu = #{sa_selleruu,jdbcType=INTEGER},
+      </if>
+      <if test="sa_sellerid != null" >
+        sa_sellerid = #{sa_sellerid,jdbcType=INTEGER},
+      </if>
+      <if test="sa_seller != null" >
+        sa_seller = #{sa_seller,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_sellercode != null" >
+        sa_sellercode = #{sa_sellercode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custcontact != null" >
+        sa_custcontact = #{sa_custcontact,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_custcontactuu != null" >
+        sa_custcontactuu = #{sa_custcontactuu,jdbcType=INTEGER},
+      </if>
+      <if test="sa_custmobile != null" >
+        sa_custmobile = #{sa_custmobile,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_pocode != null" >
+        sa_pocode = #{sa_pocode,jdbcType=VARCHAR},
+      </if>
+      <if test="b2b_pu_id != null" >
+        b2b_pu_id = #{b2b_pu_id,jdbcType=INTEGER},
+      </if>
+      <if test="sa_printstatus != null" >
+        sa_printstatus = #{sa_printstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_printstatuscode != null" >
+        sa_printstatuscode = #{sa_printstatuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_attach != null" >
+        sa_attach = #{sa_attach,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_status != null" >
+        sa_status = #{sa_status,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_statuscode != null" >
+        sa_statuscode = #{sa_statuscode,jdbcType=VARCHAR},
+      </if>
+      <if test="sa_remark != null" >
+        sa_remark = #{sa_remark,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        companyId = #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null" >
+        createTime = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="creatorId != null" >
+        creatorId = #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updaterId != null" >
+        updaterId = #{updaterId,jdbcType=INTEGER},
+      </if>
+    </set>
+    where sa_id = #{sa_id,jdbcType=INTEGER}
+  </update>
+
+  <select id="findProductBySpec" resultMap="productMap">
+    select * from product where pr_spec=#{spec} and companyid =#{companyid}
+  </select>
+
+
+  <insert id="batchInsert" parameterType="java.util.List" >
+    insert into saledowndetail (sd_said, sd_detno,sd_code,
+    sd_prodid, sd_prodcode, sd_prodspec,sd_orispeccode,sp_produnit,
+    sd_custorispeccode,sd_custprodcode,sd_custproddetail,sd_custprodspec
+    sd_qty,
+    sd_price, sd_total, sd_taxrate,
+    sd_delivery,
+    sd_remark,
+    companyId,createTime,b2b_pd_id)
+    values
+    <foreach collection="list" item="item" index="index" open="" close="" separator=",">
+      (
+      #{item.sd_said,jdbcType=INTEGER}, #{item.sd_detno,jdbcType=INTEGER},#{item.sd_code,jdbcType=VARCHAR},
+      #{item.sd_prodid,jdbcType=INTEGER}, #{item.sd_prodcode,jdbcType=VARCHAR},
+      #{item.sd_prodspec,jdbcType=VARCHAR},#{item.sd_orispeccode,jdbcType=VARCHAR},#{item.sp_produnit,jdbcType=VARCHAR},
+      #{item.sd_custorispeccode,jdbcType=VARCHAR},#{item.sd_custprodcode,jdbcType=VARCHAR},#{item.sd_custproddetail,jdbcType=VARCHAR},
+      #{item.sd_custprodspec,jdbcType=VARCHAR},
+      #{item.sd_qty,jdbcType=DOUBLE},
+      #{item.sd_price,jdbcType=DOUBLE}, #{item.sd_total,jdbcType=DOUBLE}, #{item.sd_taxrate,jdbcType=DOUBLE},
+     #{item.sd_delivery,jdbcType=TIMESTAMP},
+     #{item.sd_remark,jdbcType=VARCHAR},
+      #{item.companyId,jdbcType=INTEGER},#{item.createTime,jdbcType=TIMESTAMP}, #{item.b2b_pd_id}
+      )
+    </foreach>
+  </insert>
+
+  <update id="batchUpdateClose">
+    update saledown set sa_status='已关闭', sa_statuscode='CLOSE' where
+    b2b_pd_id in #{data} and companyid =#{companyid}
+  </update>
+
+  <update id="batchUpdateResClose">
+    update saledown set sa_status='已审核',sa_statuscode='AUDITED' where
+     b2b_pd_id in #{data} and companyid =#{companyid}
+  </update>
+
+  <select id="getCustomer" resultMap="customerMap">
+    select * from customer where cu_uu=#{uu} and companyid=#{companyid}
+  </select>
+
+  <resultMap id="customerMap" type="com.usoftchina.saas.document.entities.Customer">
+    <id column="cu_id" jdbcType="INTEGER" property="id" />
+    <result column="cu_code" jdbcType="VARCHAR" property="cu_code" />
+    <result column="cu_shortname" jdbcType="VARCHAR" property="cu_shortname" />
+    <result column="cu_name" jdbcType="VARCHAR" property="cu_name" />
+    <result column="cu_uu" jdbcType="VARCHAR" property="cu_uu" />
+    <result column="cu_type" jdbcType="VARCHAR" property="cu_type" />
+    <result column="cu_begindate" jdbcType="TIMESTAMP" property="cu_begindate" />
+    <result column="cu_beginaramount" jdbcType="DOUBLE" property="cu_beginaramount" />
+    <result column="cu_beginprerecamount" jdbcType="DOUBLE" property="cu_beginprerecamount" />
+    <result column="cu_promisedays" jdbcType="DOUBLE" property="cu_promisedays" />
+    <result column="cu_taxrate" jdbcType="DOUBLE" property="cu_taxrate" />
+    <result column="cu_sellerid" jdbcType="INTEGER" property="cu_sellerid" />
+    <result column="cu_sellercode" jdbcType="VARCHAR" property="cu_sellercode" />
+    <result column="cu_sellername" jdbcType="VARCHAR" property="cu_sellername" />
+    <result column="cu_credit" jdbcType="DOUBLE" property="cu_credit" />
+    <result column="cu_status" jdbcType="VARCHAR" property="cu_status" />
+    <result column="cu_statuscode" jdbcType="VARCHAR" property="cu_statuscode" />
+    <result column="companyid" jdbcType="INTEGER" property="companyId" />
+    <result column="updaterid" jdbcType="INTEGER" property="updaterId" />
+    <result column="updatetime" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="cu_text1" jdbcType="VARCHAR" property="cu_text1" />
+    <result column="cu_text2" jdbcType="VARCHAR" property="cu_text2" />
+    <result column="cu_text3" jdbcType="VARCHAR" property="cu_text3" />
+    <result column="cu_text4" jdbcType="VARCHAR" property="cu_text4" />
+    <result column="cu_text5" jdbcType="VARCHAR" property="cu_text5" />
+    <result column="cu_leftamount" jdbcType="DOUBLE" property="cu_leftamount" />
+    <result column="cu_recamount" jdbcType="DOUBLE" property="cu_recamount" />
+    <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" />
+  </resultMap>
+</mapper>

+ 2 - 1
base-servers/auth/auth-client/src/main/java/com/usoftchina/saas/auth/client/interceptor/AuthRestInterceptor.java

@@ -5,6 +5,7 @@ import com.usoftchina.saas.auth.client.configuration.AuthConfig;
 import com.usoftchina.saas.auth.common.jwt.JwtHelper;
 import com.usoftchina.saas.auth.common.jwt.JwtInfo;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,7 +45,7 @@ public class AuthRestInterceptor extends HandlerInterceptorAdapter {
                 //取最后一个元素
                 token = headers.nextElement();
             }
-            if (null != token) {
+            if (!StringUtils.isEmpty(token)) {
                 JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
                 BaseContextHolder.setAppId(infoFromToken.getAppId());
                 BaseContextHolder.setUserId(infoFromToken.getUserId());

+ 7 - 0
base-servers/gateway-server/src/main/resources/application.yml

@@ -120,6 +120,12 @@ spring:
         - Path=/api/operation/**
         filters:
         - RewritePath=/api/operation/(?<segment>.*), /$\{segment}
+      - id: TRANSFERS-SERVER
+        uri: lb://TRANSFERS-SERVER
+        predicates:
+        - Path=/api/open/**
+        filters:
+        - RewritePath=/api/open/(?<segment>.*), /$\{segment}
   redis:
     host: 10.1.81.62
     port: 6379
@@ -206,6 +212,7 @@ auth:
     - /api/account/role/list/**
     - /api/account/account/share/join
     - /api/oper_auth/authorize
+    - /api/open/**
   cookie:
     name: uid
     secret-key: 0taQcW073Z7G628g5H

+ 11 - 11
frontend/operation-web/app/view/auth/ReLoginController.js

@@ -54,17 +54,17 @@ Ext.define('saas.view.auth.ReLoginController', {
 
             saas.util.State.set('session', session.data);
 
-            let sessionStr = session.data ? JSON.stringify(session.data) : '';
-
-            if (typeof require === 'function') {
-                let ipc = require('electron').ipcRenderer;
-                ipc.send('session.change', sessionStr);
-            }else {
-                //解析session 把data作为sessionStr
-                sessionStr = session ? JSON.stringify(session.data) : '';
-                const frame = window.frames[window.frames.length - 1];
-                frame.postMessage(sessionStr, '*');
-            }
+            // let sessionStr = session.data ? JSON.stringify(session.data) : '';
+
+            // if (typeof require === 'function') {
+            //     let ipc = require('electron').ipcRenderer;
+            //     ipc.send('session.change', sessionStr);
+            // }else {
+            //     //解析session 把data作为sessionStr
+            //     sessionStr = session ? JSON.stringify(session.data) : '';
+            //     const frame = window.frames[window.frames.length - 1];
+            //     frame.postMessage(sessionStr, '*');
+            // }
             return session;
         })
         .catch(function (error) {

+ 3 - 0
frontend/saas-portal-web/src/components/conenter/addenterprise.vue

@@ -187,6 +187,7 @@ import { setTimeout, clearTimeout } from 'timers';
             //取消添加企业
             tjquxiao(){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
                 this.$router.push({name:'company',}); 
             },
             //检测企业名称1
@@ -401,6 +402,7 @@ import { setTimeout, clearTimeout } from 'timers';
                             setTimeout(()=>{
                                 this.$router.push({name:'company'});
                                 document.documentElement.scrollTop = 0;
+                                window.pageYOffset = 0;
                             },3000)
                         } else {
                             this.$message.error(res.data.message);
@@ -494,6 +496,7 @@ import { setTimeout, clearTimeout } from 'timers';
                                 this.isadd = true;//添加成功弹窗
                                 setTimeout(()=>{
                                     document.documentElement.scrollTop = 0;
+                                    window.pageYOffset = 0;
                                     let session = Session.get();
                                     session.account.realname = name;
                                     session.account.email = email;

+ 3 - 0
frontend/saas-portal-web/src/components/conenter/company.vue

@@ -220,6 +220,7 @@
             //分页
             handleCurrentChange(val){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
                 this.pagingtion(val,this.size);
             },
             //分页函数
@@ -383,12 +384,14 @@
             //查看企业详情
             getEnterpriseInfo(d){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
                 window.sessionStorage.setItem('content',JSON.stringify(d))
                 this.$router.push({path:'/details'});
             },
              //添加企业
             addEnterprise(){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
             },
             //关闭弹窗
             guanbitc(){

+ 3 - 0
frontend/saas-portal-web/src/components/conenter/details.vue

@@ -141,6 +141,7 @@ import Session from '@/utils/session'
             //修改企业信息
             xiugaiqiye(){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
                 this.modify = false;
                 setTimeout(()=>{
                     this.selects()
@@ -170,6 +171,7 @@ import Session from '@/utils/session'
             // 取消修改
             quxiaoxiugai(){
                 document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
                 this.modify = true;
             },
             // 保存修改
@@ -199,6 +201,7 @@ import Session from '@/utils/session'
                     .then(res=>{
                         if (res.data.success) {
                             document.documentElement.scrollTop = 0;
+                            window.pageYOffset = 0;
                             this.modify = true;
                             let session = Session.get();
                             session.account.email = email;

+ 20 - 11
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -35,10 +35,10 @@
                 </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation" style="position: absolute;left: 35%;">
             <ul @click="gohome" id="nav" class="nav navbar-nav menu">
-                <li><router-link to="/home"><a @click="setTurnHome"><span style="color: white">首页</span></a></router-link></li>
-                <li><a href="#" @click="feature"><span>特色</span></a></li>
-                <li><a href="#" @click="service"><span>功能</span></a></li>
-                <li><a href="#" @click="download"><span>下载</span></a></li>
+                <li><router-link to="/home"><a @click="home"><span style="color: white">首页</span></a></router-link></li>
+                <li><a class="xs" @click="feature"><span>特色</span></a></li>
+                <li><a class="xs" @click="service"><span>功能</span></a></li>
+                <li><a class="xs" @click="download"><span>下载</span></a></li>
                 <!-- <router-link to="/invitation"><a ><span style="color: white">邀请</span></a></router-link> -->
                 <li>
                     <el-menu  
@@ -240,7 +240,8 @@ import { setTimeout } from 'timers';
         created() {
             if (!this.mytoken) {
                 this.$router.push({path:'/home'})
-            }
+            };
+            this.scrollout();
         },
         mounted(){
             let phone = this.mytoken.mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
@@ -344,7 +345,7 @@ import { setTimeout } from 'timers';
             },
             // 分页
             handleCurrentChange(val) {
-                document.documentElement.scrollTop = 0;
+                this.scrollout();
                 this.pagingtion(val,this.size);
             },
             //分页函数
@@ -446,27 +447,35 @@ import { setTimeout } from 'timers';
             navproblem(){
                 this.$router.push({name: 'Home', params: {isporblem: false}})
                 this.$store.commit('problemfalse');
-                document.documentElement.scrollTop = 0;
+                this.scrollout();
+                this.setTurnHome();
+            },
+            home(){
+                this.scrollout();
                 this.setTurnHome();
             },
             // 特色
             feature(){
-                this.$router.push({name: 'Home', params: {isfeature: 690}});
+                this.$router.push({name: 'Home', params: {isfeature: 'feature'}});//690
                 this.setTurnHome();
             },
             //功能
             service(){
-                this.$router.push({name: 'Home', params: {isfeature: 3530}});
+                this.$router.push({name: 'Home', params: {isfeature: 'service'}});//3530
                 this.setTurnHome();
             },
             // 下载
             download(){
-                this.$router.push({name: 'Home', params: {isfeature: 4190}});
+                this.$router.push({name: 'Home', params: {isfeature: 'download'}});//4190
                 this.setTurnHome();
             },
             gohome(e){
                 this.$store.commit('problemtrue')
-                // this.isproblem = true
+            },
+            scrollout(){
+                document.documentElement.scrollTop = 0;
+                window.pageYOffset = 0;
+                document.body.scrollTop = 0;
             },
             //内容不足500固定高度
             boxheight(){

+ 114 - 53
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -1,5 +1,5 @@
 <template>
-    <div id="scroll">
+    <div id="scroll" @mousewheel="scrollout">
       <div class="top-nav">
         <div class="container">
           <ul>
@@ -22,7 +22,7 @@
 								<span id="user-info">{{account.realname || account.username}} | </span>
                 <span @click="loginout">[退出]</span>
 							</span>
-              <router-link to="/enterprise"><a><span @click="home" style="color: white">账户中心</span></a></router-link>
+              <router-link to="/enterprise"><a><span style="color: white">账户中心</span></a></router-link>
             </li>
           </ul>
         </div>
@@ -44,7 +44,8 @@
             </div>
         <div class="collapse navbar-collapse navbar-right" role="navigation" style="position: absolute;left: 35%;">
           <ul @click="gohome" id="nav" class="nav navbar-nav menu">
-            <li><a href="#" @click="setTurnHome"><span>首页</span></a></li>
+            <!-- <li><a href="#" @click="setTurnHome"><span>首页</span></a></li> -->
+            <li class="xs"><a @click="home"><span>首页</span></a></li>
             <li class="xs"><a @click="feature2"><span>特色</span></a></li>
             <li class="xs"><a @click="service2"><span>功能</span></a></li>
             <li class="xs"><a @click="download"><span>下载</span></a></li>
@@ -110,7 +111,7 @@
       <!-- End Home SliderEnd==================================== -->
 
       <!-- 特色 -->
-      <section id="feature">
+      <section id="feature" ref="feature">
         <div class="container ts-worp">
           <div class="section-title text-center" style="margin-bottom: 50px">
             <p class="ts-title">我们的特色</p>
@@ -255,7 +256,7 @@
       </section>
       <!-- end Service section -->
       <!-- 下载 -->
-      <section>
+      <section id="download">
         <div class="container ts-worp" style="padding-top: 30px;">
           <div class="section-title text-center" style="margin-bottom: 50px">
             <p class="ts-title">下载</p>
@@ -299,6 +300,7 @@
         isexperience: false,
         isproblem: true,//常见问题
         isfeature:this.$route.params.isfeature,
+        timer:null,
       }
     },
     components: {
@@ -350,14 +352,56 @@
         }
       })
     },
+    beforeDestroy(){
+      clearInterval(this.timer);
+      window.removeEventListener("scroll",this.handleFun);
+    },
     mounted() {
-      this.clientId = Math.random().toString(36).substr(2)
+      this.clientId = Math.random().toString(36).substr(2);
       // 从本地加载已经登录的信息
-      this.account = Session.getAccount()
-      document.documentElement.scrollTop = this.isfeature;
-      $(window).scroll(function() {
-        let Y = $(window).scrollTop();
-        if (Y >= 500 && Y <= 1500) {
+      this.account = Session.getAccount();
+      switch (this.isfeature) {
+        case 'feature':
+          this.feature2()
+          break;
+        case 'service':
+          this.service2()
+          break;
+        case 'download':
+          this.download()
+          break;
+      };
+      // document.documentElement.scrollTop = this.isfeature;
+      window.addEventListener("scroll",this.handleFun);
+        // this.scrollH = Math.floor($('#feature').offset().top) - 260;
+    },
+    computed: {
+      setTokenPage() {
+        return this.$url.web + '/set-token.html'
+      },
+      ssoPage() {
+        if (this.isLogin) {
+          return this.$url.sso + '/sassLogin?appId=sp&baseUrl=' +
+            encodeURIComponent(this.$url.api + '/api/auth/sso/callback/' + this.clientId)
+        }
+        if (this.isRegister) {
+          return this.$url.sso + '/sassLogin/register?appId=sp&baseUrl=' +
+            encodeURIComponent(this.$url.api + '/api/auth/sso/callback/' + this.clientId)
+        }
+      },
+      getnewproblem() {
+        return this.$store.state.isproblem;
+      },
+    },
+    methods: {
+      handleFun(){
+        let top = $(window).scrollTop();
+        let Y = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
+        if ($('#feature').offset()) {
+          // var scrollH = Math.floor($('#feature').offset().top) - 260;//500
+          var scrollH = Math.floor(this.$refs.feature.offsetTop) - 260;//500
+        }
+        if (Y >= scrollH && Y <= scrollH + 1000) {
           $(".animate1").stop();
           $(".animate1").animate({
             top:'0px',
@@ -370,7 +414,7 @@
             opacity:'0'
           },1000);
         };
-        if (Y > 1200 && Y < 2200) {
+        if (Y > scrollH + 700 && Y < scrollH + 1700) {
           $(".animate2").stop();
           $(".animate2").animate({
             top:'0px',
@@ -383,7 +427,7 @@
             opacity:'0'
           },1000);
         };
-        if (Y > 1900 && Y < 2900) {
+        if (Y > scrollH + 1400 && Y < scrollH + 2400) {
           $(".animate3").stop();
           $(".animate3").animate({
             top:'0px',
@@ -406,7 +450,7 @@
             opacity:'0'
           },1000);
         };
-        if (Y > 2600 && Y < 3600) {
+        if (Y > scrollH + 2100 && Y < scrollH + 3100) {
           $(".animate4").stop();
           $(".animate4").animate({
             top:'0px',
@@ -429,29 +473,6 @@
             opacity:'0'
           },1000);
         };
-      })
-    },
-    computed: {
-      setTokenPage() {
-        return this.$url.web + '/set-token.html'
-      },
-      ssoPage() {
-        if (this.isLogin) {
-          return this.$url.sso + '/sassLogin?appId=sp&baseUrl=' +
-            encodeURIComponent(this.$url.api + '/api/auth/sso/callback/' + this.clientId)
-        }
-        if (this.isRegister) {
-          return this.$url.sso + '/sassLogin/register?appId=sp&baseUrl=' +
-            encodeURIComponent(this.$url.api + '/api/auth/sso/callback/' + this.clientId)
-        }
-      },
-      getnewproblem() {
-        return this.$store.state.isproblem;
-      },
-    },
-    methods: {
-      home() {
-        document.documentElement.scrollTop = 0;
       },
       listenOnCallback() {
         const me = this
@@ -507,18 +528,15 @@
           me.isRegister = false
         })
       },
-      // 下载1
+      // 下载
       downloadOne(){
         let url = 'https://saas-assets.usoftchina.com/UsoftchinaSaasClient_setup.exe';
         let alink = document.createElement("a");
         alink.style.display = 'none';
-        // let blob = new Blob([url]);
-        // alink.href = URL.createObjectURL(blob);
         alink.href = url;//下载地址
         // alink.download = "pic"; //文件名(自定义)
         document.body.appendChild(alink);
         alink.click();
-        // URL.revokeObjectURL(alink.href);
       },
       //体验
       experience(){
@@ -579,28 +597,71 @@
       //常见问题
       navproblem(){
         this.$store.commit('problemfalse');
-        document.documentElement.scrollTop = 0;
+        clearInterval(this.timer);
+        this.animate(0);
+      },
+      home() {
+        clearInterval(this.timer);
+        this.animate(0);
       },
       //特色
       feature2(){
-        document.documentElement.scrollTop = 690;
-        this.setTurnHome();
+        clearInterval(this.timer);
+        setTimeout(()=>{
+          let featH = Math.floor($('#feature').offset().top) - 70;
+          this.animate(featH);//690
+        },10);
       },
       //功能
       service2(){
-        document.documentElement.scrollTop = 3530;
-        this.setTurnHome();
+        clearInterval(this.timer);
+        setTimeout(()=>{
+          let servH = Math.floor($('#service').offset().top) - 129;
+          this.animate(servH);//3530
+        },10);
       },
       // 下载
       download(){
-        document.documentElement.scrollTop = 4190;
-        // $('html,body').animate({
-        //       scrollTop: 4400
-        // },2000);
-        this.setTurnHome();
+        // document.documentElement.scrollTop = 4190;
+        // window.scrollTo(0,4190);
+        clearInterval(this.timer);
+        setTimeout(()=>{
+          let dowH = Math.floor($('#download').offset().top) - 100;
+          this.animate(dowH);
+        },10)
+      },
+      //添加鼠标滚轮事件,鼠标滚动的时候清除定时器,否则无法滚动
+      scrollout(){
+        clearInterval(this.timer);
+      },
+      //滚动动画封装
+      animate(target) {
+        clearInterval(this.timer);
+        this.timer = setInterval(function () {
+            var leader = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
+            var step = (target - leader) / 10;
+            step = step > 0 ? Math.ceil(step) : Math.floor(step);
+            leader = leader + step;
+            document.documentElement.scrollTop++;
+            if(window.pageYOffset){
+              window.pageYOffset = leader;
+          }else if(document.documentElement.scrollTop ){
+              document.documentElement.scrollTop = leader;
+          }else if(document.body.scrolltop){
+              document.body.scrolltop = leader;
+          }
+            if (leader == target) {
+                clearInterval(this.timer);
+            }
+        }, 5);
       },
-      gohome(e){
-        this.$store.commit('problemtrue')
+      gohome(ev){
+        var ev = ev || window.event;
+        if (ev.target.childNodes[0].data == '帮助中心') {
+          return
+        } else {
+          this.$store.commit('problemtrue')
+        }
         // this.isproblem = true
       }
     }

+ 2 - 1
frontend/saas-portal-web/src/components/conenter/invitation.vue

@@ -87,7 +87,6 @@ import { log } from 'util';
         },
         methods:{
             browserRedirect() {
-                let param = this.getUrlParam('param');
                 var sUserAgent = navigator.userAgent.toLowerCase();
                 var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
                 var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
@@ -99,6 +98,8 @@ import { log } from 'util';
                 var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
                 if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
                     // 移动端访问跳转到移动端页面
+                    let index = window.location.href.indexOf('=');
+                    let param=window.location.href.substr(index+1);
                     window.location.href = 'invitation_mobile_join.html?param='+param
                 } else {
                     this.param();//获取pc端页面参数

+ 1 - 1
frontend/saas-portal-web/src/components/conenter/problem.vue

@@ -20,7 +20,7 @@
                       <span class="left bz-yuandian"></span>
                       <!-- <span class="left bz-txttitle">{{d.title}}</span> -->
                       <span class="left bz-txttitle" v-html="keyword(d.title,searchVal)"></span>
-                      <img  class="right bz-copy" :class="d.isshow ? 'rotates' : 'norotate'" src="/static/img/Triangle Copy 4.png" alt="">
+                      <img  class="right bz-copy" :class="d.isshow ? 'rotates' : 'norotate'" src="/static/img/TriangleCopy.png" alt="">
                     </div>
                     <div ref="title" class="Text-content" :class="d.isshow ? 'dispays' : 'hides'">
                       <p ref="text">{{d.centent}}</p>

+ 5 - 2
frontend/saas-portal-web/src/components/footer/footer.vue

@@ -12,7 +12,7 @@
 					<div class="link">
 						<ul>
 							<li><span>产品</span></li>
-							<li><a href="#">U企云服</a></li>
+							<li><a href="#" @click="gohome">U企云服</a></li>
 							<li><a href="https://mall.usoftchina.com/" target="_blank">U软商城</a></li>
 							<li><a href="https://fin.yitoa-fintech.com/" target="_blank">U智融</a></li>
 							<li><a href="https://zb.usoftchina.com/" target="_blank">闯客网</a></li>
@@ -67,7 +67,10 @@
 				this.$router.push({name: 'Home', params: {isporblem: false}})
 				this.$store.commit("problemfalse")
 				document.documentElement.scrollTop = 0;
-			}
+			},
+			gohome(){
+				this.$store.commit("problemtrue")
+			},
 		}
     }
 </script>

+ 3 - 3
frontend/saas-portal-web/static/css/main.css

@@ -331,10 +331,10 @@ main > section {
 }
 .bz-yuandian {
     background: #FFCC01;
-    width: 16px;
-    height: 16px;
+    width: 14px;
+    height: 14px;
     border-radius: 50%;
-    margin: 4px 8px 0 0;
+    margin: 7px 8px 0 0;
 }
 .bz-right-conent li {
     border-bottom: 1px solid #E8ECEF;

+ 1 - 1
frontend/saas-web/app/model/report/RecDetail.js

@@ -4,7 +4,7 @@ Ext.define('saas.model.report.RecDetail', {
     fields: [
         { name: 'rd_date', type: 'string' },
         { name: 'rd_code', type: 'string' },
-        { name: 'rd_kind', type: 'date' },
+        { name: 'rd_kind', type: 'string' },
         { name: 'rd_sellername', type: 'string' },
         { name: 'rd_currency', type: 'string' },
         { name: 'rd_addrec', type: 'float' },

+ 6 - 1
frontend/saas-web/app/view/core/dbfind/ConDbfindTrigger.js

@@ -22,12 +22,15 @@ Ext.define('saas.view.core.form.field.ConDbfindTrigger', {
         dbType = me.dbType,
         dbfinds = me.dbfinds,
         name0 = dbfinds[0].to,
-        name1 = dbfinds[1].to;
+        name1 = dbfinds[1].to,
+        fieldLabel = me.fieldLabel;
 
         Ext.apply(me, {
             items: [Ext.Object.merge({
                 xtype: dbType,
                 name: name0,
+                fieldLabel: fieldLabel,
+                hideLabel: true,
                 allowBlank: allowBlank,
                 msgTarget: 'none',
                 bind: {
@@ -38,6 +41,8 @@ Ext.define('saas.view.core.form.field.ConDbfindTrigger', {
             }, me.mainFieldConfig), Ext.Object.merge({
                 xtype: 'textfield',
                 name: name1,
+                fieldLabel: fieldLabel,
+                hideLabel: true,
                 allowBlank: allowBlank,
                 readOnly: true,
                 defaultReadOnly: true,

+ 4 - 1
frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js

@@ -65,7 +65,10 @@ Ext.define('saas.view.core.dbfind.types.CustomerDbfindTrigger', {
         text: "汇率",
         xtype:'numbercolumn',
         dataIndex: "cr_rate",
-        width:80
+        width:110,
+        renderer: function (v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 6, false);
+        }
     }, {
         text: "业务员编号",
         dataIndex: "cu_sellercode",

+ 4 - 1
frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js

@@ -67,7 +67,10 @@ Ext.define('saas.view.core.dbfind.types.VendorDbfindTrigger', {
         text: "汇率",
         xtype:'numbercolumn',
         dataIndex: "cr_rate",
-        width:80
+        width:110,
+        renderer: function (v, m, r) {
+            return saas.util.BaseUtil.numberFormat(v, 6, false);
+        }
     }, {
         text: "采购员编号",
         dataIndex: "ve_buyercode",

+ 15 - 1
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -264,13 +264,27 @@ Ext.define('saas.view.core.form.FormPanel', {
     addItems: function (items) {
         let me = this;
         me.setBindFields(items);
-        let formItems = me.add(items);
+        let addItems = me.add(items);
+        let formItems = [];
+        
+        for(let i = 0; i < addItems.length; i++) {
+            let item = addItems[i];
+
+            if(item.getXTypes().split('/').indexOf('condbfindtrigger') != -1) {
+                let confields = item.items.items;
+                formItems.push(confields[0]);
+                formItems.push(confields[1]);
+            }else {
+                formItems.push(item); 
+            }
+        }
         let codeField = me.getForm().findField(me._codeField);
         if(codeField && !Ext.Array.findBy(formItems, function(i) {
             return i.name == me._codeField;
         })) {
             formItems.push(codeField);
         }
+
         me.formItems = formItems;
         return formItems;
     },

+ 4 - 0
frontend/saas-web/app/view/document/currencys/AddWindow.js

@@ -28,6 +28,8 @@ Ext.define('saas.view.document.currencys.AddWindow', {
                 xtype:'textfield',
                 name:'cr_name',
                 allowBlank:false,
+                regex:/^[A-Z]+$/,
+                regexText:'请输入大写英文字母',
                 fieldLabel:'币别',
                 maxLength: 20
             },{
@@ -37,6 +39,8 @@ Ext.define('saas.view.document.currencys.AddWindow', {
                 allowBlank:false,
                 fieldLabel:'汇率',
                 maxLength: 20,
+                minValue:0,
+                maxValue:99999999,
                 defaultValue: 1,
                 decimalPrecision: 6,
                 vtype: 'positiveNumber'

+ 2 - 2
frontend/saas-web/app/view/document/currencys/DataList.js

@@ -26,7 +26,7 @@ Ext.define('saas.view.document.currencys.DataList', {
             columns: [{
                 text: '币别',
                 dataIndex: 'cr_name',
-                flex: 1,
+                width:150,
                 renderer:function(a,b,c){
                     if(c.get('cr_standard')==1){
                         return a + '(本位币)'
@@ -36,7 +36,7 @@ Ext.define('saas.view.document.currencys.DataList', {
             },{
                 text: '默认汇率',
                 dataIndex: 'cr_rate',
-                flex: 1
+                width:150
             }],
             keyField:'id',
             reqUrl:'/api/document/currency/save',

+ 2 - 0
frontend/saas-web/app/view/document/currencys/Window.js

@@ -29,6 +29,8 @@ Ext.define('saas.view.document.currencys.Window', {
                 allowBlank:false,
                 fieldLabel:'汇率',
                 maxLength: 20,
+                minValue:0,
+                maxValue:99999999,
                 defaultValue: 1,
                 decimalPrecision: 6,
                 vtype: 'positiveNumber'

+ 1 - 1
frontend/saas-web/app/view/document/customer/FormPanel.js

@@ -142,7 +142,7 @@ Ext.define('saas.view.document.customer.FormPanel', {
                     from: 'cr_rate', to: 'cu_taxrate'
                 }],
                 defaultValue: {
-                    cu_currency: 'RMB',
+                    cu_currency: this.getViewModel().get('defaultCurrency'),
                     cu_taxrate: 1
                 },
                 supFieldConfig: {

+ 1 - 1
frontend/saas-web/app/view/document/vendor/FormPanel.js

@@ -148,7 +148,7 @@ Ext.define('saas.view.document.vendor.FormPanel', {
                     from: 'cr_rate', to: 've_taxrate'
                 }],
                 defaultValue: {
-                    ve_currency: 'RMB',
+                    ve_currency: this.getViewModel().get('defaultCurrency'),
                     ve_taxrate: 1
                 },
                 supFieldConfig: {

+ 3 - 3
frontend/saas-web/app/view/money/payBalance/FormPanel.js

@@ -297,9 +297,9 @@ Ext.define('saas.view.money.payBalance.FormPanel', {
                         store: null,
                         valueField: "value",
                         xtype: "oriOrderMutiDbfindTrigger",
-                        listeners: {
-                            beforetriggerclick: 'vendnamechange'
-                        }
+                        // listeners: {
+                        //     beforetriggerclick: 'vendnamechange'
+                        // }
                     },
 
                 }, {

+ 18 - 19
frontend/saas-web/app/view/money/payBalance/FormPanelController.js

@@ -80,7 +80,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                         return false;
                     }
                     Ext.apply(f, {
-                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid <> 0 AND (  sl_kind IN ( '出货单', '销售退货单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
+                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid <> 0 AND (  sl_kind IN ( '采购验收单','采购验退单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
                         ") and sl_namount<>0 "
                     });
                 },
@@ -99,7 +99,7 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
                         return false;
                     }
                     Ext.apply(f, {
-                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid <> 0 AND (  sl_kind IN ( '出货单', '销售退货单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
+                        defaultCondition: "sl_vendid = "+pb_vendid+" and sl_currency ='"+pb_currency+"' AND sl_custid <> 0 AND (  sl_kind IN ( '采购验收单','采购验退单' ) OR ( sl_kind = '期初余额' AND sl_ym = (select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid) ) "+
                         ") and sl_namount<>0 "
                     });
                 }
@@ -240,23 +240,22 @@ Ext.define('saas.view.money.payBalance.FormPanelController', {
             me.save();
         }
     },
-    vendnamechange:function(dbfindtrigger){
-        var me = this,
-            viewModel = me.getViewModel(),
-            c = viewModel.get('pb_vendname_change'),
-            pb_currency = viewModel.get('pb_currency');
-            console.log('vendnamechange');
-        if(c!=null&&c!=''){
-            c = ' and sl_vendid='+c;
-        }else{
-            c ='';
-        }
-        if(pb_currency!=null&&pb_currency!='') {
-            c = ' and sl_currency='+pb_currency+"'";
-        }
-        dbfindtrigger.defaultCondition="((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
-        "(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0" + c
-    },
+    // vendnamechange:function(dbfindtrigger){
+    //     var me = this,
+    //         viewModel = me.getViewModel(),
+    //         c = viewModel.get('pb_vendname_change'),
+    //         pb_currency = viewModel.get('pb_currency');
+    //     if(c!=null&&c!=''){
+    //         c = ' and sl_vendid='+c;
+    //     }else{
+    //         c ='';
+    //     }
+    //     if(pb_currency!=null&&pb_currency!='') {
+    //         c = ' and sl_currency='+pb_currency+"'";
+    //     }
+    //     dbfindtrigger.defaultCondition="((sl_kind in ('采购验收单','采购验退单')) or (sl_kind='期初余额' and sl_ym="+
+    //     "(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid))) and sl_namount<>0" + c
+    // },
     myInitCopyData: function(formData) {
         var main = formData.main;
         main.pb_auditman = '';

+ 95 - 74
frontend/saas-web/app/view/money/verification/FormPanel.js

@@ -48,7 +48,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 items = FormUtil.initItems(items);
                 items = FormUtil.applyCusMainItemConfig(items, cfg);
                 items = FormUtil.applyCusDetailItemConfig(items, cfg);
-                
+
                 me.configItems = items;
 
                 items = FormUtil.applyDefaultItems(me, items);
@@ -180,11 +180,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         xtype: 'numbercolumn',
                         dataIndex: "vd_amount",
                         width: 110,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -193,11 +193,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         dataIndex: "sl_yamount",
                         width: 120,
                         ignore: true,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -206,11 +206,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         dataIndex: "sl_namount",
                         width: 120,
                         ignore: true,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -223,11 +223,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 2
                         },
                         allowBlank: false,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -324,11 +324,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         xtype: 'numbercolumn',
                         dataIndex: "vcd_amount",
                         width: 110,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -337,11 +337,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         dataIndex: "sl_yamount",
                         width: 120,
                         ignore: true,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -350,11 +350,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         dataIndex: "sl_namount",
                         width: 120,
                         ignore: true,
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -367,11 +367,11 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             xtype: "numberfield",
                             decimalPrecision: 2
                         },
-                        renderer: function(v, m, r) {
+                        renderer: function (v, m, r) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         },
                         summaryType: 'sum',
-                        summaryRenderer: function(v, d, f, m) {
+                        summaryRenderer: function (v, d, f, m) {
                             return saas.util.BaseUtil.numberFormat(v, 2, true);
                         }
                     }, {
@@ -531,13 +531,14 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         allowBlank: false,
                         dbType: 'currencyDbfindTrigger',
                         dbfinds: [{
-                            from: 'cr_name', to: 'vc_currency'
+                            from: 'cr_name',
+                            to: 'vc_currency'
                         }, {
-                            from: 'cr_rate', to: 'vc_rate'
+                            from: 'cr_rate',
+                            to: 'vc_rate'
                         }],
-                        // defaultValue: {
-                        //     vc_currency: 'RMB',
-                        //     vc_rate: 1
+                        // listeners: {
+                        //     change: 'clearDetails'
                         // },
                         supFieldConfig: {
                             xtype: 'numberfield',
@@ -546,7 +547,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
-                    },{
+                    }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -586,19 +587,20 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         defaultValue: new Date(),
                         allowBlank: false,
                         name: 'vc_date'
-                    },  {
+                    }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
                         allowBlank: false,
                         dbType: 'currencyDbfindTrigger',
                         dbfinds: [{
-                            from: 'cr_name', to: 'vc_currency'
+                            from: 'cr_name',
+                            to: 'vc_currency'
                         }, {
-                            from: 'cr_rate', to: 'vc_rate'
+                            from: 'cr_rate',
+                            to: 'vc_rate'
                         }],
-                        // defaultValue: {
-                        //     vc_currency: 'RMB',
-                        //     vc_rate: 1
+                        // listeners: {
+                        //     change: 'clearDetails'
                         // },
                         supFieldConfig: {
                             xtype: 'numberfield',
@@ -607,7 +609,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
-                    },{
+                    }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -641,7 +643,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         fieldLabel: '客户名称',
                         xtype: 'customerDbfindTrigger',
                         name: 'vc_custname',
-                        allowBlank: false,
+                        allowBlank: false
                     }, {
                         xtype: 'hidden',
                         name: 'vc_vendid',
@@ -657,7 +659,18 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         xtype: "vendorDbfindTrigger",
                         name: "vc_vendname",
                         fieldLabel: "供应商名称",
-                        allowBlank: false
+                        allowBlank: false,
+                        dbfinds: [{
+                            from: 'id',
+                            to: 'vc_vendid',
+                            ignore: true
+                        }, {
+                            from: 've_code',
+                            to: 'vc_vendcode'
+                        }, {
+                            from: 've_name',
+                            to: 'vc_vendname'
+                        }],
                     }, {
                         fieldLabel: '日期',
                         xtype: 'datefield',
@@ -665,27 +678,28 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         allowBlank: false,
                         name: 'vc_date'
                     }, {
-                            xtype: 'condbfindtrigger',
-                            fieldLabel: '币别汇率',
-                            allowBlank: false,
-                            dbType: 'currencyDbfindTrigger',
-                            dbfinds: [{
-                                from: 'cr_name', to: 'vc_currency'
-                            }, {
-                                from: 'cr_rate', to: 'vc_rate'
-                            }],
-                            // defaultValue: {
-                            //     vc_currency: 'RMB',
-                            //     vc_rate: 1
-                            // },
-                            supFieldConfig: {
-                                xtype: 'numberfield',
-                                readOnly: false,
-                                defaultReadOnly: false,
-                                decimalPrecision: 6,
-                                vtype: 'positiveNumber'
-                            },
-                        },{
+                        xtype: 'condbfindtrigger',
+                        fieldLabel: '币别汇率',
+                        allowBlank: false,
+                        dbType: 'currencyDbfindTrigger',
+                        dbfinds: [{
+                            from: 'cr_name',
+                            to: 'vc_currency'
+                        }, {
+                            from: 'cr_rate',
+                            to: 'vc_rate'
+                        }],
+                        // listeners: {
+                        //     change: 'clearDetails'
+                        // },
+                        supFieldConfig: {
+                            xtype: 'numberfield',
+                            readOnly: false,
+                            defaultReadOnly: false,
+                            decimalPrecision: 6,
+                            vtype: 'positiveNumber'
+                        },
+                    }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -741,19 +755,20 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         defaultValue: new Date(),
                         allowBlank: false,
                         name: 'vc_date'
-                    },  {
+                    }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
                         allowBlank: false,
                         dbType: 'currencyDbfindTrigger',
                         dbfinds: [{
-                            from: 'cr_name', to: 'vc_currency'
+                            from: 'cr_name',
+                            to: 'vc_currency'
                         }, {
-                            from: 'cr_rate', to: 'vc_rate'
+                            from: 'cr_rate',
+                            to: 'vc_rate'
                         }],
-                        // defaultValue: {
-                        //     vc_currency: 'RMB',
-                        //     vc_rate: 1
+                        // listeners: {
+                        //     change: 'clearDetails'
                         // },
                         supFieldConfig: {
                             xtype: 'numberfield',
@@ -762,7 +777,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
-                    },{
+                    }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -818,19 +833,20 @@ Ext.define('saas.view.money.verification.FormPanel', {
                         defaultValue: new Date(),
                         allowBlank: false,
                         name: 'vc_date'
-                    },  {
+                    }, {
                         xtype: 'condbfindtrigger',
                         fieldLabel: '币别汇率',
                         allowBlank: false,
                         dbType: 'currencyDbfindTrigger',
                         dbfinds: [{
-                            from: 'cr_name', to: 'vc_currency'
+                            from: 'cr_name',
+                            to: 'vc_currency'
                         }, {
-                            from: 'cr_rate', to: 'vc_rate'
+                            from: 'cr_rate',
+                            to: 'vc_rate'
                         }],
-                        // defaultValue: {
-                        //     vc_currency: 'RMB',
-                        //     vc_rate: 1
+                        // listeners: {
+                        //     change: 'clearDetails'
                         // },
                         supFieldConfig: {
                             xtype: 'numberfield',
@@ -839,7 +855,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                             decimalPrecision: 6,
                             vtype: 'positiveNumber'
                         },
-                    },{
+                    }, {
                         xtype: 'hidden',
                         name: 'vc_amount1',
                         thousandSeparator: ',',
@@ -855,32 +871,37 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 },
 
                 defaultConditions: {
-                    receipts_offset_receivable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
+                    receipts_offset_receivable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
                         ' and ((sl_kind=\'收款单\') or (sl_kind=\'期初余额\' and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid)))',
-                        'ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+
+
+                        'ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         ' and (sl_kind in (\'出货单\',\'销售退货单\') or (sl_kind in (\'期初余额\') and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid)))'
                     ],
-                    prepaid_offset_payable: ['ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
+                    prepaid_offset_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)<>0 and ifnull(sl_namount,0)<>0 ' +
                         ' and ((sl_kind=\'付款单\') or (sl_kind=\'期初余额\' and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid)))',
+
+
                         'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
                         ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or (sl_kind in (\'期初余额\') and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid)))'
                     ],
-                    receivable_offset_payable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+                    receivable_offset_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         ' and ((sl_kind in (\'出货单\',\'销售退货单\')) or (sl_kind=\'期初余额\' and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid)))',
-                        'ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
+
+                        'ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
                         ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or (sl_kind in (\'期初余额\') and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid)))'
                     ],
-                    receivable_to_receivable: ['ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
+                    receivable_to_receivable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_custid,0)={vc_custid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0 ' +
                         ' and ((sl_kind in (\'出货单\',\'销售退货单\')) or (sl_kind=\'期初余额\' and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail  where pd_status=0 and periodsdetail.companyid=subledger.companyid)))'
                     ],
-                    payable_to_payable: ['ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
+                    payable_to_payable: ['ifnull(sl_currency,\'RMB\') = \'{vc_currency}\' and ifnull(sl_vendid,0)={vc_vendid} and ifnull(sl_preamount,0)=0 and ifnull(sl_namount,0)<>0' +
                         ' and (sl_kind in (\'采购验收单\',\'采购验退单\') or (sl_kind in (\'期初余额\') and sl_ym=' +
                         '(select min(pd_detno) from periodsdetail where pd_status=0 and periodsdetail.companyid=subledger.companyid)))'
                     ]

+ 34 - 13
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -20,7 +20,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                             from:'cu_currency',to:'vc_currency'
                         },{
                             from:'cr_rate',to:'vc_rate'
-                        }
+                        } 
                         ],
                     }) ;   
 
@@ -57,7 +57,7 @@ Ext.define('saas.view.money.verification.FormPanelController', {
                             from: 've_name',
                             to: 'vc_vendname'
                         },{
-                            from:'cu_currency',to:'vc_currency'
+                            from:'ve_currency',to:'vc_currency'
                         },{
                             from:'cr_rate',to:'vc_rate'
                         }
@@ -200,19 +200,40 @@ Ext.define('saas.view.money.verification.FormPanelController', {
         defaultConditions = etc.defaultConditions,
         defaultConditionMode = defaultConditions[acitveType][idx];
 
-        var reg = /(.*){(.*)}(.*)/g;
-        var fieldName = defaultConditionMode.match(/(.*){(.*)}(.*)/)[2];
-        var fieldLabel = Ext.Array.findBy(formItems, function(f) {
-            return f.name == fieldName;
-        }).fieldLabel;
-        var fieldValue = viewModel.get(fieldName);
-        if(!fieldValue) {
-            saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">' + fieldLabel + '</span>】');
+
+        var reg = /{.+?}/g;
+        var arr = defaultConditionMode.match(reg) || [];
+        var fields = {};
+        var nullFields = [];
+        var defaultCondition = defaultConditionMode;
+
+        // TODO arr未去重
+
+        arr.map(function(a) {
+            var fieldName = a.replace(/[{|}]/g, '');
+            var field = Ext.Array.findBy(formItems, function(f) {
+                return f.name == fieldName;
+            });
+            var fieldLabel = field.fieldLabel || field.name;
+            var fieldValue = viewModel.get(fieldName);
+            fields[fieldName] = fieldValue;
+            
+            if(!fieldValue && nullFields.indexOf(fieldLabel) == -1) {
+                nullFields.push(fieldLabel);
+            }
+        });
+
+        if(nullFields.length == 0) {
+            var keys = Ext.Object.getAllKeys(fields);
+            keys.map(function(k) {
+                var v = fields[k];
+                defaultCondition = defaultCondition.replace(new RegExp('{' + k + '}', 'g'), v);
+            });
+            return defaultCondition;
+        }else {
+            saas.util.BaseUtil.showErrorToast('请先选择【' + '<span style="color: red;">' + nullFields.join(',') + '</span>】');
             return null;
         }
-        var defaultCondition = defaultConditionMode.replace(reg, '$1' + fieldValue + '$3');
-
-        return defaultCondition;
     },
 
     /**

+ 4 - 4
frontend/saas-web/app/view/purchase/purchase/FormPanel.js

@@ -54,10 +54,10 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'pu_rate'
                 }],
-                defaultValue: {
-                    pu_currency: 'RMB',
-                    pu_rate: 1
-                },
+                // defaultValue: {
+                //     pu_currency: 'RMB',
+                //     pu_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 4 - 4
frontend/saas-web/app/view/purchase/purchaseIn/FormPanel.js

@@ -75,10 +75,10 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'pi_rate'
                 }],
-                defaultValue: {
-                    pi_currency: 'RMB',
-                    pi_rate: 1
-                },
+                // defaultValue: {
+                //     pi_currency: this.getViewModel().get('defaultCurrency'),
+                //     pi_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 4 - 4
frontend/saas-web/app/view/purchase/purchaseOut/FormPanel.js

@@ -71,10 +71,10 @@ Ext.define('saas.view.purchase.purchaseOut.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'pi_rate'
                 }],
-                defaultValue: {
-                    pi_currency: 'RMB',
-                    pi_rate: 1
-                },
+                // defaultValue: {
+                //     pi_currency: this.getViewModel().get('defaultCurrency'),
+                //     pi_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 4 - 4
frontend/saas-web/app/view/sale/sale/FormPanel.js

@@ -90,10 +90,10 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'sa_rate'
                 }],
-                defaultValue: {
-                    sa_currency: 'RMB',
-                    sa_rate: 1
-                },
+                // defaultValue: {
+                //     sa_currency: this.getViewModel().get('defaultCurrency'),
+                //     sa_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 4 - 4
frontend/saas-web/app/view/sale/saleIn/FormPanel.js

@@ -98,10 +98,10 @@ Ext.define('saas.view.sale.saleIn.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'pi_rate'
                 }],
-                defaultValue: {
-                    pi_currency: 'RMB',
-                    pi_rate: 1
-                },
+                // defaultValue: {
+                //     pi_currency: this.getViewModel().get('defaultCurrency'),
+                //     pi_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 4 - 4
frontend/saas-web/app/view/sale/saleOut/FormPanel.js

@@ -107,10 +107,10 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 }, {
                     from: 'cr_rate', to: 'pi_rate'
                 }],
-                defaultValue: {
-                    pi_currency: 'RMB',
-                    pi_rate: 1
-                },
+                // defaultValue: {
+                //     pi_currency: this.getViewModel().get('defaultCurrency'),
+                //     pi_rate: 1
+                // },
                 supFieldConfig: {
                     xtype: 'numberfield',
                     readOnly: false,

+ 1 - 1
frontend/saas-web/app/view/stock/report/DataList.js

@@ -18,7 +18,7 @@ Ext.define('saas.view.stock.report.DataList', {
 
     searchItems: [{
         xtype: 'productDbfindTrigger',
-        name: 'pr_detail',
+        name: 'pr_code',
         emptyText: '请输入物料编号、名称或规格',
         columnWidth: 0.25
     }, {

+ 10 - 0
pom.xml

@@ -347,6 +347,16 @@
                 <artifactId>transfers-auth</artifactId>
                 <version>${project.release.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.usoftchina.saas</groupId>
+                <artifactId>money-dto</artifactId>
+                <version>${project.release.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.usoftchina.saas</groupId>
+                <artifactId>mall-api</artifactId>
+                <version>${project.release.version}</version>
+            </dependency>
             <!-- file upload -->
             <dependency>
                 <groupId>io.github.openfeign.form</groupId>