diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/approve/ApproveDto.java b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/approve/ApproveDto.java index 632d50d..ec76f65 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/approve/ApproveDto.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/approve/ApproveDto.java @@ -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 { /** * 操作数据 */ - private T data; + private List data; } diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproPurVo.java b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproPurVo.java index ac9e4f2..e3d5e81 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproPurVo.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproPurVo.java @@ -80,7 +80,7 @@ public class LngPngApproPurVo extends com.xjrsoft.common.model.base.BaseModel{ * 采购合同名称 */ @ApiModelProperty("采购合同名称") - private Long kpName; + private String kpName; /** diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproVo.java b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproVo.java index f53b505..18557da 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproVo.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-api/src/main/java/com/xjrsoft/module/dayPlan/vo/LngPngApproVo.java @@ -102,7 +102,7 @@ public class LngPngApproVo extends com.xjrsoft.common.model.base.BaseModel{ * 交易主体名称(天然气公司/惠贸) */ @ApiModelProperty("交易主体名称(天然气公司/惠贸)") - private Long comName; + private String comName; /** diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/controller/PngApproController.java b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/controller/PngApproController.java index 9c47529..dc13cb2 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/controller/PngApproController.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/controller/PngApproController.java @@ -74,7 +74,15 @@ public class PngApproController { @PostMapping(value = "/approveXS") @SaCheckPermission("pngAppro:approveXS") public R approveXS(@Valid @RequestBody ApproveDto dto){ - pngApproService.approve(dto); + pngApproService.approveXS(dto); + return R.ok(); + } + + @ApiOperation(value = "销售审批") + @PostMapping(value = "/batchApproveXS") + @SaCheckPermission("pngAppro:batchApproveXS") + public R batchApproveXS(@Valid @RequestBody ApproveDto 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 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 dto){ - pngApproService.approve(dto); + pngApproService.approveJSZ(dto); return R.ok(); } diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/mapper/LngPngApproMapper.java b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/mapper/LngPngApproMapper.java index 0ddcb43..bbea7dd 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/mapper/LngPngApproMapper.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/mapper/LngPngApproMapper.java @@ -25,12 +25,13 @@ import java.util.List; public interface LngPngApproMapper extends MPJBaseMapper, BaseMapper { @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, BaseMappe IPage queryPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper 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, 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" + diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/IPngApproService.java b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/IPngApproService.java index 8d96abb..9c0d84d 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/IPngApproService.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/IPngApproService.java @@ -27,7 +27,11 @@ public interface IPngApproService extends MPJBaseService, MPJDeepSe LngPngApproVo getInfoById(Long id); - void approve(@Valid ApproveDto dto); + void approveXS(@Valid ApproveDto dto); + + void approveGD(@Valid ApproveDto dto); + + void approveJSZ(@Valid ApproveDto dto); List compare(Long orgId); } diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/impl/PngApproServiceImpl.java b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/impl/PngApproServiceImpl.java index e5ee998..9b9e81b 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/impl/PngApproServiceImpl.java +++ b/itc-pcitc-mdm/itc-pcitc-mdm-service/src/main/java/com/xjrsoft/module/dayPlan/service/impl/PngApproServiceImpl.java @@ -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,41 +95,130 @@ public class PngApproServiceImpl extends MPJBaseServiceImpl dto) { - UpdateLngPngApproDto data = dto.getData(); - LngPngAppro lngPngAppro = this.baseMapper.selectById(data.getId()); - if(lngPngAppro == null) { - throw new BusinessException(BusinessCode.of(10500,"找不到此数据")); - } - lngPngAppro.setQtySalesGj(data.getQtySalesGj()); - lngPngAppro.setQtySalesM3(data.getQtySalesM3()); - this.baseMapper.updateById(lngPngAppro); - for (UpdateLngPngApproPurDto lngPngApproPurDto : data.getLngPngApproPurList()) { - LngPngApproPur lngPngApproPur = lngPngApproPurMapper.selectById(lngPngApproPurDto.getId()); - if(lngPngApproPur == null) { - throw new BusinessException(BusinessCode.of(10500,"找不到此数据")); - } - lngPngApproPur.setQtySalesGj(lngPngApproPurDto.getQtySalesGj()); - lngPngApproPur.setQtySalesM3(lngPngApproPurDto.getQtySalesM3()); - lngPngApproPur.setNote(lngPngApproPurDto.getNote()); - lngPngApproPurMapper.updateById(lngPngApproPur); + public void approveXS(ApproveDto dto) { + List 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"); - List params = Lists.newArrayList(); - JdbcParam outParam = JdbcParam.ofString(null).setOut(true); - params.add(outParam); - params.add(JdbcParam.ofLong(data.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(); - if (com.pictc.utils.StringUtils.isNotEmpty(error)) { - throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_DELETE_EXEC_ERROR, error)); + for (UpdateLngPngApproDto lngPngApproDto : data) { + LngPngAppro lngPngAppro = this.baseMapper.selectById(lngPngApproDto.getId()); + if(lngPngAppro == null) { + throw new BusinessException(BusinessCode.of(10500,"找不到此数据")); + } + if (CollectionUtils.isEmpty(lngPngApproDto.getLngPngApproPurList())) { + List list = lngPngApproPurMapper.selectList(new LambdaQueryWrapper() + .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); + } 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,"找不到上载点数据")); + } + lngPngApproPur.setQtySalesGj(lngPngApproPurDto.getQtySalesGj()); + lngPngApproPur.setQtySalesM3(lngPngApproPurDto.getQtySalesM3()); + lngPngApproPur.setNote(lngPngApproPurDto.getNote()); + lngPngApproPurMapper.updateById(lngPngApproPur); + } + } + List params = Lists.newArrayList(); + JdbcParam outParam = JdbcParam.ofString(null).setOut(true); + params.add(outParam); + params.add(JdbcParam.ofLong(lngPngApproDto.getId())); + params.add(JdbcParam.ofString("XS")); + 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 approveGD(ApproveDto dto) { + List 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 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 dto) { + List 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 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)); + } } } }