From 07dc59b3fef59a443fe392247fde63d8818c71ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Sat, 9 Nov 2024 18:04:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/annotation/Log.java | 8 ++- .../com/ruoyi/common/enums/BusinessType.java | 2 + .../ruoyi/framework/aspectj/LogAspect.java | 50 +++++++++++++++-- .../ruoyi/system/mapper/SysDeptMapper.java | 3 +- .../ruoyi/system/service/ISysDeptService.java | 13 ++++- .../service/impl/SysDeptServiceImpl.java | 11 ++-- .../resources/mapper/system/SysDeptMapper.xml | 1 + .../report/controller/ReportController.java | 33 +++++++---- .../ruoyi/web/yh/report/domain/Report.java | 2 + .../web/yh/report/domain/bo/ReportBO.java | 4 ++ .../yh/report/domain/enums/ReportStatus.java | 21 +++++++ .../web/yh/report/mapper/ReportMapper.xml | 8 ++- .../web/yh/report/service/ReportService.java | 10 ++++ .../service/impl/ReportConverterImpl.java | 6 ++ .../service/impl/ReportServiceImpl.java | 55 +++++++++++++++++-- .../service/impl/ReportValidatorImpl.java | 25 ++++++++- .../web/yh/reportProd/domain/ReportProd.java | 4 ++ .../yh/reportProd/mapper/ReportProdMapper.xml | 32 ++++++++++- .../service/impl/ReportProdConverterImpl.java | 4 ++ .../reportUserProd/domain/ReportUserProd.java | 6 ++ 20 files changed, 265 insertions(+), 33 deletions(-) diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java index 1eb8e49..b7c3a0c 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java @@ -10,7 +10,7 @@ import com.ruoyi.common.enums.OperatorType; /** * 自定义操作日志记录注解 - * + * * @author ruoyi * */ @@ -48,4 +48,10 @@ public @interface Log * 排除指定的请求参数 */ public String[] excludeParamNames() default {}; + + /** + * 业务表ID + * @return + */ + long bizId() default -1; } diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java index ffc9c8f..25909b8 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java @@ -69,4 +69,6 @@ public enum BusinessType ENABLE, // 取消提交 CANCEL, + // 提交 + SUBMIT, } diff --git a/common-ruoyi/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/common-ruoyi/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index 6aaa231..e7bedf5 100644 --- a/common-ruoyi/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/common-ruoyi/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -1,5 +1,7 @@ package com.ruoyi.framework.aspectj; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; import java.util.Collection; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -10,6 +12,7 @@ import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.NamedThreadLocal; @@ -33,7 +36,7 @@ import com.ruoyi.system.domain.SysOperLog; /** * 操作日志记录处理 - * + * * @author ruoyi */ @Aspect @@ -54,6 +57,43 @@ public class LogAspect @Before(value = "@annotation(controllerLog)") public void boBefore(JoinPoint joinPoint, Log controllerLog) { +// MethodSignature signature = (MethodSignature) joinPoint.getSignature(); +// Method method = signature.getMethod(); +// +// // 获取方法的所有参数 +// Parameter[] parameters = method.getParameters(); +// Object[] args = joinPoint.getArgs(); +// +// // 获取注解中的 paramName +// String paramName = myMethodAnnotation.paramName(); +// +// // 查找参数名对应的参数值 +// for (int i = 0; i < parameters.length; i++) { +// Parameter parameter = parameters[i]; +// if (parameter.getName().equals(paramName.split("\\.")[0])) { +// Object paramValue = args[i]; +// +// // 如果参数是复杂类型,进一步获取属性值 +// if (paramName.contains(".")) { +// String[] parts = paramName.split("\\."); +// Object currentObject = paramValue; +// for (int j = 1; j < parts.length; j++) { +// String part = parts[j]; +// try { +// Field field = currentObject.getClass().getDeclaredField(part); +// field.setAccessible(true); +// currentObject = field.get(currentObject); +// } catch (NoSuchFieldException | IllegalAccessException e) { +// throw new RuntimeException("Failed to access field " + part, e); +// } +// } +// paramValue = currentObject; +// } +// +// System.out.println("Parameter value for " + paramName + ": " + paramValue); +// } +// } + TIME_THREADLOCAL.set(System.currentTimeMillis()); } @@ -70,7 +110,7 @@ public class LogAspect /** * 拦截异常操作 - * + * * @param joinPoint 切点 * @param e 异常 */ @@ -136,7 +176,7 @@ public class LogAspect /** * 获取注解中对方法的描述信息 用于Controller层注解 - * + * * @param log 日志 * @param operLog 操作日志 * @throws Exception @@ -164,7 +204,7 @@ public class LogAspect /** * 获取请求的参数,放到log中 - * + * * @param operLog 操作日志 * @throws Exception 异常 */ @@ -220,7 +260,7 @@ public class LogAspect /** * 判断是否需要过滤的对象。 - * + * * @param o 对象信息。 * @return 如果是需要过滤的对象,则返回true;否则返回false。 */ diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java index 090d5f4..349ca94 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java @@ -34,9 +34,10 @@ public interface SysDeptMapper * 根据部门ID查询信息 * * @param deptId 部门ID + * @param scope * @return 部门信息 */ - public SysDept selectDeptById(Long deptId); + public SysDept selectDeptById(@Param("deptId") Long deptId, @Param("scope") boolean scope); /** * 根据ID查询所有子部门 diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java index 9c33720..b4f8f5f 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java @@ -58,7 +58,18 @@ public interface ISysDeptService * @param deptId 部门ID * @return 部门信息 */ - public SysDept selectDeptById(Long deptId); + default SysDept selectDeptById(Long deptId) { + return selectDeptById(deptId, false); + } + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @param scope + * @return 部门信息 + */ + public SysDept selectDeptById(Long deptId, boolean scope); /** * 根据ID查询所有子部门(正常状态) diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 3092f6a..d46f35c 100644 --- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -122,12 +122,13 @@ public class SysDeptServiceImpl implements ISysDeptService * 根据部门ID查询信息 * * @param deptId 部门ID + * @param scope * @return 部门信息 */ @Override - public SysDept selectDeptById(Long deptId) + public SysDept selectDeptById(Long deptId, boolean scope) { - return deptMapper.selectDeptById(deptId); + return deptMapper.selectDeptById(deptId, scope); } /** @@ -215,7 +216,7 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public int insertDept(SysDept dept) { - SysDept info = deptMapper.selectDeptById(dept.getParentId()); + SysDept info = deptMapper.selectDeptById(dept.getParentId(), false); // 如果父节点不为正常状态,则不允许新增子节点 if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) { @@ -234,8 +235,8 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public int updateDept(SysDept dept) { - SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId()); - SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId()); + SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId(), false); + SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId(), false); if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) { String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId(); diff --git a/common-ruoyi/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/common-ruoyi/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 73d55af..2a615e3 100644 --- a/common-ruoyi/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/common-ruoyi/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -69,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" (select dept_name from sys_dept where dept_id = d.parent_id) parent_name from sys_dept d where d.dept_id = #{deptId} + ${@com.ruoyi.framework.util.DataScopeUtil@dataScope("d", null, scope)} </select> <select id="checkDeptExistUser" parameterType="Long" resultType="int"> diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/controller/ReportController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/controller/ReportController.java index f5d73df..eb5388d 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/controller/ReportController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/controller/ReportController.java @@ -12,14 +12,7 @@ import com.ruoyi.web.yh.report.service.ReportConverter; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -81,11 +74,15 @@ public class ReportController extends BaseController */ @PreAuthorize("@ss.hasPermi('yh:report:query')") @GetMapping(value = "/{reportId}") - public AjaxResult getInfo(@PathVariable("reportId") Long reportId) - { + public AjaxResult getInfo(@PathVariable("reportId") Long reportId, + @RequestParam(required = false, defaultValue = "true") Boolean needProductList, + @RequestParam(required = false, defaultValue = "true") Boolean needUserProd + ) { ReportVO report = reportService.selectReportByReportId(reportId); List<ReportVO> list = Collections.singletonList(report); - reportAssembler.assembleProductList(list, true); // 拼接产量明细 + if (needProductList) { + reportAssembler.assembleProductList(list, needUserProd); // 拼接产量明细 + } return success(report); } @@ -129,4 +126,18 @@ public class ReportController extends BaseController public AjaxResult verify(@RequestBody @Validated ReportVerifyDTO dto) { return toAjax(reportService.verify(dto, getUserId())); } + + @PreAuthorize("@ss.hasPermi('yh:report:cancel')") + @Log(title = "车间报表取消提交", businessType = BusinessType.CANCEL) + @PutMapping("/{reportId}/cancel") + public AjaxResult cancel(@PathVariable Long reportId) { + return toAjax(reportService.cancel(reportId)); + } + + @PreAuthorize("@ss.hasPermi('yh:report:submit')") + @Log(title = "车间报表提交", businessType = BusinessType.SUBMIT) + @PutMapping("/{reportId}/submit") + public AjaxResult submit(@PathVariable Long reportId) { + return toAjax(reportService.submit(reportId)); + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/Report.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/Report.java index 3a54f50..e430bfd 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/Report.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/Report.java @@ -13,6 +13,7 @@ import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; /** @@ -71,5 +72,6 @@ public class Report extends BaseEntity @Excel(name = "总金额", readConverterExp = "元=") @ApiModelProperty("总金额") @NotNull(message = "总金额不能为空") + @Min(value = 0, message = "总金额必须大于0") private BigDecimal totalAmount; } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/bo/ReportBO.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/bo/ReportBO.java index a6b495c..4ba1b5d 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/bo/ReportBO.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/bo/ReportBO.java @@ -1,5 +1,6 @@ package com.ruoyi.web.yh.report.domain.bo; +import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.web.yh.report.domain.Report; import com.ruoyi.web.yh.reportProd.domain.ReportProd; @@ -17,6 +18,9 @@ import java.util.List; @Data public class ReportBO extends Report { + // 部门信息 + private SysDept dept; + // 产量列表 private List<ReportProdBO> productList; } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/enums/ReportStatus.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/enums/ReportStatus.java index 42e8603..67a1237 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/enums/ReportStatus.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/domain/enums/ReportStatus.java @@ -3,6 +3,7 @@ package com.ruoyi.web.yh.report.domain.enums; import lombok.AllArgsConstructor; import lombok.Getter; +import java.nio.charset.Charset; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -34,4 +35,24 @@ public enum ReportStatus { return asList(WAIT_VERIFY); } + /** + * 允许取消审核的状态 + */ + public static List<String> canCancel() { + return asList(WAIT_VERIFY); + } + + /** + * 允许提交的状态 + */ + public static List<String> canSubmit() { + return asList(WAIT_SUBMIT); + } + + /** + * 允许修改的状态 + */ + public static List<String> canEdit() { + return asList(WAIT_SUBMIT, REJECT); + } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/mapper/ReportMapper.xml b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/mapper/ReportMapper.xml index 3d01722..e623ef1 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/mapper/ReportMapper.xml +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/mapper/ReportMapper.xml @@ -42,6 +42,12 @@ <if test="query.updateId != null "> and br.update_id = #{query.updateId}</if> <if test="query.updateBy != null and query.updateBy != ''"> and br.update_by like concat('%', #{query.updateBy}, '%')</if> <if test="query.remark != null and query.remark != ''"> and br.remark like concat('%', #{query.remark}, '%')</if> + <if test="query.statusList != null and query.statusList.size() > 0"> + and br.status in + <foreach collection="query.statusList" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> ${query.params.dataScope} </sql> @@ -104,7 +110,7 @@ </update> <update id="updateByQuery"> - update bst_report + update bst_report br <trim prefix="SET" suffixOverrides=","> <include refid="updateColumns"/> </trim> diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/ReportService.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/ReportService.java index 130a28d..0dbd7c1 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/ReportService.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/ReportService.java @@ -81,4 +81,14 @@ public interface ReportService * @param verifyId 审核人ID */ int verify(ReportVerifyDTO dto, Long verifyId); + + /** + * 取消提交 + */ + int cancel(Long reportId); + + /** + * 提交 + */ + int submit(Long reportId); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportConverterImpl.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportConverterImpl.java index 600d15d..12b4070 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportConverterImpl.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportConverterImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.web.yh.report.service.impl; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.web.yh.price.domain.PriceQuery; import com.ruoyi.web.yh.price.service.PriceService; @@ -37,6 +38,9 @@ public class ReportConverterImpl implements ReportConverter { @Autowired private ReportProdConverter reportProdConverter; + @Autowired + private ISysDeptService deptService; + @Override public ReportBO toBoByCreate(ReportVO vo) { if (vo == null) { @@ -65,6 +69,7 @@ public class ReportConverterImpl implements ReportConverter { // 组装数据 bo.setProductList(productList); + bo.setDept(deptService.selectDeptById(bo.getDeptId(), true)); return bo; } @@ -97,6 +102,7 @@ public class ReportConverterImpl implements ReportConverter { // 组装数据 bo.setProductList(productList); + bo.setDept(deptService.selectDeptById(bo.getDeptId(), true)); return bo; } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportServiceImpl.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportServiceImpl.java index e46254e..c3bb809 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportServiceImpl.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportServiceImpl.java @@ -99,14 +99,19 @@ public class ReportServiceImpl implements ReportService /** * 修改报表 * - * @param report 报表 + * @param data 报表 * @return 结果 */ @Override - public int updateReport(Report report) - { - report.setUpdateTime(DateUtils.getNowDate()); - return reportMapper.updateReport(report); + public int updateReport(Report data) { + if (data.getReportId() == null) { + return 0; + } + data.setUpdateTime(DateUtils.getNowDate()); + ReportQuery query = new ReportQuery(); + query.setReportId(data.getReportId()); + query.setStatusList(ReportStatus.canEdit()); + return this.updateByQuery(data, query); } /** @@ -265,6 +270,46 @@ public class ReportServiceImpl implements ReportService return result == null ? 0 : result; } + @Override + public int cancel(Long reportId) { + ReportVO old = this.selectReportByReportId(reportId); + ServiceUtil.assertion(old == null || old.getReportId() == null, "待取消的报表不存在"); + ServiceUtil.assertion(!ReportStatus.canCancel().contains(old.getStatus()), "报表当前状态不允许取消,请刷新后重试"); + + Report data = new Report(); + data.setStatus(ReportStatus.WAIT_SUBMIT.getStatus()); + ReportQuery query = new ReportQuery(); + query.setReportId(reportId); + query.setStatusList(ReportStatus.canCancel()); + Integer result = transactionTemplate.execute(status -> { + int update = this.updateByQuery(data, query); + ServiceUtil.assertion(update != 1, "取消失败,当前报表状态已发生变化,请刷新后重试"); + return update; + }); + + return result == null ? 0 : result; + } + + @Override + public int submit(Long reportId) { + ReportVO old = this.selectReportByReportId(reportId); + ServiceUtil.assertion(old == null || old.getReportId() == null, "待提交的报表不存在"); + ServiceUtil.assertion(!ReportStatus.canSubmit().contains(old.getStatus()), "报表当前状态不允许提交,请刷新后重试"); + + Report data = new Report(); + data.setStatus(ReportStatus.WAIT_VERIFY.getStatus()); + ReportQuery query = new ReportQuery(); + query.setReportId(reportId); + query.setStatusList(ReportStatus.canSubmit()); + Integer result = transactionTemplate.execute(status -> { + int update = this.updateByQuery(data, query); + ServiceUtil.assertion(update != 1, "提交失败,当前报表状态已发生变化,请刷新后重试"); + return update; + }); + + return result == null ? 0 : result; + } + private int updateByQuery(Report data, ReportQuery query) { return reportMapper.updateByQuery(data, query); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportValidatorImpl.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportValidatorImpl.java index 1b39f71..00ce602 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportValidatorImpl.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/report/service/impl/ReportValidatorImpl.java @@ -1,8 +1,12 @@ package com.ruoyi.web.yh.report.service.impl; import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.web.yh.report.domain.ReportVO; import com.ruoyi.web.yh.report.domain.bo.ReportBO; +import com.ruoyi.web.yh.report.domain.enums.ReportStatus; +import com.ruoyi.web.yh.report.service.ReportService; import com.ruoyi.web.yh.report.service.ReportValidator; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -11,9 +15,28 @@ import org.springframework.stereotype.Service; */ @Service public class ReportValidatorImpl implements ReportValidator { + + @Autowired + private ReportService reportService; + @Override public void checkPreEdit(ReportBO bo) { - ServiceUtil.assertion(bo == null, "参数错误"); + ServiceUtil.assertion(bo == null || bo.getReportId() == null, "参数错误"); + + ReportVO old = reportService.selectReportByReportId(bo.getReportId()); + ServiceUtil.assertion(old == null || old.getReportId() == null, "待更新的报表不存在"); + ServiceUtil.assertion(!ReportStatus.canEdit().contains(old.getStatus()), "报表当前状态不允许更新,请刷新后重试"); + + // TODO 业务表校验 + // TODO 部门是否当前用户可选 + + // TODO 工序是否当前用户可选 + + // TODO 工序是否当前部门的工序 + + // TODO 员工是否当前用户可选 + + // TODO 员工是否当前部门的员工 } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/domain/ReportProd.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/domain/ReportProd.java index 3de36b4..657c7bd 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/domain/ReportProd.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/domain/ReportProd.java @@ -14,6 +14,7 @@ import com.ruoyi.common.core.domain.BaseEntity; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; /** * 报表产量对象 bst_report_prod @@ -94,4 +95,7 @@ public class ReportProd extends BaseEntity @NotBlank(message = "工序类型不允许为空") @DictValid(type = DictType.PRICE_TYPE, message = "非法的工序类型") private String priceType; + + @Size(max = 200, message = "备注长度不允许超过200个字符") + private String remark; } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/mapper/ReportProdMapper.xml b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/mapper/ReportProdMapper.xml index 9433f9e..395d103 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/mapper/ReportProdMapper.xml +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/mapper/ReportProdMapper.xml @@ -24,7 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" brp.price_classify, brp.price_quantity, brp.deleted, - brp.price_type + brp.price_type, + brp.remark from bst_report_prod brp </sql> @@ -39,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="query.priceSpec != null and query.priceSpec != ''"> and brp.price_spec like concat('%', #{query.priceSpec}, '%')</if> <if test="query.priceUnit != null and query.priceUnit != ''"> and brp.price_unit = #{query.priceUnit}</if> <if test="query.priceClassify != null and query.priceClassify != ''"> and brp.price_classify like concat('%', #{query.priceClassify}, '%')</if> + <if test="query.remark != null and query.remark != ''"> and brp.remark like concat('%', #{query.remark}, '%')</if> <if test="query.priceType != null and query.priceType != ''"> and price_type = #{query.priceType}</if> <if test="query.deleted == null">and brp.deleted = false</if> <if test="query.deleted != null">and brp.deleted = #{deleted}</if> @@ -81,6 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="priceClassify != null">price_classify,</if> <if test="priceQuantity != null">price_quantity,</if> <if test="priceType != null and priceType != ''">price_type,</if> + <if test="remark != null and remark != ''">remark,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="reportId != null">#{reportId},</if> @@ -98,6 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="priceClassify != null">#{priceClassify},</if> <if test="priceQuantity != null">#{priceQuantity},</if> <if test="priceType != null and priceType != ''">#{priceType},</if> + <if test="remark != null and remark != ''">#{remark},</if> </trim> </insert> @@ -117,7 +121,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" price_unit, price_classify, price_quantity, - price_type + price_type, + remark ) values <foreach collection="list" item="i" separator=","> @@ -152,6 +157,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="i.priceQuantity == null">default,</if> <if test="i.priceType != null">#{i.priceType},</if> <if test="i.priceType == null">default,</if> + <if test="i.remark != null">#{i.remark},</if> + <if test="i.remark == null">default,</if> </trim> </foreach> </insert> @@ -180,6 +187,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <if test="data.priceClassify != null">price_classify = #{data.priceClassify},</if> <if test="data.priceQuantity != null">price_quantity = #{data.priceQuantity},</if> <if test="data.priceType != null and data.priceType != ''">price_type = #{data.priceType},</if> + <if test="data.remark != null and data.remark != ''">remark = #{data.remark},</if> </sql> <update id="batchUpdate"> @@ -315,6 +323,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" </otherwise> </choose> </foreach> + <foreach open="price_type = CASE id" collection="list" item="item" close="END,"> + <choose> + <when test="item.priceType != null"> + WHEN #{item.id} THEN #{item.priceType} + </when> + <otherwise> + WHEN #{item.id} THEN `price_type` + </otherwise> + </choose> + </foreach> + <foreach open="remark = CASE id" collection="list" item="item" close="END,"> + <choose> + <when test="item.remark != null"> + WHEN #{item.id} THEN #{item.remark} + </when> + <otherwise> + WHEN #{item.id} THEN `remark` + </otherwise> + </choose> + </foreach> </trim> where id in <foreach item="item" collection="list" open="(" separator="," close=")"> diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/service/impl/ReportProdConverterImpl.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/service/impl/ReportProdConverterImpl.java index 536ee70..ee79b22 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/service/impl/ReportProdConverterImpl.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportProd/service/impl/ReportProdConverterImpl.java @@ -42,6 +42,8 @@ public class ReportProdConverterImpl implements ReportProdConverter { bo.setPriceUnit(vo.getPriceUnit()); bo.setPriceClassify(vo.getPriceClassify()); bo.setPriceQuantity(vo.getPriceQuantity()); + bo.setPriceType(vo.getPriceType()); + bo.setRemark(vo.getRemark()); // 用户产量明细 List<ReportUserProdBO> userProdList = new ArrayList<>(); @@ -77,6 +79,8 @@ public class ReportProdConverterImpl implements ReportProdConverter { bo.setPriceUnit(vo.getPriceUnit()); bo.setPriceClassify(vo.getPriceClassify()); bo.setPriceQuantity(vo.getPriceQuantity()); + bo.setPriceType(vo.getPriceType()); + bo.setRemark(vo.getRemark()); // 用户产量明细 List<ReportUserProdBO> userProdList = new ArrayList<>(); diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportUserProd/domain/ReportUserProd.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportUserProd/domain/ReportUserProd.java index e697097..48b70aa 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportUserProd/domain/ReportUserProd.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/reportUserProd/domain/ReportUserProd.java @@ -8,6 +8,9 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + /** * 员工产量对象 bst_report_user_prod * @@ -27,10 +30,13 @@ public class ReportUserProd extends BaseEntity @Excel(name = "员工ID") @ApiModelProperty("员工ID") + @NotNull(message = "员工不允许为空") private Long userId; @Excel(name = "产量") @ApiModelProperty("产量") + @NotNull(message = "产量不允许为空") + @Min(value = 0, message = "产量不允许小于0") private BigDecimal num; }