Browse Source

送码入企功能

v5
庄锐波 5 months ago
parent
commit
e57de79a3c
  1. 248
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/enterprise_pub_qrcode/enterprisePubQrcodeQueryList.html
  2. 55
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/EnterprisePubQrcodeController.java
  3. 8
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/mapper/EnterprisePubQrcodeMapper.java
  4. 8
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/IEnterprisePubQrcodeService.java
  5. 93
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/EnterprisePubQrcodeServiceImpl.java
  6. 25
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/resources/mapper/EnterprisePubQrcodeMapper.xml

248
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/enterprise_pub_qrcode/enterprisePubQrcodeQueryList.html

@ -0,0 +1,248 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="zdxtInclude :: header('送码入企信息查询')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<div class="select-list">
<ul>
<li>
<p>企业名称:</p>
<input type="text" name="enterpriseName"/>
</li>
<li>
<p>统一社会信用代码:</p>
<input type="text" name="enterpriseNumber"/>
</li>
<li>
<p>所属区域:</p>
<select name="areaId" id="areaSelect">
<option value="">全部</option>
</select>
</li>
<li>
<p>所属街道:</p>
<select name="streetId" id="streetSelect">
<option value="">全部</option>
</select>
</li>
<li>
<p>匹配状态:</p>
<select name="matchingStatus">
<option value="">全部</option>
<option value="未匹配">未匹配</option>
<option value="已匹配">已匹配</option>
<option value="强制匹配">强制匹配</option>
<option value="匹配失败">匹配失败</option>
</select>
</li>
<li>
<p>下载情况:</p>
<select name="downloadStatus">
<option value="">全部</option>
<option value="未下载">未下载</option>
<option value="已下载">已下载</option>
</select>
</li>
<li>
<p>上传人:</p>
<input type="text" name="userName"/>
</li>
<li>
<p>上传单位:</p>
<input type="text" name="deptName"/>
</li>
<li>
<a class="btn btn-success btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-reset btn-sm" onclick="resetQueryForm()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-primary" onclick="downloadData()">
<i class="fa fa-download"></i> 下载
</a>
</div>
<div class="col-sm-12 select-table table-bordered">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="zdxtInclude :: footer" />
<script th:inline="javascript">
var prefix = ctx + "code/enterprisePubQrcode";
$(function() {
loadAreaDict();
var options = {
url: prefix + "/queryPageList",
modalName: "送码入企信息查询",
showHeader: false,
showFooter: false,
showColumns: false,
showRefresh: false,
showToggle: false,
pageSize: 20,
columns: [
{
checkbox: true
},
{
field : 'id',
title : '主键ID',
visible: false
},
{
field : 'importRowNum',
title : '导入序号'
},
{
field : 'enterpriseName',
title : '企业名称'
},
{
field : 'enterpriseNumber',
title : '统一社会信用代码'
},
{
field : 'areaName',
title : '所属区域'
},
{
field : 'streetName',
title : '所属街道'
},
{
field : 'matchingStatus',
title : '匹配状态',
formatter: function(value, row, index) {
if (value == '匹配失败') {
return '<span style="color:red;text-decoration:underline;cursor:pointer;" title="' + (row.matchingMessage || '') + '">' + value + '</span>';
}
if ((value == '已匹配' || value == '强制匹配') && row.matchingMessage) {
return '<span style="color:blue;text-decoration:underline;cursor:pointer;" title="' + row.matchingMessage + '">' + value + '</span>';
}
return value;
}
},
{
field : 'downloadStatus',
title : '下载情况'
},
{
field : 'userName',
title : '上传人'
},
{
field : 'deptName',
title : '上传单位'
},
{
field : 'remark',
title : '备注'
}]
};
$.table.init(options);
});
/** 加载区域字典数据 */
function loadAreaDict() {
$.ajax({
url: prefix + "/dictAreaList",
type: "get",
dataType: "json",
success: function(result) {
if (result.success && result.data) {
var $areaSelect = $('#areaSelect');
$.each(result.data, function(i, item) {
$areaSelect.append('<option value="' + item.dictValue + '">' + item.dictLabel + '</option>');
});
}
}
});
}
/** 区域变更时加载街道字典数据 */
$('#areaSelect').change(function() {
var areaId = $(this).val();
var $streetSelect = $('#streetSelect');
$streetSelect.html('<option value="">全部</option>');
if (areaId) {
$.ajax({
url: prefix + "/dictStreetList",
type: "get",
data: { areaId: areaId },
dataType: "json",
success: function(result) {
if (result.success && result.data) {
$.each(result.data, function(i, item) {
$streetSelect.append('<option value="' + item.dictValue + '">' + item.dictLabel + '</option>');
});
}
}
});
}
});
/** 重置查询表单 */
function resetQueryForm() {
$.form.reset();
$('#streetSelect').html('<option value="">全部</option>');
}
/** 批量下载 */
function downloadData() {
var rows = $.table.selectColumns("id");
if (rows.length == 0) {
$.modal.alertWarning("请至少选择一条记录");
return;
}
var loadIndex = layer.msg('PDF生成中,请稍候...', {icon: 16, shade: [0.3, '#000'], time: 0});
$.ajax({
url: prefix + "/generatePdf",
type: "post",
data: { "ids": rows.join(",") },
dataType: "json",
success: function(result) {
layer.close(loadIndex);
if (result.success) {
layer.open({
type: 1,
title: '生成完成',
area: ['380px', '200px'],
shade: 0.3,
shadeClose: true,
content: '<div style="padding:30px;text-align:center;">' +
'<p style="margin-bottom:20px;font-size:14px;"><i class="fa fa-check-circle" style="color:#5cb85c;margin-right:6px;"></i>PDF文件已生成完成</p>' +
'<a href="' + result.data + '" class="btn btn-primary" target="_blank">' +
'<i class="fa fa-download"></i> 点击下载</a></div>',
btn: ['关闭'],
btn1: function(index) {
layer.close(index);
$.table.refresh();
},
cancel: function() {
$.table.refresh();
}
});
} else {
$.modal.alertError(result.message);
}
},
error: function() {
layer.close(loadIndex);
$.modal.alertError("生成失败,请联系管理员!");
}
});
}
</script>
</body>
</html>

55
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/EnterprisePubQrcodeController.java

@ -23,6 +23,8 @@ import org.springframework.web.multipart.MultipartFile;
import com.zdxt.code.domain.EnterprisePubQrcode;
import com.zdxt.code.service.IEnterprisePubQrcodeService;
import com.zdxt.auth.project.system.dict.service.IDictDataService;
import com.zdxt.domain.auth.DictData;
import javax.servlet.http.HttpServletResponse;
@ -46,6 +48,9 @@ public class EnterprisePubQrcodeController extends BaseController
@Autowired
private IEnterprisePubQrcodeService enterprisePubQrcodeService;
@Autowired
private IDictDataService iDictDataService;
@RequiresPermissions("code:pubQrcode:view")
@GetMapping()
public String pubQrcode()
@ -53,6 +58,12 @@ public class EnterprisePubQrcodeController extends BaseController
return prefix + "/enterprisePubQrcodeList";
}
@GetMapping("/queryListPage")
public String pubQrcodeQueryList()
{
return prefix + "/enterprisePubQrcodeQueryList";
}
/**
* 查询送码入企信息列表
*/
@ -321,4 +332,48 @@ public class EnterprisePubQrcodeController extends BaseController
return ZDResponse.error(e.getMessage());
}
}
/**
* 送码入企信息查询页面
*/
@RequiresPermissions("code:pubQrcodeQuery:view")
@GetMapping("/queryPage")
public String pubQrcodeQueryPage()
{
return prefix + "/enterprisePubQrcodeQueryList";
}
/**
* 查询送码入企信息列表含数据范围过滤
*/
@RequiresPermissions("code:pubQrcodeQuery:list")
@PostMapping("/queryPageList")
@ResponseBody
public TableDataInfo queryPageList(EnterprisePubQrcode enterprisePubQrcode)
{
List<EnterprisePubQrcode> list = enterprisePubQrcodeService.selectEnterprisePubQrcodeQueryList(enterprisePubQrcode);
return getDataTable(list);
}
/**
* 获取区域字典数据
*/
@GetMapping("/dictAreaList")
@ResponseBody
public ZDResponse dictAreaList()
{
List<DictData> list = iDictDataService.selectDictDataByType("address_type");
return ZDResponse.success("查询成功", list);
}
/**
* 获取街道字典数据根据区域dictValue作为dictType查询
*/
@GetMapping("/dictStreetList")
@ResponseBody
public ZDResponse dictStreetList(String areaId)
{
List<DictData> list = iDictDataService.selectDictDataByType(areaId);
return ZDResponse.success("查询成功", list);
}
}

8
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/mapper/EnterprisePubQrcodeMapper.java

@ -86,6 +86,14 @@ public interface EnterprisePubQrcodeMapper
*/
List<EnterprisePubQrcode> selectEnterprisePubQrcodeByIds(String[] ids);
/**
* 查询送码入企信息列表含数据范围过滤
*
* @param enterprisePubQrcode 查询条件params.areaNames用于数据范围过滤
* @return 送码入企信息集合
*/
List<EnterprisePubQrcode> selectEnterprisePubQrcodeQueryList(EnterprisePubQrcode enterprisePubQrcode);
/**
* 批量更新下载状态和备注
*

8
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/IEnterprisePubQrcodeService.java

@ -30,4 +30,12 @@ public interface IEnterprisePubQrcodeService {
String generatePdfFile(String ids) throws Exception;
int batchUpdateDownloadStatus(String ids, String downloadStatus, String remark);
/**
* 查询送码入企信息列表含数据范围过滤
*
* @param enterprisePubQrcode 查询条件
* @return 送码入企信息集合
*/
List<EnterprisePubQrcode> selectEnterprisePubQrcodeQueryList(EnterprisePubQrcode enterprisePubQrcode);
}

93
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/EnterprisePubQrcodeServiceImpl.java

@ -33,9 +33,12 @@ import com.lowagie.text.pdf.PdfOutline;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import com.zdxt.auth.dto.DeptBean;
import com.zdxt.auth.dto.RoleBean;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.feign.FileUploadApi;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.project.system.dept.mapper.DeptMapper;
import com.zdxt.auth.project.system.dept.service.IDeptService;
import com.zdxt.code.domain.EnterpriseInformation;
import com.zdxt.code.mapper.EnterpriseInformationMapper;
@ -46,14 +49,17 @@ import com.zdxt.auth.project.system.dict.service.IDictDataService;
import com.zdxt.common.config.RuoYiConfig;
import com.zdxt.common.util.Constants;
import com.zdxt.common.util.DateUtils;
import com.zdxt.common.util.PageUtil;
import com.zdxt.common.util.StringUtils;
import com.zdxt.domain.auth.Dept;
import com.zdxt.domain.auth.DictData;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -110,6 +116,9 @@ public class EnterprisePubQrcodeServiceImpl implements IEnterprisePubQrcodeServi
@Autowired
private FileUploadApi fileUploadApi;
@Autowired
private DeptMapper deptMapper;
@Value("${ruoyi.profile}")
private String filePath;
@ -916,6 +925,90 @@ public class EnterprisePubQrcodeServiceImpl implements IEnterprisePubQrcodeServi
return enterprisePubQrcodeMapper.batchUpdateDownloadStatus(idArray, downloadStatus, remark);
}
/**
* 查询送码入企信息列表含数据范围过滤
*
* @param enterprisePubQrcode 查询条件
* @return 送码入企信息集合
*/
@Override
public List<EnterprisePubQrcode> selectEnterprisePubQrcodeQueryList(EnterprisePubQrcode enterprisePubQrcode)
{
List<DeptBean> checkDept = check();
if (checkDept != null && checkDept.isEmpty())
{
return new ArrayList<>();
}
if (checkDept != null)
{
List<String> deptIds = new ArrayList<>();
for (DeptBean deptBean : checkDept)
{
deptIds.add(deptBean.getDeptId());
}
enterprisePubQrcode.getParams().put("deptIds", deptIds);
}
PageUtil.startPage();
return enterprisePubQrcodeMapper.selectEnterprisePubQrcodeQueryList(enterprisePubQrcode);
}
/**
* 数据范围校验根据当前用户角色的dataScope判断可查询的数据范围
* 参考 EnterpriseInformationServiceImpl.check 方法
*
* @return null表示全部可见空集合表示无权限非空集合表示可见的部门区域列表
*/
private List<DeptBean> check()
{
UserBean currentUser = userApi.getCurrentUser();
List<DeptBean> deptBeans = new ArrayList<>();
if (currentUser.isAdmin())
{
return null;
}
for (RoleBean role : currentUser.getRoles())
{
String dataScope = role.getDataScope();
if ("2".equals(dataScope))
{
List<Dept> depts = deptMapper.selectDeptByRoleId(role.getRoleId());
if (CollectionUtils.isNotEmpty(depts))
{
for (Dept dept : depts)
{
DeptBean deptBean = new DeptBean();
BeanUtils.copyProperties(dept, deptBean);
deptBeans.add(deptBean);
}
}
}
else if ("3".equals(dataScope))
{
Dept dept = deptMapper.selectDeptById(currentUser.getDeptId());
if (java.util.Objects.nonNull(dept))
{
DeptBean deptBean = new DeptBean();
BeanUtils.copyProperties(dept, deptBean);
deptBeans.add(deptBean);
}
}
else if ("4".equals(dataScope))
{
List<Dept> depts = deptMapper.selectSelfAndChildrenById(currentUser.getDeptId());
if (CollectionUtils.isNotEmpty(depts))
{
for (Dept dept : depts)
{
DeptBean deptBean = new DeptBean();
BeanUtils.copyProperties(dept, deptBean);
deptBeans.add(deptBean);
}
}
}
}
return deptBeans;
}
/**
* 生成并存储蓝色二维码带LOGO同时写入qr_code_generate_history表
*

25
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/resources/mapper/EnterprisePubQrcodeMapper.xml

@ -88,6 +88,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by import_row_num asc
</select>
<select id="selectEnterprisePubQrcodeQueryList" parameterType="EnterprisePubQrcode" resultMap="EnterprisePubQrcodeResult">
<include refid="selectEnterprisePubQrcodeVo"/>
<where>
<if test="enterpriseName != null and enterpriseName != ''"> and enterprise_name like concat('%', #{enterpriseName}, '%')</if>
<if test="enterpriseNumber != null and enterpriseNumber != ''"> and enterprise_number like concat('%', #{enterpriseNumber}, '%')</if>
<if test="areaName != null and areaName != ''"> and area_name = #{areaName}</if>
<if test="areaId != null and areaId != ''"> and area_id = #{areaId}</if>
<if test="streetName != null and streetName != ''"> and street_name = #{streetName}</if>
<if test="streetId != null and streetId != ''"> and street_id = #{streetId}</if>
<if test="matchingStatus != null and matchingStatus != ''"> and matching_status = #{matchingStatus}</if>
<if test="downloadStatus != null and downloadStatus != ''"> and download_status = #{downloadStatus}</if>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
<if test="deptName != null and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
<if test="importFileName != null and importFileName != ''"> and import_file_name like concat('%', #{importFileName}, '%')</if>
<if test="remark != null and remark != ''"> and remark like concat('%', #{remark}, '%')</if>
<if test="params.deptIds != null and params.deptIds.size() > 0">
and dept_id in
<foreach item="deptIdItem" collection="params.deptIds" open="(" separator="," close=")">
#{deptIdItem}
</foreach>
</if>
</where>
order by create_time desc, import_row_num asc
</select>
<insert id="insertEnterprisePubQrcode" parameterType="EnterprisePubQrcode">
insert into enterprise_pub_qrcode
<trim prefix="(" suffix=")" suffixOverrides=",">

Loading…
Cancel
Save