需求开发

This commit is contained in:
liang.chao 2025-07-02 10:58:27 +08:00
parent 76253664d0
commit 3f5be5d844
7 changed files with 112 additions and 94 deletions

View File

@ -83,6 +83,7 @@ public class TeamGroupController extends BaseController<TeamGroupBean> {
} }
return ar; return ar;
} }
// 获取班组人员-综合查询 // 获取班组人员-综合查询
@GetMapping("getTeamGroupPersons") @GetMapping("getTeamGroupPersons")
public AjaxRes getTeamGroupPersons(TeamGroupBean teamGroupBean) { public AjaxRes getTeamGroupPersons(TeamGroupBean teamGroupBean) {
@ -190,8 +191,8 @@ public class TeamGroupController extends BaseController<TeamGroupBean> {
@RequestMapping(value = "importTeamPerson", method = RequestMethod.POST) @RequestMapping(value = "importTeamPerson", method = RequestMethod.POST)
@ResponseBody @ResponseBody
public AjaxRes importTeamPerson(@RequestParam("file") MultipartFile file) { public AjaxRes importTeamPerson(@RequestParam String id, @RequestParam("file") MultipartFile file) {
return teamGroupService.importTeamPerson(file); return teamGroupService.importTeamPerson(id,file);
} }
} }

View File

@ -26,7 +26,7 @@ public interface TeamGroupService {
Integer delTeamPerson(TeamGroupBean teamGroupBean); Integer delTeamPerson(TeamGroupBean teamGroupBean);
AjaxRes importTeamPerson(MultipartFile file); AjaxRes importTeamPerson(String id, MultipartFile file);
List<TeamGroupBean> getTeamGroupPersons(TeamGroupBean teamGroupBean); List<TeamGroupBean> getTeamGroupPersons(TeamGroupBean teamGroupBean);
} }

View File

@ -111,7 +111,7 @@ public class TeamGroupServiceImpl implements TeamGroupService {
} }
@Override @Override
public AjaxRes importTeamPerson(MultipartFile file) { public AjaxRes importTeamPerson(String teamId, MultipartFile file) {
AjaxRes ar = new AjaxRes(); AjaxRes ar = new AjaxRes();
List<Map<String, String>> successList = new ArrayList<>(); List<Map<String, String>> successList = new ArrayList<>();
@ -133,8 +133,8 @@ public class TeamGroupServiceImpl implements TeamGroupService {
Row row = sheet.getRow(i); Row row = sheet.getRow(i);
if (row == null) continue; if (row == null) continue;
String idCard = getCellValue(row.getCell(2)); String idCard = getCellValue(row.getCell(1));
String phone = getCellValue(row.getCell(3)); String phone = getCellValue(row.getCell(2));
if (StringUtils.isBlank(idCard)) { if (StringUtils.isBlank(idCard)) {
ar.setFailMsg("身份证号不能为空"); ar.setFailMsg("身份证号不能为空");
return ar; return ar;
@ -181,7 +181,7 @@ public class TeamGroupServiceImpl implements TeamGroupService {
Row row = sheet.getRow(i); Row row = sheet.getRow(i);
if (row == null) continue; if (row == null) continue;
Map<String, String> rowData = processRow(row, existIdCards, existPhones); Map<String, String> rowData = processRow(teamId, row, existIdCards, existPhones);
if (rowData.containsKey("error")) { if (rowData.containsKey("error")) {
ar.setFailMsg(rowData.get("error")); ar.setFailMsg(rowData.get("error"));
return ar; return ar;
@ -213,23 +213,16 @@ public class TeamGroupServiceImpl implements TeamGroupService {
} }
// 处理单行数据 // 处理单行数据
private Map<String, String> processRow(Row row, Map<String, Boolean> existIdCards, Map<String, Boolean> existPhones) { private Map<String, String> processRow(String teamId, Row row, Map<String, Boolean> existIdCards, Map<String, Boolean> existPhones) {
Map<String, String> rowData = new HashMap<>(); Map<String, String> rowData = new HashMap<>();
StringBuilder errorMsg = new StringBuilder(); StringBuilder errorMsg = new StringBuilder();
// 获取单元格值 // 获取单元格值
String teamName = getCellValue(row.getCell(0)); String name = getCellValue(row.getCell(0));
String name = getCellValue(row.getCell(1)); String idCard = getCellValue(row.getCell(1));
String idCard = getCellValue(row.getCell(2)); String phone = getCellValue(row.getCell(2));
String phone = getCellValue(row.getCell(3)); String sex = getCellValue(row.getCell(3));
String sex = getCellValue(row.getCell(4)); String workType = getCellValue(row.getCell(4));
String workType = getCellValue(row.getCell(5));
// 校验班组名称是否存在
Integer teamId = teamGroupDao.getIdByName(teamName);
if (teamId == null) {
errorMsg.append(teamName + "名称不存在; ");
}
// 校验身份证 // 校验身份证
if (idCard == null || idCard.isEmpty()) { if (idCard == null || idCard.isEmpty()) {
@ -268,7 +261,7 @@ public class TeamGroupServiceImpl implements TeamGroupService {
} }
// 如果没有错误保存数据 // 如果没有错误保存数据
rowData.put("teamId", String.valueOf(teamId)); rowData.put("teamId", teamId);
rowData.put("name", name); rowData.put("name", name);
rowData.put("idCard", idCard); rowData.put("idCard", idCard);
rowData.put("phone", phone); rowData.put("phone", phone);
@ -281,12 +274,11 @@ public class TeamGroupServiceImpl implements TeamGroupService {
private boolean validateHeader(Row headerRow) { private boolean validateHeader(Row headerRow) {
if (headerRow == null) return false; if (headerRow == null) return false;
return "班组名称".equals(getCellValue(headerRow.getCell(0))) && return "姓名".equals(getCellValue(headerRow.getCell(0))) &&
"姓名".equals(getCellValue(headerRow.getCell(1))) && "身份证".equals(getCellValue(headerRow.getCell(1))) &&
"身份证".equals(getCellValue(headerRow.getCell(2))) && "电话".equals(getCellValue(headerRow.getCell(2))) &&
"电话".equals(getCellValue(headerRow.getCell(3))) && "性别".equals(getCellValue(headerRow.getCell(3))) &&
"性别".equals(getCellValue(headerRow.getCell(4))) && "工种".equals(getCellValue(headerRow.getCell(4)));
"工种".equals(getCellValue(headerRow.getCell(5)));
} }
private TeamGroupBean convertToTeamPerson(Map<String, String> rowData) { private TeamGroupBean convertToTeamPerson(Map<String, String> rowData) {

View File

@ -95,7 +95,11 @@ function initTable() {
align: "center", align: "center",
title: "人脸", title: "人脸",
templet: function (d) { templet: function (d) {
if (d.faceUrl) {
return '<a onclick="openFaceUrlPage(' + d.id + ')" style="color: #1E9FFF; cursor: pointer;"> 查看 </a>'; return '<a onclick="openFaceUrlPage(' + d.id + ')" style="color: #1E9FFF; cursor: pointer;"> 查看 </a>';
}else {
return '';
}
} }
}, },
{field: "isTeamLeader", align: "center", title: "是否班组长"}, {field: "isTeamLeader", align: "center", title: "是否班组长"},
@ -280,6 +284,7 @@ function importData() {
$("#articleImageFile").val(""); $("#articleImageFile").val("");
return; return;
} }
formData.append("id", id);
formData.append("file", $("#articleImageFile")[0].files[0]); formData.append("file", $("#articleImageFile")[0].files[0]);
var idx = layer.msg('正在提交数据,请稍等...', { var idx = layer.msg('正在提交数据,请稍等...', {
icon: 16 icon: 16

View File

@ -124,7 +124,11 @@ function initTable() {
align: "center", align: "center",
title: "人脸", title: "人脸",
templet: function (d) { templet: function (d) {
if (d.faceUrl) {
return '<a onclick="openFaceUrlPage(' + d.id + ')" style="color: #1E9FFF; cursor: pointer;"> 查看 </a>'; return '<a onclick="openFaceUrlPage(' + d.id + ')" style="color: #1E9FFF; cursor: pointer;"> 查看 </a>';
}else {
return '';
}
} }
}, },
{field: "isTeamLeader", align: "center", title: "是否班组长"}, {field: "isTeamLeader", align: "center", title: "是否班组长"},

View File

@ -194,29 +194,63 @@
var tableId = 'baseTable'; var tableId = 'baseTable';
var allData = table.cache[tableId]; var allData = table.cache[tableId];
console.log("allData", allData); console.log("allData", allData);
// 如果是驳回操作type === 2先弹出输入框获取驳回原因
if (type === 2) {
let content = `
<div style="padding: 20px 100px;">
<span style="color: red">*</span>驳回原因:
<div style="display: inline-block; margin-left: 10px;">
<input type="text" id="rejectReason" autocomplete="off" class="layui-input" lay-verify="required" style="width: 300px;height: 100px">
</div>
</div>`;
layer.open({
type: 1,
title: title,
content: content,
btn: ['确定', '取消'],
yes: function (index, layero) {
let rejectReason = $('#rejectReason').val();
if (!rejectReason) {
layer.msg('请输入驳回原因');
return;
}
// 关闭输入框后开始处理所有行
layer.close(index);
// 遍历所有行,调用 auditlc 并传入统一的驳回原因
allData.forEach(function (rowData, index) { allData.forEach(function (rowData, index) {
// 构造一个类似单行操作时的 obj 对象
var fakeObj = { var fakeObj = {
data: rowData, // 当前行数据 data: rowData,
index: index, // 行索引 index: index,
config: {id: tableId} // 表格ID需和你的表格一致 config: {id: tableId}
}; };
// 调用 audit(),模拟单行操作 rowData.isApprove = 2;
if (type === 1) { auditlc(fakeObj, 2, rowData, rejectReason);
if (alter == true) {
parent.layer.closeAll();
}
});
}
});
} else if (type === 1) {
// 全部通过的情况,保持不变
allData.forEach(function (rowData, index) {
var fakeObj = {
data: rowData,
index: index,
config: {id: tableId}
};
rowData.isApprove = 1; rowData.isApprove = 1;
auditlc(fakeObj, 1, rowData); auditlc(fakeObj, 1, rowData);
if (alter == true){
parent.layer.closeAll();
}
} else if (type === 2) {
rowData.isApprove = 2;
auditlc(fakeObj, 2, rowData);
if (alter == true){
parent.layer.closeAll();
}
}
if (alter == true) {
parent.layer.closeAll();
}
}); });
}
}); });
} }
@ -292,7 +326,7 @@
} }
} }
function auditlc(obj, type, data) { function auditlc(obj, type, data, rejectReason) {
if (type === 1) { if (type === 1) {
$.ajax({ $.ajax({
url: ctxPath + '/outsourcer/audit', url: ctxPath + '/outsourcer/audit',
@ -318,20 +352,6 @@
} }
}); });
} else { } else {
let content = '<div style="padding: 20px 100px;"><span style="color: red">*</span>' + title +
'原因:<input type="text" id="rejectReason" autocomplete="off" class="layui-input" lay-verify="required" style="width: 300px;height: 100px"></div>';
layer.open({
type: 1,
title: title,
content: content,
async: false,
btn: ['确定', '取消'],
yes: function (index, layero) {
let rejectReason = $('#rejectReason').val();
if (!rejectReason) {
layer.msg('请输入驳回原因');
return;
}
$.ajax({ $.ajax({
url: ctxPath + '/outsourcer/audit', url: ctxPath + '/outsourcer/audit',
type: 'post', type: 'post',
@ -341,25 +361,21 @@
templateId: data.templateId, templateId: data.templateId,
detailsId: data.detailsId, detailsId: data.detailsId,
type: type, type: type,
rejectReason: rejectReason, rejectReason: rejectReason, // 使用统一的原因
evaluateType: '1' evaluateType: '1'
}, },
success: function (res) { success: function (res) {
layer.close(index);
if (res.res == '1') { if (res.res == '1') {
layer.msg(title + '成功'); layer.msg(title + '成功');
data.isApprove = 2; data.isApprove = 2;
obj.update(data); obj.update(data);
} else { } else {
code = 0;
data.isApprove = 0; data.isApprove = 0;
layer.msg(res.resMsg); layer.msg(res.resMsg);
} }
} }
}); });
} }
});
}
} }
function getTitle(deptId) { function getTitle(deptId) {