设备组查询显示子设备组的设备,设备管理编辑调整,报表导入提示修改
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 84dffed..77d4185 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -8,7 +8,7 @@
#logging.level.org.hibernate.SQL=DEBUG
# Postgresql settings
spring.datasource.platform=postgresql
-spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/restaurantdev
+spring.datasource.url=jdbc:postgresql://172.28.201.101:25432/restauranttest
spring.datasource.username=payapi
spring.datasource.password=123456
database.dbtype=postgresql
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
index ecfb7c9..804526e 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
@@ -35,10 +35,8 @@
//获取生成的验证码
String verifyCodeExpected = (String) request.getSession()
.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
- System.out.println(verifyCodeExpected);
//获取用户输入的验证码
String verifyCodeActual = CodeUtil.getString(request, "imageCode");
- System.out.println(verifyCodeActual);
if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {
return false;
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
index 197f709..c75b27f 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
@@ -47,8 +47,7 @@
searchBean.setPageNo(pageNo);
searchBean.setDevgroupid(searchKey);
searchBean.setPageSize(pageSize);
- System.out.println(searchKey+"&&&&");
- return deviceService.getDeviceByGroupId(searchBean);
+ return deviceService.getBindDevicesBySearch(searchBean);
} catch (Exception e) {
e.printStackTrace();
return new PageResult<>(99, "系统查询错误");
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
index bc0cae0..ed32a71 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.restaurant.controller;
+import com.google.gson.Gson;
import com.supwisdom.dlpay.api.bean.JsonResult;
import com.supwisdom.dlpay.restaurant.bean.DeviceSearchBean;
import com.supwisdom.dlpay.restaurant.domain.TDevice;
@@ -18,7 +19,10 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
@Controller
@RequestMapping("/devicemanage")
public class DeviceManageController {
@@ -32,6 +36,14 @@
@RequestMapping("/index")
public String indexView(ModelMap model) {
+ Map<Integer, String> map = new HashMap<>();
+ List<TDeviceGroup> lst = groupService.findAll();
+ for (TDeviceGroup group : lst) {
+ map.put(group.getDevgroupid(), group.getGroupname());
+ }
+ Gson gson = new Gson();
+ String gsonString = gson.toJson(map);
+ model.put("groupList", gsonString);
return "restaurant/devicemanage/index";
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
index 0eee4e7..f7223da 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
@@ -39,4 +39,8 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
JsonResult importFile(MultipartFile file, HttpServletRequest request) throws Exception;
+
+ @Transactional(rollbackFor = Exception.class, readOnly = true)
+ PageResult<TDevice> getBindDevicesBySearch(DeviceSearchBean searchBean);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index 0d6e626..b6360ac 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -126,12 +126,17 @@
// InputStream excelstream = new FileInputStream(savePath+"/"+fname);
InputStream excelstream = file.getInputStream();
List<Object[][]> oList = null;
- if (fname.endsWith(".xls")) {
- oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
- } else {
- oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+ try{
+ if (fname.endsWith(".xls")) {
+ oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
+ } else {
+ oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+ }
+ }catch (Exception e){
+ return JsonResult.error("模板格式错误,请重新下载模板");
}
+
String msg = "";
Integer successCnt=0;
Integer failCnt=0;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
index cafc853..72efa0b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
@@ -200,14 +200,19 @@
throw new WebCheckException("文件格式错误,请选择excel文件");
}
List<Object[][]> excelData = null;
- if (filename.endsWith(".xls")) {
- excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
- } else {
- excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+ try{
+ if (filename.endsWith(".xls")) {
+ excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
+ } else {
+ excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+ }
+ if (null == excelData || excelData.size() < 1) {
+ throw new WebCheckException("excel文件解析错误");
+ }
+ }catch (ArrayIndexOutOfBoundsException e){
+ throw new WebCheckException("模板格式错误,请重新下载模板");
}
- if (null == excelData || excelData.size() < 1) {
- throw new WebCheckException("excel文件解析错误");
- }
+
int index_cardno = -1;
int index_name = -1;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
index 37be9e7..3eeb755 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
@@ -1,6 +1,7 @@
package com.supwisdom.dlpay.restaurant.service.impl;
import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.exception.WebCheckException;
import com.supwisdom.dlpay.restaurant.bean.DeviceSearchBean;
import com.supwisdom.dlpay.restaurant.dao.DeviceDao;
import com.supwisdom.dlpay.restaurant.dao.ShopDeviceDao;
@@ -12,6 +13,9 @@
import com.supwisdom.dlpay.framework.util.ImportExcelUtil;
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.framework.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hibernate.query.internal.NativeQueryImpl;
+import org.hibernate.transform.Transformers;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -20,9 +24,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
import javax.persistence.criteria.*;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -36,6 +44,8 @@
private ShopDeviceDao shopDeviceDao;
@Autowired
private ShopSettlementDao shopSettlementDao;
+ @PersistenceContext
+ private EntityManager entityManager;
@Override
public PageResult<TDevice> getDeviceByParam(DeviceSearchBean param) {
@@ -115,7 +125,6 @@
@Override
public JsonResult updateDevice(TDevice device) {
-
TDevice d = deviceDao.findTDeviceById(device.getId());
d.setDevicename(device.getDevicename());
d.setDevgroupid(device.getDevgroupid());
@@ -156,13 +165,20 @@
// InputStream excelstream = new FileInputStream(savePath+"/"+fname);
InputStream excelstream = file.getInputStream();
List<Object[][]> oList = null;
- if (fname.endsWith(".xls")) {
- oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
- } else {
- oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+ try{
+ if (fname.endsWith(".xls")) {
+ oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
+ } else {
+ oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+ }
+ }catch (Exception e){
+ return JsonResult.error("模板格式错误,请重新下载模板");
}
+
String msg = "";
+ Integer successCnt=0;
+ Integer failCnt=0;
for (Object[][] data : oList) {
for (int i = 1; i < data.length; i++) {
@@ -194,8 +210,45 @@
return JsonResult.ok("成功导入"+sList.size()+"条信息");
}
+ msg="导入成功"+successCnt+"条,导入失败"+failCnt+"条<br/>"+msg;
+
return JsonResult.error(String.format(Locale.CHINESE, msg));
}
+ @Override
+ public PageResult<TDevice> getBindDevicesBySearch(DeviceSearchBean searchBean) {
+ List<Integer> chirdGroupids = null;
+ Integer devgroupid=searchBean.getDevgroupid();
+ if (null != devgroupid) {
+ Query chirdGroupQuery = entityManager.createNativeQuery(" WITH RECURSIVE r AS ( " +
+ " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
+ " union ALL " +
+ " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
+ " SELECT devgroupid FROM r ORDER BY devgroupid ");
+ chirdGroupQuery.setParameter("gid", devgroupid.intValue());
+ chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+ }
+
+ StringBuffer sql = new StringBuffer("select t.id ,t.devicename,t.devphyid,t.shopid,t.factoryid,t.state " +
+ " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid ");
+ StringBuffer countsql = new StringBuffer("select count(*) " +
+ " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid ");
+
+ if (!StringUtil.isEmpty(chirdGroupids)) {
+ sql.append(" where t.devgroupid in ("+ StringUtils.join(chirdGroupids.toArray(),",")+") ");
+ countsql.append(" where t.devgroupid in ("+ StringUtils.join(chirdGroupids.toArray(),",")+") ");
+
+ }
+ sql.append(" order by t.id ");
+ Query query = entityManager.createNativeQuery(sql.toString());
+ query.setFirstResult((searchBean.getPageNo() - 1) * searchBean.getPageSize());
+ query.setMaxResults(searchBean.getPageSize()); //分页显示
+ Query countQuery = entityManager.createNativeQuery(countsql.toString());
+ query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(TDevice.class));
+ List<TDevice> list = query.getResultList();
+ BigInteger count = (BigInteger) countQuery.getSingleResult();
+ return new PageResult<>(count.longValue(),list);
+ }
+
}
diff --git a/src/main/resources/templates/restaurant/devicegroup/index.html b/src/main/resources/templates/restaurant/devicegroup/index.html
index dcb9d31..775f629 100644
--- a/src/main/resources/templates/restaurant/devicegroup/index.html
+++ b/src/main/resources/templates/restaurant/devicegroup/index.html
@@ -51,7 +51,6 @@
table.render({
elem: '#devicegroup-table',
url: '[[@{/devicegroup/listDevice}]]',
- where: {searchkey:0},
page: true,
cols: [
[
diff --git a/src/main/resources/templates/restaurant/devicemanage/form.html b/src/main/resources/templates/restaurant/devicemanage/form.html
index 09d53ba..41cf76a 100644
--- a/src/main/resources/templates/restaurant/devicemanage/form.html
+++ b/src/main/resources/templates/restaurant/devicemanage/form.html
@@ -1,6 +1,6 @@
<form id="form" lay-filter="form" class="layui-form model-form">
- <input name="id" id="id" type="hidden"/>
+ <input name="id" id="devicemanage-id" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red">* </span>设备名称</label>
<div class="layui-input-block">
diff --git a/src/main/resources/templates/restaurant/devicemanage/index.html b/src/main/resources/templates/restaurant/devicemanage/index.html
index 283b379..1bde305 100644
--- a/src/main/resources/templates/restaurant/devicemanage/index.html
+++ b/src/main/resources/templates/restaurant/devicemanage/index.html
@@ -25,13 +25,16 @@
<table class="layui-table" id="devicemanage-table" lay-filter="devicemanage-table"></table>
</div>
</div>
-
+<input hidden th:value="${groupList}" id="grouplist">
<script type="text/html" id="devicemanage-dev-tpl-state">
<input type="checkbox" lay-filter="devicemanage-dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
{{d.state=='1'?'checked':''}} />
</script>
<script>
+ var rawlist=$("#grouplist").val();
+ var grouplist=JSON.parse(rawlist);
+
layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
let form = layui.form;
let table = layui.table;
@@ -44,14 +47,26 @@
elem: '#devicemanage-table',
url: '[[@{/devicemanage/list}]]',
page: true,
+ minWidth: 80,
cols: [
[
{field: 'id', title: '终端编号', sort: true},
{field: 'devicename', title: '设备名称', width:200},
- {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
- {field: 'shopid', sort: true, width: 150, title: '商户id'},
- {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
- {field: 'state', title: '状态', sort: true, width: 100, templet: '#devicemanage-dev-tpl-state'},
+ {field: 'devphyid', sort: true, title: '设备物理id'},
+ {field: 'shopid', sort: true, title: '商户id'},
+ {field: 'factoryid', sort: true, title: '设备厂商'},
+ {
+ field: 'groupid',
+ sort: true,
+ title: '设备组',
+ templet: function (item) {
+ if(item.devgroupid==0||item.devgroupid== null){
+ return '无';
+ }
+ return grouplist[item.devgroupid];
+ }
+ },
+ {field: 'state', title: '状态', sort: true, templet: '#devicemanage-dev-tpl-state'},
{
field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
return ' <a class="layui-btn layui-btn-xs" lay-event="devicemanage-edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ';
@@ -76,7 +91,7 @@
let showModel = function (data) {
let title = data ? '修改设备信息' : '添加设备';
- admin.putTempData('t_dev', data);
+ admin.putTempData('t_devm', data);
admin.popupCenter({
title: title,
path: '[[@{/devicemanage/loadupdate}]]',
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index 236edb9..175f81c 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -8,7 +8,7 @@
</div>
<div class="layui-form-item">
- <label class="layui-form-label">餐补名称</label>
+ <label class="layui-form-label"><span style="color: red">* </span>餐补名称</label>
<div class="layui-input-block">
<input type="text" class="layui-input" name="rulename" id="form-discountrule-rulename" maxlength="20" style="width: 90%;"
autocomplete="off" lay-verify="required|Rulename"/>
@@ -16,7 +16,7 @@
</div>
<div class="layui-form-item">
- <label class="layui-form-label">可用时间段</label>
+ <label class="layui-form-label"><span style="color: red">* </span>可用时间段</label>
<div class="layui-input-inline" style="width: 100px;">
<input type="text" name="starttime" placeholder="9:00" id="form-discountrule-starttime" autocomplete="off" maxlength="5"
class="layui-input" lay-verify="required"/>
@@ -29,7 +29,7 @@
</div>
<div class="layui-form-item">
- <label class="layui-form-label" id="form-discountrule-amount-text">固定金额(元)</label>
+ <label class="layui-form-label" id="form-discountrule-amount-text"><span style="color: red">* </span>固定金额(元)</label>
<div class="layui-input-block">
<input type="text" name="amount" id="form-discountrule-amount" maxlength="9" autocomplete="off" style="width: 90%;"
class="layui-input" lay-verify="required|Amount"/>
@@ -37,7 +37,7 @@
</div>
<div class="layui-form-item">
- <label class="layui-form-label">可用次数/人</label>
+ <label class="layui-form-label"><span style="color: red">* </span>可用次数/人</label>
<div class="layui-input-block">
<input type="text" name="limitcnt" id="form-discountrule-limitcnt" maxlength="9" autocomplete="off" style="width: 90%;"
class="layui-input" lay-verify="required|number"/>
@@ -45,7 +45,7 @@
</div>
<div class="layui-form-item">
- <label class="layui-form-label">餐补对象</label>
+ <label class="layui-form-label"><span style="color: red">* </span>餐补对象</label>
<div class="layui-input-inline" style="width: auto;">
<button type="button" class="layui-btn upoadfile-btn" >
<i class="layui-icon"></i>上传名单