fix:岗位情况导入开发

ln_ry20250512
wangxy 4 weeks ago
parent c9fad3dea3
commit ee1940455a

@ -3,7 +3,12 @@ package com.ruoyi.web.controller.manager;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanValidators;
import com.ruoyi.common.utils.security.Md5Utils;
import com.ruoyi.system.domain.check.TdCheckReport; import com.ruoyi.system.domain.check.TdCheckReport;
import com.ruoyi.system.domain.check.TdCheckType; import com.ruoyi.system.domain.check.TdCheckType;
import com.ruoyi.system.domain.check.dto.TdCheckReportDTO; import com.ruoyi.system.domain.check.dto.TdCheckReportDTO;
@ -11,6 +16,7 @@ import com.ruoyi.system.domain.check.dto.TdCheckTypeDTO;
import com.ruoyi.system.domain.spost.TdClassifiedPost; import com.ruoyi.system.domain.spost.TdClassifiedPost;
import com.ruoyi.system.domain.spost.dto.TdClassifiedPostDTO; import com.ruoyi.system.domain.spost.dto.TdClassifiedPostDTO;
import com.ruoyi.system.service.spost.TdClassifiedPostService; import com.ruoyi.system.service.spost.TdClassifiedPostService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -29,6 +35,7 @@ import java.util.List;
* @Version 1.0 * @Version 1.0
*/ */
@Component @Component
@Slf4j
public class ClassifiedPostManager { public class ClassifiedPostManager {
@Resource @Resource
@ -66,4 +73,43 @@ public class ClassifiedPostManager {
} }
/**
*
* @param classifiedPosts
* @return
*/
public String importPost(List<TdClassifiedPost> classifiedPosts) {
if (CollUtil.isEmpty(classifiedPosts)) {
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (TdClassifiedPost classifiedPost : classifiedPosts) {
try {
classifiedPost.setCreateTime(new Date());
classifiedPost.setCreateBy(ShiroUtils.getSysUser().getUserName());
classifiedPost.setDeptId(ShiroUtils.getSysUser().getDeptId());
classifiedPost.setStatus("0");
classifiedPostService.save(classifiedPost);
successNum++;
successMsg.append("<br/>").append(successNum).append("、账号 ").append(classifiedPost.getPostName()).append(" 导入成功");
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + classifiedPost.getPostName() + " 导入失败:";
failureMsg.append(msg).append(e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
} }

@ -3,6 +3,7 @@ package com.ruoyi.web.controller.system.spost;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
@ -13,6 +14,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@ -68,6 +70,28 @@ public class ClassifiedPostController extends BaseController {
return util.exportExcel(tdClassifiedPosts, "岗位情况管理数据"); return util.exportExcel(tdClassifiedPosts, "岗位情况管理数据");
} }
@RequiresPermissions("system:spost:view")
@GetMapping("/importTemplate")
@ResponseBody
public AjaxResult importTemplate() {
ExcelUtil<TdClassifiedPost> util = new ExcelUtil<>(TdClassifiedPost.class);
return util.importTemplateExcel("岗位情况数据");
}
@Log(title = "岗位情况", businessType = BusinessType.IMPORT)
@RequiresPermissions("system:spost:import")
@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file) throws Exception {
ExcelUtil<TdClassifiedPost> util = new ExcelUtil<>(TdClassifiedPost.class);
List<TdClassifiedPost> classifiedPosts = util.importExcel(file.getInputStream());
String message = classifiedPostManager.importPost(classifiedPosts);
return AjaxResult.success(message);
}
/** /**
* *
*/ */

@ -41,6 +41,9 @@
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:spost:remove"> <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:spost:remove">
<i class="fa fa-remove"></i> 删除 <i class="fa fa-remove"></i> 删除
</a> </a>
<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:spost:import">
<i class="fa fa-upload"></i> 导入
</a>
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:spost:export"> <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:spost:export">
<i class="fa fa-download"></i> 导出 <i class="fa fa-download"></i> 导出
</a> </a>
@ -64,6 +67,8 @@
detailUrl:prefix + "/detail/{id}", detailUrl:prefix + "/detail/{id}",
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
importUrl: prefix + "/importData",
importTemplateUrl: prefix + "/importTemplate",
modalName: "岗位情况管理", modalName: "岗位情况管理",
type: 0, type: 0,
columns: [{ columns: [{
@ -121,4 +126,18 @@
</script> </script>
</body> </body>
<!-- 导入区域 -->
<script id="importTpl" type="text/template">
<form enctype="multipart/form-data" class="mt20 mb10">
<div class="col-xs-offset-1">
<input type="file" id="file" name="file"/>
<div class="mt10 pt5">
<a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a>
</div>
<font color="red" class="pull-left mt10">
提示仅允许导入“xls”或“xlsx”格式文件
</font>
</div>
</form>
</script>
</html> </html>

Loading…
Cancel
Save