feat:人员类型统计

ln_ry20250512
wangxy 4 days ago
parent 8f2ac2271e
commit fb91261b9f

@ -1,40 +1,23 @@
package com.ruoyi.web.controller.system.count;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.StrPool;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysPostVO;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ObtainLastSixMonthsUtil;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.domain.apply.TdApplyInfoList;
import com.ruoyi.system.domain.apply.dto.ApplyCountDTO;
import com.ruoyi.system.domain.apply.dto.ApplySmCountDTO;
import com.ruoyi.system.domain.check.TdCheckReport;
import com.ruoyi.system.domain.count.UserCountDTO;
import com.ruoyi.system.domain.count.UserSmCountDTO;
import com.ruoyi.system.service.*;
import com.ruoyi.system.domain.apply.dto.TdApplyInfoListDTO;
import com.ruoyi.system.service.apply.TdApplyInfoListService;
import com.ruoyi.web.controller.manager.ApplyInfoListManager;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
@ -44,28 +27,23 @@ import java.util.stream.Collectors;
/**
*
* @author Administrator
*/
@Controller
@RequestMapping("/system/usernum")
public class SysUsernumController extends BaseController {
private String prefix = "system/usernum";
@Autowired
private ISysUserService userService;
private String prefix = "system/usernum";
@Autowired
private ISysPostService postService;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysDeptService deptService;
@Autowired
private SysUserPostService sysUserPostService;
private String prefixPre = "system/newdev/person";
@Resource
private TdApplyInfoListService applyInfoListService;
@Resource
private ApplyInfoListManager applyInfoListManager;
@RequiresPermissions("system:usernum:view")
@GetMapping()
public String user() {
@ -75,66 +53,28 @@ public class SysUsernumController extends BaseController {
/**
*
*
* @param user
* @param applyInfoListDTO
* @return
*/
@RequiresPermissions("system:usernum:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(SysUser user, SysDept dept) {
public TableDataInfo list(TdApplyInfoListDTO applyInfoListDTO) {
startPage();
List<SysUser> sysuser = new ArrayList<>();
List<SysUser> list = userService.selectUserGroupBydept(user);
List<SysDept> sysDepts = deptService.selectDeptList(dept);
for (SysDept sysDept : sysDepts) {
for (SysUser user1 : list) {
if (sysDept.getDeptId().equals(user1.getDept().getDeptId())) {
sysuser.add(user1);
}
}
}
return getDataTable(sysuser);
List<TdApplyInfoList> tdApplyInfoLists = applyInfoListManager.selectPersonList(applyInfoListDTO);
return getDataTable(tdApplyInfoLists);
}
/**
*
*
* @param user
* @return
*/
@Log(title = "用户统计", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:usernum:export")
@PostMapping("/export")
@ResponseBody
public AjaxResult export(SysUser user) {
List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
return util.exportExcel(list, "用户统计数据");
}
/**
*
*
*/
@RequiresPermissions("system:usernum:detail")
@GetMapping("/print/{deptId}")
public String print(@PathVariable("deptId") Long deptId, SysUser user, ModelMap mmap) {
List<SysUser> list = userService.lambdaQuery().eq(SysUser::getDeptId, deptId)
.eq(SysUser::getDelFlag, '0')
.ne(SysUser::getUserId, 1)
.list();
list.forEach(sysuser -> {
List<SysUserPost> postList = sysUserPostService.lambdaQuery().
eq(SysUserPost::getUserId, sysuser.getUserId()).list();
List<Long> postIds = postList.stream().map(SysUserPost::getPostId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(postIds)) {
List<SysPost> sysPostList = postService.lambdaQuery().in(SysPost::getPostId, postIds).list();
sysuser.setPosts(Convert.toList(SysPostVO.class, sysPostList));
}
});
mmap.put("list", list);
mmap.put("dept", deptService.selectDeptById(deptId));
mmap.put("sysuser", getSysUser());
return prefix + "/print";
@GetMapping("/detail/{applyId}")
public String detail(@PathVariable("applyId") String applyId, ModelMap mmap) {
TdApplyInfoListDTO applyInfoList = applyInfoListManager.getTdApplyInfoList(applyId);
mmap.put("applyInfoList", applyInfoList);
return prefixPre + "/detail";
}

@ -45,30 +45,26 @@
<div class="select-list">
<ul>
<li>
<label>单位名称</label>
<input type="text" name="deptName"/>
<label style="width: 80px">姓名</label>
<input type="text" name="name"/>
</li>
<li>
<label>所属市州:</label>
<select id="City" name="framework" @change="getAreaList()" v-model="City">
<option value="">请选择</option>
<option v-for="option in CityList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
<label>身份证号:</label>
<input type="text" name="cerno"/>
</li>
<li>
<label>所属区县:</label>
<select id="Area" name="area" v-model="Area">
<option value="">请选择</option>
<option v-for="option in AreaList" :value="option.id" :key="option.id">
{{ option.name }}
</option>
</select>
<label>联系方式:</label>
<input type="text" name="phone"/>
</li>
<li>
状态:<select name="applyStatus" th:with="type=${@dict.getType('sys_user_apply_status')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
@ -87,10 +83,9 @@
<th:block th:include="include :: echarts-js" />
<script th:inline="javascript">
var detailFlag = [[${@permission.hasPermi('system:usernum:detail')}]];
var politics = [[${@dict.getType('sys_user_politics')}]];
var shemichengdu = [[${@dict.getType('sys_user_shemi')}]];
var examineState = [[${@dict.getType('sys_examine_state')}]];
var applyState = [[${@dict.getType('sys_user_apply_status')}]];
var prefix = ctx + "system/usernum";
var prefixPer = ctx + "system/personList";
let datas = []
$.ajax({
url: ctx + "system/area/getAllList",
@ -120,49 +115,96 @@
function queryUserList() {
var options = {
url: prefix + "/list",
createUrl: prefix + "/add",
detail: prefix + "/detail/{id}",
print: prefix + "/print/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "用户",
pageSize:'5',
detailUrl:prefix + "/detail/{id}",
modalName: "涉密人员",
type: 0,
columns: [
{
field : 'dept.deptid',
title : '编号',
field: 'applyId',
title: 'id',
visible: false
},
{
field: 'dept.framework',
title: '所属市州',
formatter: function(value, row, index) {
return getCity(datas, value)
}
field: 'name',
title: '姓名'
},
{
field: 'sex',
title: '性别'
},
{
field: 'dept.area',
title: '所属区县',
field: 'nationality',
title: '民族',
},
{
field: 'maritalStatus',
title: '婚姻状况',
},
{
field: 'cerno',
title: '身份证号',
},
{
field: 'phone',
title: '联系方式',
},
{
field: 'smPost',
title: '已(拟)任涉密岗位',
},
{
field: 'smGrade',
title: '涉密等级',
},
{
title: '状态',
align: 'center',
field: 'applyStatus',
formatter: function(value, row, index) {
return getCity(datas, value)
return $.table.selectDictLabel(applyState, value);
}
},
{
field: 'dept.deptName',
title: '所在单位'
field: 'createTime',
title: '创建时间',
sortable: true
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="print(\'' + row.deptId + '\')"><i class="fa fa-download"></i>打印</a> ');
return actions.join(''); }
if(row.remark == '1') {
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="handleDetail(\'' + row.applyId + '\')"><i class="fa fa-edit"></i>调岗记录</a> ');
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.applyId + '\')"><i class="fa fa-edit"></i>查看</a> ');
}else{
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.applyId + '\')"><i class="fa fa-edit"></i>查看</a> ');
}
return actions.join('');
}
}]
};
$.table.init(options);
}
function handleDetail(applyId){
table.set();
var _url = prefixPer + '/getApplyRecord/' + applyId;
var options = {
title:'调岗记录',
width: '900',
height: '900',
url: _url,
skin: 'layui-layer-gray',
btn: ['关闭'],
yes: function (index, layero) {
$.modal.close(index);
}
};
$.modal.openOptions(options);
}
/* 自定义重置-表单重置/隐藏框/树节点选择色/搜索 */
function resetPre() {
resetDate();

Loading…
Cancel
Save