diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java index d90dbfd..dd1ac4e 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java @@ -1,11 +1,13 @@ package com.ruoyi.common.core.domain.model; +import java.util.Collection; +import java.util.Set; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + import com.alibaba.fastjson2.annotation.JSONField; import com.ruoyi.common.core.domain.entity.SysUser; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; -import java.util.Collection; -import java.util.Set; /** * 登录用户身份权限 @@ -132,6 +134,11 @@ public class LoginUser implements UserDetails return user.getUserName(); } + public String getNickName() + { + return user.getNickName(); + } + /** * 账户是否未过期,过期无法验证 */ diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/LogBizType.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/LogBizType.java index 25830e0..b85b644 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/LogBizType.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/enums/LogBizType.java @@ -18,7 +18,8 @@ public enum LogBizType { PROD_ORDER("3", "生产订单" ), MATERIAL("4", "物料"), UNIT("5", "单位"), - SHIFT("6", "调班"); + SHIFT("6", "调班"), + REPORT_PROD("7", "报表产量"); private final String type; private final String msg; diff --git a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailyProd/DailyProdVO.java b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailyProd/DailyProdVO.java new file mode 100644 index 0000000..2eaf26b --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailyProd/DailyProdVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.dashboard.report.domain.dailyProd; + +import java.math.BigDecimal; +import java.time.LocalDate; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 工序每日产量VO + */ +@Data +public class DailyProdVO { + + @ApiModelProperty("工序") + private String priceName; + + @ApiModelProperty("类别") + private String priceCategory; + + @ApiModelProperty("大小") + private String priceSize; + + @ApiModelProperty("单位") + private String priceUnit; + + @ApiModelProperty("日期") + private LocalDate reportDate; + + @ApiModelProperty("产量") + private BigDecimal totalNum; + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailySalary/UserDailySalaryVO.java b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailySalary/UserDailySalaryVO.java new file mode 100644 index 0000000..5dcab14 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/domain/dailySalary/UserDailySalaryVO.java @@ -0,0 +1,30 @@ +package com.ruoyi.dashboard.report.domain.dailySalary; + +import java.math.BigDecimal; +import java.time.LocalDate; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 用户每日工资VO + */ +@Data +public class UserDailySalaryVO { + + @ApiModelProperty("用户ID") + private Long userId; + + @ApiModelProperty("用户名称") + private String userName; + + @ApiModelProperty("工号") + private String userNo; + + @ApiModelProperty("日期") + private LocalDate reportDate; + + @ApiModelProperty("总工资") + private BigDecimal totalPrice; + +} \ No newline at end of file diff --git a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportProdDashboardService.java b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportProdDashboardService.java index 2f71a1e..560230b 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportProdDashboardService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportProdDashboardService.java @@ -1,10 +1,14 @@ package com.ruoyi.dashboard.report.service; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.ruoyi.dashboard.report.domain.dailyProd.DailyProdVO; import com.ruoyi.dashboard.report.domain.sum.ReportProdSumVO; import com.ruoyi.yh.reportProd.domain.ReportProdQuery; import com.ruoyi.yh.reportProd.mapper.ReportProdMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; @Service public class ReportProdDashboardService { @@ -15,4 +19,8 @@ public class ReportProdDashboardService { public ReportProdSumVO selectSum(ReportProdQuery query) { return reportProdMapper.selectSum(query); } + + public List selectDailyProd(ReportProdQuery query) { + return reportProdMapper.selectDailyProd(query); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportUserProdDashboardService.java b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportUserProdDashboardService.java index e40e50f..84cc4e4 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportUserProdDashboardService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/dashboard/report/service/ReportUserProdDashboardService.java @@ -1,10 +1,14 @@ package com.ruoyi.dashboard.report.service; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.ruoyi.dashboard.report.domain.dailySalary.UserDailySalaryVO; import com.ruoyi.dashboard.report.domain.sum.ReportUserProdSumVO; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdQuery; import com.ruoyi.yh.reportUserProd.mapper.ReportUserProdMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; @Service public class ReportUserProdDashboardService { @@ -15,4 +19,11 @@ public class ReportUserProdDashboardService { public ReportUserProdSumVO selectSum(ReportUserProdQuery query) { return reportUserProdMapper.selectSum(query); } + + /** + * 用户工资统计 + */ + public List selectDailySalary(ReportUserProdQuery query) { + return reportUserProdMapper.selectDailySalary(query); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/material/utils/MaterialUtil.java b/ruoyi-service/src/main/java/com/ruoyi/yh/material/utils/MaterialUtil.java index 2d1fcfe..fa2a4d6 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/material/utils/MaterialUtil.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/material/utils/MaterialUtil.java @@ -1,13 +1,14 @@ package com.ruoyi.yh.material.utils; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.yh.material.domain.vo.MaterialNumberSplitVO; -import lombok.extern.slf4j.Slf4j; - import java.util.Arrays; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.yh.material.domain.vo.MaterialNumberSplitVO; + +import lombok.extern.slf4j.Slf4j; + /** * 物料工具类 * @author wjh @@ -43,13 +44,7 @@ public class MaterialUtil { vo.setCategory(split[3]); } if (split.length > 4) { - String sizeString = split[4]; - try { - vo.setSize(String.valueOf(Integer.parseInt(sizeString))); - } catch (Exception e) { - vo.setSize(sizeString); - log.error("sizeString 转换异常", e); - } + vo.setSize(split[4]); } if (split.length > 5) { vo.setSurface(split[5]); diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/PriceQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/PriceQuery.java index 9e79c02..41b7ae7 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/PriceQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/PriceQuery.java @@ -1,11 +1,11 @@ package com.ruoyi.yh.price.domain; +import java.util.List; + import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.List; - /** * @author wjh * 2024/10/17 @@ -23,6 +23,9 @@ public class PriceQuery extends PriceVO { @ApiModelProperty("排除的单价ID列表") private List excludePriceIds; + @ApiModelProperty("排除的单价ID") + private Long excludePriceId; + @ApiModelProperty("关键词") private String keyword; diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/dto/PricePropertyQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/dto/PricePropertyQuery.java new file mode 100644 index 0000000..fbe5ed5 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/domain/dto/PricePropertyQuery.java @@ -0,0 +1,16 @@ +package com.ruoyi.yh.price.domain.dto; + +import com.ruoyi.common.xss.Xss; +import com.ruoyi.yh.price.domain.PriceQuery; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PricePropertyQuery extends PriceQuery { + + @ApiModelProperty("属性") + @Xss + private String prop; + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.java index d9a23d1..2d3a964 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.java @@ -1,12 +1,14 @@ package com.ruoyi.yh.price.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + import com.ruoyi.yh.price.domain.Price; import com.ruoyi.yh.price.domain.PriceQuery; import com.ruoyi.yh.price.domain.PriceVO; +import com.ruoyi.yh.price.domain.dto.PricePropertyQuery; import com.ruoyi.yh.price.domain.vo.PriceColumnCountVO; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** * 单价Mapper接口 @@ -78,4 +80,14 @@ public interface PriceMapper * 批量审核 */ int batchVerify(@Param("list") List list, @Param("query") PriceQuery query); + + /** + * 查询数量 + */ + int selectCount(@Param("query") PriceQuery query); + + /** + * 查询属性值 + */ + List selectProperty(@Param("query") PricePropertyQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.xml index 4f82a02..c09e676 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/mapper/PriceMapper.xml @@ -71,6 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bp.category = #{query.eqCategory} and bp.size = #{query.eqSize} and bp.pattern = #{query.eqPattern} + and bp.price_id != #{query.excludePriceId} and (bp.name is null or bp.name = '') @@ -340,5 +341,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceService.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceService.java index ec8633c..86b08a1 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceService.java @@ -1,14 +1,15 @@ package com.ruoyi.yh.price.service; +import java.util.List; + import com.ruoyi.yh.price.domain.Price; import com.ruoyi.yh.price.domain.PriceQuery; import com.ruoyi.yh.price.domain.PriceVO; import com.ruoyi.yh.price.domain.dto.PriceImportParams; +import com.ruoyi.yh.price.domain.dto.PricePropertyQuery; import com.ruoyi.yh.price.domain.dto.PriceVerifyDTO; import com.ruoyi.yh.price.domain.vo.PriceSearchConditionVO; -import java.util.List; - /** * 单价Service接口 * @@ -132,4 +133,9 @@ public interface PriceService * 查询一个 */ PriceVO selectOne(PriceQuery query); + + /** + * 查询属性值 + */ + List selectProperty(PricePropertyQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceValidator.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceValidator.java new file mode 100644 index 0000000..6d612be --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/PriceValidator.java @@ -0,0 +1,13 @@ +package com.ruoyi.yh.price.service; + +import com.ruoyi.yh.price.domain.PriceVO; + +public interface PriceValidator { + + /** + * 验证是否重复启用 + * @param vo + */ + void validateRepeatEnabled(PriceVO vo); + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceConverterImpl.java index c7c695e..6f8ee79 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceConverterImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceConverterImpl.java @@ -1,5 +1,12 @@ package com.ruoyi.yh.price.service.impl; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.springframework.stereotype.Service; + import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.SecurityUtils; @@ -10,12 +17,6 @@ import com.ruoyi.yh.price.domain.dto.PriceVerifyDTO; import com.ruoyi.yh.price.domain.dto.PriceVerifyPriceDTO; import com.ruoyi.yh.price.domain.enums.PriceStatus; import com.ruoyi.yh.price.service.PriceConverter; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; /** * @author wjh @@ -50,7 +51,7 @@ public class PriceConverterImpl implements PriceConverter { po.setCreateId(loginUser.getUserId()); po.setQuantityDenominator(data.getQuantityDenominator()); po.setQuantityNumerator(data.getQuantityNumerator()); - po.setCreateBy(loginUser.getUsername()); + po.setCreateBy(loginUser.getNickName()); po.setRemark(data.getRemark()); po.setSurface(data.getSurface()); po.setCode(MaterialUtil.parseToCode(po.getCategory(), po.getSize(), po.getSurface(), po.getPattern())); @@ -80,7 +81,7 @@ public class PriceConverterImpl implements PriceConverter { po.setQuantityDenominator(data.getQuantityDenominator()); po.setQuantityNumerator(data.getQuantityNumerator()); po.setUpdateId(loginUser.getUserId()); - po.setUpdateBy(loginUser.getUsername()); + po.setUpdateBy(loginUser.getNickName()); po.setRemark(data.getRemark()); po.setCode(MaterialUtil.parseToCode(po.getCategory(), po.getSize(), po.getSurface(), po.getPattern())); return po; diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceServiceImpl.java index a2e6343..27b0980 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceServiceImpl.java @@ -1,5 +1,19 @@ package com.ruoyi.yh.price.service.impl; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +import javax.validation.Validator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + import com.github.pagehelper.PageHelper; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; @@ -23,6 +37,7 @@ import com.ruoyi.yh.price.domain.Price; import com.ruoyi.yh.price.domain.PriceQuery; import com.ruoyi.yh.price.domain.PriceVO; import com.ruoyi.yh.price.domain.dto.PriceImportParams; +import com.ruoyi.yh.price.domain.dto.PricePropertyQuery; import com.ruoyi.yh.price.domain.dto.PriceVerifyDTO; import com.ruoyi.yh.price.domain.dto.PriceVerifyPriceDTO; import com.ruoyi.yh.price.domain.enums.PriceColumn; @@ -31,22 +46,12 @@ import com.ruoyi.yh.price.domain.vo.PriceSearchConditionVO; import com.ruoyi.yh.price.mapper.PriceMapper; import com.ruoyi.yh.price.service.PriceConverter; import com.ruoyi.yh.price.service.PriceService; +import com.ruoyi.yh.price.service.PriceValidator; import com.ruoyi.yh.reportProd.domain.dto.ReportProdNewPriceDTO; import com.ruoyi.yh.reportProd.service.ReportProdConverter; import com.ruoyi.yh.reportProd.service.ReportProdService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.support.TransactionTemplate; -import javax.validation.Validator; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import lombok.extern.slf4j.Slf4j; /** * 单价Service业务层处理 @@ -91,6 +96,9 @@ public class PriceServiceImpl implements PriceService @Autowired private PriceConverter priceConverter; + @Autowired + private PriceValidator priceValidator; + /** * 查询单价 * @@ -125,7 +133,17 @@ public class PriceServiceImpl implements PriceService public int insertPrice(Price price) { price.setCreateTime(DateUtils.getNowDate()); - return priceMapper.insertPrice(price); + Integer result = transactionTemplate.execute(status -> { + int insert = priceMapper.insertPrice(price); + ServiceUtil.assertion(insert != 1, "新增单价失败"); + + // 判断是否有重复的单价 + PriceVO vo = selectPriceByPriceId(price.getPriceId()); + priceValidator.validateRepeatEnabled(vo); + + return insert; + }); + return result == null ? 0 : result; } /** @@ -149,6 +167,10 @@ public class PriceServiceImpl implements PriceService int update = this.updateByQuery(data, query); ServiceUtil.assertion(update != 1, "修改单价失败,当前单价已发生变化,请刷新后重试"); + // 判断是否有重复的单价 + PriceVO vo = selectPriceByPriceId(data.getPriceId()); + priceValidator.validateRepeatEnabled(vo); + return update; }); @@ -262,10 +284,16 @@ public class PriceServiceImpl implements PriceService int update = priceMapper.batchVerify(priceList, query); if (pass && update > 0) { + // 判断是否有重复的单价 + for (PriceVO vo : oldList) { + priceValidator.validateRepeatEnabled(vo); + } + // 若审核通过,则将通过的单价对应的报表中的单价更新 List passList = selectPassListByIds(priceIds); List newPriceList = reportProdConverter.toNewPriceDTO(passList); reportProdService.batchUpdatePrice(newPriceList); + } return update; @@ -332,6 +360,10 @@ public class PriceServiceImpl implements PriceService int update = this.updateByQuery(data, query); ServiceUtil.assertion(update != 1, "启用单价失败,当前状态已发生变化,请刷新后重试"); + // 判断是否有重复的单价 + PriceVO vo = selectPriceByPriceId(priceId); + priceValidator.validateRepeatEnabled(vo); + return update; }); @@ -484,4 +516,12 @@ public class PriceServiceImpl implements PriceService List list = priceMapper.selectPriceList(query); return CollectionUtils.firstElement(list); } + + @Override + public List selectProperty(PricePropertyQuery query) { + if (query.getProp() == null) { + return Collections.emptyList(); + } + return priceMapper.selectProperty(query); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceValidatorImpl.java new file mode 100644 index 0000000..5ce3ff0 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/price/service/impl/PriceValidatorImpl.java @@ -0,0 +1,42 @@ +package com.ruoyi.yh.price.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.yh.price.domain.PriceQuery; +import com.ruoyi.yh.price.domain.PriceVO; +import com.ruoyi.yh.price.domain.enums.PriceStatus; +import com.ruoyi.yh.price.mapper.PriceMapper; +import com.ruoyi.yh.price.service.PriceValidator; + +@Service +public class PriceValidatorImpl implements PriceValidator { + + @Autowired + private PriceMapper priceMapper; + + @Override + public void validateRepeatEnabled(PriceVO vo) { + if (vo == null) { + return; + } + + PriceQuery query = new PriceQuery(); + query.setStatus(PriceStatus.PASS.getStatus()); + query.setDisabled(false); + query.setExcludePriceId(vo.getPriceId()); + query.setNeedAllMatch(true); + query.setEqName(vo.getName()); + query.setEqCategory(vo.getCategory()); + query.setEqSize(vo.getSize()); + query.setEqPattern(vo.getPattern()); + + int count = priceMapper.selectCount(query); + ServiceUtil.assertion(count > 0, + "当前有重复的单价已启用,请检查。工序:%s,分类:%s,大小:%s,图案:%s", + vo.getName(), vo.getCategory(), vo.getSize(), vo.getPattern() + ); + } + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderQuery.java index fd9934c..e8886a6 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderQuery.java @@ -1,10 +1,11 @@ package com.ruoyi.yh.prodOrder.domain; +import java.math.BigDecimal; +import java.util.List; + import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.List; - /** * @author wjh * 2024/10/29 @@ -36,4 +37,7 @@ public class ProdOrderQuery extends ProdOrderVO { @ApiModelProperty("关键词") private String keyword; + @ApiModelProperty("订单进度") + private List progressRange; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderVO.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderVO.java index 3e96a17..5cc6c05 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderVO.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/domain/ProdOrderVO.java @@ -1,6 +1,9 @@ package com.ruoyi.yh.prodOrder.domain; +import java.math.BigDecimal; + import com.ruoyi.common.annotation.Excel; + import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,4 +18,8 @@ public class ProdOrderVO extends ProdOrder { @ApiModelProperty("生产车间名称") private String workShopName; + @Excel(name = "订单进度") + @ApiModelProperty("订单进度") + private BigDecimal progress; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.java index ff42c5a..0a2f356 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.java @@ -1,12 +1,13 @@ package com.ruoyi.yh.prodOrder.mapper; +import java.math.BigDecimal; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + import com.ruoyi.yh.prodOrder.domain.ProdOrder; import com.ruoyi.yh.prodOrder.domain.ProdOrderQuery; import com.ruoyi.yh.prodOrder.domain.ProdOrderVO; -import org.apache.ibatis.annotations.Param; - -import java.math.BigDecimal; -import java.util.List; /** * 生产订单Mapper接口 @@ -71,6 +72,13 @@ public interface ProdOrderMapper */ int addVerifiedBaseNum(@Param("orderId") Long orderId, @Param("num") BigDecimal num); + /** + * 减少已审核通过的基础数量 + * @param orderId 订单ID + * @param num 基础数量 + */ + int subtractVerifiedBaseNum(@Param("orderId") Long orderId, @Param("num") BigDecimal num); + /** * 查询简单列表 */ diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml index 50c1dd3..9ac1187 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/mapper/ProdOrderMapper.xml @@ -6,6 +6,7 @@ + @@ -48,6 +49,7 @@ bpo.erp_mto_no, bpo.faux_prop_id, bpo.faux_prop, + (bpo.verified_base_num / bpo.erp_base_unit_qty) * 100 as progress, sd.dept_name as work_shop_name from bst_prod_order bpo left join sys_dept sd on sd.dept_id = bpo.dept_id @@ -74,6 +76,12 @@ and bpo.erp_mto_no = #{query.erpMtoNo} and bpo.faux_prop_id = #{query.fauxPropId} and bpo.faux_prop like concat('%', #{query.fauxProp}, '%') + + and (bpo.verified_base_num / bpo.erp_base_unit_qty) * 100 >= #{query.progressRange[0]} + + + and (bpo.verified_base_num / bpo.erp_base_unit_qty) * 100 <= #{query.progressRange[1]} + and bpo.material_number like concat('%',#{query.materialNumber},'%') @@ -245,6 +253,12 @@ where id = #{orderId} + + update bst_prod_order + set verified_base_num = verified_base_num - #{num} + where id = #{orderId} and verified_base_num >= #{num} + + update bst_prod_order diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/ProdOrderService.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/ProdOrderService.java index 887e027..4ba8d8f 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/ProdOrderService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/ProdOrderService.java @@ -1,13 +1,13 @@ package com.ruoyi.yh.prodOrder.service; +import java.math.BigDecimal; +import java.util.List; + import com.ruoyi.yh.prodOrder.domain.ProdOrder; import com.ruoyi.yh.prodOrder.domain.ProdOrderQuery; import com.ruoyi.yh.prodOrder.domain.ProdOrderVO; import com.ruoyi.yh.prodOrder.domain.dto.ProdOrderSyncQuery; -import java.math.BigDecimal; -import java.util.List; - /** * 生产订单Service接口 * @@ -88,6 +88,13 @@ public interface ProdOrderService */ int addVerifiedBaseNum(Long orderId, BigDecimal num); + /** + * 减少已审核的基本单位数量 + * @param orderId 订单ID + * @param num 减少数量 + */ + int subtractVerifiedBaseNum(Long orderId, BigDecimal num); + /** * 查询简单列表 * diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java index 0732d3a..856f90f 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/prodOrder/service/impl/ProdOrderServiceImpl.java @@ -270,13 +270,26 @@ public class ProdOrderServiceImpl implements ProdOrderService */ @Override public int addVerifiedBaseNum(Long orderId, BigDecimal num) { - if (orderId == null || num == null) { + if (orderId == null || num == null || num.compareTo(BigDecimal.ZERO) <= 0) { return 0; } return prodOrderMapper.addVerifiedBaseNum(orderId, num); } + /** + * 减少已审核的基本单位数量 + * + * @param orderId 订单ID + * @param num 减少数量 + */ @Override + public int subtractVerifiedBaseNum(Long orderId, BigDecimal num) { + if (orderId == null || num == null || num.compareTo(BigDecimal.ZERO) <= 0) { + return 0; + } + return prodOrderMapper.subtractVerifiedBaseNum(orderId, num); + } + public List selectSimpleList(ProdOrderQuery query, String ...fields) { if (fields == null) { return Collections.emptyList(); diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/report/domain/enums/ReportStatus.java b/ruoyi-service/src/main/java/com/ruoyi/yh/report/domain/enums/ReportStatus.java index 1d58cc8..28f3af5 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/report/domain/enums/ReportStatus.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/report/domain/enums/ReportStatus.java @@ -1,12 +1,12 @@ package com.ruoyi.yh.report.domain.enums; -import lombok.AllArgsConstructor; -import lombok.Getter; - import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import lombok.AllArgsConstructor; +import lombok.Getter; + /** * @author wjh * 2024/10/31 @@ -16,9 +16,10 @@ import java.util.stream.Collectors; public enum ReportStatus { WAIT_SUBMIT("1", "待提交"), - WAIT_VERIFY("2", "待审核"), + WAIT_VERIFY("2", "主管审核中"), PASS("3", "已通过"), - REJECT("4", "未通过"); + REJECT("4", "未通过"), + WAIT_FINANCE_VERIFY("5", "财务审核中"); private final String status; private final String msg; @@ -28,12 +29,19 @@ public enum ReportStatus { } /** - * 允许审核的状态 + * 允许主管审核的状态 */ public static List canVerify() { return asList(WAIT_VERIFY); } + /** + * 允许财务审核的状态 + */ + public static List canFinanceVerify() { + return asList(WAIT_FINANCE_VERIFY); + } + /** * 允许取消审核的状态 */ @@ -68,4 +76,11 @@ public enum ReportStatus { public static List canDel() { return asList(WAIT_SUBMIT, REJECT); } + + /** + * 允许反审核的状态 + */ + public static List canUnVerify() { + return asList(WAIT_FINANCE_VERIFY, PASS); + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/ReportService.java b/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/ReportService.java index a6c28de..bf431be 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/ReportService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/ReportService.java @@ -1,13 +1,13 @@ package com.ruoyi.yh.report.service; +import java.util.List; + import com.ruoyi.yh.report.domain.Report; import com.ruoyi.yh.report.domain.ReportQuery; import com.ruoyi.yh.report.domain.ReportVO; import com.ruoyi.yh.report.domain.bo.ReportBO; import com.ruoyi.yh.report.domain.dto.ReportVerifyDTO; -import java.util.List; - /** * 报表Service接口 * @@ -108,4 +108,17 @@ public interface ReportService * @param priceIds 单价ID列表 */ int recalculateReportTotalAmountByPriceId(List priceIds); + + /** + * 反审核 + * @param reportId 报表ID + */ + int unVerify(Long reportId); + + /** + * 财务审核 + * @param dto 审核参数 + * @param userId 审核人ID + */ + int financeVerify(ReportVerifyDTO dto, Long userId); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/impl/ReportServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/impl/ReportServiceImpl.java index feb6339..97b05a2 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/impl/ReportServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/report/service/impl/ReportServiceImpl.java @@ -1,6 +1,16 @@ package com.ruoyi.yh.report.service.impl; -import com.ruoyi.common.core.domain.entity.SysUser; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.common.utils.collection.CollectionUtils; @@ -30,16 +40,10 @@ import com.ruoyi.yh.reportUserProd.domain.ReportUserProd; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdVO; import com.ruoyi.yh.reportUserProd.domain.bo.ReportUserProdBO; import com.ruoyi.yh.reportUserProd.service.ReportUserProdService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.support.TransactionTemplate; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; +import com.ruoyi.yh.verify.domain.Verify; +import com.ruoyi.yh.verify.domain.enums.VerifyBstType; +import com.ruoyi.yh.verify.domain.enums.VerifyStatus; +import com.ruoyi.yh.verify.service.VerifyService; /** * 报表Service业务层处理 @@ -77,6 +81,9 @@ public class ReportServiceImpl implements ReportService @Autowired private ReportAssembler reportAssembler; + @Autowired + private VerifyService verifyService; + /** * 查询报表 * @@ -343,35 +350,82 @@ public class ReportServiceImpl implements ReportService ReportVO report = selectReportByReportId(dto.getReportId()); ServiceUtil.assertion(report == null, "待审核的报表不存在"); - ServiceUtil.assertion(!ReportStatus.canVerify().contains(report.getStatus()), "当前报表状态不允许审核,请刷新后重试"); + ServiceUtil.assertion(!ReportStatus.canVerify().contains(report.getStatus()), "当前报表状态不允许主管审核,请刷新后重试"); + // 拼接报表订单数据 + reportAssembler.assembleProductList(Collections.singletonList(report), false, false); + + // 检查是否有无单价的产品 + List prodList = report.getProductList(); + if (CollectionUtils.isNotEmptyElement(prodList)) { + for (ReportProdVO prod : prodList) { + ServiceUtil.assertion(prod.getPriceId() == null, "报表中存在无单价的工序,请先设置单价"); + } + } + + // 修改数据库 + Integer result = transactionTemplate.execute(status -> { + // 修改主表 + Report data = new Report(); + boolean pass = dto.getPass() != null && dto.getPass(); + data.setStatus(pass ? ReportStatus.WAIT_FINANCE_VERIFY.getStatus() : ReportStatus.REJECT.getStatus()); + ReportQuery query = new ReportQuery(); + query.setReportId(report.getReportId()); + query.setStatusList(ReportStatus.canVerify()); + int update = this.updateByQuery(data, query); + ServiceUtil.assertion(update != 1, "审核失败,当前报表状态已发生变化,请刷新后重试"); + + // 新增审核记录 + Verify verify = new Verify(); + verify.setUserId(verifyId); + verify.setBstType(VerifyBstType.REPORT.getCode()); + verify.setBstId(report.getReportId()); + verify.setStatus(pass ? VerifyStatus.PASS.getCode() : VerifyStatus.REJECT.getCode()); + verify.setReason(dto.getVerifyRemark()); + int verifyInsert = verifyService.insertVerify(verify); + ServiceUtil.assertion(verifyInsert != 1, "新增审核记录失败"); + + return update; + }); + + return result == null ? 0 : result; + } + + @Override + public int financeVerify(ReportVerifyDTO dto, Long userId) { + if (dto == null || dto.getReportId() == null) { + return 0; + } + ReportVO report = selectReportByReportId(dto.getReportId()); + ServiceUtil.assertion(report == null, "待审核的报表不存在"); + ServiceUtil.assertion(!ReportStatus.canFinanceVerify().contains(report.getStatus()), "当前报表状态不允许财务审核,请刷新后重试"); // 拼接报表订单数据 reportAssembler.assembleProductList(Collections.singletonList(report), false, true); - // 组装修改数据 - Report data = new Report(); - SysUser verifyUser = userService.selectUserById(verifyId); // 审核人 - boolean pass = dto.getPass() != null && dto.getPass(); - data.setStatus(pass ? ReportStatus.PASS.getStatus() : ReportStatus.REJECT.getStatus()); - data.setVerifyRemark(dto.getVerifyRemark()); - data.setVerifyTime(LocalDateTime.now()); - if (verifyUser != null) { - data.setVerifyBy(verifyUser.getNickName()); - data.setVerifyId(verifyUser.getUserId()); - } - // 组装查询条件 - ReportQuery query = new ReportQuery(); - query.setReportId(report.getReportId()); - query.setStatusList(ReportStatus.canVerify()); - // 获取订单数据 List orderProdList = report.getProductList().stream() .map(ReportProdVO::getOrderProdList).flatMap(List::stream).collect(Collectors.toList()); - // 修改数据库 Integer result = transactionTemplate.execute(status -> { + // 修改主表 + Report data = new Report(); + boolean pass = dto.getPass() != null && dto.getPass(); + data.setStatus(pass ? ReportStatus.PASS.getStatus() : ReportStatus.REJECT.getStatus()); + ReportQuery query = new ReportQuery(); + query.setReportId(report.getReportId()); + query.setStatusList(ReportStatus.canFinanceVerify()); int update = this.updateByQuery(data, query); ServiceUtil.assertion(update != 1, "审核失败,当前报表状态已发生变化,请刷新后重试"); + // 新增审核记录 + Verify verify = new Verify(); + verify.setUserId(userId); + verify.setBstType(VerifyBstType.REPORT.getCode()); + verify.setBstId(report.getReportId()); + verify.setStatus(pass ? VerifyStatus.PASS.getCode() : VerifyStatus.REJECT.getCode()); + verify.setReason(dto.getVerifyRemark()); + int verifyInsert = verifyService.insertVerify(verify); + ServiceUtil.assertion(verifyInsert != 1, "新增审核记录失败"); + // 关联的订单,全部增加已审核的数量 for (ReportOrderProdVO orderProd : orderProdList) { if (orderProd == null) { @@ -550,4 +604,54 @@ public class ReportServiceImpl implements ReportService query.setPriceIds(priceIds); return reportMapper.calcTotalAmount(query); } + + @Override + public int unVerify(Long reportId) { + ReportVO report = selectReportByReportId(reportId); + ServiceUtil.assertion(report == null, "ID为%s的报表不存在", reportId); + ServiceUtil.assertion(!ReportStatus.canUnVerify().contains(report.getStatus()), "报表当前状态不允许反审核"); + + // 不允许反审核上个月的报表 + boolean isBefore = report.getReportDate() != null + && LocalDate.now().isBefore(report.getReportDate().plusMonths(1)); + ServiceUtil.assertion(isBefore, "不允许反审核日期为 %s 的报表", report.getReportDate()); + + // 拼接报表订单数据 + reportAssembler.assembleProductList(Collections.singletonList(report), false, true); + // 获取订单数据 + List orderProdList = report.getProductList().stream() + .map(ReportProdVO::getOrderProdList).flatMap(List::stream).collect(Collectors.toList()); + + Integer result = transactionTemplate.execute(status -> { + Report data = new Report(); + data.setStatus(ReportStatus.WAIT_VERIFY.getStatus()); + ReportQuery query = new ReportQuery(); + query.setReportId(reportId); + query.setStatus(report.getStatus()); + int update = this.updateByQuery(data, query); + ServiceUtil.assertion(update != 1, "反审核失败,当前报表状态已发生变化,请刷新后重试"); + + // 反审核后,订单全部减少已审核的数量 + if (ReportStatus.PASS.getStatus().equals(report.getStatus())) { + for (ReportOrderProdVO orderProd : orderProdList) { + if (orderProd == null) { + continue; + } + ServiceUtil.assertion(orderProd.getOrderId() == null + || orderProd.getNum() == null + || orderProd.getPriceQuantityNumerator() == null + || orderProd.getPriceQuantityDenominator() == null, + "修改订单审核数量出错:参数错误" + ); + BigDecimal baseNum = ReportUtils.calcOrderProdBaseNum(orderProd); + int subtract = prodOrderService.subtractVerifiedBaseNum(orderProd.getOrderId(), baseNum); + ServiceUtil.assertion(subtract != 1, "更新关联订单失败"); + } + } + + return update; + }); + + return result == null ? 0 : result; + } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/domain/ReportProdQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/domain/ReportProdQuery.java index 4624cf7..8fec178 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/domain/ReportProdQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/domain/ReportProdQuery.java @@ -1,12 +1,13 @@ package com.ruoyi.yh.reportProd.domain; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; import java.util.List; +import org.springframework.format.annotation.DateTimeFormat; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + /** * @author wjh * 2024/10/31 @@ -26,4 +27,13 @@ public class ReportProdQuery extends ReportProdVO { @ApiModelProperty("ID列表") private List ids; + + @ApiModelProperty("精准工序名称") + private String eqPriceName; + + @ApiModelProperty("精准工序类别") + private String eqPriceCategory; + + @ApiModelProperty("精准工序大小") + private String eqPriceSize; } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.java index 92b5dfe..d3c31dd 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.java @@ -1,14 +1,16 @@ package com.ruoyi.yh.reportProd.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + import com.ruoyi.common.vo.LongIntegerVO; +import com.ruoyi.dashboard.report.domain.dailyProd.DailyProdVO; import com.ruoyi.dashboard.report.domain.sum.ReportProdSumVO; import com.ruoyi.yh.reportProd.domain.ReportProd; import com.ruoyi.yh.reportProd.domain.ReportProdQuery; import com.ruoyi.yh.reportProd.domain.ReportProdVO; import com.ruoyi.yh.reportProd.domain.dto.ReportProdNewPriceDTO; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** * 报表产量Mapper接口 @@ -110,4 +112,9 @@ public interface ReportProdMapper * 查询报表产量统计 */ ReportProdSumVO selectSum(@Param("query") ReportProdQuery query); + + /** + * 查询工序每日产量 + */ + List selectDailyProd(@Param("query") ReportProdQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.xml index 856c64d..738ff4e 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/mapper/ReportProdMapper.xml @@ -47,9 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bst_report_prod brp - left join bst_report br on br.report_id = brp.report_id - left join bst_price bp on bp.price_id = brp.price_id - left join sys_dept sd on sd.dept_id = br.dept_id + left join bst_report br on br.report_id = brp.report_id + left join bst_price bp on bp.price_id = brp.price_id + left join sys_dept sd on sd.dept_id = br.dept_id @@ -75,6 +75,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and brp.read_price = #{query.readPrice} and bp.status = #{query.priceStatus} and sd.dept_id = #{query.deptId} + and brp.price_name = #{query.eqPriceName} + and brp.price_category = #{query.eqPriceCategory} + and brp.price_size = #{query.eqPriceSize} and brp.price_id is not null @@ -614,7 +617,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item.id} and brp.deleted = false - and brp.price_id is null and br.status in ('1', '4') @@ -655,4 +657,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/service/impl/ReportProdServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/service/impl/ReportProdServiceImpl.java index 75276ff..a9efcb0 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/service/impl/ReportProdServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportProd/service/impl/ReportProdServiceImpl.java @@ -1,5 +1,15 @@ package com.ruoyi.yh.reportProd.service.impl; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.common.utils.collection.CollectionUtils; import com.ruoyi.common.vo.LongIntegerVO; @@ -15,15 +25,6 @@ import com.ruoyi.yh.reportProd.mapper.ReportProdMapper; import com.ruoyi.yh.reportProd.service.ReportProdConverter; import com.ruoyi.yh.reportProd.service.ReportProdService; import com.ruoyi.yh.reportUserProd.service.ReportUserProdService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.support.TransactionTemplate; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; /** * 报表产量Service业务层处理 diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProd.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProd.java index 1b5ce6f..d22a014 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProd.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProd.java @@ -37,4 +37,8 @@ public class ReportUserProd extends BaseEntity @Min(value = 0, message = "产量不允许小于0") private BigDecimal num; + @Excel(name = "是否充公", readConverterExp = "false=否,true=是") + @ApiModelProperty("是否充公") + private Boolean confiscate; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProdQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProdQuery.java index f21e870..30c14eb 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProdQuery.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/domain/ReportUserProdQuery.java @@ -1,12 +1,13 @@ package com.ruoyi.yh.reportUserProd.domain; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - import java.time.LocalDate; import java.util.List; +import org.springframework.format.annotation.DateTimeFormat; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + /** * @author wjh * 2024/11/2 @@ -35,4 +36,7 @@ public class ReportUserProdQuery extends ReportUserProdVO { @DateTimeFormat(pattern = "yyyy-MM-dd") private List reportDateRange; + @ApiModelProperty("用户ID列表") + private List userIds; + } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.java index 3ae9a54..f2b1e57 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.java @@ -1,14 +1,16 @@ package com.ruoyi.yh.reportUserProd.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.ruoyi.dashboard.report.domain.dailySalary.UserDailySalaryVO; import com.ruoyi.dashboard.report.domain.sum.ReportUserProdSumVO; import com.ruoyi.yh.reportUserProd.domain.ReportUserProd; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdQuery; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdVO; import com.ruoyi.yh.reportUserProd.domain.vo.ReportUserProdGroupByDateVO; import com.ruoyi.yh.reportUserProd.domain.vo.ReportUserProdGroupByYearMonthVO; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** * 员工产量Mapper接口 @@ -97,4 +99,9 @@ public interface ReportUserProdMapper * 查询报表产量统计 */ ReportUserProdSumVO selectSum(@Param("query") ReportUserProdQuery query); + + /** + * 查询用户每日工资 + */ + public List selectDailySalary(@Param("query") ReportUserProdQuery query); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.xml index 21e1e99..b3b3d11 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.xml +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/mapper/ReportUserProdMapper.xml @@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" brup.user_id, brup.num, brup.deleted, + brup.confiscate, su.nick_name as user_name, su.user_no as user_no, brp.price_name as price_name, @@ -62,6 +63,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and brp.price_size like concat('%', #{query.priceSize}, '%') and brp.price_pattern like concat('%', #{query.pricePattern}, '%') and br.dept_id = #{query.deptId} + and brup.confiscate = #{query.confiscate} + + and brup.user_id in + + #{item} + + and brup.prod_id in @@ -100,9 +108,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum(if (br.status = '3', brp.price_price * brup.num, 0 )) as verified, sum(if (br.status = '2', brp.price_price * brup.num, 0 )) as verifying from bst_report_user_prod brup - left join bst_report_prod brp on brp.id = brup.prod_id - left join bst_report br on br.report_id = brp.report_id - left join sys_dept sd on sd.dept_id = br.dept_id + left join bst_report_prod brp on brp.id = brup.prod_id + left join bst_report br on br.report_id = brp.report_id + left join sys_dept sd on sd.dept_id = br.dept_id @@ -137,12 +145,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" user_id, num, deleted, + confiscate, #{prodId}, #{userId}, #{num}, #{deleted}, + #{confiscate}, @@ -151,7 +161,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" prod_id, user_id, num, - deleted + deleted, + confiscate ) values @@ -164,6 +175,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" default, #{i.deleted}, default, + #{i.confiscate}, + default, @@ -181,6 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" user_id = #{data.userId}, num = #{data.num}, deleted = #{data.deleted}, + confiscate = #{data.confiscate}, @@ -226,6 +240,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + WHEN #{item.id} THEN #{item.confiscate} + + + WHEN #{item.id} THEN `confiscate` + + + where id in @@ -278,4 +302,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/service/impl/ReportUserProdConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/service/impl/ReportUserProdConverterImpl.java index b904e40..5e2f7aa 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/service/impl/ReportUserProdConverterImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/reportUserProd/service/impl/ReportUserProdConverterImpl.java @@ -1,9 +1,10 @@ package com.ruoyi.yh.reportUserProd.service.impl; +import org.springframework.stereotype.Service; + import com.ruoyi.yh.reportUserProd.domain.ReportUserProdVO; import com.ruoyi.yh.reportUserProd.domain.bo.ReportUserProdBO; import com.ruoyi.yh.reportUserProd.service.ReportUserProdConverter; -import org.springframework.stereotype.Service; /** * @author wjh @@ -26,6 +27,7 @@ public class ReportUserProdConverterImpl implements ReportUserProdConverter { ReportUserProdBO bo = new ReportUserProdBO(); bo.setUserId(vo.getUserId()); bo.setNum(vo.getNum()); + bo.setConfiscate(vo.getConfiscate()); return bo; } @@ -34,11 +36,11 @@ public class ReportUserProdConverterImpl implements ReportUserProdConverter { if (vo == null) { return null; } - ReportUserProdBO bo = new ReportUserProdBO(); bo.setId(vo.getId()); bo.setUserId(vo.getUserId()); bo.setNum(vo.getNum()); + bo.setConfiscate(vo.getConfiscate()); return bo; } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/Verify.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/Verify.java new file mode 100644 index 0000000..c6909c3 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/Verify.java @@ -0,0 +1,43 @@ +package com.ruoyi.yh.verify.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 审核记录对象 bst_verify + * + * @author ruoyi + * @date 2025-04-01 + */ +@Data +public class Verify extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + private Long id; + + @Excel(name = "审核人ID") + @ApiModelProperty("审核人ID") + private Long userId; + + @Excel(name = "业务类型") + @ApiModelProperty("业务类型") + private String bstType; + + @Excel(name = "业务ID") + @ApiModelProperty("业务ID") + private Long bstId; + + @Excel(name = "状态", readConverterExp = "1=通过,2=未通过") + @ApiModelProperty("状态") + private String status; + + @Excel(name = "审核意见") + @ApiModelProperty("审核意见") + private String reason; + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyQuery.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyQuery.java new file mode 100644 index 0000000..d1b3986 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyQuery.java @@ -0,0 +1,8 @@ +package com.ruoyi.yh.verify.domain; + +import lombok.Data; + +@Data +public class VerifyQuery extends VerifyVO { + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyVO.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyVO.java new file mode 100644 index 0000000..86f9cc7 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/VerifyVO.java @@ -0,0 +1,11 @@ +package com.ruoyi.yh.verify.domain; + +import lombok.Data; + +@Data +public class VerifyVO extends Verify { + + // 用户名称 + private String userName; + +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyBstType.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyBstType.java new file mode 100644 index 0000000..18e1eaa --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyBstType.java @@ -0,0 +1,14 @@ +package com.ruoyi.yh.verify.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum VerifyBstType { + + REPORT("1", "报表"); + + private final String code; + private final String name; +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyStatus.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyStatus.java new file mode 100644 index 0000000..4a5e5ae --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/domain/enums/VerifyStatus.java @@ -0,0 +1,14 @@ +package com.ruoyi.yh.verify.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum VerifyStatus { + PASS("1", "通过"), + REJECT("2", "驳回"); + + private final String code; + private final String name; +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.java new file mode 100644 index 0000000..c122b45 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.java @@ -0,0 +1,74 @@ +package com.ruoyi.yh.verify.mapper; + +import java.util.List; +import com.ruoyi.yh.verify.domain.Verify; +import com.ruoyi.yh.verify.domain.VerifyVO; +import com.ruoyi.yh.verify.domain.VerifyQuery; +import org.apache.ibatis.annotations.Param; + +/** + * 审核记录Mapper接口 + * + * @author ruoyi + * @date 2025-04-01 + */ +public interface VerifyMapper +{ + /** + * 查询审核记录 + * + * @param id 审核记录主键 + * @return 审核记录 + */ + VerifyVO selectVerifyById(Long id); + + /** + * 查询审核记录列表 + * + * @param query 审核记录 + * @return 审核记录集合 + */ + List selectVerifyList(@Param("query")VerifyQuery query); + + /** + * 新增审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + int insertVerify(Verify verify); + + /** + * 批量新增审核记录 + */ + int batchInsert(@Param("list") List list); + + /** + * 批量修改审核记录 + */ + int batchUpdate(@Param("list") List list); + + /** + * 修改审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + public int updateVerify(@Param("data") Verify verify); + + /** + * 删除审核记录 + * + * @param id 审核记录主键 + * @return 结果 + */ + int deleteVerifyById(Long id); + + /** + * 批量删除审核记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteVerifyByIds(Long[] ids); +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.xml new file mode 100644 index 0000000..2099327 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/mapper/VerifyMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + select + bv.id, + bv.user_id, + bv.bst_type, + bv.bst_id, + bv.status, + bv.reason, + bv.create_time, + su.nick_name as user_name + from bst_verify bv + left join sys_user su on su.user_id = bv.user_id + + + + and bv.id = #{query.id} + and bv.user_id = #{query.userId} + and bv.bst_type = #{query.bstType} + and bst_id = #{query.bstId} + and bv.status = #{query.status} + and bv.reason like concat('%', #{query.reason}, '%') + and su.nick_name like concat('%', #{query.userName}, '%') + ${query.params.dataScope} + + + + + + + + insert into bst_verify + + user_id, + bst_type, + bst_id, + status, + reason, + create_time, + + + #{userId}, + #{bstType}, + #{bstId}, + #{status}, + #{reason}, + #{createTime}, + + + + + update bst_verify + + + + where id = #{data.id} + + + + user_id = #{data.userId}, + bst_type = #{data.bstType}, + bst_id = #{data.bstId}, + status = #{data.status}, + reason = #{data.reason}, + create_time = #{data.createTime}, + + + + delete from bst_verify where id = #{id} + + + + delete from bst_verify where id in + + #{id} + + + diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/VerifyService.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/VerifyService.java new file mode 100644 index 0000000..3380d7a --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/VerifyService.java @@ -0,0 +1,64 @@ +package com.ruoyi.yh.verify.service; + +import java.util.List; + +import com.ruoyi.yh.verify.domain.Verify; +import com.ruoyi.yh.verify.domain.VerifyQuery; +import com.ruoyi.yh.verify.domain.VerifyVO; + +/** + * 审核记录Service接口 + * + * @author ruoyi + * @date 2025-04-01 + */ +public interface VerifyService +{ + /** + * 查询审核记录 + * + * @param id 审核记录主键 + * @return 审核记录 + */ + public VerifyVO selectVerifyById(Long id); + + /** + * 查询审核记录列表 + * + * @param verify 审核记录 + * @return 审核记录集合 + */ + public List selectVerifyList(VerifyQuery verify); + + /** + * 新增审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + public int insertVerify(Verify verify); + + /** + * 修改审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + public int updateVerify(Verify verify); + + /** + * 批量删除审核记录 + * + * @param ids 需要删除的审核记录主键集合 + * @return 结果 + */ + public int deleteVerifyByIds(Long[] ids); + + /** + * 删除审核记录信息 + * + * @param id 审核记录主键 + * @return 结果 + */ + public int deleteVerifyById(Long id); +} diff --git a/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/impl/VerifyServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/impl/VerifyServiceImpl.java new file mode 100644 index 0000000..f9549c7 --- /dev/null +++ b/ruoyi-service/src/main/java/com/ruoyi/yh/verify/service/impl/VerifyServiceImpl.java @@ -0,0 +1,99 @@ +package com.ruoyi.yh.verify.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.yh.verify.domain.Verify; +import com.ruoyi.yh.verify.domain.VerifyQuery; +import com.ruoyi.yh.verify.domain.VerifyVO; +import com.ruoyi.yh.verify.mapper.VerifyMapper; +import com.ruoyi.yh.verify.service.VerifyService; + +/** + * 审核记录Service业务层处理 + * + * @author ruoyi + * @date 2025-04-01 + */ +@Service +public class VerifyServiceImpl implements VerifyService +{ + @Autowired + private VerifyMapper verifyMapper; + + /** + * 查询审核记录 + * + * @param id 审核记录主键 + * @return 审核记录 + */ + @Override + public VerifyVO selectVerifyById(Long id) + { + return verifyMapper.selectVerifyById(id); + } + + /** + * 查询审核记录列表 + * + * @param verify 审核记录 + * @return 审核记录 + */ + @Override + public List selectVerifyList(VerifyQuery verify) + { + return verifyMapper.selectVerifyList(verify); + } + + /** + * 新增审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + @Override + public int insertVerify(Verify verify) + { + verify.setCreateTime(DateUtils.getNowDate()); + return verifyMapper.insertVerify(verify); + } + + /** + * 修改审核记录 + * + * @param verify 审核记录 + * @return 结果 + */ + @Override + public int updateVerify(Verify verify) + { + return verifyMapper.updateVerify(verify); + } + + /** + * 批量删除审核记录 + * + * @param ids 需要删除的审核记录主键 + * @return 结果 + */ + @Override + public int deleteVerifyByIds(Long[] ids) + { + return verifyMapper.deleteVerifyByIds(ids); + } + + /** + * 删除审核记录信息 + * + * @param id 审核记录主键 + * @return 结果 + */ + @Override + public int deleteVerifyById(Long id) + { + return verifyMapper.deleteVerifyById(id); + } +} diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportProdController.java b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportProdController.java index b86f309..fffed5d 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportProdController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportProdController.java @@ -1,15 +1,22 @@ package com.ruoyi.web.dashboard; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.dashboard.report.service.ReportProdDashboardService; -import com.ruoyi.yh.reportProd.domain.ReportProdQuery; -import io.swagger.annotations.ApiOperation; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.dashboard.report.domain.dailyProd.DailyProdVO; +import com.ruoyi.dashboard.report.service.ReportProdDashboardService; +import com.ruoyi.yh.reportProd.domain.ReportProdQuery; + +import io.swagger.annotations.ApiOperation; + @RestController @RequestMapping("/dashboard/reportProd") public class DashboardReportProdController extends BaseController { @@ -20,6 +27,15 @@ public class DashboardReportProdController extends BaseController { @ApiOperation("产品报表统计") @GetMapping("/sum") public AjaxResult sum(ReportProdQuery query) { - return AjaxResult.success(reportProdDashboardService.selectSum(query)); + return success(reportProdDashboardService.selectSum(query)); + } + + @ApiOperation("工序每日产量统计") + @GetMapping("/dailyProd") + @PreAuthorize("@ss.hasPermi('dashboard:prod:dailyProd')") + @DataScope(deptAlias = "sd") + public AjaxResult dailyProd(ReportProdQuery query) { + List list = reportProdDashboardService.selectDailyProd(query); + return success(list); } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportUserProdController.java b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportUserProdController.java index 2e4b30c..a7686c8 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportUserProdController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/dashboard/DashboardReportUserProdController.java @@ -1,15 +1,22 @@ package com.ruoyi.web.dashboard; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.dashboard.report.service.ReportUserProdDashboardService; -import com.ruoyi.yh.reportUserProd.domain.ReportUserProdQuery; -import io.swagger.annotations.ApiOperation; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.dashboard.report.domain.dailySalary.UserDailySalaryVO; +import com.ruoyi.dashboard.report.service.ReportUserProdDashboardService; +import com.ruoyi.yh.reportUserProd.domain.ReportUserProdQuery; + +import io.swagger.annotations.ApiOperation; + @RestController @RequestMapping("/dashboard/reportUserProd") public class DashboardReportUserProdController extends BaseController { @@ -20,6 +27,15 @@ public class DashboardReportUserProdController extends BaseController { @ApiOperation("用户产品报表统计") @GetMapping("/sum") public AjaxResult sum(ReportUserProdQuery query) { - return AjaxResult.success(reportUserProdDashboardService.selectSum(query)); + return success(reportUserProdDashboardService.selectSum(query)); + } + + @ApiOperation("用户每日工资统计") + @GetMapping("/dailySalary") + @PreAuthorize("@ss.hasPermi('dashboard:userProd:dailySalary')") + @DataScope(deptAlias = "sd") + public AjaxResult dailySalary(ReportUserProdQuery query) { + List list = reportUserProdDashboardService.selectDailySalary(query); + return success(list); } } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/PriceController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/PriceController.java index c0ec791..ba4c7ea 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/PriceController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/PriceController.java @@ -1,5 +1,23 @@ package com.ruoyi.web.yh; +import java.util.List; +import java.util.concurrent.ScheduledExecutorService; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +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.multipart.MultipartFile; + import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.LogTitle; @@ -16,18 +34,10 @@ import com.ruoyi.yh.price.domain.Price; import com.ruoyi.yh.price.domain.PriceQuery; import com.ruoyi.yh.price.domain.PriceVO; import com.ruoyi.yh.price.domain.dto.PriceImportParams; +import com.ruoyi.yh.price.domain.dto.PricePropertyQuery; import com.ruoyi.yh.price.domain.dto.PriceVerifyDTO; import com.ruoyi.yh.price.service.PriceConverter; import com.ruoyi.yh.price.service.PriceService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; -import java.util.concurrent.ScheduledExecutorService; /** * 单价Controller @@ -62,6 +72,25 @@ public class PriceController extends BaseController return getDataTable(list); } + // 查询属性值 + @PreAuthorize("@ss.hasPermi('yh:price:list')") + @GetMapping("/property") + @DataScope(deptAlias = "sd") + public TableDataInfo property(PricePropertyQuery query) + { + startPage(); + List list = priceService.selectProperty(query); + return getDataTable(list); + } + + // 查询单条单价 + @PreAuthorize("@ss.hasPermi('yh:price:list')") + @GetMapping("/single") + @DataScope(deptAlias = "sd") + public AjaxResult single(PriceQuery query) { + return success(priceService.selectOne(query)); + } + /** * 获取查询条件数据 */ @@ -88,7 +117,7 @@ public class PriceController extends BaseController @Log(title = LogTitle.PRICE, businessType = BusinessType.EXPORT, bizType = LogBizType.PRICE) @PostMapping("/export") @DataScope(deptAlias = "sd") - public void export(HttpServletResponse response, PriceQuery query) + public void export(PriceQuery query, HttpServletResponse response) { startPage(); List list = priceService.selectPriceList(query); diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportController.java index 8c2c6f1..777400a 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportController.java @@ -1,5 +1,23 @@ package com.ruoyi.web.yh; +import java.util.Collections; +import java.util.List; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.LogTitle; @@ -17,14 +35,6 @@ import com.ruoyi.yh.report.domain.dto.ReportVerifyDTO; import com.ruoyi.yh.report.service.ReportAssembler; import com.ruoyi.yh.report.service.ReportConverter; import com.ruoyi.yh.report.service.ReportService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.Collections; -import java.util.List; /** * 报表Controller @@ -68,7 +78,8 @@ public class ReportController extends BaseController @PreAuthorize("@ss.hasPermi('yh:report:export')") @Log(title = LOG_TITLE, businessType = BusinessType.EXPORT, bizType = LogBizType.REPORT) @PostMapping("/export") - public void export(HttpServletResponse response, ReportQuery query) + @DataScope(deptAlias = "sd", userAlias = "su") + public void export(ReportQuery query, HttpServletResponse response) { startPage(); List list = reportService.selectReportList(query); @@ -133,6 +144,7 @@ public class ReportController extends BaseController return toAjax(reportService.logicDel(reportIds)); } + // 主管审核 @PreAuthorize("@ss.hasPermi('yh:report:verify')") @Log(title = LOG_TITLE, businessType = BusinessType.VERIFY, bizType = LogBizType.REPORT, bizIdName = "arg0") @PutMapping("/verify") @@ -140,6 +152,24 @@ public class ReportController extends BaseController return toAjax(reportService.verify(dto, getUserId())); } + // 财务审核 + @PreAuthorize("@ss.hasPermi('yh:report:financeVerify')") + @Log(title = LOG_TITLE, businessType = BusinessType.VERIFY, bizType = LogBizType.REPORT, bizIdName = "arg0") + @PutMapping("/financeVerify") + public AjaxResult financeVerify(@RequestBody @Validated ReportVerifyDTO dto) { + return toAjax(reportService.financeVerify(dto, getUserId())); + } + + /** + * 反审核 + */ + @PreAuthorize("@ss.hasPermi('yh:report:unVerify')") + @Log(title = LOG_TITLE, businessType = BusinessType.VERIFY, bizType = LogBizType.REPORT, bizIdName = "arg0") + @PutMapping("/unVerify") + public AjaxResult unVerify(Long reportId) { + return toAjax(reportService.unVerify(reportId)); + } + @PreAuthorize("@ss.hasPermi('yh:report:cancel')") @Log(title = LOG_TITLE, businessType = BusinessType.CANCEL, bizType = LogBizType.REPORT, bizIdName = "arg0") @PutMapping("/{reportId}/cancel") diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportProdController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportProdController.java index 07697ba..e53b06d 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportProdController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportProdController.java @@ -20,6 +20,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.enums.LogBizType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.yh.reportProd.domain.ReportProd; import com.ruoyi.yh.reportProd.domain.ReportProdQuery; @@ -120,7 +121,7 @@ public class ReportProdController extends BaseController */ @PutMapping("/priceMatch") @PreAuthorize("@ss.hasPermi('yh:reportProd:priceMatch')") - @Log(title = "刷新单价匹配", businessType = BusinessType.UPDATE) + @Log(title = "刷新单价匹配", businessType = BusinessType.UPDATE, bizType = LogBizType.REPORT_PROD, bizIdName = "arg0") public AjaxResult priceMatch(@RequestBody List ids){ return success(reportProdService.refreshPriceMatch(ids)); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportUserProdController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportUserProdController.java index 2adc57c..ed623fe 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportUserProdController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/ReportUserProdController.java @@ -1,5 +1,17 @@ package com.ruoyi.web.yh; +import java.util.List; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; @@ -10,12 +22,6 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdQuery; import com.ruoyi.yh.reportUserProd.domain.ReportUserProdVO; import com.ruoyi.yh.reportUserProd.service.ReportUserProdService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; /** * 员工产量Controller @@ -50,7 +56,8 @@ public class ReportUserProdController extends BaseController @PreAuthorize("@ss.hasPermi('yh:reportUserProd:export')") @Log(title = "导出员工产量", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, ReportUserProdQuery query) + @DataScope(deptAlias = "sd") + public void export( ReportUserProdQuery query, HttpServletResponse response) { startPage(); List list = reportUserProdService.selectReportUserProdList(query); diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/yh/VerifyController.java b/ruoyi-web/src/main/java/com/ruoyi/web/yh/VerifyController.java new file mode 100644 index 0000000..5df5118 --- /dev/null +++ b/ruoyi-web/src/main/java/com/ruoyi/web/yh/VerifyController.java @@ -0,0 +1,110 @@ +package com.ruoyi.web.yh; + +import java.util.List; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.yh.verify.domain.Verify; +import com.ruoyi.yh.verify.domain.VerifyQuery; +import com.ruoyi.yh.verify.domain.VerifyVO; +import com.ruoyi.yh.verify.service.VerifyService; + +/** + * 审核记录Controller + * + * @author ruoyi + * @date 2025-04-01 + */ +@RestController +@RequestMapping("/yh/verify") +public class VerifyController extends BaseController +{ + @Autowired + private VerifyService verifyService; + + /** + * 查询审核记录列表 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:list')") + @GetMapping("/list") + public TableDataInfo list(VerifyQuery query) + { + startPage(); + startOrderBy(); + List list = verifyService.selectVerifyList(query); + return getDataTable(list); + } + + /** + * 导出审核记录列表 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:export')") + @Log(title = "审核记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, VerifyQuery query) + { + List list = verifyService.selectVerifyList(query); + ExcelUtil util = new ExcelUtil(VerifyVO.class); + util.exportExcel(response, list, "审核记录数据"); + } + + /** + * 获取审核记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(verifyService.selectVerifyById(id)); + } + + /** + * 新增审核记录 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:add')") + @Log(title = "审核记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody Verify verify) + { + return toAjax(verifyService.insertVerify(verify)); + } + + /** + * 修改审核记录 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:edit')") + @Log(title = "审核记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody Verify verify) + { + return toAjax(verifyService.updateVerify(verify)); + } + + /** + * 删除审核记录 + */ + @PreAuthorize("@ss.hasPermi('yh:verify:remove')") + @Log(title = "审核记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(verifyService.deleteVerifyByIds(ids)); + } +}