diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java index bf89665..87c669a 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java @@ -201,6 +201,11 @@ public class Constants */ public static final String TB_PRO_MONTH_TABLE = "tb_pro_month_table"; + /** + * 分包商信息表 + */ + public static final String QUESTION_RECORD = "question_record"; + } diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/QuestionRecordController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/QuestionRecordController.java new file mode 100644 index 0000000..7a34057 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/QuestionRecordController.java @@ -0,0 +1,110 @@ +package com.bonus.bmw.controller; + +import com.bonus.bmw.domain.dto.QuestionRecordDto; +import com.bonus.bmw.service.QuestionRecordService; +import com.bonus.common.core.utils.encryption.Sm4Utils; +import com.bonus.common.core.utils.json.FastJsonHelper; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.InnerAuth; +import com.bonus.common.security.annotation.RequiresPermissions; +import com.bonus.common.security.annotation.RequiresPermissionsOrInnerAuth; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * app部分接口 + * @author fly + * @date 2025/8/23 + */ +@Slf4j +@RestController +@RequestMapping("/question") +public class QuestionRecordController extends BaseController { + + @Resource + private QuestionRecordService service; + + /** + * 查询列表 + * @param o + * @return + * + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("worker:question:list")) + @GetMapping("/list") + @SysLog(title = "问题记录列表", businessType = OperaType.QUERY, logType = 0, module = "问题记录列表", details = "问题记录列表") + public TableDataInfo list(QuestionRecordDto o) { + try { + startPage(); + List list = service.selectQuestionRecordList(o); + return getDataTable(list); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return getDataTableError(new ArrayList<>()); + } + + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:question:insert")) + @PostMapping("/insert") + @SysLog(title = "新增问题记录", businessType = OperaType.UPDATE, logType = 0, module = "新增问题记录", details = "新增问题记录") + public AjaxResult exit(@RequestParam(value = "files",required = false) MultipartFile[] files, @RequestParam(value = "params")String params) { + try { + params= Sm4Utils.decrypt(params); + QuestionRecordDto o = FastJsonHelper.jsonStrToBean(params, QuestionRecordDto.class); + //先将数据对应关系处理还 + return service.insert(o,files); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + + + /** + * 删除分包商 + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:question:del")) + @PostMapping("/del") + @SysLog(title = "删除问题记录", businessType = OperaType.UPDATE, logType = 0, module = "删除问题记录") + public AjaxResult del(@Validated @RequestBody QuestionRecordDto o) { + try { + int res = service.del(o); + if (res>0){ + return toAjax(res); + }else { + return error("删除失败"); + } + + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + + /** + * 删除分包商 + */ + @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:question:deal")) + @PostMapping("/deal") + @SysLog(title = "处理问题", businessType = OperaType.UPDATE, logType = 0, module = "处理问题") + public AjaxResult deal(@Validated @RequestBody QuestionRecordDto o) { + try { + return service.deal(o); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + + +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/QuestionRecordDto.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/QuestionRecordDto.java new file mode 100644 index 0000000..f953647 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/dto/QuestionRecordDto.java @@ -0,0 +1,77 @@ +package com.bonus.bmw.domain.dto; + +import com.bonus.system.api.model.UploadFileVo; +import lombok.Data; + +import java.util.List; + +/** + * 人员基础信息表 + */ +@Data +public class QuestionRecordDto { + /** + * 编号 + */ + private Integer id; + + /** + * 模块 + */ + private String module; + + /** + * 详情 + */ + private String content; + + + /** + * 状态 + */ + private String status; + + + /** + * 提出人 + */ + private String submitter; + /** + * 处理人 + */ + private String handler; + + /** + * 详情 + */ + private String remark; + /** + * 处理时间 + */ + private String updateTime; + /** + * 修改人id + */ + private Integer updateId; + + /** + * 创建时间 + */ + private String createTime; + /** + * 创建人id + */ + private Integer createId; + + /** + * 文件列表 + */ + List file; + + /** + * 删除文件id集合 + */ + List fileIdList; + + +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/QuestionRecordMapper.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/QuestionRecordMapper.java new file mode 100644 index 0000000..297a1d2 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/mapper/QuestionRecordMapper.java @@ -0,0 +1,17 @@ +package com.bonus.bmw.mapper; + +import com.bonus.bmw.domain.dto.QuestionRecordDto; + +import java.util.List; + +public interface QuestionRecordMapper { + + + List selectQuestionRecordList(QuestionRecordDto o); + + int insert(QuestionRecordDto o); + + int del(QuestionRecordDto o); + + int deal(QuestionRecordDto o); +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/QuestionRecordService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/QuestionRecordService.java new file mode 100644 index 0000000..0382d59 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/QuestionRecordService.java @@ -0,0 +1,18 @@ +package com.bonus.bmw.service; + +import com.bonus.bmw.domain.dto.QuestionRecordDto; +import com.bonus.common.core.web.domain.AjaxResult; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +public interface QuestionRecordService { + + List selectQuestionRecordList(QuestionRecordDto o); + + AjaxResult insert(QuestionRecordDto o, MultipartFile[] files); + + int del(QuestionRecordDto o); + + AjaxResult deal(QuestionRecordDto o); +} diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/QuestionRecordServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/QuestionRecordServiceImpl.java new file mode 100644 index 0000000..1503bb5 --- /dev/null +++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/QuestionRecordServiceImpl.java @@ -0,0 +1,75 @@ +package com.bonus.bmw.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.bonus.bmw.domain.dto.QuestionRecordDto; +import com.bonus.bmw.mapper.QuestionRecordMapper; +import com.bonus.bmw.service.QuestionRecordService; +import com.bonus.common.core.constant.Constants; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.system.api.model.UploadFileVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; + +/** + * @author 马三炮 + * @date 2025/8/14 + */ +@Service +@Slf4j +public class QuestionRecordServiceImpl implements QuestionRecordService { + + @Resource + private QuestionRecordMapper mapper; + + @Autowired + private FileUploadUtils fileUploadUtils; + + + @Override + public List selectQuestionRecordList(QuestionRecordDto o) { + List list = mapper.selectQuestionRecordList(o); + if (!list.isEmpty()){ + for (QuestionRecordDto bean:list) { + List contractFile = fileUploadUtils.getFileList("", bean.getId().toString(), Constants.QUESTION_RECORD, ""); + bean.setFile(contractFile); + } + } + return list; + } + + @Override + public AjaxResult insert(QuestionRecordDto o, MultipartFile[] files) { + o.setCreateId(Math.toIntExact(SecurityUtils.getLoginUser().getUserid())); + int insert = mapper.insert(o); + if (insert > 0) { + String[] sourceType = new String[files.length]; + Arrays.fill(sourceType, "1"); + fileUploadUtils.uploadFile(files, Constants.QUESTION_RECORD, o.getId().toString(), sourceType, "", ""); + } + + return insert > 0 ? AjaxResult.success() : AjaxResult.error(); + } + + @Override + public int del(QuestionRecordDto o) { + int res = mapper.del(o); + //删除合同图片 删除minio文件 + fileUploadUtils.delFileListById("", o.getId().toString(), Constants.QUESTION_RECORD,""); + return res; + } + + @Override + public AjaxResult deal(QuestionRecordDto o) { + o.setUpdateTime(DateUtil.now()); + o.setUpdateId(Math.toIntExact(SecurityUtils.getLoginUser().getUserid())); + int res = mapper.deal(o); + return res > 0 ? AjaxResult.success() : AjaxResult.error(); + } +} diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmSubMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmSubMapper.xml index d879b1f..aeaa654 100644 --- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmSubMapper.xml +++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmSubMapper.xml @@ -73,7 +73,7 @@ psc.sub_company_name as subComName from pm_sub ps left join pm_sub_company psc on ps.sub_com_id = psc.id - where is_active='1' + where ps.is_active='1' and ps.sub_com_id=#{subComId}