Commit 8f5864ca by MMF

MMF 2026-03-20 最强操作直属任务、基层单位、基层任务+抽检

parent b55e74d3
package com.qianhe.common.constant;
import java.util.HashMap;
import java.util.Map;
public class MtConstant {
/**
* 基层单位类型:采油
*/
public static final String ZQCZ_JCDWLX_CY = "采油";
/**
* 基层单位类型:集输
*/
public static final String ZQCZ_JCDWLX_JS = "集输";
/**
* 基层单位类型:采油
*/
public static final String ZQCZ_JCDWLX_CY_CODE = "1";
/**
* 基层单位类型:集输
*/
public static final String ZQCZ_JCDWLX_JS_CODE = "2";
/**
* 基层单位类型字典
*/
public static final Map<String, String> ZQCZ_JCDWLX_MAP = new HashMap<String, String>() {{
put(ZQCZ_JCDWLX_CY, "1");
put(ZQCZ_JCDWLX_JS, "2");
}};
/**
* 基层抽检状态:1 - 评委填报(开始状态)
* 抽检状态:1 - 评委填报(开始状态)2 - 评委暂存3 - 人员填报4 - 人员暂存 5 - 项目填报 6 - 项目暂存 7 - 评分填报 8 - 评分暂存 9 - 抽检完成
*/
public static final String ZQCZ_JCCJZT_PWTB = "1";
/**
* 基层抽检状态:2 - 评委暂存
*/
public static final String ZQCZ_JCCJZT_PWZC = "2";
/**
* 基层抽检状态:3 - 人员填报
*/
public static final String ZQCZ_JCCJZT_RYTB = "3";
/**
* 基层抽检状态:4 - 人员暂存
*/
public static final String ZQCZ_JCCJZT_RYZC = "4";
/**
* 基层抽检状态:5 - 项目填报
*/
public static final String ZQCZ_JCCJZT_XMTB = "5";
/**
* 基层抽检状态:6 - 项目暂存
*/
public static final String ZQCZ_JCCJZT_XMZC = "6";
/**
* 基层抽检状态:7 - 评分填报
*/
public static final String ZQCZ_JCCJZT_PFTB = "7";
/**
* 基层抽检状态:8 - 评分暂存
*/
public static final String ZQCZ_JCCJZT_PFZC = "8";
/**
* 基层抽检状态:9 - 抽检完成
*/
public static final String ZQCZ_JCCJZT_CJWC = "9";
}
package com.qianhe.common.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MtUtils {
/**
* 随机抽取列表数据
*/
public static <T> List<T> getRandomList(List<T> dataList, int size) {
// 边界条件处理:避免参数异常
if (dataList == null || dataList.isEmpty()) {
return new ArrayList<>();
}
// 如果请求数量大于列表长度,直接返回所有元素(或根据需求抛异常)
if (size >= dataList.size()) {
return new ArrayList<>(dataList);
}
if (size <= 0) {
return new ArrayList<>();
}
List<T> result = new ArrayList<>();
Random random = new Random();
while (result.size() < size) {
int randomIndex = random.nextInt(dataList.size());
T element = dataList.get(randomIndex);
// 确保不重复
if (!result.contains(element)) {
result.add(element);
}
}
return result;
}
}
package com.qianhe.zqcz.jcdw.controller;
import com.qianhe.common.core.controller.BaseController;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.common.utils.poi.ExcelUtil;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdw;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo;
import com.qianhe.zqcz.jcdw.service.ZqczJcdwService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/zqcz/zqczjcdw")
public class ZqczJcdwController extends BaseController {
@Autowired
private ZqczJcdwService zqczJcdwService;
/**
* 分页查询
*/
@GetMapping("/list")
public TableDataInfo list(ZqczJcdwQuery zqczJcdwQuery) {
startPage();
List<ZqczJcdwVo> dataList = zqczJcdwService.list(zqczJcdwQuery);
return getDataTable(dataList);
}
/**
* 查询详情
*/
@GetMapping("/info/{jcdwid}")
public AjaxResult info(@PathVariable Long jcdwid) {
try {
return success(zqczJcdwService.info(jcdwid));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 新增
*/
@PostMapping
public AjaxResult add(@RequestBody ZqczJcdw zqczJcdw) {
try {
return toAjax(zqczJcdwService.add(zqczJcdw));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 修改
*/
@PutMapping
public AjaxResult edit(@RequestBody ZqczJcdw zqczJcdw) {
try {
return toAjax(zqczJcdwService.edit(zqczJcdw));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 删除
*/
@DeleteMapping("/{ids}")
public AjaxResult delete(@PathVariable Long[] ids) {
try {
return toAjax(zqczJcdwService.delete(ids));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 导出
*/
@PostMapping("/export")
public void export(HttpServletResponse response, ZqczJcdwQuery zqczJcdwQuery) {
List<ZqczJcdwVo> dataList = zqczJcdwService.list(zqczJcdwQuery);
ExcelUtil<ZqczJcdwVo> util = new ExcelUtil<>(ZqczJcdwVo.class);
util.exportExcel(response, dataList, "sheetName");
}
/**
* 上传文件 批量新增
*/
@PostMapping("/batchAdd")
public AjaxResult batchAdd(@RequestParam("zsrwid") Long zsrwid, @RequestParam("file") MultipartFile file) {
try {
if (zsrwid == null) return warn("直属id不能为空");
if (file.isEmpty()) return warn("文件不能为空");
int count = zqczJcdwService.batchAdd(zsrwid, file);
return success("导入成功,共导入 " + count + " 条数据");
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 通过直属任务ID 删除
*/
@DeleteMapping("/deleteZsrwid/{zsrwid}")
public AjaxResult deleteZsrwid(@PathVariable Long zsrwid) {
try {
return toAjax(zqczJcdwService.deleteZsrwid(zsrwid));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
}
package com.qianhe.zqcz.jcdw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 基层单位对象 zqcz_jcdw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcdw extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 基层单位ID */
private Long jcdwid;
/** 直属任务ID */
private Long zsrwid;
/** 基层单位名称 */
private String jcdwmc;
/** 基层单位类型(1 - 采油,2 - 集输) 字典表 zqcz_jczzlx */
private String jczzlx;
/** 预留1 */
private String yl1;
/** 预留2 */
private String yl2;
/** 预留3 */
private String yl3;
/** 预留4 */
private String yl4;
/** 预留5 */
private String yl5;
}
package com.qianhe.zqcz.jcdw.domain;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 基层单位查询对象 zqcz_jcdw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcdwQuery extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 直属任务ID */
private Long zsrwid;
/** 基层单位名称 */
private String jcdwmc;
/** 基层单位类型(1 - 采油,2 - 集输) 字典表 zqcz_jczzlx */
private String jczzlx;
}
package com.qianhe.zqcz.jcdw.domain;
import com.qianhe.common.annotation.Excel;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 基层单位视图对象 zqcz_jcdw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcdwVo implements Serializable
{
private static final long serialVersionUID = 1L;
/** 基层单位ID */
private Long jcdwid;
/** 直属任务ID */
private Long zsrwid;
/** 基层单位名称 */
@Excel(name = "基层单位名称")
private String jcdwmc;
/** 基层单位类型(1 - 采油,2 - 集输) 字典表 zqcz_jczzlx */
@Excel(name = "基层单位类型",dictType = "zqcz_jczzlx",type = Excel.Type.EXPORT)
private String jczzlx;
}
package com.qianhe.zqcz.jcdw.mapper;
import com.qianhe.common.annotation.DataScope;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdw;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ZqczJcdwMapper {
/**
* 分页查询
*/
List<ZqczJcdwVo> list(ZqczJcdwQuery zqczJcdwQuery);
/**
* 查询详情
*/
ZqczJcdwVo info(Long jcdwid);
/**
* 新增
*/
int add(ZqczJcdw zqczJcdw);
/**
* 修改
*/
int edit(ZqczJcdw zqczJcdw);
/**
* 删除
*/
int delete(Long[] ids);
/**
* 批量新增
*/
int batchAdd(List<ZqczJcdw> list);
/**
* 通过直属任务ID删除
*/
int deleteByZsrwid(Long zsrwid);
}
package com.qianhe.zqcz.jcdw.service;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdw;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
public interface ZqczJcdwService {
/**
* 分页查询
*/
List<ZqczJcdwVo> list(ZqczJcdwQuery zqczJcdwQuery);
/**
* 查询详情
*/
ZqczJcdwVo info(Long jcdwid);
/**
* 新增
*/
int add(ZqczJcdw zqczJcdw);
/**
* 修改
*/
int edit(ZqczJcdw zqczJcdw);
/**
* 删除
*/
int delete(Long[] ids);
/**
* 上传文件 批量新增
*/
int batchAdd(Long zsrwid, MultipartFile file);
/**
* 通过直属任务ID 删除
*/
int deleteZsrwid(Long zsrwid);
}
package com.qianhe.zqcz.jcdw.service.impl;
import com.qianhe.common.constant.MtConstant;
import com.qianhe.common.exception.BusinessException;
import com.qianhe.common.utils.StringUtils;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdw;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo;
import com.qianhe.zqcz.jcdw.mapper.ZqczJcdwMapper;
import com.qianhe.zqcz.jcdw.service.ZqczJcdwService;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.mapper.ZqczZsrwMapper;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Service
public class ZqczJcdwServiceImpl implements ZqczJcdwService {
@Autowired
private ZqczJcdwMapper zqczJcdwMapper;
@Autowired
private ZqczZsrwMapper zqczZsrwMapper;
/**
* 分页查询
*/
@Override
public List<ZqczJcdwVo> list(ZqczJcdwQuery zqczJcdwQuery) {
List<ZqczJcdwVo> dataList = zqczJcdwMapper.list(zqczJcdwQuery);
return dataList;
}
/**
* 查询详情
*/
@Override
public ZqczJcdwVo info(Long jcdwid) {
ZqczJcdwVo info = zqczJcdwMapper.info(jcdwid);
return info;
}
/**
* 新增
*/
@Override
public int add(ZqczJcdw zqczJcdw) {
return zqczJcdwMapper.add(zqczJcdw);
}
/**
* 修改
*/
@Override
public int edit(ZqczJcdw zqczJcdw) {
return zqczJcdwMapper.edit(zqczJcdw);
}
/**
* 删除
*/
@Override
public int delete(Long[] ids) {
return zqczJcdwMapper.delete(ids);
}
/**
* 上传文件 批量新增
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int batchAdd(Long zsrwid, MultipartFile file) {
XSSFWorkbook workbook = null;
try {
workbook = new XSSFWorkbook(file.getInputStream());
XSSFSheet sheet = workbook.getSheetAt(0);
int lastRowNum = sheet.getLastRowNum();
List<ZqczJcdw> list = new ArrayList<>();
for (int i = 0; i <= lastRowNum; i++) {
// 跳过标题行
if (i == 0) {
continue;
}
XSSFRow row = sheet.getRow(i);
if (row == null) {
continue;
}
// 基层单位名称(A列)
String jcdwmc = new DataFormatter().formatCellValue(row.getCell(0));
if (StringUtils.isEmpty(jcdwmc)) {
throw new BusinessException("导入失败,第" + (i + 1) + "行基层单位名称不能为空");
}
// 基层单位类型(B列),Excel填中文名称,通过字典转为数据库编码
String jczzlxName = new DataFormatter().formatCellValue(row.getCell(1)).trim();
String jczzlx = MtConstant.ZQCZ_JCDWLX_MAP.get(jczzlxName);
if (jczzlx == null) {
throw new BusinessException("导入失败,第" + (i + 1) + "行基层单位类型必须为'采油'或'集输'");
}
ZqczJcdw jcdw = new ZqczJcdw();
jcdw.setZsrwid(zsrwid);
jcdw.setJcdwmc(jcdwmc.trim());
jcdw.setJczzlx(jczzlx);
list.add(jcdw);
}
if (list.isEmpty()) {
throw new BusinessException("导入失败,文件中没有有效数据");
}
zqczJcdwMapper.deleteByZsrwid(zsrwid); // 先通过 直属任务ID 删除所在基层组织
int glqsl = zqczJcdwMapper.batchAdd(list);// 在新增
zqczZsrwMapper.edit(ZqczZsrw.builder().zsrwid(zsrwid).glqsl(glqsl).build()); // 同步基层单位总数量
return glqsl; // 在新增
} catch (BusinessException e) {
throw e;
} catch (IOException e) {
throw new BusinessException("读取Excel文件失败,请检查文件格式");
} finally {
if (workbook != null) {
try {
workbook.close();
} catch (IOException ignored) {}
}
}
}
/**
* 通过直属任务ID 删除
*/
@Override
public int deleteZsrwid(Long zsrwid) {
return zqczJcdwMapper.deleteByZsrwid(zsrwid);
}
}
package com.qianhe.zqcz.jcrw.controller;
import com.qianhe.common.core.controller.BaseController;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.common.exception.BusinessException;
import com.qianhe.common.utils.poi.ExcelUtil;
import com.qianhe.zqcz.jcrw.domain.ZqczJccjQuery;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrw;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrwQuery;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrwVo;
import com.qianhe.zqcz.jcrw.mapper.ZqczJcrwMapper;
import com.qianhe.zqcz.jcrw.service.ZqczJcrwService;
import com.qianhe.zqcz.zsrw.service.ZqczZsrwService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/zqcz/zqczjcrw")
public class ZqczJcrwController extends BaseController {
@Autowired
private ZqczJcrwService zqczJcrwService;
/**
* 分页查询
*/
@GetMapping("/list")
public TableDataInfo list(ZqczJcrwQuery zqczJcrwQuery) {
startPage();
return getDataTable(zqczJcrwService.list(zqczJcrwQuery));
}
/**
* 查询详情
*/
@GetMapping("/{id}")
public AjaxResult info(@PathVariable Long id) {
try {
return success(zqczJcrwService.info(id));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 新增
*/
@PostMapping
public AjaxResult add(@RequestBody ZqczJcrw zqczJcrw) {
try {
return toAjax(zqczJcrwService.add(zqczJcrw, getUsername()));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 修改
*/
@PutMapping
public AjaxResult edit(@RequestBody ZqczJcrw zqczJcrw) {
try {
return toAjax(zqczJcrwService.edit(zqczJcrw, getUsername()));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 删除
*/
@DeleteMapping("/{ids}")
public AjaxResult delete(@PathVariable Long[] ids) {
try {
return toAjax(zqczJcrwService.delete(ids));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 导出
*/
@PostMapping("/export")
public void export(HttpServletResponse response, ZqczJcrwQuery zqczJcrwQuery) {
List<ZqczJcrwVo> dataList = zqczJcrwService.list(zqczJcrwQuery);
ExcelUtil<ZqczJcrwVo> util = new ExcelUtil<>(ZqczJcrwVo.class);
util.exportExcel(response, dataList, "sheetName");
}
/**
* 根据直属任务ID 删除
*/
@DeleteMapping("/deleteByZsrwid/{zsrwid}")
public AjaxResult deleteByZsrwid(@PathVariable Long zsrwid) {
try {
return toAjax(zqczJcrwService.deleteByZsrwid(zsrwid));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 基层抽检查询
*/
@GetMapping("/jcrwInfo/{zsrwid}")
public AjaxResult jcrwInfo(@PathVariable Long zsrwid) {
try {
return success(zqczJcrwService.jcrwInfo(zsrwid));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 基层任务抽取
*/
@PostMapping("/spotCheckAdd")
public AjaxResult spotCheckAdd(@RequestBody ZqczJccjQuery zqczJccjQuery) {
try {
return toAjax(zqczJcrwService.spotCheckAdd(zqczJccjQuery));
} catch (BusinessException e) {
return warn(e.getMessage());
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
}
package com.qianhe.zqcz.jcrw.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 基层抽检实体
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJccjQuery implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 直属任务 zqcz_zsrw.zsrwid
*/
private Long zsrwid;
/**
* 抽检数量
*/
private Integer cjglqsl;
}
package com.qianhe.zqcz.jcrw.domain;
import com.qianhe.common.core.page.TableDataInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 基层抽检实体
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJccjVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 管理区总数
*/
private Integer glqsl;
/**
* 抽检数量
*/
private Integer cjglqsl;
/**
* 抽检结果
*/
private TableDataInfo dataList;
}
package com.qianhe.zqcz.jcrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcrw extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 基层任务主键
*/
private Long jcrwid;
/**
* 直属任务 zqcz_zsrw.zsrwid
*/
private Long zsrwid;
/**
* 基层单位ID:zqcz_jcdw.jcdwid
*/
private Long jcdwid;
/**
* 抽检类型:1 - 随机抽检,2 - 必检对象 zqcz_cjlx
*/
private String cjlx;
/**
* 抽检状态:1 - 评委填报(开始状态),2 - 评委暂存,3 - 人员填报,4 - 人员暂存,5 - 项目填报,6 - 项目暂存,7 - 评分填报 8 - 评分暂存 9 - 抽检完成 zqcz_jcrw_cjzt
*/
private String jcrwzt;
/**
* 创建者
*/
private String create_by;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date create_time;
/**
* 修改人
*/
private String update_by;
/**
* 修改时间(更新时自动刷新)
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date update_time;
/**
* 备注
*/
private String remark;
/**
* 预留1
*/
private String yl1;
/**
* 预留2
*/
private String yl2;
/**
* 预留3
*/
private String yl3;
/**
* 预留4
*/
private String yl4;
/**
* 预留5
*/
private String yl5;
}
package com.qianhe.zqcz.jcrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianhe.common.annotation.Excel;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcrwQuery extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 基层单位名称
*/
private String jcdwmc;
/**
* 基层任务状态
*/
private String jcrwzt;
}
package com.qianhe.zqcz.jcrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianhe.common.annotation.Excel;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczJcrwVo {
private static final long serialVersionUID = 1L;
/**
* 直属任务 zqcz_zsrw.zsrwid
*/
private Long zsrwid;
/**
* 基层任务主键
*/
private Long jcrwid;
/**
* 基层单位名称
*/
@Excel(name = "基层单位")
private String jcdwmc;
/**
* 基层单位类型
*/
@Excel(name = "单位类型",dictType = "zqcz_jczzlx",type = Excel.Type.EXPORT)
private String jczzlx;
/**
* 抽检类型
*/
@Excel(name = "抽检类型",dictType = "zqcz_cjlx",type = Excel.Type.EXPORT)
private String cjlx;
/**
* 基层任务状态
*/
@Excel(name = "任务状态",dictType = "zqcz_jcrw_rwzt",type = Excel.Type.EXPORT)
private String jcrwzt;
}
package com.qianhe.zqcz.jcrw.mapper;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrw;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrwQuery;
import com.qianhe.zqcz.jcrw.domain.ZqczJcrwVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ZqczJcrwMapper {
/**
* 条件查询
*/
List<ZqczJcrwVo> list(ZqczJcrwQuery zqczJcrwQuery);
/**
* 查询详情
*/
ZqczJcrwVo info(Long jcrwid);
/**
* 根据直属任务ID查询
*/
List<ZqczJcrwVo> infoByZsrwId(Long zsrwid);
/**
* 新增
*/
int add(ZqczJcrw zqczJcrw);
/**
* 批量新增
*/
int batchAdd(@Param("zqczJcrwList") List<ZqczJcrw> zqczJcrwList);
/**
* 修改
*/
int edit(ZqczJcrw zqczJcrw);
/**
* 删除
*/
int delete(Long[] ids);
/**
* 根据直属任务ID 删除
*/
int deleteByZsrwid(Long zsrwid);
}
package com.qianhe.zqcz.jcrw.service;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.zqcz.jcrw.domain.*;
import java.util.List;
public interface ZqczJcrwService {
/**
* 条件查询
*/
List<ZqczJcrwVo> list(ZqczJcrwQuery zqczJcrwQuery);
/**
* 查询详情
*/
ZqczJcrwVo info(Long jcrwid);
/**
* 新增
*/
int add(ZqczJcrw zqczJcrw, String username);
/**
* 修改
*/
int edit(ZqczJcrw zqczJcrw, String username);
/**
* 删除
*/
int delete(Long[] ids);
/**
* 根据直属任务ID 删除
*/
int deleteByZsrwid(Long zsrwid);
/**
* 基层抽检查询
*/
ZqczJccjVo jcrwInfo(Long zsrwid);
/**
* 基层任务抽取
*/
int spotCheckAdd(ZqczJccjQuery zqczJccjQuery);
}
package com.qianhe.zqcz.jcrw.service.impl;
import com.github.pagehelper.PageInfo;
import com.qianhe.common.constant.HttpStatus;
import com.qianhe.common.constant.MtConstant;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.common.exception.BusinessException;
import com.qianhe.common.utils.MtUtils;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery;
import com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo;
import com.qianhe.zqcz.jcdw.mapper.ZqczJcdwMapper;
import com.qianhe.zqcz.jcrw.domain.*;
import com.qianhe.zqcz.jcrw.mapper.ZqczJcrwMapper;
import com.qianhe.zqcz.jcrw.service.ZqczJcrwService;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo;
import com.qianhe.zqcz.zsrw.mapper.ZqczZsrwMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import static com.qianhe.common.utils.PageUtils.startPage;
@Slf4j
@Service
public class ZqczJcrwServiceImpl implements ZqczJcrwService {
@Autowired
private ZqczJcrwMapper zqczJcrwMapper;
@Autowired
private ZqczZsrwMapper zqczZsrwMapper;
@Autowired
private ZqczJcdwMapper zqczJcdwMapper;
/**
* 条件查询
*/
@Override
public List<ZqczJcrwVo> list(ZqczJcrwQuery zqczJcrwQuery) {
List<ZqczJcrwVo> dataList = zqczJcrwMapper.list(zqczJcrwQuery);
return dataList;
}
/**
* 查询详情
*/
@Override
public ZqczJcrwVo info(Long jcrwid) {
ZqczJcrwVo info = zqczJcrwMapper.info(jcrwid);
return info;
}
/**
* 新增
*/
@Override
public int add(ZqczJcrw zqczJcrw, String username) {
zqczJcrw.setCreateBy(username);
zqczJcrw.setCreateTime(new Date());
zqczJcrw.setUpdateBy(username);
return zqczJcrwMapper.add(zqczJcrw);
}
/**
* 修改
*/
@Override
public int edit(ZqczJcrw zqczJcrw, String username) {
zqczJcrw.setUpdateBy(username);
return zqczJcrwMapper.edit(zqczJcrw);
}
/**
* 删除
*/
@Override
public int delete(Long[] ids) {
return zqczJcrwMapper.delete(ids);
}
/**
* 根据直属任务ID 删除
*/
@Override
public int deleteByZsrwid(Long zsrwid) {
return zqczJcrwMapper.deleteByZsrwid(zsrwid);
}
/**
* 基层抽检查询
*/
@Override
public ZqczJccjVo jcrwInfo(Long zsrwid) {
// 1. 根据直属任务ID 查询直属任务
ZqczZsrwVo zsrwInfo = zqczZsrwMapper.info(zsrwid);
if (zsrwInfo == null) {
log.warn("最强操作 --- 基层抽检查询 --- 直属任务ID:{} --- 暂无直属任务", zsrwid);
return new ZqczJccjVo();
}
// 2. 根据直属任务ID 查询基层任务
startPage();
List<ZqczJcrwVo> dataList = zqczJcrwMapper.infoByZsrwId(zsrwid);
// 构建分页结构
TableDataInfo tableDataInfo = new TableDataInfo();
PageInfo<ZqczJcrwVo> pageInfo = new PageInfo<>(dataList);
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setTotal(pageInfo.getTotal());
tableDataInfo.setRows(dataList);
// 3. 拼接数据
ZqczJccjVo info = ZqczJccjVo.builder()
.glqsl(zsrwInfo.getGlqsl())
.cjglqsl(zsrwInfo.getCjglqsl())
.dataList(tableDataInfo).build();
return info;
}
/**
* 基层任务抽取
*/
@Transactional
@Override
public int spotCheckAdd(ZqczJccjQuery zqczJccjQuery) {
Long zsrwid = zqczJccjQuery.getZsrwid(); // 直属任务ID
if (zsrwid == null) {
log.warn("最强操作 --- 基层任务抽取 --- 直属任务ID不能为空");
throw new BusinessException("直属任务ID不能为空");
}
Integer cjglqsl = zqczJccjQuery.getCjglqsl(); // 抽检数量(采油)
if (cjglqsl == null) {
log.warn("最强操作 --- 基层任务抽取 --- 抽检数量不能为空");
throw new BusinessException("抽检数量不能为空");
}
// 1. 根据直属任务ID 获取基层单位
List<ZqczJcdwVo> jcdwList = zqczJcdwMapper.list(ZqczJcdwQuery.builder().zsrwid(zsrwid).build());
if (Optional.ofNullable(jcdwList).orElse(Collections.emptyList()).isEmpty()) {
log.warn("最强操作 --- 基层任务抽取 --- 基层单位未上传");
throw new BusinessException("基层单位未上传");
}
// 2. 根据基层单位类型进行分组
Map<String, List<ZqczJcdwVo>> jcdwGroupMap = jcdwList.stream().collect(Collectors.groupingBy(ZqczJcdwVo::getJczzlx));
List<ZqczJcdwVo> mergeList = new ArrayList<>();
// 3. 处理采油数据
List<ZqczJcdwVo> cyJcdwList = jcdwGroupMap.get(MtConstant.ZQCZ_JCDWLX_CY_CODE);
if (!Optional.ofNullable(cyJcdwList).orElse(Collections.emptyList()).isEmpty()) {
if (cjglqsl > cyJcdwList.size()) {
log.warn("最强操作 --- 基层任务抽取 --- 抽取数量不能大于管理区基层单位数量");
throw new BusinessException("抽取数量不能大于管理区基层单位数量");
}
List<ZqczJcdwVo> cjcyRandomList = MtUtils.getRandomList(cyJcdwList, cjglqsl); // 抽检的采油列表
mergeList.addAll(cjcyRandomList);
}
// 4. 处理集输数据
List<ZqczJcdwVo> jsJcdwList = jcdwGroupMap.get(MtConstant.ZQCZ_JCDWLX_JS_CODE); // 必检的集输列表
if (!Optional.ofNullable(jsJcdwList).orElse(Collections.emptyList()).isEmpty()) {
mergeList.addAll(jsJcdwList);
}
// 修改直属任务的抽检数量
zqczZsrwMapper.edit(ZqczZsrw.builder().zsrwid(zsrwid).cjglqsl(cjglqsl).build());
// 7. 抽检之前先删除历史数据
zqczJcrwMapper.deleteByZsrwid(zsrwid);
int batchSize = 0;
if (!Optional.ofNullable(mergeList).orElse(Collections.emptyList()).isEmpty()) {
// 6. 类型转换
List<ZqczJcrw> zqczJcrwList = new ArrayList<>();
for (ZqczJcdwVo zqczJcdwVo : mergeList) {
zqczJcrwList.add(ZqczJcrw.builder()
.zsrwid(zsrwid)
.jcdwid(zqczJcdwVo.getJcdwid())
.cjlx(zqczJcdwVo.getJczzlx())
.jcrwzt(MtConstant.ZQCZ_JCCJZT_PWTB)
.build());
}
// 8. 执行插入
batchSize = zqczJcrwMapper.batchAdd(zqczJcrwList);
}
return batchSize;
}
}
package com.qianhe.zqcz.zsrw.controller;
import com.qianhe.common.core.controller.BaseController;
import com.qianhe.common.core.domain.AjaxResult;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.common.utils.poi.ExcelUtil;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwQuery;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo;
import com.qianhe.zqcz.zsrw.service.ZqczZsrwService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/zqcz/zqczzsrw")
public class ZqczZsrwController extends BaseController {
@Autowired
private ZqczZsrwService zqczZsrwService;
/**
* 分页查询
*/
@GetMapping("/list")
public TableDataInfo list(ZqczZsrwQuery zqczZsrwQuery) {
startPage();
List<ZqczZsrwVo> dataList = zqczZsrwService.list(zqczZsrwQuery);
return getDataTable(dataList);
}
/**
* 查询详情
*/
@GetMapping("/info/{zsrwid}")
public AjaxResult info(@PathVariable Long zsrwid) {
try {
return success(zqczZsrwService.info(zsrwid));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 新增
*/
@PostMapping
public AjaxResult add(@RequestBody ZqczZsrw zqczZsrw) {
try {
return toAjax(zqczZsrwService.add(zqczZsrw, getUsername()));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 修改
*/
@PutMapping
public AjaxResult edit(@RequestBody ZqczZsrw zqczZsrw) {
try {
return toAjax(zqczZsrwService.edit(zqczZsrw, getUsername()));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 删除
*/
@DeleteMapping("/{ids}")
public AjaxResult delete(@PathVariable Long[] ids) {
try {
return toAjax(zqczZsrwService.delete(ids));
} catch (Exception e) {
log.error(e.getMessage());
return error(e.getMessage());
}
}
/**
* 导出
*/
@PostMapping("/export")
public void export(HttpServletResponse response, ZqczZsrwQuery zqczZsrwQuery) {
List<ZqczZsrwVo> dataList = zqczZsrwService.list(zqczZsrwQuery);
ExcelUtil<ZqczZsrwVo> util = new ExcelUtil<>(ZqczZsrwVo.class);
util.exportExcel(response, dataList, "sheetName");
}
}
package com.qianhe.zqcz.zsrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 直属任务对象 zqcz_zsrw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczZsrw extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 直属任务主键 */
private Long zsrwid;
/** 任务名称 */
private String rwmc;
/** 组织机构(首次抽取的直属单位采油厂,dwjb=3) */
private String deptId;
/** 任务开始时间(默认当前时间) */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwkssj;
/** 任务结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwjssj;
/** 管理区总数量(选择采油厂时自动提取) */
private Integer glqsl;
/** 抽检管理区数量 */
private Integer cjglqsl;
/** 基层抽检状态:1- 定稿 0-暂存(默认) */
private String jccjzt;
/** 创建人 */
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 修改人 */
private String updateBy;
/** 修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 预留1 */
private String yl1;
/** 预留2 */
private String yl2;
/** 预留3 */
private String yl3;
/** 预留4 */
private String yl4;
/** 预留5 */
private String yl5;
}
package com.qianhe.zqcz.zsrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* 直属任务对象 zqcz_zsrw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczZsrwQuery extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 组织机构(首次抽取的直属单位采油厂,dwjb=3) */
private String deptId;
/** 任务名称 */
private String rwmc;
/** 基层抽检状态:1- 定稿 0-暂存(默认) */
private String jccjzt;
/** 任务开始时间(默认当前时间) */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwkssj;
/** 任务结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwjssj;
}
package com.qianhe.zqcz.zsrw.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianhe.common.annotation.Excel;
import com.qianhe.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 直属任务对象 zqcz_zsrw
*
* @author MMF
* @date 2026-03-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZqczZsrwVo implements Serializable
{
private static final long serialVersionUID = 1L;
/** 直属任务主键 */
private Long zsrwid;
/** 组织机构(首次抽取的直属单位采油厂,dwjb=3) */
private String deptId;
/** 组织机构名称 */
@Excel(name = "直属单位")
private String deptName;
/** 任务名称 */
@Excel(name = "任务名称")
private String rwmc;
/** 管理区总数量(选择采油厂时自动提取) */
@Excel(name = "基层数量")
private Integer glqsl;
/** 抽检管理区数量 */
@Excel(name = "抽检数量")
private Integer cjglqsl;
/** 任务进度 */
@Excel(name = "任务进度")
private String zsrwjd;
/** 基层抽检状态:1- 定稿 0-暂存(默认) */
private String jccjzt;
/** 任务开始时间(默认当前时间) */
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwkssj;
/** 任务结束时间 */
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date rwjssj;
/** 任务描述 */
@Excel(name = "任务描述")
private String remark;
}
package com.qianhe.zqcz.zsrw.mapper;
import com.qianhe.common.annotation.DataScope;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwQuery;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ZqczZsrwMapper {
/**
* 分页查询
*/
@DataScope(deptAlias = "dept")
List<ZqczZsrwVo> list(ZqczZsrwQuery zqczZsrwQuery);
/**
* 查询详情
*/
ZqczZsrwVo info(Long zsrwid);
/**
* 新增
*/
int add(ZqczZsrw zqczZsrw);
/**
* 修改
*/
int edit(ZqczZsrw zqczZsrw);
/**
* 删除
*/
int delete(Long[] ids);
}
package com.qianhe.zqcz.zsrw.service;
import com.qianhe.common.core.page.TableDataInfo;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwQuery;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo;
import java.util.List;
public interface ZqczZsrwService {
/**
* 分页查询
*/
List<ZqczZsrwVo> list(ZqczZsrwQuery zqczZsrwQuery);
/**
* 查询详情
*/
ZqczZsrwVo info(Long zsrwid);
/**
* 新增
*/
int add(ZqczZsrw zqczZsrw, String username);
/**
* 修改
*/
int edit(ZqczZsrw zqczZsrw, String username);
/**
* 删除
*/
int delete(Long[] ids);
}
package com.qianhe.zqcz.zsrw.service.impl;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrw;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwQuery;
import com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo;
import com.qianhe.zqcz.zsrw.mapper.ZqczZsrwMapper;
import com.qianhe.zqcz.zsrw.service.ZqczZsrwService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service
public class ZqczZsrwServiceImpl implements ZqczZsrwService {
@Autowired
private ZqczZsrwMapper zqczZsrwMapper;
/**
* 分页查询
*/
@Override
public List<ZqczZsrwVo> list(ZqczZsrwQuery zqczZsrwQuery) {
List<ZqczZsrwVo> dataList = zqczZsrwMapper.list(zqczZsrwQuery);
return dataList;
}
/**
* 查询详情
*/
@Override
public ZqczZsrwVo info(Long zsrwid) {
ZqczZsrwVo info = zqczZsrwMapper.info(zsrwid);
return info;
}
/**
* 新增
*/
@Override
public int add(ZqczZsrw zqczZsrw, String username) {
zqczZsrw.setCreateBy(username);
zqczZsrw.setCreateTime(new Date());
zqczZsrw.setUpdateBy(username);
return zqczZsrwMapper.add(zqczZsrw);
}
/**
* 修改
*/
@Override
public int edit(ZqczZsrw zqczZsrw, String username) {
zqczZsrw.setUpdateBy(username);
return zqczZsrwMapper.edit(zqczZsrw);
}
/**
* 删除
*/
@Override
public int delete(Long[] ids) {
return zqczZsrwMapper.delete(ids);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qianhe.zqcz.jcdw.mapper.ZqczJcdwMapper">
<!-- 返回实体 -->
<resultMap id="ZqczJcdwResult" type="com.qianhe.zqcz.jcdw.domain.ZqczJcdwVo">
<id property="jcdwid" column="jcdwid"/>
<result property="zsrwid" column="zsrwid"/>
<result property="jcdwmc" column="jcdwmc"/>
<result property="jczzlx" column="jczzlx"/>
</resultMap>
<!-- 通用查询 -->
<sql id="selectCommon">
SELECT
jcdw.jcdwid,
jcdw.zsrwid,
jcdw.jcdwmc,
jcdw.jczzlx
FROM
zqcz_jcdw jcdw
</sql>
<!-- 条件查询 -->
<select id="list" parameterType="com.qianhe.zqcz.jcdw.domain.ZqczJcdwQuery" resultMap="ZqczJcdwResult">
<include refid="selectCommon"></include>
<where>
<if test="zsrwid != null">AND jcdw.zsrwid = #{zsrwid}</if>
<if test="jcdwmc != null and jcdwmc != ''">AND jcdw.jcdwmc like concat('%', #{jcdwmc}, '%')</if>
<if test="jczzlx != null and jczzlx != ''">AND jcdw.jczzlx = #{jczzlx}</if>
</where>
ORDER BY
jcdw.jcdwid ASC
</select>
<!-- 查询详情 -->
<select id="info" parameterType="long" resultMap="ZqczJcdwResult">
<include refid="selectCommon"></include> WHERE jcdw.jcdwid = #{jcdwid}
</select>
<!-- 新增 -->
<insert id="add" parameterType="com.qianhe.zqcz.jcdw.domain.ZqczJcdw">
INSERT INTO zqcz_jcdw
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="zsrwid != null">zsrwid,</if>
<if test="jcdwmc != null and jcdwmc != ''">jcdwmc,</if>
<if test="jczzlx != null and jczzlx != ''">jczzlx,</if>
<if test="yl1 != null and yl1 != ''">yl1,</if>
<if test="yl2 != null and yl2 != ''">yl2,</if>
<if test="yl3 != null and yl3 != ''">yl3,</if>
<if test="yl4 != null and yl4 != ''">yl4,</if>
<if test="yl5 != null and yl5 != ''">yl5,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="zsrwid != null">#{zsrwid},</if>
<if test="jcdwmc != null and jcdwmc != ''">#{jcdwmc},</if>
<if test="jczzlx != null and jczzlx != ''">#{jczzlx},</if>
<if test="yl1 != null and yl1 != ''">#{yl1},</if>
<if test="yl2 != null and yl2 != ''">#{yl2},</if>
<if test="yl3 != null and yl3 != ''">#{yl3},</if>
<if test="yl4 != null and yl4 != ''">#{yl4},</if>
<if test="yl5 != null and yl5 != ''">#{yl5},</if>
</trim>
</insert>
<!-- 修改 -->
<update id="edit" parameterType="com.qianhe.zqcz.jcdw.domain.ZqczJcdw">
UPDATE zqcz_jcdw
<set>
<if test="zsrwid != null">zsrwid=#{zsrwid},</if>
<if test="jcdwmc != null and jcdwmc != ''">jcdwmc=#{jcdwmc},</if>
<if test="jczzlx != null and jczzlx != ''">jczzlx=#{jczzlx},</if>
<if test="yl1 != null and yl1 != ''">yl1=#{yl1},</if>
<if test="yl2 != null and yl2 != ''">yl2=#{yl2},</if>
<if test="yl3 != null and yl3 != ''">yl3=#{yl3},</if>
<if test="yl4 != null and yl4 != ''">yl4=#{yl4},</if>
<if test="yl5 != null and yl5 != ''">yl5=#{yl5},</if>
</set>
WHERE jcdwid=#{jcdwid}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="long">
DELETE FROM zqcz_jcdw WHERE jcdwid IN
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 批量新增 -->
<insert id="batchAdd" parameterType="java.util.List">
INSERT INTO zqcz_jcdw (zsrwid, jcdwmc, jczzlx) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.zsrwid}, #{item.jcdwmc}, #{item.jczzlx})
</foreach>
</insert>
<!-- 删除 -->
<delete id="deleteByZsrwid" parameterType="long">
DELETE FROM zqcz_jcdw WHERE zsrwid = #{zsrwid}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qianhe.zqcz.jcrw.mapper.ZqczJcrwMapper">
<!-- 返回实体 -->
<resultMap id="ZqczJcrwResult" type="com.qianhe.zqcz.jcrw.domain.ZqczJcrwVo">
<id property="jcrwid" column="jcrwid"/>
<result property="zsrwid" column="zsrwid"/>
<result property="jcdwmc" column="jcdwmc"/>
<result property="jczzlx" column="jczzlx"/>
<result property="cjlx" column="cjlx"/>
<result property="jcrwzt" column="jcrwzt"/>
</resultMap>
<!-- 通用查询 -->
<sql id="selectCommon">
SELECT
jcrw.zsrwid,
jcrw.jcrwid,
jcdw.jcdwmc,
jcrw.cjlx,
jcdw.jczzlx,
jcrw.jcrwzt
FROM
zqcz_jcrw jcrw
LEFT JOIN zqcz_jcdw jcdw ON jcrw.jcdwid = jcdw.jcdwid
</sql>
<!-- 条件查询 -->
<select id="list" parameterType="com.qianhe.zqcz.jcrw.domain.ZqczJcrwQuery" resultMap="ZqczJcrwResult">
<include refid="selectCommon"></include>
<where>
<if test="jcdwmc != null and jcdwmc !=''">AND jcdwmc like concat('%', #{jcdwmc}, '%')</if>
<if test="jcrwzt != null and jcrwzt !=''">AND jcrwzt = #{jcrwzt}</if>
</where>
ORDER BY update_time DESC
</select>
<!-- 查询详情 -->
<select id="info" parameterType="long" resultMap="ZqczJcrwResult">
<include refid="selectCommon"></include> WHERE jcrw.jcrwid = #{jcrwid}
</select>
<!-- 根据直属任务ID查询 -->
<select id="infoByZsrwId" parameterType="long" resultMap="ZqczJcrwResult">
<include refid="selectCommon"></include> WHERE jcrw.zsrwid = #{zsrwid}
</select>
<!-- 新增 -->
<insert id="add" parameterType="ZqczJcrw">
INSERT INTO zqcz_jcrw
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="zsrwid != null">ZSRWID,</if>
<if test="jcdwid != null ">JCDWID,</if>
<if test="cjlx != null and cjlx != ''">CJLX,</if>
<if test="jcrwzt != null and jcrwzt != ''">JCRWZT,</if>
<if test="create_by != null and create_by != ''">CREATE_BY,</if>
<if test="create_time != null ">CREATE_TIME,</if>
<if test="update_by != null and update_by != ''">UPDATE_BY,</if>
<if test="remark != null and remark != ''">REMARK,</if>
<if test="yl1 != null and yl1 != ''">YL1,</if>
<if test="yl2 != null and yl2 != ''">YL2,</if>
<if test="yl3 != null and yl3 != ''">YL3,</if>
<if test="yl4 != null and yl4 != ''">YL4,</if>
<if test="yl5 != null and yl5 != ''">YL5,</if>
UPDATE_TIME
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="zsrwid != null">#{zsrwid},</if>
<if test="jcdwid != null">#{jcdwid},</if>
<if test="cjlx != null and cjlx != ''">#{cjlx},</if>
<if test="jcrwzt != null and jcrwzt != ''">#{jcrwzt},</if>
<if test="create_by != null and create_by != ''">#{create_by},</if>
<if test="create_time != null">#{create_time},</if>
<if test="update_by != null and update_by != ''">#{update_by},</if>
<if test="remark != null">#{remark},</if>
<if test="yl1 != null">#{yl1},</if>
<if test="yl2 != null">#{yl2},</if>
<if test="yl3 != null">#{yl3},</if>
<if test="yl4 != null">#{yl4},</if>
<if test="yl5 != null">#{yl5},</if>
now()
</trim>
</insert>
<!-- 批量插入 -->
<insert id="batchAdd" parameterType="java.util.List">
<if test="zqczJcrwList != null and zqczJcrwList.size() > 0">
INSERT INTO zqcz_jcrw
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="zqczJcrwList[0].zsrwid != null">ZSRWID,</if>
<if test="zqczJcrwList[0].jcdwid != null ">JCDWID,</if>
<if test="zqczJcrwList[0].cjlx != null and zqczJcrwList[0].cjlx != ''">CJLX,</if>
<if test="zqczJcrwList[0].jcrwzt != null and zqczJcrwList[0].jcrwzt != ''">JCRWZT,</if>
<if test="zqczJcrwList[0].create_by != null and zqczJcrwList[0].create_by != ''">CREATE_BY,</if>
<if test="zqczJcrwList[0].create_time != null ">CREATE_TIME,</if>
<if test="zqczJcrwList[0].update_by != null and zqczJcrwList[0].update_by != ''">UPDATE_BY,</if>
<if test="zqczJcrwList[0].remark != null and zqczJcrwList[0].remark != ''">REMARK,</if>
<if test="zqczJcrwList[0].yl1 != null and zqczJcrwList[0].yl1 != ''">YL1,</if>
<if test="zqczJcrwList[0].yl2 != null and zqczJcrwList[0].yl2 != ''">YL2,</if>
<if test="zqczJcrwList[0].yl3 != null and zqczJcrwList[0].yl3 != ''">YL3,</if>
<if test="zqczJcrwList[0].yl4 != null and zqczJcrwList[0].yl4 != ''">YL4,</if>
<if test="zqczJcrwList[0].yl5 != null and zqczJcrwList[0].yl5 != ''">YL5,</if>
UPDATE_TIME
</trim>
VALUES
<foreach collection="zqczJcrwList" item="item" index="index" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="item.zsrwid != null">#{item.zsrwid},</if>
<if test="item.jcdwid != null">#{item.jcdwid},</if>
<if test="item.cjlx != null and item.cjlx != ''">#{item.cjlx},</if>
<if test="item.jcrwzt != null and item.jcrwzt != ''">#{item.jcrwzt},</if>
<if test="item.create_by != null and item.create_by != ''">#{item.create_by},</if>
<if test="item.create_time != null">#{item.create_time},</if>
<if test="item.update_by != null and item.update_by != ''">#{item.update_by},</if>
<if test="item.remark != null">#{item.remark},</if>
<if test="item.yl1 != null">#{item.yl1},</if>
<if test="item.yl2 != null">#{item.yl2},</if>
<if test="item.yl3 != null">#{item.yl3},</if>
<if test="item.yl4 != null">#{item.yl4},</if>
<if test="item.yl5 != null">#{item.yl5},</if>
now()
</trim>
</foreach>
</if>
</insert>
<!-- 修改 -->
<update id="edit" parameterType="ZqczJcrw">
UPDATE zqcz_jcrw
<trim prefix="SET" suffixOverrides=",">
<if test="zsrwid != null">ZSRWID = #{zsrwid},</if>
<if test="jcdwid != null">JCDWID = #{jcdwid},</if>
<if test="cjlx != null and cjlx != ''">CJLX = #{cjlx},</if>
<if test="jcrwzt != null and jcrwzt != ''">JCRWZT = #{jcrwzt},</if>
<if test="create_by != null">CREATE_BY = #{create_by},</if>
<if test="create_time != null">CREATE_TIME = #{create_time},</if>
<if test="update_by != null">UPDATE_BY = #{update_by},</if>
<if test="update_time != null">UPDATE_TIME = #{update_time},</if>
<if test="remark != null">REMARK = #{remark},</if>
<if test="yl1 != null">YL1 = #{yl1},</if>
<if test="yl2 != null">YL2 = #{yl2},</if>
<if test="yl3 != null">YL3 = #{yl3},</if>
<if test="yl4 != null">YL4 = #{yl4},</if>
<if test="yl5 != null">YL5 = #{yl5},</if>
</trim>
WHERE JCRWID = #{jcrwid}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="long">
DELETE FROM zqcz_jcrw WHERE JCRWID IN
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!-- 根据直属任务ID删除 -->
<delete id="deleteByZsrwid" parameterType="long">
DELETE FROM zqcz_jcrw WHERE ZSRWID = #{jcdwid}
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qianhe.zqcz.zsrw.mapper.ZqczZsrwMapper">
<!-- 返回实体 -->
<resultMap id="ZqczZsrwResult" type="com.qianhe.zqcz.zsrw.domain.ZqczZsrwVo">
<id property="zsrwid" column="zsrwid"/>
<result property="rwmc" column="rwmc"/>
<result property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<result property="rwkssj" column="rwkssj"/>
<result property="rwjssj" column="rwjssj"/>
<result property="glqsl" column="glqsl"/>
<result property="cjglqsl" column="cjglqsl"/>
<result property="zsrwjd" column="zsrwjd"/>
<result property="remark" column="remark"/>
<result property="jccjzt" column="jccjzt"/>
</resultMap>
<!-- 通用查询 -->
<sql id="selectCommon">
</sql>
<!-- 条件查询 -->
<select id="list" parameterType="com.qianhe.zqcz.zsrw.domain.ZqczZsrwQuery" resultMap="ZqczZsrwResult">
SELECT
zsrw.zsrwid,
dept.dept_id,
dept.dept_name,
zsrw.rwmc,
zsrw.glqsl,
zsrw.cjglqsl,
zsrw.rwkssj,
zsrw.rwjssj,
zsrw.remark,
zsrw.jccjzt,
COUNT(jcrw.jcrwid) AS jcrwsl,
SUM(CASE WHEN jcrw.jcrwzt = '7' THEN 1 ELSE 0 END) AS jcrwwcsl,
CONCAT(IFNULL(SUM(CASE WHEN jcrw.jcrwzt = '7' THEN 1 ELSE 0 END), 0), '/', IFNULL(COUNT(jcrw.jcrwid), 0)) AS zsrwjd
FROM
zqcz_zsrw zsrw
LEFT JOIN sys_dept dept ON zsrw.dept_id = dept.dept_id
LEFT JOIN zqcz_jcrw jcrw ON zsrw.zsrwid = jcrw.zsrwid
<where>
<if test="deptId != null and deptId != ''">AND zsrw.dept_id = #{deptId}</if>
<if test="rwmc != null and rwmc != ''">AND zsrw.rwmc like concat('%', #{rwmc}, '%')</if>
<if test="rwkssj != null">AND zsrw.rwkssj &gt;= #{rwkssj}</if>
<if test="rwjssj != null">AND zsrw.rwjssj &lt;= #{rwjssj}</if>
${params.dataScope}
</where>
GROUP BY
zsrw.zsrwid,
dept.dept_id,
dept.dept_name,
zsrw.rwmc,
zsrw.glqsl,
zsrw.cjglqsl,
zsrw.rwkssj,
zsrw.rwjssj,
zsrw.remark,
zsrw.jccjzt
ORDER BY
zsrw.rwjssj DESC,
zsrw.rwkssj DESC
</select>
<!-- 查询详情 -->
<select id="info" parameterType="long" resultMap="ZqczZsrwResult">
SELECT
zsrw.zsrwid,
dept.dept_id,
dept.dept_name,
zsrw.rwmc,
zsrw.glqsl,
zsrw.cjglqsl,
zsrw.rwkssj,
zsrw.rwjssj,
zsrw.remark,
zsrw.jccjzt,
COUNT(jcrw.jcrwid) AS jcrwsl,
SUM(CASE WHEN jcrw.jcrwzt = '7' THEN 1 ELSE 0 END) AS jcrwwcsl,
CONCAT(IFNULL(SUM(CASE WHEN jcrw.jcrwzt = '7' THEN 1 ELSE 0 END), 0), '/', IFNULL(COUNT(jcrw.jcrwid), 0)) AS zsrwjd
FROM
zqcz_zsrw zsrw
LEFT JOIN sys_dept dept ON zsrw.dept_id = dept.dept_id
LEFT JOIN zqcz_jcrw jcrw ON zsrw.zsrwid = jcrw.zsrwid
WHERE zsrw.zsrwid = #{zsrwid}
GROUP BY
zsrw.zsrwid,
dept.dept_id,
dept.dept_name,
zsrw.rwmc,
zsrw.glqsl,
zsrw.cjglqsl,
zsrw.rwkssj,
zsrw.rwjssj,
zsrw.remark,
zsrw.jccjzt
ORDER BY
zsrw.rwjssj DESC,
zsrw.rwkssj DESC
</select>
<!-- 新增 -->
<insert id="add" parameterType="com.qianhe.zqcz.zsrw.domain.ZqczZsrw">
INSERT INTO zqcz_zsrw
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="rwmc != null and rwmc != ''">rwmc,</if>
<if test="deptId != null and deptId != ''">dept_id,</if>
<if test="rwkssj != null">rwkssj,</if>
<if test="rwjssj != null">rwjssj,</if>
<if test="glqsl != null">glqsl,</if>
<if test="cjglqsl != null">cjglqsl,</if>
<if test="jccjzt != null and jccjzt != ''">jccjzt,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="yl1 != null and yl1 != ''">yl1,</if>
<if test="yl2 != null and yl2 != ''">yl2,</if>
<if test="yl3 != null and yl3 != ''">yl3,</if>
<if test="yl4 != null and yl4 != ''">yl4,</if>
<if test="yl5 != null and yl5 != ''">yl5,</if>
update_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="rwmc != null and rwmc != ''">#{rwmc},</if>
<if test="deptId != null and deptId != ''">#{deptId},</if>
<if test="rwkssj != null">#{rwkssj},</if>
<if test="rwjssj != null">#{rwjssj},</if>
<if test="glqsl != null">#{glqsl},</if>
<if test="cjglqsl != null">#{cjglqsl},</if>
<if test="jccjzt != null and jccjzt != ''">#{jccjzt},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="yl1 != null and yl1 != ''">#{yl1},</if>
<if test="yl2 != null and yl2 != ''">#{yl2},</if>
<if test="yl3 != null and yl3 != ''">#{yl3},</if>
<if test="yl4 != null and yl4 != ''">#{yl4},</if>
<if test="yl5 != null and yl5 != ''">#{yl5},</if>
now()
</trim>
</insert>
<!-- 修改 -->
<update id="edit" parameterType="com.qianhe.zqcz.zsrw.domain.ZqczZsrw">
UPDATE zqcz_zsrw
<set>
<if test="rwmc != null and rwmc != ''">rwmc=#{rwmc},</if>
<if test="deptId != null and deptId != ''">dept_id=#{deptId},</if>
<if test="rwkssj != null">rwkssj=#{rwkssj},</if>
<if test="rwjssj != null">rwjssj=#{rwjssj},</if>
<if test="glqsl != null">glqsl=#{glqsl},</if>
<if test="cjglqsl != null">cjglqsl=#{cjglqsl},</if>
<if test="jccjzt != null and jccjzt != ''">jccjzt=#{jccjzt},</if>
<if test="createBy != null">create_by=#{createBy},</if>
<if test="createTime != null">create_time=#{createTime},</if>
<if test="updateBy != null">update_by=#{updateBy},</if>
<if test="remark != null and remark != ''">remark=#{remark},</if>
<if test="yl1 != null and yl1 != ''">yl1=#{yl1},</if>
<if test="yl2 != null and yl2 != ''">yl2=#{yl2},</if>
<if test="yl3 != null and yl3 != ''">yl3=#{yl3},</if>
<if test="yl4 != null and yl4 != ''">yl4=#{yl4},</if>
<if test="yl5 != null and yl5 != ''">yl5=#{yl5},</if>
update_time=now()
</set>
WHERE zsrwid=#{zsrwid}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="long">
DELETE FROM zqcz_zsrw WHERE zsrwid IN
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment