Browse Source

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

zhoudw 7 years ago
parent
commit
d9d0f121d6
18 changed files with 136 additions and 28 deletions
  1. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersMapper.java
  2. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  3. 2 1
      applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProductDTO.java
  4. 1 1
      applications/money/money-server/src/main/resources/application.yml
  5. 24 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java
  6. 4 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleService.java
  7. 3 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  8. 27 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  9. 7 7
      applications/sale/sale-server/src/main/resources/mapper/ProdIODetailMapper.xml
  10. 2 1
      frontend/saas-web/app/util/FormUtil.js
  11. 3 1
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  12. 1 1
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  13. 5 4
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  14. 3 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  15. 48 7
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  16. 1 0
      frontend/saas-web/app/view/purchase/purchase/FormPanel.js
  17. 2 1
      frontend/saas-web/app/view/sale/sale/FormPanel.js
  18. 1 1
      frontend/saas-web/app/view/sale/saleOut/FormPanel.js

+ 1 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersMapper.java

@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 public interface MaxnumbersMapper extends CommonBaseMapper<Maxnumbers>{
-    int countByExample(MaxnumbersExample example);
+    Long countByExample(MaxnumbersExample example);
 
     int deleteByExample(MaxnumbersExample example);
 

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

@@ -278,8 +278,8 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     */
     private String getRulecode(Maxnumbers maxnumbers) {
         String rulecode = maxnumbers.getMn_leadcode();
-        Integer length = maxnumbers.getMn_number();
         String mn_rule = maxnumbers.getMn_rule();
+        mn_rule = mn_rule == null ? "" : mn_rule.toUpperCase();
         String date = "YYYYMM".equals(mn_rule) ? DateUtils.format(new Date(), "yyyyMM") :
                 DateUtils.format(new Date(), "yyyyMMdd");
         return rulecode += date;

+ 2 - 1
applications/document/document-dto/src/main/java/com.usoftchina.saas.document.dto/ProductDTO.java

@@ -6,8 +6,9 @@ import lombok.Data;
 import java.io.Serializable;
 import java.util.Date;
 @Data
-public class ProductDTO extends CommonBaseDTO implements Serializable {
+public class ProductDTO implements Serializable {
 
+    private Long pr_id;
     private String pr_code;
     private String pr_detail;
     private String pr_spec;

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

@@ -46,7 +46,7 @@ eureka:
     serviceUrl:
       defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8510/eureka/
 server:
-  port: 8920
+  port: 8880
   tomcat:
     uri-encoding: UTF-8
 info:

+ 24 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java

@@ -163,6 +163,30 @@ public class SaleController {
         return Result.success(baseDTO);
     }
 
+    /**
+     * 出入库单批量关闭
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchClose")
+    public Result batchClose(@RequestBody BatchDealBaseDTO baseDTOs) {
+        saleService.batchClose(baseDTOs);
+        return Result.success();
+    }
+
+    /**
+     * 出入库单批量开启
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchOpen")
+    public Result batchOpen(@RequestBody BatchDealBaseDTO baseDTOs) {
+       saleService.batchOpen(baseDTOs);
+       return Result.success();
+    }
+
     @GetMapping("/test")
     public String test() {
         return "配置构建success-1";

+ 4 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleService.java

@@ -40,4 +40,8 @@ public interface SaleService {
     void open(long id);
 
     DocBaseDTO turnOut(Long id);
+
+    void batchClose(BatchDealBaseDTO baseDTOs);
+
+    void batchOpen(BatchDealBaseDTO baseDTOs);
 }

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

@@ -139,6 +139,9 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             detail.setPd_piid(pi_id);
             detail.setPd_inoutno(pi_inoutno);
             detail.setPd_piclass(prodInOut.getPi_class());
+            detail.setCompanyId(companyId);
+            detail.setCreateTime(new Date());
+            detail.setPd_yqty(0.0);
             if (StringUtils.isEmpty(detail.getId()) || "0".equals(detail.getId().toString())) {
                 insertDetails.add(detail);
             } else {

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

@@ -478,6 +478,33 @@ public class SaleServiceImpl implements SaleService{
          return baseDTO;
     }
 
+    @Override
+    public void batchClose(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return;
+        }
+        for (DocBaseDTO baseDTO : baseDTOs.getBaseDTOs()) {
+            if (!StringUtils.isEmpty(baseDTO.getId())) {
+                close(baseDTO.getId());
+            }
+        }
+    }
+
+    @Override
+    public void batchOpen(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return;
+        }
+        for (DocBaseDTO baseDTO : baseDTOs.getBaseDTOs()) {
+            if (!StringUtils.isEmpty(baseDTO.getId())) {
+                open(baseDTO.getId());
+            }
+        }
+
+    }
+
     //更新最新销售总额
     private void updateTotal(Long id) {
         if (null == id) {

+ 7 - 7
applications/sale/sale-server/src/main/resources/mapper/ProdIODetailMapper.xml

@@ -42,7 +42,7 @@
     <result column="pd_yqty" jdbcType="INTEGER" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
     <association property="productDTO" javaType="com.usoftchina.saas.document.dto.ProductDTO">
-      <id column="pr_id" property="id"/>
+      <id column="pr_id" property="pr_id"/>
       <result column="pr_code" property="pr_code"/>
       <result column="pr_detail" property="pr_detail"/>
       <result column="pr_spec" property="pr_spec"/>
@@ -763,16 +763,16 @@ where a.pd_id in (select pd_ioid from prodiodetail where pd_piid=#{id} and pd_pi
 
   <update id="updatePDSaleIN" parameterType="long">
    update prodiodetail set
-   pd_total=IFNULL(pd_inqty,0)*IFNULL(pd_sendprice,0),
-   pd_netprice = IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100),
-   pd_nettotal = (IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100))*IFNULL(pd_inqty,0)
+   pd_total=round(IFNULL(pd_inqty,0)*IFNULL(pd_sendprice,0),2),
+   pd_netprice = round(IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100),2),
+   pd_nettotal = round((IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100))*IFNULL(pd_inqty,0),2)
    where pd_piid=#{id}
   </update>
   <update id="updatePDSaleOut" parameterType="long">
     update prodiodetail set
-    pd_total=IFNULL(pd_outqty,0)*IFNULL(pd_sendprice,0),
-    pd_netprice = IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100),
-    pd_nettotal = (IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100))*IFNULL(pd_outqty,0)
+    pd_total=round(IFNULL(pd_outqty,0)*IFNULL(pd_sendprice,0),2),
+    pd_netprice = round(IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100),0),
+    pd_nettotal = round((IFNULL(pd_sendprice,0)/(1+IFNULL(pd_taxrate,0)/100))*IFNULL(pd_outqty,0),0)
     where pd_piid=#{id}
   </update>
 </mapper>

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

@@ -108,7 +108,8 @@ Ext.define('saas.util.FormUtil', {
                             });
 
                             columns.push({
-                                flex: 1
+                                flex: 1,
+                                allowBlank: true
                             });
 
                             cnames.push(item.detnoColumn);

+ 3 - 1
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -95,11 +95,13 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                 if(me.belong=='grid'){
                     for (let index = 0; index < dbfinds.length; index++) {
                         var item = dbfinds[index];
-                        var rec = me.dbfindtrigger.column.ownerCt.ownerCt.selModel.getLastSelected();
+                        var mainGrid = me.dbfindtrigger.column.ownerCt.ownerCt;
+                        var rec = mainGrid.selModel.getLastSelected();
                         if(rec){
                             var nowRec = me.dbfindtrigger.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
                             nowRec.set(item.to,record.get(item.from));
                             //me.column.getEditor().setValue(record.get(item.from));
+                            mainGrid.up('detailGridField').fireEvent('edit');
                         }
                     }
                 }else if(me.belong=='form'){

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

@@ -18,7 +18,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                 'value':me.value
             }]
         });
-        this.callParent();
+        me.callParent();
     },
     //输入值之后进行模糊查询
     doQuery: function(queryString, forceAll, rawQuery) {

+ 5 - 4
frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js

@@ -112,12 +112,12 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                             var selectRecordArr = grid.selectRecordArr;
                             var dbfinds = grid.dbfinds;
                             //点开放大镜的行
-                            var rec = grid.dbfindtrigger.column.ownerCt.ownerCt.selModel.getLastSelected();
                             var mainGrid = grid.dbfindtrigger.column.ownerCt.ownerCt;
-                            Ext.Array.each(selectRecordArr,function(record,x) {
+                            var rec = mainGrid.selModel.getLastSelected();
+                            Ext.Array.each(selectRecordArr,function(record,index) {
                                 Ext.Array.each(dbfinds,function(dbfind) {
                                     if(rec){
-                                        var nowRec = grid.dbfindtrigger.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                                        var nowRec = mainGrid.store.getData().getByKey(rec.id);
                                         nowRec.set(dbfind.to,record.get(dbfind.from));
                                     }
                                 });
@@ -125,13 +125,14 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                                     return f.id==(rec&&rec.id?rec.id:0)
                                 });
                                 rec = mainGrid.store.data.getAt(index+1);
-                                if(!rec&&x!=selectRecordArr.length-1){//添加下一行
+                                if(!rec&&index!=selectRecordArr.length-1){//添加下一行
                                     var data = {};
                                     data[mainGrid.ownerCt.detnoColumn] = index + 2;
                                     mainGrid.store.insert(index+1, data);
                                     rec = mainGrid.store.data.getAt(index+1);
                                 }
                             });
+                            mainGrid.up('detailGridField').fireEvent('edit');
                             grid.ownerCt.close();
                         }
                     }])

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

@@ -124,7 +124,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                     xtype: 'button',
                     text: '删除',
                     bind: {
-                        hidden: '{deleteHidden}'
+                        hidden: '{deleteHidden || ' + me._statusCodeField + '=="' + auditTexts.auditCode + '"}'
                     },
                     handler: 'delete'
                 }, {
@@ -268,6 +268,7 @@ Ext.define('saas.view.core.form.FormPanel', {
                 store = detail.detailStore;
 
             if (detailData) {
+                store.removeAll();
                 store.add(detailData);
             }
         }
@@ -293,6 +294,7 @@ Ext.define('saas.view.core.form.FormPanel', {
             if (xtype == 'detailGridField') {
                 item.listeners = item.listeners || {};
                 item.listeners.validChange = function() {
+                    console.log('validChange');
                     me.isValid();
                 }
 

+ 48 - 7
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -26,6 +26,7 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
     showIndex: true,
     configUrl: '',
     editable: true,
+    allowEmpty: true, // 校验时只校验dirty数据
 
     initComponent: function() {
         var me = this;
@@ -40,17 +41,28 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         };
 
         Ext.apply(me, {
-            viewConfig: {
+            normalViewConfig: {
                 deferEmptyText: false,
                 emptyText: '无数据'
             },
+            lockedGridConfig: {
+                // scrollable: {
+                //     x: false,
+                //     y: true
+                // }
+            },
             lockedViewConfig: {
+                // scrollable: false,
+                scrollable: {
+                    x: false,
+                    y: true
+                },
                 deferEmptyText: false,
                 emptyText: '<div style="width: 100%; text-align: center; cursor: pointer; color: green;" class="fa fa-plus" title="新增行" onclick="addRows(\'' + me.id + '\')"></div>',
             },
             listeners: {
                 edit: function() {
-                    me.fireEvent('validChange');
+                    this.fireEvent('validChange');
                 },
                 itemmouseenter: function(view, record, item, index, e, eOpts) {
                     if(!view.up('detailGridField').editable) {
@@ -85,7 +97,8 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                     }else if(target.classList.contains('fa-plus')) {
                         me.addDetail(detno);
                     }
-                }
+                },
+                scope: me
             }
         });
         me.callParent(arguments);
@@ -302,9 +315,10 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
      */
     isValid: function() {
         var me = this,
+        allowEmpty = me.allowEmpty;
         columns = me.columns,
-        dirtyData = me.getDirtyData(),
-        valid = true;
+        data = allowEmpty ? me.getDirtyData() : me.getAllData(),
+        valid = allowEmpty;
 
         // 判断列必填
         a:
@@ -315,8 +329,9 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
             var isValid = c.isValid;
             
             b:
-            for(var j = 0; j < dirtyData.length; j++) {
-                var d = dirtyData[j];
+            for(var j = 0; j < data.length; j++) {
+                valid = true;
+                var d = data[j];
                 var value = d[cname];
 
                 if(typeof isValid == 'function') {
@@ -337,6 +352,32 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
         return valid;
     },
 
+    /**
+     * 获得所有数据
+     */
+    getAllData: function() {
+        var me = this,
+        store = me.getStore(),
+        storeData = store.getData().items,
+        allData = [];
+
+        Ext.Array.each(storeData, function(item){
+            var d = Object.assign({}, item.data);
+
+            if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
+                d.id = 0;
+            }
+            for(k in d) {
+                if(Ext.isDate(d[k])) {
+                    d[k] = Ext.Date.format(d[k], 'Y-m-d H:i:s');
+                }
+            }
+            allData.push(d);
+        });
+
+        return allData;
+    },
+
     /**
      * 获得已修改的数据
      */

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

@@ -91,6 +91,7 @@ Ext.define('saas.view.purchase.purchase.FormPanel', {
         storeModel:'saas.model.purchase.Purchasedetail',
         detnoColumn:  'pd_detno',
         deleteDetailUrl:'/api/purchase/purchase/deleteDetail/',
+        allowEmpty: false,
         columns : [
             {
                 text : "id", 

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

@@ -153,7 +153,8 @@ Ext.define('saas.view.sale.sale.FormPanel', {
                 text : "含税金额", 
                 dataIndex : "sd_total", 
                 width : 120.0, 
-                xtype : "numbercolumn"
+                xtype : "numbercolumn",
+                summaryType: 'sum'
             }, 
             {
                 text : "未税金额", 

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

@@ -196,7 +196,7 @@ Ext.define('saas.view.sale.saleout.FormPanel', {
                 text : "销售序号", 
                 dataIndex : "pd_orderdetno", 
                 xtype : "numbercolumn",
-                flex:1
+                width : 120.0
             }
         ]
     }, {