This commit is contained in:
张秉卓
2026-01-20 18:00:24 +08:00
parent 415708937d
commit 31e2b096c2
7 changed files with 155 additions and 47 deletions

View File

@ -3,6 +3,8 @@ package com.xjrsoft.module.approve;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @title: 审批通用类
@ -36,5 +38,5 @@ public class ApproveDto<T> {
/**
* 操作数据
*/
private T data;
private List<T> data;
}

View File

@ -80,7 +80,7 @@ public class LngPngApproPurVo extends com.xjrsoft.common.model.base.BaseModel{
* 采购合同名称
*/
@ApiModelProperty("采购合同名称")
private Long kpName;
private String kpName;
/**

View File

@ -102,7 +102,7 @@ public class LngPngApproVo extends com.xjrsoft.common.model.base.BaseModel{
* 交易主体名称(天然气公司/惠贸)
*/
@ApiModelProperty("交易主体名称(天然气公司/惠贸)")
private Long comName;
private String comName;
/**

View File

@ -74,7 +74,15 @@ public class PngApproController {
@PostMapping(value = "/approveXS")
@SaCheckPermission("pngAppro:approveXS")
public R approveXS(@Valid @RequestBody ApproveDto<UpdateLngPngApproDto> dto){
pngApproService.approve(dto);
pngApproService.approveXS(dto);
return R.ok();
}
@ApiOperation(value = "销售审批")
@PostMapping(value = "/batchApproveXS")
@SaCheckPermission("pngAppro:batchApproveXS")
public R batchApproveXS(@Valid @RequestBody ApproveDto<UpdateLngPngApproDto> dto){
pngApproService.approveXS(dto);
return R.ok();
}
@ -82,7 +90,7 @@ public class PngApproController {
@PostMapping(value = "/approveGD")
@SaCheckPermission("pngAppro:approveGD")
public R approveGD(@Valid @RequestBody ApproveDto<UpdateLngPngApproDto> dto){
pngApproService.approve(dto);
pngApproService.approveGD(dto);
return R.ok();
}
@ -90,7 +98,7 @@ public class PngApproController {
@PostMapping(value = "/approveJSZ")
@SaCheckPermission("pngAppro:approveJSZ")
public R approveJSZ(@Valid @RequestBody ApproveDto<UpdateLngPngApproDto> dto){
pngApproService.approve(dto);
pngApproService.approveJSZ(dto);
return R.ok();
}

View File

@ -25,12 +25,13 @@ import java.util.List;
public interface LngPngApproMapper extends MPJBaseMapper<LngPngAppro>, BaseMapper<LngPngAppro> {
@Select("SELECT a.id, a.rule_user_id, a.demand_org_id, a.date_plan," +
" (CASE a.date_plan - CURRENT_DATE " +
" (CASE EXTRACT(DAY FROM a.date_plan - CURRENT_DATE)" +
" WHEN 0 THEN '当日' " +
" WHEN 1 THEN '次日' " +
" ELSE IF(a.date_plan - CURRENT_DATE < 0,'',a.date_plan - CURRENT_DATE || '日后') " +
" END) days_sign" +
" a.cu_code, cu.cu_name, cu.cu_sname, a.ver_no, a.point_dely_code, sp.full_name AS poin_dely_name," +
" ELSE IF(EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) < 0,''," +
" EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) || '日后') " +
" END) days_sign," +
" a.cu_code, cu.cu_name, cu.cu_sname, a.ver_no, a.point_dely_code, sp.full_name AS point_dely_name," +
" a.qty_demand_gj, a.qty_demand_m3/10000 AS qty_demand_m3," +
" a.qty_sales_gj, a.qty_sales_m3/10000 AS qty_sales_m3," +
" a.rate_k, a.rate_mp, a.rate_s, k.k_name, a.alter_sign, dd_iud.name AS alter_name," +
@ -50,12 +51,13 @@ public interface LngPngApproMapper extends MPJBaseMapper<LngPngAppro>, BaseMappe
IPage<LngPngApproVo> queryPage(IPage<LngPngApproPageDto> page, @Param(Constants.WRAPPER) QueryWrapper<LngPngAppro> queryWrapper);
@Select("SELECT a.*," +
" (CASE a.date_plan - CURRENT_DATE " +
" (CASE EXTRACT(DAY FROM a.date_plan - CURRENT_DATE)" +
" WHEN 0 THEN '当日' " +
" WHEN 1 THEN '次日' " +
" ELSE IF(a.date_plan - CURRENT_DATE < 0,'',a.date_plan - CURRENT_DATE || '日后') " +
" ELSE IF(EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) < 0,''," +
" EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) || '日后') " +
" END) days_sign," +
" cu.cu_name, cu.cu_sname, sp.full_name AS poin_dely_name," +
" cu.cu_name, cu.cu_sname, sp.full_name AS point_dely_name," +
" k.k_name, dd_iud.name AS alter_name," +
" com.name AS com_name, dd_a.name as appro_name" +
" FROM lng_png_appro a" +
@ -71,12 +73,13 @@ public interface LngPngApproMapper extends MPJBaseMapper<LngPngAppro>, BaseMappe
LngPngApproVo getOneById(@Param("id") Long id);
@Select("SELECT a.*," +
" (CASE a.date_plan - CURRENT_DATE " +
" (CASE EXTRACT(DAY FROM a.date_plan - CURRENT_DATE)" +
" WHEN 0 THEN '当日' " +
" WHEN 1 THEN '次日' " +
" ELSE IF(a.date_plan - CURRENT_DATE < 0,'',a.date_plan - CURRENT_DATE || '日后') " +
" ELSE IF(EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) < 0,''," +
" EXTRACT(DAY FROM a.date_plan - CURRENT_DATE) || '日后') " +
" END) days_sign," +
" cu.cu_name, cu.cu_sname, sp.full_name AS poin_dely_name," +
" cu.cu_name, cu.cu_sname, sp.full_name AS point_dely_name," +
" k.k_name, dd_iud.name AS alter_name," +
" com.name AS com_name, dd_a.name as appro_name" +
" FROM lng_png_appro a" +

View File

@ -27,7 +27,11 @@ public interface IPngApproService extends MPJBaseService<LngPngAppro>, MPJDeepSe
LngPngApproVo getInfoById(Long id);
void approve(@Valid ApproveDto<UpdateLngPngApproDto> dto);
void approveXS(@Valid ApproveDto<UpdateLngPngApproDto> dto);
void approveGD(@Valid ApproveDto<UpdateLngPngApproDto> dto);
void approveJSZ(@Valid ApproveDto<UpdateLngPngApproDto> dto);
List<LngPngApproVo> compare(Long orgId);
}

View File

@ -3,6 +3,7 @@ package com.xjrsoft.module.dayPlan.service.impl;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.yulichang.base.MPJBaseServiceImpl;
@ -34,6 +35,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
/**
@ -93,36 +95,60 @@ public class PngApproServiceImpl extends MPJBaseServiceImpl<LngPngApproMapper, L
@Override
@Transactional(rollbackFor = Exception.class)
public void approve(ApproveDto<UpdateLngPngApproDto> dto) {
UpdateLngPngApproDto data = dto.getData();
LngPngAppro lngPngAppro = this.baseMapper.selectById(data.getId());
public void approveXS(ApproveDto<UpdateLngPngApproDto> dto) {
List<UpdateLngPngApproDto> data = dto.getData();
if (CollectionUtils.isEmpty(data)) {
throw new BusinessException(BusinessCode.of(10500,"请选择审批数据"));
}
String sql = com.pictc.utils.StringUtils.format("{? = call pc_{0}.f_approval(?, ?, ?, ?, ?)}",
"lng_png_appro");
SaSession tokenSession = StpUtil.getTokenSession();
UserDto user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new UserDto());
for (UpdateLngPngApproDto lngPngApproDto : data) {
LngPngAppro lngPngAppro = this.baseMapper.selectById(lngPngApproDto.getId());
if(lngPngAppro == null) {
throw new BusinessException(BusinessCode.of(10500,"找不到此数据"));
}
lngPngAppro.setQtySalesGj(data.getQtySalesGj());
lngPngAppro.setQtySalesM3(data.getQtySalesM3());
if (CollectionUtils.isEmpty(lngPngApproDto.getLngPngApproPurList())) {
List<LngPngApproPur> list = lngPngApproPurMapper.selectList(new LambdaQueryWrapper<LngPngApproPur>()
.eq(LngPngApproPur::getApproId, lngPngApproDto.getId()));
if (CollectionUtils.isEmpty(list)) {
throw new BusinessException(BusinessCode.of(10500,"找不到上载点数据"));
}
BigDecimal qtySalesGjTotal = BigDecimal.ZERO;
BigDecimal qtySalesM3Total = BigDecimal.ZERO;
for (LngPngApproPur lngPngApproPur : list) {
lngPngApproPur.setQtySalesGj(lngPngApproPur.getQtyDemandGj());
lngPngApproPur.setQtySalesM3(lngPngApproPur.getQtyDemandM3());
lngPngApproPurMapper.updateById(lngPngApproPur);
qtySalesGjTotal = qtySalesGjTotal.add(lngPngApproPur.getQtySalesGj());
qtySalesM3Total = qtySalesM3Total.add(lngPngApproPur.getQtySalesM3());
}
lngPngAppro.setQtySalesGj(qtySalesGjTotal);
lngPngAppro.setQtySalesM3(qtySalesM3Total);
this.baseMapper.updateById(lngPngAppro);
for (UpdateLngPngApproPurDto lngPngApproPurDto : data.getLngPngApproPurList()) {
} else {
lngPngAppro.setQtySalesGj(lngPngApproDto.getQtySalesGj());
lngPngAppro.setQtySalesM3(lngPngApproDto.getQtySalesM3());
this.baseMapper.updateById(lngPngAppro);
for (UpdateLngPngApproPurDto lngPngApproPurDto : lngPngApproDto.getLngPngApproPurList()) {
LngPngApproPur lngPngApproPur = lngPngApproPurMapper.selectById(lngPngApproPurDto.getId());
if(lngPngApproPur == null) {
throw new BusinessException(BusinessCode.of(10500,"找不到数据"));
throw new BusinessException(BusinessCode.of(10500,"找不到上载点数据"));
}
lngPngApproPur.setQtySalesGj(lngPngApproPurDto.getQtySalesGj());
lngPngApproPur.setQtySalesM3(lngPngApproPurDto.getQtySalesM3());
lngPngApproPur.setNote(lngPngApproPurDto.getNote());
lngPngApproPurMapper.updateById(lngPngApproPur);
}
String sql = com.pictc.utils.StringUtils.format("{? = call pc_{0}.f_approval(?, ?, ?, ?, ?)}",
"lng_png_appro");
}
List<JdbcParam> params = Lists.newArrayList();
JdbcParam outParam = JdbcParam.ofString(null).setOut(true);
params.add(outParam);
params.add(JdbcParam.ofLong(data.getId()));
params.add(JdbcParam.ofLong(lngPngApproDto.getId()));
params.add(JdbcParam.ofString("XS"));
params.add(JdbcParam.ofString(dto.getResult()));
params.add(JdbcParam.ofString(dto.getRemark()));
SaSession tokenSession = StpUtil.getTokenSession();
UserDto user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new UserDto());
params.add(JdbcParam.ofLong(user.getId()));
JdbcTools.call(sql,params);
String error = outParam.getStringValue();
@ -131,3 +157,68 @@ public class PngApproServiceImpl extends MPJBaseServiceImpl<LngPngApproMapper, L
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void approveGD(ApproveDto<UpdateLngPngApproDto> dto) {
List<UpdateLngPngApproDto> data = dto.getData();
if (CollectionUtils.isEmpty(data)) {
throw new BusinessException(BusinessCode.of(10500,"请选择审批数据"));
}
String sql = com.pictc.utils.StringUtils.format("{? = call pc_{0}.f_approval_gd(?, ?, ?, ?, ?)}",
"lng_png_appro");
SaSession tokenSession = StpUtil.getTokenSession();
UserDto user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new UserDto());
for (UpdateLngPngApproDto lngPngApproDto : data) {
LngPngAppro lngPngAppro = this.baseMapper.selectById(lngPngApproDto.getId());
if(lngPngAppro == null) {
throw new BusinessException(BusinessCode.of(10500,"找不到此数据"));
}
List<JdbcParam> params = Lists.newArrayList();
JdbcParam outParam = JdbcParam.ofString(null).setOut(true);
params.add(outParam);
params.add(JdbcParam.ofString(user.getStaCode()));
params.add(JdbcParam.ofLocalDateTime(lngPngAppro.getDatePlan()));
params.add(JdbcParam.ofString(dto.getResult()));
params.add(JdbcParam.ofString(dto.getRemark()));
params.add(JdbcParam.ofLong(user.getId()));
JdbcTools.call(sql,params);
String error = outParam.getStringValue();
if (com.pictc.utils.StringUtils.isNotEmpty(error)) {
throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error));
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void approveJSZ(ApproveDto<UpdateLngPngApproDto> dto) {
List<UpdateLngPngApproDto> data = dto.getData();
if (CollectionUtils.isEmpty(data)) {
throw new BusinessException(BusinessCode.of(10500,"请选择审批数据"));
}
String sql = com.pictc.utils.StringUtils.format("{? = call pc_{0}.f_approval_jsz(?, ?, ?, ?, ?)}",
"lng_png_appro");
SaSession tokenSession = StpUtil.getTokenSession();
UserDto user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new UserDto());
for (UpdateLngPngApproDto lngPngApproDto : data) {
LngPngAppro lngPngAppro = this.baseMapper.selectById(lngPngApproDto.getId());
if(lngPngAppro == null) {
throw new BusinessException(BusinessCode.of(10500,"找不到此数据"));
}
List<JdbcParam> params = Lists.newArrayList();
JdbcParam outParam = JdbcParam.ofString(null).setOut(true);
params.add(outParam);
params.add(JdbcParam.ofString(user.getStaCode()));
params.add(JdbcParam.ofLocalDateTime(lngPngAppro.getDatePlan()));
params.add(JdbcParam.ofString(dto.getResult()));
params.add(JdbcParam.ofString(dto.getRemark()));
params.add(JdbcParam.ofLong(user.getId()));
JdbcTools.call(sql,params);
String error = outParam.getStringValue();
if (com.pictc.utils.StringUtils.isNotEmpty(error)) {
throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error));
}
}
}
}