Преглед на файлове

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

zhoudw преди 7 години
родител
ревизия
f3997d0de4

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

@@ -12,6 +12,7 @@ import com.usoftchina.saas.commons.service.ExcelService;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.utils.CollectionUtils;
+import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.StringUtils;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.ss.usermodel.*;
@@ -138,7 +139,6 @@ public class ExcelServiceImpl implements ExcelService{
             StringBuilder err = new StringBuilder();
             JSONArray mains = new JSONArray();
             JSONArray details = new JSONArray();
-            boolean flag = false;
             //数据行循环
             for (int i = 0; i < datas.size(); i++) {
                 Map<String,String> data = datas.get(i);
@@ -179,25 +179,21 @@ public class ExcelServiceImpl implements ExcelService{
                            if (difference) {
                                dd.setDd_codevalue(codeValue);
                                if ("true".equals(set.getNecessary()) && data.get("*" + set.getDescription()).equals("")) {
-                                   err.append("第" + (i + 2) + "行 " + set.getDescription() + " 必填字段未填写! ");
+                                   err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
                                    break;
                                }
                            }
                            //检测日期类型是否规范
                            if ("date".equals(set.getType()) && !StringUtils.isEmpty(value)) {
-                               flag = validateDateFormat(value);
-                               if (!flag) {
-                                   err.append("第" + (i + 2) + "行 " + set.getDescription() + " 日期格式不正确! ");
+                               value = praseDate(value);
+                               if (null == value) {
+                                   err.append("第" + (i + 3) + "行 " + set.getDescription() + " 日期格式不正确!<br/> ");
                                    break;
                                }
                            }
                            //插入主表数据
                            if (null != mainData) {
-                               if ("true".equals(set.getNecessary())) {
-                                   mainData.put(set.getField(), value);
-                               } else {
-                                   mainData.put(set.getField(), value);
-                               }
+                               mainData.put(set.getField(), value);
                            }
                        }
                        //所有主表数据进行分类
@@ -216,24 +212,20 @@ public class ExcelServiceImpl implements ExcelService{
                            } else {
                                value = data.get(set.getDescription());
                            }
-                           //拼从表数据
-                           if ("true".equals(set.getNecessary())) {
-                               detailData.put(set.getField(), data.get("*" + set.getDescription()));
-                           } else {
-                               detailData.put(set.getField(), data.get(set.getDescription()));
-                           }
-                           if ("true".equals(set.getNecessary()) && data.get("*" + set.getDescription()).equals("")) {
-                               err.append("第" + (i + 2) + "行 " + set.getDescription() + " 必填字段未填写! ");
+                           if ("true".equals(set.getNecessary()) && value.equals("")) {
+                               err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
                                break;
                            }
                            //检测日期类型是否规范
-                           if ("date".equals(set.getType())) {
-                               flag = validateDateFormat(value);
-                               if (!flag) {
-                                   err.append("第" + (i + 2) + "行 " + set.getDescription() + " 日期格式不正确! ");
+                           if ("date".equals(set.getType()) && !StringUtils.isEmpty(value)) {
+                               value = praseDate(value);
+                               if (null == value) {
+                                   err.append("第" + (i + 3) + "行 " + set.getDescription() + " 日期格式不正确!<br/> ");
                                    break;
                                }
                            }
+                           //拼从表数据
+                           detailData.put(set.getField(), value);
                        }
                        if (detailData.size() > 0) {
                            dd.setDd_codevalue(codeValue);
@@ -273,6 +265,15 @@ public class ExcelServiceImpl implements ExcelService{
         return flag;
     }
 
+    private String praseDate(String num) {
+        try {
+            Integer days = Integer.valueOf(num);
+            return DateUtils.plusDay(days, "1899-12-30");
+        }catch (Exception e) {
+            return null;
+        }
+    }
+
     //保证先遍历主表
     private List<String> SetToList(Set<String> sets) {
         List<String> list = new ArrayList<>();
@@ -294,7 +295,7 @@ public class ExcelServiceImpl implements ExcelService{
                     cellValue = String.valueOf(cell.getNumericCellValue());
                     //判断是否为INT类型
                     if (Double.valueOf(cellValue.toString()).intValue() - Double.valueOf(cellValue.toString()) == 0) {
-                        return Double.valueOf(cellValue.toString()).intValue();
+                        return cellValue.toString().substring(0, cellValue.toString().indexOf("."));
                     }
                     break;
                 }

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

@@ -516,7 +516,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                 //验证业务员
                 if (!StringUtils.isEmpty(customerDTO.getCu_sellername())) {
                     List<Employee> employees = employeeMapper.selectByName(customerDTO.getCu_sellername(), companyId);
-                    if (null == employees || StringUtils.isEmpty(employees.get(0))) {
+                    if (null == employees || employees.size() == 0 || StringUtils.isEmpty(employees.get(0))) {
                         err.append("客户编号为: " + customerDTO.getCu_code() + " 的业务员: "+ customerDTO.getCu_sellername() +" 在系统中不存在,请确认数据是否正确");
                         break;
                     }

+ 11 - 1
framework/core/src/main/java/com/usoftchina/saas/utils/DateUtils.java

@@ -543,9 +543,19 @@ public class DateUtils {
     //获取期间
     public static int getYm(Date date){
         String dates = date2String(date, "yyyyMM");
-//        dates = dates + "01";
         int d = Integer.parseInt(dates);
         return d;
     }
 
+    public static String plusDay(int num,String newDate) throws ParseException{
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Date currdate = format.parse(newDate);
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(currdate);
+        ca.add(Calendar.DATE, num);// num为增加的天数,可以改变的
+        Date next = ca.getTime();
+        String enddate = format.format(next);
+        return enddate;
+    }
+
 }

+ 21 - 7
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -22,9 +22,14 @@ Ext.define('saas.view.core.report.ReportPanel', {
     searchItems: [], // 查询字段
     reportTitle: '报表',
     autoLoad:true,
+    printAble: true,
+    exportAble: true,
+    queryMode: 'DETAIL',
 
     initComponent: function() {
         var me = this;
+        var printAble = me.printAble;
+        var exportAble = me.exportAble;
         var store = me.initStore();
         columnWidth: 0.25,
         Ext.apply(me, {
@@ -49,6 +54,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                     },{
                         xtype:'button',
                         text:'打印',
+                        hidden: !printAble,
                         style: {
                             float: 'right'
                         },
@@ -65,6 +71,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                             float: 'right'
                         },
                         text: '导出',
+                        hidden: !exportAble,
                         menu: {
                             defaults: {
                                 handler: 'exportTo'
@@ -163,7 +170,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 }],
                 viewConfig: {
                     deferEmptyText: false,
-                    emptyText: '无数据',
                     listeners: {
                         itemcontextmenu: function(view, rec, node, index, e) {
                             e.stopEvent();
@@ -283,7 +289,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                     var params = me.applyParams({
                         number: store.exportNumber?store.exportNumber:op._page,
                         size: store.exportPageSize?store.exportPageSize:store.pageSize,
-                        mode: 'DETAIL',
+                        mode: me.queryMode || 'DETAIL',
                         condition: JSON.stringify(condition),
                         calculateFields: JSON.stringify(summarys)
                     });
@@ -378,6 +384,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
 
     initSearchItems: function() {
         var me = this,
+        queryItems = [],
         items = me.searchItems,
         viewModel = me.getViewModel();
 
@@ -392,6 +399,10 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 item.beforeLabelTextTpl = "<font color=\"red\" style=\"position:relative; top:2px;right:2px; font-weight: bolder;\">*</font>";
             }
 
+            if(!ignore) {
+                queryItems.push(name);
+            }
+
             if(item.xtype == 'numberfield') {
                 Ext.applyIf(item, {
                     hideTrigger: true, // 隐藏trigger
@@ -435,6 +446,8 @@ Ext.define('saas.view.core.report.ReportPanel', {
             });
         });
 
+        me.queryItems = queryItems;
+
         return items;
     },
 
@@ -444,17 +457,19 @@ Ext.define('saas.view.core.report.ReportPanel', {
         formItems = form.items.items,
         viewModel = me.getViewModel(),
         viewModelData = viewModel.getData(),
-        bindItems = viewModelData['form'],
+        formData = viewModelData['form'] || {},
+        queryItems = me.queryItems,
         condition,
         conditions = [];
 
-        for(k in bindItems) {
+        for(var i = 0; i < queryItems.length; i++) {
+            var n = queryItems[i];
             var item = Ext.Array.findBy(formItems, function(i) {
-                return i.name == k;
+                return i.name == n;
             });
             var field = item.name,
             func = item.getCondition,
-            value = bindItems[k],
+            value = formData[n],
             condition;
 
             if(typeof func == 'function') {
@@ -463,7 +478,6 @@ Ext.define('saas.view.core.report.ReportPanel', {
                     value: func(value)
                 }
             }else {
-                // var xtype = item.xtype || 'textfield',
                 type = item.fieldType || me.getDefaultFieldType(item),
                 operation = item.operation || me.getDefaultFieldOperation(item),
                 conditionValue = me.getConditionValue(item, value);

+ 0 - 1
frontend/saas-web/app/view/home/InfoCard.scss

@@ -21,7 +21,6 @@ $max-card-width: 235px;
                         padding: 16px;
                         height: 120px;
                         border-radius: 0.5rem;
-                        box-shadow: 0 0 1px rgba(0,0,0,.125), 0 1px 3px rgba(0,0,0,.2);
                         position: relative;
                         display: block;
                         cursor: pointer;

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

@@ -9,33 +9,50 @@ Ext.define('saas.view.stock.report.DataList', {
 
     groupField: null,
     listUrl: '/api/document/product/ReserveCost',
+    // listUrl: 'http://192.168.253.41:8560/api/document/product/ReserveCost',
     defaultCondition: null,
     reportTitle: '物料库存数量金额表',
-    QueryWidth:0.2,
+    QueryWidth:0.15,
+    printAble: false,
+    exportAble: true,
 
     searchItems: [{
         name: 'pr_code',
         xtype: 'textfield',
         emptyText : '物料编号',
-        columnWidth: 0.2
+        columnWidth: 0.15
     },{
         name: 'pr_detail',
         xtype: 'textfield',
         emptyText : '物料名称',
-        columnWidth: 0.2
+        columnWidth: 0.15
     },{
         name: 'wh_code',
         xtype: 'textfield',
         emptyText : '仓库编号',
-        columnWidth: 0.2
+        columnWidth: 0.15
     },{
         name: 'wh_description',
         xtype: 'textfield',
         emptyText : '仓库名称',
-        columnWidth: 0.2
+        columnWidth: 0.15
+    }, {
+        name: 'wh_description',
+        xtype: 'textfield',
+        emptyText : '仓库名称',
+        columnWidth: 0.15
+    }, {
+        name: 'toggle',
+        xtype: 'checkbox',
+        fieldLabel : '分仓库存',
+        columnWidth: 0.1,
+        ignore: true,
+        listeners: {
+            change: 'toggle_change'
+        }
     }],
 
-    reportColumns : [{
+    reportColumns2 : [{
         text : "物料编号", 
         width : 150, 
         dataIndex : "rc_prodCode", 
@@ -102,6 +119,53 @@ Ext.define('saas.view.stock.report.DataList', {
             return Ext.util.Format.number(v, format);
         },
     }],
+
+    reportColumns : [{
+        text : "物料编号", 
+        width : 150, 
+        dataIndex : "rc_prodCode", 
+        xtype : "", 
+    },{
+        text : "物料名称", 
+        width : 200.0, 
+        dataIndex : "rc_prodDetail", 
+    }, 
+    {
+        text : "物料规格", 
+        dataIndex : "rc_prodSpec", 
+        width : 150.0, 
+    }, 
+    {
+        text : "单位", 
+        dataIndex : "rc_prodUnit", 
+        width : 80.0, 
+    }, 
+    {
+        text : "数量",
+        xtype: 'numbercolumn',
+        dataIndex : "rc_number", 
+        width : 110.0, 
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length>3?3:arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    }, 
+    {
+        text : "金额", 
+        xtype: 'numbercolumn',
+        dataIndex : "rc_amount", 
+        width : 110.0,
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length>2?2:arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+    }, {
+        flex: 1
+    }],
 })
 
 

+ 17 - 4
frontend/saas-web/app/view/stock/report/DataListController.js

@@ -2,9 +2,22 @@ Ext.define('saas.view.stock.report.DataListController', {
     extend: 'saas.view.core.report.ReportPanelController',
     alias: 'controller.stock-report-datalist',
 
-    init: function (form) {
-        var me = this;
-        this.control({
-        });
+    toggle_change: function(field, newValue, oldValue, eOpts) {
+        var me = this,
+        reportPanel = me.getView(),
+        grid = reportPanel.down('grid'),
+        store = grid.store;
+        
+        if(newValue) {
+            reportPanel.queryMode = 'DETAIL';
+            store.load(function() {
+                grid.reconfigure(store, reportPanel.reportColumns2);
+            });
+        }else {
+            reportPanel.queryMode = 'MAIN';
+            store.load(function() {
+                grid.reconfigure(store, reportPanel.reportColumns);
+            });
+        }
     }
 });