Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

guq 7 years ago
parent
commit
ff028baed1
23 changed files with 178 additions and 90 deletions
  1. 3 14
      applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/ProductApi.java
  2. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/ProductController.java
  3. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductMapper.java
  4. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/ProductService.java
  5. 5 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  6. 1 1
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  7. 1 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/B2BConfig.java
  8. 33 11
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java
  9. 3 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendProductTask.java
  10. 8 1
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseEndTask.java
  11. 4 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseInResTask.java
  12. 4 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseInTask.java
  13. 4 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseOutResTask.java
  14. 4 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseOutTask.java
  15. 4 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseTask.java
  16. 2 0
      frontend/saas-web/app/util/FormUtil.js
  17. 1 1
      frontend/saas-web/app/util/ViewUtil.js
  18. 2 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  19. 9 8
      frontend/saas-web/app/view/main/Navigation.js
  20. 6 4
      frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js
  21. 52 20
      frontend/saas-web/app/view/money/verification/FormPanel.js
  22. 12 0
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  23. 16 20
      frontend/saas-web/app/view/stock/report/Prodiodetail.js

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

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

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

@@ -140,8 +140,8 @@ public class ProductController {
      * @return
      */
     @GetMapping("/b2b/upload/data")
-    public Result<List<ProductUploadDTO>> getUploadData(){
-        return Result.success(productService.getUploadData());
+    public Result<List<ProductUploadDTO>> getUploadData(@RequestParam("companyId") Long companyId){
+        return Result.success(productService.getUploadData(companyId));
     }
 
     /**

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

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

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

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

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

@@ -784,7 +784,9 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             while (it.hasNext()){
                 sb.append(it.next().getPr_id() + ",");
             }
-            updateB2BStatus(sb.substring(0, sb.length() - 1), "上传中");
+            if (sb.length() > 0) {
+                updateB2BStatus(sb.substring(0, sb.length() - 1), "上传中");
+            }
         }else {
             throw new BizException(BizExceptionCode.BIZ_ENABLE_B2B);
         }
@@ -795,8 +797,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      * @return
      */
     @Override
-    public List<ProductUploadDTO> getUploadData(){
-        return getMapper().selectUploadProdByCompanyId(BaseContextHolder.getCompanyId());
+    public List<ProductUploadDTO> getUploadData(Long companyId){
+        return getMapper().selectUploadProdByCompanyId(companyId);
     }
 
     /**

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

@@ -962,7 +962,7 @@
     </select>
     <select id="selectUploadProdByCompanyId" resultType="com.usoftchina.saas.document.dto.ProductUploadDTO">
         SELECT pr_id,pr_code,pr_spec,pr_detail,pr_leadtime,pr_unit,pr_zxbzs,pr_brand,pr_orispeccode
-        FROM PRODUCT WHERE COMPANYID = #{companyId} AND IFNULL(B2BSTATUS, '待上传') = '待上传'
+        FROM PRODUCT WHERE COMPANYID = #{companyId} AND IFNULL(B2BSTATUS, '待上传') IN ('待上传','上传中')
     </select>
     <update id="updateB2BStatus">
         UPDATE PRODUCT SET B2BSTATUS = #{status} WHERE PR_ID IN

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

@@ -6,7 +6,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
  * @Author chenwei
  * @Date 2019/01/15
  */
-@ConfigurationProperties(prefix = "b2b.baseUrl")
+@ConfigurationProperties(prefix = "b2b.baseurl")
 public class B2BConfig {
 
     private String inquiry;

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

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

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

@@ -13,6 +13,7 @@ import com.usoftchina.saas.utils.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
@@ -22,6 +23,7 @@ import java.util.concurrent.CountDownLatch;
  * @Author chenwei
  * @Date 2019/01/09
  */
+@Component
 public class SendProductTask extends Executable{
 
     @Autowired
@@ -39,7 +41,7 @@ public class SendProductTask extends Executable{
     public void execute(MessageInfo messageInfo) {
         Long enUU = companyApi.getCompanyById(messageInfo.getCompanyId()).getData().getUu();
         //需要上传的物料信息
-        List<ProductUploadDTO> productUploadDTOList = productApi.getUploadData().getData();
+        List<ProductUploadDTO> productUploadDTOList = productApi.getUploadData(messageInfo.getCompanyId()).getData();
         //上传结果反馈
         List<Long> successIds = new ArrayList<Long>();
         List<Long> failedIds = new ArrayList<Long>();

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

@@ -5,6 +5,7 @@ import com.usoftchina.saas.inquiry.po.purchase.PurchaseDetailEnd;
 import com.usoftchina.saas.purchase.api.PurchaseApi;
 import com.usoftchina.saas.purchase.dto.PurchaseDetailDTO;
 import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
+import com.usoftchina.saas.transfers.config.B2BConfig;
 import com.usoftchina.saas.transfers.dto.MessageInfo;
 import com.usoftchina.saas.transfers.utils.SendUtil;
 import com.usoftchina.saas.utils.CollectionUtils;
@@ -12,6 +13,8 @@ import com.usoftchina.saas.utils.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -22,12 +25,16 @@ import java.util.List;
  * @Author chenwei
  * @Date 2019/01/15
  */
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseEndTask extends Executable {
 
     @Autowired
     private PurchaseApi purchaseApi;
     @Autowired
     private CompanyApi companyApi;
+    @Autowired
+    private B2BConfig b2bConfig;
 
     private static final Logger LOGGER = LoggerFactory.getLogger(SendPurchaseEndTask.class);
     private final String purchaseEndUrl = "/erp/purchase/end";
@@ -54,7 +61,7 @@ public class SendPurchaseEndTask extends Executable {
                 purchaseDetailEndList.add(purchaseDetailEnd);
             }
             //发送给b2b
-            boolean success = SendUtil.sendToB2B(purchaseEndUrl, JsonUtils.toJsonString(purchaseDetailEndList), accessSecretKey);
+            boolean success = SendUtil.sendToB2B(b2bConfig.getCommon() + purchaseEndUrl, JsonUtils.toJsonString(purchaseDetailEndList), accessSecretKey);
             if (success) {
                 purchaseApi.updateB2BStatus(Long.parseLong(messageInfo.getBizId()), "已上传");
             }

+ 4 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseInResTask.java

@@ -16,6 +16,8 @@ import com.usoftchina.saas.utils.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -25,6 +27,8 @@ import java.util.List;
  * @Author chenwei
  * @Date 2019/01/16
  */
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseInResTask extends Executable {
 
     @Autowired

+ 4 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseInTask.java

@@ -20,6 +20,8 @@ import com.usoftchina.saas.utils.http.HttpUtil.Response;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
@@ -31,6 +33,8 @@ import java.util.Map;
  * @author: chenwei
  * @create: 2019-01-016 16:53
  **/
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseInTask extends Executable{
 
     @Autowired

+ 4 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseOutResTask.java

@@ -16,6 +16,8 @@ import com.usoftchina.saas.utils.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -25,6 +27,8 @@ import java.util.List;
  * @Author chenwei
  * @Date 2019/01/16
  */
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseOutResTask extends Executable {
     @Autowired
     private CompanyApi companyApi;

+ 4 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseOutTask.java

@@ -16,6 +16,8 @@ import com.usoftchina.saas.utils.JsonUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -25,6 +27,8 @@ import java.util.List;
  * @author: chewnei
  * @create: 2019-01-016 18:53
  **/
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseOutTask extends Executable{
 
     @Autowired

+ 4 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/task/SendPurchaseTask.java

@@ -22,6 +22,8 @@ import com.usoftchina.saas.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -30,6 +32,8 @@ import java.util.List;
  * @author: guq
  * @create: 2019-01-08 13:45
  **/
+@Component
+@EnableConfigurationProperties(B2BConfig.class)
 public class SendPurchaseTask extends Executable {
 
     @Autowired

+ 2 - 0
frontend/saas-web/app/util/FormUtil.js

@@ -11,6 +11,8 @@ Ext.define('saas.util.FormUtil', {
             let me = this,
             defaultItems = form.defaultItems;
 
+            // form.add(defaultItems);
+
             saas.util.ViewUtil.getViewConfig(form.viewName)
             .then(function(cfg) {
                 if(cfg) {

+ 1 - 1
frontend/saas-web/app/util/ViewUtil.js

@@ -15,7 +15,7 @@ Ext.define('saas.util.ViewUtil', {
                 url = me.getCfgUrl.replace(me.urlRe, '$1' + viewName);
             return saas.util.BaseUtil.request({
                     url,
-                    async: false
+                    async: true
                 })
                 .then(function (res) {
                     let cfg = me.decodeViewConfig(res.data);

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

@@ -50,7 +50,6 @@ Ext.define('saas.view.core.form.FormPanel', {
         auditTexts = me.auditTexts;
         me._deleteMsg = '删除的'+me._title+'将不能恢复,请确认是否删除?';
         me.initViewModel();
-        me.initFormItems();
 
         me.defaultBtns = me.defaultBtns || [{
             cls: 'x-formpanel-btn-blue',
@@ -144,6 +143,8 @@ Ext.define('saas.view.core.form.FormPanel', {
             },
         });
         me.callParent(arguments);
+
+        me.initFormItems();
     },
 
     initFormItems: function() {

+ 9 - 8
frontend/saas-web/app/view/main/Navigation.js

@@ -28,15 +28,16 @@ Ext.define('saas.view.main.Navigation', {
             }),
             tpl: new Ext.XTemplate('<ul class="x-navlist">',
                 '<tpl for=".">',
-                '<li class="x-navitem">',
-                '<div class="x-navitem-body">',
-                '<div class="nav-inner-wrap" style="margin-left: 0px;">',
-                '<div class="nav-inner-icon {iconCls}"></div>',
-                '<div class="nav-inner-text">{text}</div>',
-                '</div>',
-                '</li>',
+                    '<li class="x-navitem">',
+                        '<div class="x-navitem-body">',
+                            '<div class="nav-inner-wrap" style="margin-left: 0px;">',
+                                '<div class="nav-inner-icon {iconCls}"></div>',
+                                '<div class="nav-inner-text">{text}</div>',
+                            '</div>',
+                        '</div>',
+                    '</li>',
                 '</tpl>',
-                '</ul>'),
+            '</ul>'),
             trackOver: true,
             overItemCls: 'x-navitem-over',
             selectedItemCls: 'x-navitem-selected',

+ 6 - 4
frontend/saas-web/app/view/money/fundtransfer/QueryPanel.js

@@ -99,13 +99,14 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
                 }, {
                     text: "转出币别",
                     dataIndex: "ftd_currency",
-                    align:'center'
+                    align:'center',
+                    width: 80
                 }, {
                     text: "转出金额(元)",
                     xtype: 'numbercolumn',
                     dataIndex: "ftd_nowbalance",
                     allowBlank: false,
-                    width: 150.0,
+                    width: 110.0,
                     editor: {
                         xtype: "numberfield",
                         decimalPrecision: 2
@@ -124,13 +125,14 @@ Ext.define('saas.view.money.fundtransfer.QueryPanel', {
                 }, {
                     text: "转入币别",
                     dataIndex: "ftd_incurrency",
-                    align:'center'
+                    align:'center',
+                    width: 80
                 }, {
                     text: "转入金额(元)",
                     xtype: 'numbercolumn',
                     dataIndex: "ftd_innowbalance",
                     allowBlank: false,
-                    width: 150.0,
+                    width: 110.0,
                     editor: {
                         xtype: "numberfield",
                         decimalPrecision: 2

+ 52 - 20
frontend/saas-web/app/view/money/verification/FormPanel.js

@@ -39,28 +39,60 @@ Ext.define('saas.view.money.verification.FormPanel', {
         me.defaultItems = Ext.Array.clone(defaultItems);
         me.detailCount = 0;
 
+        me.setLoading(true);
         saas.util.ViewUtil.getViewConfig(me.viewName)
-            .then(function (cfg) {
-                let items = defaultItems || [];
-
-                me.cusCfg = cfg;
-
-                items = FormUtil.initItems(items);
-                items = FormUtil.applyCusMainItemConfig(items, cfg);
-                items = FormUtil.applyCusDetailItemConfig(items, cfg);
-
-                me.configItems = items;
-
-                items = FormUtil.applyDefaultItems(me, items);
-                me.removeAll();
-                return me.addItems(items);
-            })
-            .then(function (items) {
-                me.fireEvent('afterSetItems', me, items);
-            })
-            .then(function () {
+        .then(function (cfg) {
+            me.setLoading(false);
+            let items = defaultItems || [];
+
+            me.cusCfg = cfg;
+
+            items = FormUtil.initItems(items);
+            items = FormUtil.applyCusMainItemConfig(items, cfg);
+            items = FormUtil.applyCusDetailItemConfig(items, cfg);
+
+            me.configItems = items;
+
+            items = FormUtil.applyDefaultItems(me, items);
+            me.removeAll();
+            return me.addItems(items);
+        })
+        .then(function (items) {
+            me.fireEvent('afterSetItems', me, items);
+        })
+        .then(function () {
+            if(!me._loaded) {
+                me._loaded = true;
                 FormUtil.loadData(me);
-            })
+            }else {
+                let viewModel = me.getViewModel();
+                let code = viewModel.get(me._codeField);
+                let detailGrids = me.query('detailGridField');
+
+                let o = {};
+                o[me._codeField] = code;
+
+                let formData = {main: {}};
+                Ext.apply(formData.main, o);
+                Ext.Array.each(detailGrids, function(grid, index) {
+                    let detno = 0;
+                    let detnoColumn = grid.detnoColumn;
+                    let datas = [];
+                    let emptyRows = grid.emptyRows;
+                    
+                    Ext.Array.each(new Array(emptyRows), function() {
+                        detno += 1;
+                        let data = {};
+                        data[detnoColumn] = detno;
+                        datas.push(data);
+                    })
+                    formData['detail' + index] = datas;
+                });
+
+                me.initFormData(formData);
+                me.fireEvent('load', me, formData);
+            }
+        })
     },
 
     getAcitveItems: function () {

+ 12 - 0
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -300,6 +300,18 @@ Ext.define('saas.view.money.verification.FormPanelController', {
             saas.util.BaseUtil.showErrorToast(form.invalidText);
             return false;
         }
+        vc_kind = viewModel.get('vc_kind');
+        //应收转应收 receivable_to_receivable 客户一致时提示 “保存失败: 转出客户与转入客户相同”
+        if(vc_kind === 'receivable_to_receivable' && (viewModel.get('vc_custid') === viewModel.get('vc_turncustid') )){
+            saas.util.BaseUtil.showErrorToast("保存失败: 转出客户与转入客户相同");
+            return false;
+        }
+        //应付转应付 payable_to_payable 供应商一致时提示 “保存失败: 转出供应商与转入供应商相同”
+        if(vc_kind === 'payable_to_payable' && (viewModel.get('vc_vendid') === viewModel.get('vc_turnvendid') )){
+            saas.util.BaseUtil.showErrorToast("保存失败: 转出客户与转入客户相同");
+            return false;
+        }
+
         var sum_detail1 = store1.sum('vd_nowbalance'); // 从表1核销合计
         var sum_detail2 = store2.sum('vcd_nowbalance'); // 从表2核销合计
 

+ 16 - 20
frontend/saas-web/app/view/stock/report/Prodiodetail.js

@@ -53,23 +53,13 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         text: 'id',
         dataIndex: 'id',
         hidden: true
-    }, {
-        text: '单号',
-        dataIndex: 'pi_inoutno',
-        width: 150,
-        locked: true
-    },  {
-        text: '业务类型',
-        dataIndex: 'pi_class',
-        width: 100,
-        locked: true
-    }, {
+    },{
         text: '单据日期',
         dataIndex: 'pi_date',
         xtype: 'datecolumn',
         width: 110,
         locked: true
-    }, {
+    },  {
         text: '序号',
         dataIndex: 'pd_pdno',
         exportFormat: 'Integer',
@@ -80,6 +70,20 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         renderer: function(v) {
             return saas.util.BaseUtil.numberFormat(v, 0, false);
         }
+    }, {
+        text: '单号',
+        dataIndex: 'pi_inoutno',
+        width: 150,
+        locked: true
+    },  {
+        text: '业务类型',
+        dataIndex: 'pi_class',
+        width: 100,
+        locked: true
+    }, {
+        text: '往来单位',
+        dataIndex: 'bizname',
+        width: 200
     }, {
         text: '物料编号',
         dataIndex: 'pd_prodcode',
@@ -137,18 +141,10 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         text: '仓库',
         dataIndex: 'pd_whname',
         width: 120
-    }, {
-        text: '往来单位',
-        dataIndex: 'bizname',
-        width: 200
     }, {
         text: '关联单号',
         dataIndex: 'pd_ordercode',
         width: 150
-    }, {
-        text: '物料类型',
-        dataIndex: 'pr_kind',
-        width: 100
     }, {
         text: '备注',
         dataIndex: 'pd_remark',