package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TErpIssueReportingProcessDTO;
import com.ruoyi.system.model.TCrmClinic;
import com.ruoyi.system.model.TCrmSupplier;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpIssueReporting;
import com.ruoyi.system.query.TErpIssueReportingQuery;
import com.ruoyi.system.service.TCrmClinicService;
import com.ruoyi.system.service.TCrmSupplierService;
import com.ruoyi.system.service.TErpIssueReportingService;
import com.ruoyi.system.vo.TErpIssueReportingVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
*
* erp问题上报 前端控制器
*
*
* @author xiaochen
* @since 2025-08-20
*/
@Api(tags = "erp问题上报")
@RestController
@RequestMapping("/t-erp-issue-reporting")
public class TErpIssueReportingController {
private final TErpIssueReportingService erpIssueReportingService;
private final TCrmClinicService crmClinicService;
private final TCrmSupplierService crmSupplierService;
private final TokenService tokenService;
@Autowired
public TErpIssueReportingController(TErpIssueReportingService erpIssueReportingService, TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TokenService tokenService) {
this.erpIssueReportingService = erpIssueReportingService;
this.crmClinicService = crmClinicService;
this.crmSupplierService = crmSupplierService;
this.tokenService = tokenService;
}
/**
* 获取erp问题上报管理列表
*/
@ApiOperation(value = "获取erp问题上报分页列表")
@PostMapping(value = "/pageList")
public R> pageList(@RequestBody TErpIssueReportingQuery query) {
return R.ok(erpIssueReportingService.pageList(query));
}
/**
* 添加erp问题上报管理
*/
@Log(title = "erp问题上报信息-新增erp问题上报", businessType = BusinessType.INSERT)
@ApiOperation(value = "添加erp问题上报")
@PostMapping(value = "/add")
public R add(@Validated @RequestBody TErpIssueReporting dto) {
Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
Long userId = tokenService.getLoginUser().getUserId();
if(roleType == 4){
dto.setReportType(1);
TCrmSupplier crmSupplier = crmSupplierService.getOne(Wrappers.lambdaQuery(TCrmSupplier.class)
.eq(TCrmSupplier::getUserId, userId)
.last("LIMIT 1"));
dto.setReportUserId(crmSupplier.getId());
}
if(roleType == 5){
dto.setReportType(2);
TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class)
.eq(TCrmClinic::getUserId, userId)
.last("LIMIT 1"));
dto.setReportUserId(crmClinic.getId());
}
return R.ok(erpIssueReportingService.save(dto));
}
/**
* 修改erp问题上报
*/
@Log(title = "erp问题上报信息-修改erp问题上报", businessType = BusinessType.UPDATE)
@ApiOperation(value = "修改erp问题上报")
@PostMapping(value = "/update")
public R update(@Validated @RequestBody TErpIssueReporting dto) {
return R.ok(erpIssueReportingService.updateById(dto));
}
/**
* 查看erp问题上报详情
*/
@ApiOperation(value = "查看erp问题上报详情")
@GetMapping(value = "/getDetailById")
public R getDetailById(@RequestParam String id) {
TErpIssueReporting erpIssueReporting = erpIssueReportingService.getById(id);
TErpIssueReportingVO issueReportingVO = new TErpIssueReportingVO();
BeanUtils.copyProperties(erpIssueReporting, issueReportingVO);
if (erpIssueReporting.getReportType() == 1) {
TCrmSupplier crmSupplier = crmSupplierService.getById(erpIssueReporting.getReportUserId());
if (Objects.nonNull(crmSupplier)){
issueReportingVO.setSupplierClinicName(crmSupplier.getSupplierName());
}
} else {
TCrmClinic crmClinic = crmClinicService.getById(erpIssueReporting.getReportUserId());
if (Objects.nonNull(crmClinic)){
issueReportingVO.setSupplierClinicName(crmClinic.getClinicName());
}
}
return R.ok(issueReportingVO);
}
/**
* 删除erp问题上报
*/
@Log(title = "erp问题上报信息-删除erp问题上报", businessType = BusinessType.DELETE)
@ApiOperation(value = "删除erp问题上报")
@DeleteMapping(value = "/deleteById")
public R deleteById(@RequestParam String id) {
return R.ok(erpIssueReportingService.removeById(id));
}
/**
* 批量删除erp问题上报
*/
@Log(title = "erp问题上报信息-删除erp问题上报", businessType = BusinessType.DELETE)
@ApiOperation(value = "批量删除erp问题上报")
@DeleteMapping(value = "/deleteByIds")
public R deleteByIds(@RequestBody List ids) {
return R.ok(erpIssueReportingService.removeByIds(ids));
}
/**
* 修改erp问题上报
*/
@Log(title = "erp问题上报信息-erp问题上报处理", businessType = BusinessType.UPDATE)
@ApiOperation(value = "erp问题上报处理")
@PostMapping(value = "/process")
public R process(@Validated @RequestBody TErpIssueReportingProcessDTO dto) {
// 获取当前登录人
String nickName = tokenService.getLoginUser().getUser().getNickName();
TErpIssueReporting erpIssueReporting = erpIssueReportingService.getById(dto.getId());
erpIssueReporting.setStatus(2);
erpIssueReporting.setHandlerPerson(nickName);
erpIssueReporting.setHandlerTime(LocalDateTime.now());
erpIssueReporting.setHandlerContent(dto.getHandlerContent());
erpIssueReportingService.updateById(erpIssueReporting);
return R.ok();
}
}