refactor(zn-module-smartfactory): 重构搬运组工资规格关联相关代码

- 新增 HandlingGroupAmountSpecificationsPageReqDTO、HandlingGroupAmountSpecificationsDetailsRespVO 等新类
- 修改 HandlingGroupAmountSpecificationsRespVO、HandlingGroupUserAmountItemVO 等现有类结构
- 更新相关控制器、DTO 和 DO 类以适应新的数据结构- 优化部分代码逻辑,提高可读性和可维护性
This commit is contained in:
aikai 2025-06-18 11:40:18 +08:00
parent 77d7620898
commit 5c08e5f5e2
28 changed files with 646 additions and 328 deletions

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao</artifactId>
<version>2.0.0-jdk8-snapshot</version>
</parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm</artifactId>
<version>2.0.0-jdk8-snapshot</version>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<description>infra 模块,主要提供两块能力:
1. 我们放基础设施的运维与管理,支撑上层的通用与核心业务。 例如说:定时任务的管理、服务器的信息等等
2. 研发工具,提升研发效率与质量。 例如说:代码生成器、接口文档等等</description>
<modules>
<module>yudao-module-crm-api</module>
<module>yudao-module-crm-biz</module>
</modules>
</project>

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm</artifactId>
<version>2.0.0-jdk8-snapshot</version>
</parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm-api</artifactId>
<version>2.0.0-jdk8-snapshot</version>
<name>${project.artifactId}</name>
<description>infra 模块 API暴露给其它模块调用</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-common</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>

View File

@ -1,153 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm</artifactId>
<version>2.0.0-jdk8-snapshot</version>
</parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm-biz</artifactId>
<version>2.0.0-jdk8-snapshot</version>
<name>${project.artifactId}</name>
<description>infra 模块,主要提供两块能力:
1. 我们放基础设施的运维与管理,支撑上层的通用与核心业务。 例如说:定时任务的管理、服务器的信息等等
2. 研发工具,提升研发效率与质量。 例如说:代码生成器、接口文档等等</description>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-crm-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-product-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-system-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-banner</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-biz-tenant</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-biz-error-code</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-rpc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-job</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-mq</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-monitor</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-spring-boot-starter-file</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-bpm-api</artifactId>
<version>2.0.0-jdk8-snapshot</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -41,5 +41,7 @@ public interface ErrorCodeConstants {
ErrorCode CANNOT_FIND_THE_CORRESPONDING_FACTORY_HANDLING_SPECIFICATION = new ErrorCode(1_000_005_001, "找不到对应的工厂搬运规格");
ErrorCode FACTORY_HANDLING_SPECIFICATION_EXISTS = new ErrorCode(1_000_005_002, "工厂搬运规格已存在");
ErrorCode SPECIFICATION_USER_AMOUNT_NOT_EXISTS = new ErrorCode(1_000_005_003, "工厂当前月份存在未分配人员数据!");
ErrorCode ADDED_A_HANDLING_GROUP_WITH_DUPLICATE_DATA = new ErrorCode(1_000_005_004, "新增数据有重复的搬运组!");
ErrorCode NEW_DATA_AND_OLD_DATA_HAVE_DUPLICATE_HANDLING_GROUP = new ErrorCode(1_000_005_005, "新增数据与老数据有重复的搬运组!");
}

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsPageReqDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsTotalNumDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.*;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountItemVO;
@ -31,7 +32,6 @@ import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 搬运组工资规格关联")
@ -87,11 +87,11 @@ public class HandlingGroupAmountSpecificationsController {
@Parameter(name = "factoryId", description = "工厂id", required = true, example = "1024")
@Parameter(name = "dateStr", description = "日期", required = true, example = "1024")
@Parameter(name = "handlingGroupId", description = "搬运组id", required = true, example = "1024")
public CommonResult<List<HandlingGroupAmountSpecificationsRespVO>> getHandlingGroupAmountSpecifications(@RequestParam Long factoryId,
@RequestParam String dateStr,
@RequestParam Long handlingGroupId) {
public CommonResult<List<HandlingGroupAmountSpecificationsDetailsRespVO>> getHandlingGroupAmountSpecifications(@RequestParam Long factoryId,
@RequestParam String dateStr,
@RequestParam Long handlingGroupId) {
List<HandlingGroupAmountSpecificationsDO> handlingGroupAmountSpecifications = handlingGroupAmountSpecificationsService.getHandlingGroupAmountSpecificationsList(factoryId, dateStr, handlingGroupId);
return success(BeanUtils.toBean(handlingGroupAmountSpecifications, HandlingGroupAmountSpecificationsRespVO.class));
return success(BeanUtils.toBean(handlingGroupAmountSpecifications, HandlingGroupAmountSpecificationsDetailsRespVO.class));
}
@GetMapping("/page")
@ -109,8 +109,8 @@ public class HandlingGroupAmountSpecificationsController {
}
for (HandlingGroupAmountSpecificationsRespVO handlingGroupAmountSpecificationsDO : result.getList()) {
String key = handlingGroupAmountSpecificationsDO.getFactoryId() + "_" + handlingGroupAmountSpecificationsDO.getHandlingGroupId() + "_" + handlingGroupAmountSpecificationsDO.getDateStr();
handlingGroupAmountSpecificationsDO.setTotalAmount(getSumValue(map.get(key), HandlingGroupAmountSpecificationsRespVO::getAmount, BigDecimal::add));
handlingGroupAmountSpecificationsDO.setTotalNum(getSumValue(map.get(key), HandlingGroupAmountSpecificationsRespVO::getTotalCount, Integer::sum));
// handlingGroupAmountSpecificationsDO.setTotalAmount(getSumValue(map.get(key), HandlingGroupAmountSpecificationsRespVO::getAmount, BigDecimal::add));
// handlingGroupAmountSpecificationsDO.setTotalNum(getSumValue(map.get(key), HandlingGroupAmountSpecificationsRespVO::getTotalCount, Integer::sum));
List<HandlingGroupUserAmountDO> items = handlingGroupUserAmountMap.get(handlingGroupAmountSpecificationsDO.getHandlingGroupId());
if (CollUtil.isNotEmpty(items)) {
List<HandlingGroupUserAmountItemVO> handlingGroupUserAmountItemVOS = BeanUtils.toBean(items, HandlingGroupUserAmountItemVO.class);
@ -120,6 +120,14 @@ public class HandlingGroupAmountSpecificationsController {
return success(result);
}
@GetMapping("/pageV2")
@Operation(summary = "获得搬运组工资规格关联分页")
public CommonResult<PageResult<HandlingGroupAmountSpecificationsRespVO>> getHandlingGroupAmountSpecificationsPageV2(@Valid HandlingGroupAmountSpecificationsPageReqDTO pageReqVO) {
PageResult<HandlingGroupAmountSpecificationsRespVO> pageResult = handlingGroupAmountSpecificationsService.getHandlingGroupAmountSpecificationsPageV2(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出搬运组工资规格关联 Excel")
@OperateLog(type = EXPORT)

View File

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class HandlingGroupAmountSpecificationsPageReqDTO extends PageParam {
@Schema(description = "工厂id", example = "23178")
private Long factoryId;
@Schema(description = "搬运组id", example = "23178")
private Long handlingGroupId;
@Schema(description = "叉车司机名称", example = "23178")
private String staffName;
@Schema(description = "搬运工名称", example = "23178")
private String porterName;
@Schema(description = "搬运规格id", example = "23178")
private Long handlingSpecificationsId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "工厂ids", example = "23178")
private List<Long> factoryIds;
}

View File

@ -0,0 +1,77 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountItemVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ExcelIgnoreUnannotated
public class HandlingGroupAmountSpecificationsDetailsRespVO {
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9721")
@ExcelProperty("主键id")
private Long id;
@Schema(description = "工厂id", example = "23178")
private Long factoryId;
@Schema(description = "工厂名称", example = "23178")
private String factoryName;
@Schema(description = "搬运组id", example = "23178")
@ExcelProperty("搬运组id")
private Long handlingGroupId;
@Schema(description = "搬运组名称", example = "23178")
@ExcelProperty("搬运组名称")
private String handlingGroupName;
@Schema(description = "叉车司机名称", example = "23178")
@ExcelProperty("叉车司机名称")
private String staffName;
@Schema(description = "叉车司机id", example = "23178")
@ExcelProperty("叉车司机id")
private Long staffId;
@Schema(description = "搬运规格id", example = "23178")
@ExcelProperty("搬运规格id")
private Long handlingSpecificationsId;
@Schema(description = "搬运规格名称", example = "23178")
@ExcelProperty("搬运规格名称")
private String handlingSpecificationsName;
@Schema(description = "数量", example = "15611")
@ExcelProperty("数量")
private Integer totalCount;
@Schema(description = "日期 格式 yyyy-MM-dd")
@ExcelProperty("日期 格式 yyyy-MM-dd")
private String dateStr;
@Schema(description = "总金额(根据规格和总量计算出 该搬运组获得的总金额)")
@ExcelProperty("总金额(根据规格和总量计算出 该搬运组获得的总金额)")
private BigDecimal amount;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "金额小计")
@ExcelProperty("金额小计")
private BigDecimal totalAmount;
@Schema(description = "数量小计")
@ExcelProperty("数量小计")
private Integer totalNum;
@Schema(description = "搬运工明细列表")
private List<HandlingGroupUserAmountItemVO> handlingGroupUserAmountItemVOS;
}

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountItemVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountRespVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
@ -42,26 +41,14 @@ public class HandlingGroupAmountSpecificationsRespVO {
@ExcelProperty("叉车司机id")
private Long staffId;
@Schema(description = "搬运规格id", example = "23178")
@ExcelProperty("搬运规格id")
private Long handlingSpecificationsId;
@Schema(description = "搬运规格名称", example = "23178")
@ExcelProperty("搬运规格名称")
private String handlingSpecificationsName;
@Schema(description = "数量", example = "15611")
@ExcelProperty("数量")
private Integer totalCount;
private List<SpecificationDetailVO> specificationDetails;
@Schema(description = "日期 格式 yyyy-MM-dd")
@ExcelProperty("日期 格式 yyyy-MM-dd")
private String dateStr;
@Schema(description = "总金额(根据规格和总量计算出 该搬运组获得的总金额)")
@ExcelProperty("总金额(根据规格和总量计算出 该搬运组获得的总金额)")
private BigDecimal amount;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@ -73,6 +60,10 @@ public class HandlingGroupAmountSpecificationsRespVO {
@Schema(description = "数量小计")
@ExcelProperty("数量小计")
private Integer totalNum;
/**
* 搬运规格id 逗号隔开
*/
private String handlingSpecificationsIds;
@Schema(description = "搬运工明细列表")
private List<HandlingGroupUserAmountItemVO> handlingGroupUserAmountItemVOS;

View File

@ -0,0 +1,84 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountItemVO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ExcelIgnoreUnannotated
public class HandlingGroupAmountSpecificationsRespVOV2 {
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9721")
@ExcelProperty("主键id")
private Long id;
@Schema(description = "工厂id", example = "23178")
private Long factoryId;
@Schema(description = "工厂名称", example = "23178")
private String factoryName;
@Schema(description = "搬运组id", example = "23178")
@ExcelProperty("搬运组id")
private Long handlingGroupId;
@Schema(description = "搬运组名称", example = "23178")
@ExcelProperty("搬运组名称")
private String handlingGroupName;
@Schema(description = "叉车司机名称", example = "23178")
@ExcelProperty("叉车司机名称")
private String staffName;
@Schema(description = "叉车司机id", example = "23178")
@ExcelProperty("叉车司机id")
private Long staffId;
@Schema(description = "日期 格式 yyyy-MM-dd")
@ExcelProperty("日期 格式 yyyy-MM-dd")
private String dateStr;
@Schema(description = "搬运规格id", example = "23178")
@ExcelProperty("搬运规格id")
private Long handlingSpecificationsId;
@Schema(description = "搬运规格名称", example = "23178")
@ExcelProperty("搬运规格名称")
private String handlingSpecificationsName;
@Schema(description = "数量", example = "15611")
@ExcelProperty("数量")
private Integer totalCount;
@Schema(description = "总金额(根据规格和总量计算出 该搬运组获得的总金额)")
@ExcelProperty("总金额(根据规格和总量计算出 该搬运组获得的总金额)")
private BigDecimal amount;
@Schema(description = "金额小计")
@ExcelProperty("金额小计")
private BigDecimal totalAmount;
@Schema(description = "数量小计")
@ExcelProperty("数量小计")
private Integer totalNum;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "搬运工明细列表")
private List<HandlingGroupUserAmountItemVO> handlingGroupUserAmountItemVOS;
}

View File

@ -0,0 +1,86 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import java.util.List;
/**
* 搬运组工资规格关联 DO
*
* @author 艾楷
*/
@Data
public class HandlingGroupAmountSpecificationsVO extends BaseDO {
/**
* 主键id
*/
@TableId
private Long id;
/**
* 工厂id
*/
private Long factoryId;
/**
* 搬运规格id
*/
private Long handlingSpecificationsId;
/**
* 搬运组id
*/
private Long handlingGroupId;
/**
* 叉车司机id
*/
private Long staffId;
/**
* 数量
*/
private Integer totalCount;
/**
* 日期 格式 yyyy-MM-dd
*/
private String dateStr;
/**
* 总金额根据规格和总量计算出 该搬运组获得的总金额
*/
private BigDecimal amount;
/**
* 金额合计
*/
@TableField(exist = false)
private BigDecimal totalAmount;
/**
* 数量合计
*/
@TableField(exist = false)
private Integer totalNum;
/**
* 工厂名称
*/
@TableField(exist = false)
private String factoryName;
/**
* 搬运组名称
*/
@TableField(exist = false)
private String handlingGroupName;
/**
* 叉车司机名称
*/
@TableField(exist = false)
private String staffName;
/**
* 搬运规格id 逗号隔开
*/
@TableField(exist = false)
private List<SpecificationDetailVO> specificationDetails;
}

View File

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class SpecificationDetailVO {
@Schema(description = "工厂搬运规格id", example = "23178")
private Long handlingSpecificationsId;
@Schema(description = "规格名称", example = "标准规格")
private String handlingSpecificationsName;
@Schema(description = "数量", example = "23178")
private Integer totalCount;
@Schema(description = "金额", example = "23178")
private BigDecimal amount;
public SpecificationDetailVO() {
}
public SpecificationDetailVO(Long handlingSpecificationsId, String handlingSpecificationsName, Integer totalCount, BigDecimal amount) {
this.handlingSpecificationsId = handlingSpecificationsId;
this.handlingSpecificationsName = handlingSpecificationsName;
this.totalCount = totalCount;
this.amount = amount;
}
}

View File

@ -18,9 +18,6 @@ public class StaffWagesPageDTO extends PageParam {
@Schema(description = "工厂id", example = "12639")
private Long factoryId;
@Schema(description = "搬运组工资规格关联id", example = "27617")
private Long handlingGroupAmountSpecificationsId;
@Schema(description = "日期 格式 yyyy-MM-dd")
private String dateStr;

View File

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -19,8 +21,8 @@ public class HandlingGroupUserAmountPageReqVO extends PageParam {
@Schema(description = "用户id", example = "12639")
private Long userId;
@Schema(description = "搬运组工资规格关联id", example = "27617")
private Long handlingGroupAmountSpecificationsId;
@Schema(description = "工厂id", example = "27617")
private Long factoryId;
@Schema(description = "搬运组id", example = "27617")
private Long handlingGroupId;

View File

@ -25,10 +25,6 @@ public class HandlingGroupUserAmountRespVO {
@ExcelProperty("用户名称")
private String userName;
@Schema(description = "搬运组工资规格关联id", example = "27617")
@ExcelProperty("搬运组工资规格关联id")
private Long handlingGroupAmountSpecificationsId;
@Schema(description = "日期 格式 yyyy-MM-dd")
@ExcelProperty("日期 格式 yyyy-MM-dd")
private String dateStr;

View File

@ -1,10 +1,8 @@
package cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 搬运组每日个人工资记录新增/修改 Request VO")
@ -20,8 +18,8 @@ public class HandlingGroupUserAmountSaveReqVO {
@Schema(description = "工厂id", example = "12639")
private Long factoryId;
@Schema(description = "搬运组工资规格关联id", example = "27617")
private Long handlingGroupAmountSpecificationsId;
@Schema(description = "搬运组id", example = "12639")
private Long handlingGroupId;
@Schema(description = "日期 格式 yyyy-MM-dd")
private String dateStr;

View File

@ -39,4 +39,9 @@ public class HandlingGroupDO extends BaseDO {
@TableField(exist = false)
private String factoryName;
/**
* 搬运日期
*/
@TableField(exist = false)
private String dateStr;
}

View File

@ -1,15 +1,16 @@
package cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.alibaba.excel.annotation.ExcelProperty;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.SpecificationDetailVO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.math.BigDecimal;
import java.util.List;
/**
* 搬运组工资规格关联 DO
@ -61,8 +62,16 @@ public class HandlingGroupAmountSpecificationsDO extends BaseDO {
* 总金额根据规格和总量计算出 该搬运组获得的总金额
*/
private BigDecimal amount;
/**
* 金额合计
*/
@TableField(exist = false)
private BigDecimal totalAmount;
/**
* 数量合计
*/
@TableField(exist = false)
private Integer totalNum;
/**
* 工厂名称
*/
@ -79,8 +88,8 @@ public class HandlingGroupAmountSpecificationsDO extends BaseDO {
@TableField(exist = false)
private String staffName;
/**
* 搬运规格名称
* 搬运规格id 逗号隔开
*/
@TableField(exist = false)
private String handlingSpecificationsName;
private List<SpecificationDetailVO> specificationDetails;
}

View File

@ -40,11 +40,6 @@ public class HandlingGroupUserAmountDO extends BaseDO {
@TableField(exist = false)
private String userName;
/**
* 搬运组工资规格关联id
*/
private Long handlingGroupAmountSpecificationsId;
/**
* 搬运组id
*/

View File

@ -1,16 +1,22 @@
package cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroup;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroup.vo.HandlingGroupPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsPageReqDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroup.HandlingGroupDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroup.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import java.util.List;
/**
* 搬运组 Mapper
@ -30,10 +36,18 @@ public interface HandlingGroupMapper extends BaseMapperX<HandlingGroupDO> {
}
/**
*
* @param page
* @param vo
* @return
*/
IPage<HandlingGroupDO> selectPageList(@Param("page") Page<Object> page, @Param("vo") HandlingGroupPageReqVO vo);
/**
* 根据时间分组查询分页
*
* @param page
* @param vo
* @return
*/
IPage<HandlingGroupAmountSpecificationsVO> selectPageListByDateStr(@Param("page") Page<Object> page, @Param("vo") HandlingGroupAmountSpecificationsPageReqDTO vo);
}

View File

@ -26,7 +26,6 @@ public interface HandlingGroupUserAmountMapper extends BaseMapperX<HandlingGroup
default PageResult<HandlingGroupUserAmountDO> selectPage(HandlingGroupUserAmountPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<HandlingGroupUserAmountDO>()
.eqIfPresent(HandlingGroupUserAmountDO::getUserId, reqVO.getUserId())
.eqIfPresent(HandlingGroupUserAmountDO::getHandlingGroupAmountSpecificationsId, reqVO.getHandlingGroupAmountSpecificationsId())
.eqIfPresent(HandlingGroupUserAmountDO::getDateStr, reqVO.getDateStr())
.eqIfPresent(HandlingGroupUserAmountDO::getAmount, reqVO.getAmount())
.betweenIfPresent(HandlingGroupUserAmountDO::getCreateTime, reqVO.getCreateTime())
@ -51,6 +50,7 @@ public interface HandlingGroupUserAmountMapper extends BaseMapperX<HandlingGroup
/**
* 获取月工资列表
*
* @param factoryId
* @param dateList
* @param name
@ -60,21 +60,25 @@ public interface HandlingGroupUserAmountMapper extends BaseMapperX<HandlingGroup
/**
* 列表
*
* @param vo
* @return
*/
List<HandlingGroupUserAmountDO> getHandlingGroupUserAmountList(@Param("vo") HandlingGroupUserAmountPageReqVO vo);
/**
*
* @param handlingGroupAmountSpecificationsIds
* @return
*/
List<HandlingGroupUserAmountDO> getByHandlingGroupAmountSpecificationsId(@Param("handlingGroupAmountSpecificationsIds") List<Long> handlingGroupAmountSpecificationsIds);
List<HandlingGroupUserAmountDO> getByHandlingGroupIds(@Param("handlingGroupIds") List<Long> handlingGroupIds);
List<HandlingGroupUserAmountDO> selectAmountSum(@Param("factoryId") Long factoryId, @Param("month") String month);
Long selectIsExists(@Param("factoryId") Long factoryId, @Param("month") String month);
/**
* 通过工厂列表ids 和日期列表 搬运组ids 获取
*
* @param factoryIds
* @param dateStrList
* @param handlingGroupIds
* @return
*/
List<HandlingGroupUserAmountDO> getByFactorIdAndDateStrAndHandlingGroupId(@Param("factoryIds") List<Long> factoryIds, @Param("dateStrList") List<String> dateStrList, @Param("handlingGroupIds") List<Long> handlingGroupIds);
}

View File

@ -1,9 +1,12 @@
package cn.iocoder.yudao.module.smartfactory.service.handlinggroupamountspecifications;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsPageReqDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsTotalNumDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.*;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroup.HandlingGroupDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.validation.Valid;
import java.math.BigDecimal;
@ -14,7 +17,7 @@ import java.util.List;
*
* @author 艾楷
*/
public interface HandlingGroupAmountSpecificationsService {
public interface HandlingGroupAmountSpecificationsService extends IService<HandlingGroupAmountSpecificationsDO> {
/**
* 获得搬运组工资规格关联
@ -66,16 +69,22 @@ public interface HandlingGroupAmountSpecificationsService {
/**
* 获取合计
*
* @param factoryId
* @return
*/
HandlingGroupAmountSpecificationsTotalNumVO getTotalNum(HandlingGroupAmountSpecificationsTotalNumDTO dto);
/**
* 获取金额小计
*
* @param totalCount
* @param handlingSpecificationsId
* @return
*/
BigDecimal getAmountSubtotal(Integer totalCount, Long handlingSpecificationsId);
/**
* @param pageReqVO
* @return
*/
PageResult<HandlingGroupAmountSpecificationsRespVO> getHandlingGroupAmountSpecificationsPageV2(@Valid HandlingGroupAmountSpecificationsPageReqDTO pageReqVO);
}

View File

@ -2,32 +2,42 @@ package cn.iocoder.yudao.module.smartfactory.service.handlinggroupamountspecific
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroup.vo.HandlingGroupListVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsPageReqDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsTotalNumDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.*;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupuseramount.vo.HandlingGroupUserAmountItemVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlingspecifications.HandlingSpecificationsDO;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroup.HandlingGroupMapper;
import cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsMapper;
import cn.iocoder.yudao.module.smartfactory.service.handlinggroupuseramount.HandlingGroupUserAmountService;
import cn.iocoder.yudao.module.smartfactory.service.handlingspecifications.HandlingSpecificationsService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import com.alibaba.druid.sql.visitor.functions.Lpad;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.ADDED_A_HANDLING_GROUP_WITH_DUPLICATE_DATA;
import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.NEW_DATA_AND_OLD_DATA_HAVE_DUPLICATE_HANDLING_GROUP;
/**
* 搬运组工资规格关联 Service 实现类
@ -36,11 +46,13 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
*/
@Service
@Validated
public class HandlingGroupAmountSpecificationsServiceImpl implements HandlingGroupAmountSpecificationsService {
public class HandlingGroupAmountSpecificationsServiceImpl extends ServiceImpl<HandlingGroupAmountSpecificationsMapper, HandlingGroupAmountSpecificationsDO> implements HandlingGroupAmountSpecificationsService {
@Resource
private HandlingGroupAmountSpecificationsMapper handlingGroupAmountSpecificationsMapper;
@Resource
private HandlingGroupMapper handlingGroupMapper;
@Resource
private HandlingSpecificationsService handlingSpecificationsService;
@Resource
private HandlingGroupUserAmountService handlingGroupUserAmountService;
@ -79,6 +91,26 @@ public class HandlingGroupAmountSpecificationsServiceImpl implements HandlingGro
@Override
public void batchCreate(HandlingGroupAmountSpecificationsBatchCreateVO vo) {
List<Long> newHandlingGroupIds = vo.getHandlingGroupList().stream().map(HandlingGroupListVO::getHandlingGroupId).collect(Collectors.toList());
// -- 先判断 新增之中有没有冲突的搬运组
int num = newHandlingGroupIds.size();
List<Long> distinctList = newHandlingGroupIds.stream().distinct().collect(Collectors.toList());
if (num > distinctList.size()) {
throw exception(ADDED_A_HANDLING_GROUP_WITH_DUPLICATE_DATA);
}
// -- 再判断是否有重复的数据 - 同一天 同一个工厂 不可以出现两个相同的搬运组
List<HandlingGroupAmountSpecificationsDO> oldList = this.list(new LambdaQueryWrapper<HandlingGroupAmountSpecificationsDO>()
.eq(HandlingGroupAmountSpecificationsDO::getFactoryId, vo.getFactoryId())
.eq(HandlingGroupAmountSpecificationsDO::getDateStr, vo.getDateStr()));
List<Long> oldHandlingGroupIds = new ArrayList<>();
if (CollUtil.isNotEmpty(oldList)) {
oldHandlingGroupIds = oldList.stream().map(HandlingGroupAmountSpecificationsDO::getHandlingGroupId).collect(Collectors.toList());
}
if (CollUtil.isNotEmpty(CollUtil.intersection(distinctList, oldHandlingGroupIds))) {
throw exception(NEW_DATA_AND_OLD_DATA_HAVE_DUPLICATE_HANDLING_GROUP);
}
List<HandlingGroupAmountSpecificationsDO> list = new ArrayList<>();
// -- 获取到所有的规格列表
List<Long> handlingSpecificationsIds = vo.getHandlingGroupList().stream()
@ -163,9 +195,11 @@ public class HandlingGroupAmountSpecificationsServiceImpl implements HandlingGro
handlingGroupAmountSpecificationsMapper.deleteBatchIds(ids);
handlingGroupUserAmountService.remove(new LambdaQueryWrapper<HandlingGroupUserAmountDO>()
.in(HandlingGroupUserAmountDO::getHandlingGroupAmountSpecificationsId, ids)
);
.eq(HandlingGroupUserAmountDO::getFactoryId, vo.getFactoryId())
.eq(HandlingGroupUserAmountDO::getHandlingGroupId, vo.getHandlingGroupId())
.eq(HandlingGroupUserAmountDO::getDateStr, vo.getDateStr()));
}
@Override
public HandlingGroupAmountSpecificationsTotalNumVO getTotalNum(HandlingGroupAmountSpecificationsTotalNumDTO dto) {
// 判断当前登录人是否属于工厂主管
@ -189,4 +223,27 @@ public class HandlingGroupAmountSpecificationsServiceImpl implements HandlingGro
}
return totalAmount;
}
@Override
public PageResult<HandlingGroupAmountSpecificationsRespVO> getHandlingGroupAmountSpecificationsPageV2(HandlingGroupAmountSpecificationsPageReqDTO pageReqVO) {
IPage<HandlingGroupAmountSpecificationsVO> handlingGroupPage = handlingGroupMapper.selectPageListByDateStr(MyBatisUtils.buildPage(pageReqVO), pageReqVO);
// 搬运规格ids - 拼接 一起查询
PageResult<HandlingGroupAmountSpecificationsVO> resultPage = new PageResult<>(handlingGroupPage.getRecords(), handlingGroupPage.getTotal());
PageResult<HandlingGroupAmountSpecificationsRespVO> result = BeanUtils.toBean(resultPage, HandlingGroupAmountSpecificationsRespVO.class);
List<Long> factoryIds = result.getList().stream().map(HandlingGroupAmountSpecificationsRespVO::getFactoryId).distinct().collect(Collectors.toList());
List<String> dateStrList = result.getList().stream().map(HandlingGroupAmountSpecificationsRespVO::getDateStr).distinct().collect(Collectors.toList());
List<Long> handlingGroupIds = result.getList().stream().map(HandlingGroupAmountSpecificationsRespVO::getHandlingGroupId).distinct().collect(Collectors.toList());
if (CollUtil.isNotEmpty(factoryIds) && CollUtil.isNotEmpty(dateStrList) && CollUtil.isNotEmpty(handlingGroupIds)) {
// -- 工厂 - 时间 -
List<HandlingGroupUserAmountDO> handlingGroupUserAmountDOS = handlingGroupUserAmountService.getByFactorIdAndDateStrAndHandlingGroupId(factoryIds, dateStrList, handlingGroupIds);
Map<String, List<HandlingGroupUserAmountDO>> map = handlingGroupUserAmountDOS.stream().collect(Collectors.groupingBy(
a -> a.getFactoryId() + "-" + a.getDateStr() + "-" + a.getHandlingGroupId()
));
for (HandlingGroupAmountSpecificationsRespVO handlingGroupAmountSpecificationsRespVO : result.getList()) {
String key = handlingGroupAmountSpecificationsRespVO.getFactoryId() + "-" + handlingGroupAmountSpecificationsRespVO.getDateStr() + "-" + handlingGroupAmountSpecificationsRespVO.getHandlingGroupId();
handlingGroupAmountSpecificationsRespVO.setHandlingGroupUserAmountItemVOS(BeanUtils.toBean(map.get(key), HandlingGroupUserAmountItemVO.class));
}
}
return result;
}
}

View File

@ -84,24 +84,29 @@ public interface HandlingGroupUserAmountService extends IService<HandlingGroupUs
/**
* 列表
*
* @param pageReqVO
* @return
*/
List<HandlingGroupUserAmountDO> getHandlingGroupUserAmountList(HandlingGroupUserAmountPageReqVO pageReqVO);
/**
*
* @param handlingGroupAmountSpecificationsIds
* @return
*/
List<HandlingGroupUserAmountDO> getByHandlingGroupAmountSpecificationsId(List<Long> handlingGroupAmountSpecificationsIds);
/**
* 确认搬运工组薪资确认后添加至员工薪资表
*
* @param factoryId
* @param month
*/
void confirmHandlingGroupUserAmount(Long factoryId, String month);
List<HandlingGroupUserAmountDO> getByHandlingGroupIds(List<Long> handlingGroupIds);
/**
* 通过工厂列表ids 和日期列表 搬运组ids 获取
*
* @param factoryIds
* @param dateStrList
* @param handlingGroupIds
* @return
*/
List<HandlingGroupUserAmountDO> getByFactorIdAndDateStrAndHandlingGroupId(List<Long> factoryIds, List<String> dateStrList, List<Long> handlingGroupIds);
}

View File

@ -108,9 +108,7 @@ public class HandlingGroupUserAmountServiceImpl extends ServiceImpl<HandlingGrou
@Override
@Transactional(rollbackFor = Exception.class)
public void createOrEdit(HandlingGroupUserAmountSaveReqVO createReqVO) {
HandlingGroupAmountSpecificationsDO handlingGroupAmountSpecificationsDO = handlingGroupAmountSpecificationsMapper.selectById(createReqVO.getHandlingGroupAmountSpecificationsId());
// 插入
createReqVO.setFactoryId(handlingGroupAmountSpecificationsDO.getFactoryId());
HandlingGroupUserAmountDO handlingGroupUserAmount = BeanUtils.toBean(createReqVO, HandlingGroupUserAmountDO.class);
handlingGroupUserAmountMapper.insertOrUpdate(handlingGroupUserAmount);
}
@ -171,11 +169,6 @@ public class HandlingGroupUserAmountServiceImpl extends ServiceImpl<HandlingGrou
return handlingGroupUserAmountMapper.getHandlingGroupUserAmountList(pageReqVO);
}
@Override
public List<HandlingGroupUserAmountDO> getByHandlingGroupAmountSpecificationsId(List<Long> handlingGroupAmountSpecificationsIds) {
return handlingGroupUserAmountMapper.getByHandlingGroupAmountSpecificationsId(handlingGroupAmountSpecificationsIds);
}
@Override
public void confirmHandlingGroupUserAmount(Long factoryId, String month) {
@ -254,4 +247,9 @@ public class HandlingGroupUserAmountServiceImpl extends ServiceImpl<HandlingGrou
return handlingGroupUserAmountMapper.getByHandlingGroupIds(handlingGroupIds);
}
@Override
public List<HandlingGroupUserAmountDO> getByFactorIdAndDateStrAndHandlingGroupId(List<Long> factoryIds, List<String> dateStrList, List<Long> handlingGroupIds) {
return handlingGroupUserAmountMapper.getByFactorIdAndDateStrAndHandlingGroupId(factoryIds, dateStrList, handlingGroupIds);
}
}

View File

@ -50,6 +50,7 @@ public class HikServiceImpl implements HikService {
String result = ArtemisHttpUtil
.doPostStringArtemis(path, JSONUtil.toJsonStr(body), null, null, "application/json");
log.info("{}监控查看预览地址返回:{}", JSONUtil.toJsonStr(body), result);
//监控查看预览地址返回{"code":"0","msg":"success","data":{"url":"ws://172.16.52.253:559/openUrl/ZZYpOFO"}}
if (StringUtils.isEmpty(result)) {
// throw new ServiceException("监控查看预览地址返回为空");
System.out.println("监控查看预览地址返回为空");
@ -126,7 +127,7 @@ public class HikServiceImpl implements HikService {
@Override
public String operateCamera(CameraOperateDTO dto) {
final String operateUrlApi = ArtemisApiConstant.operateUrlApi;
final String operateUrlApi = ArtemisApiConstant.operateUrlApi;//artemis/api/video/v1/ptzs/controlling
Map<String, String> path = new HashMap<String, String>(1) {
{
put("https://", operateUrlApi);

View File

@ -25,4 +25,110 @@
</if>
</where>
</select>
<resultMap id="handlingSummaryMap" type="cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsVO">
<!-- 基础字段映射 -->
<id property="id" column="id"/>
<result property="factoryId" column="factory_id"/>
<result property="handlingGroupId" column="handling_group_id"/>
<result property="handlingSpecificationsId" column="handling_specifications_id"/>
<result property="staffId" column="staff_id"/>
<result property="totalCount" column="total_count"/>
<result property="dateStr" column="date_str"/>
<result property="amount" column="amount"/>
<result property="creator" column="creator"/>
<result property="createTime" column="create_time"/>
<result property="updater" column="updater"/>
<result property="updateTime" column="update_time"/>
<result property="deleted" column="deleted"/>
<!-- 关联字段 -->
<result property="factoryName" column="factoryName"/>
<result property="handlingGroupName" column="handlingGroupName"/>
<result property="staffName" column="staffName"/>
<!-- 聚合字段 -->
<result property="totalAmount" column="totalAmount"/>
<result property="totalNum" column="totalNum"/>
<!-- 自定义对象列表 (JSON 映射) -->
<result property="specificationDetails" column="specificationDetails"
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
javaType="java.util.List"
/>
</resultMap>
<select id="selectPageListByDateStr"
resultMap="handlingSummaryMap">
SELECT
a.*,
b.short_name as factoryName,
d.handling_group_name as handlingGroupName,
c.nick_name as staffName,
SUM( a.amount ) AS totalAmount,
sum( a.total_count ) AS totalNum,
JSON_ARRAYAGG(
JSON_OBJECT(
'handlingSpecificationsId', a.handling_specifications_id,
'totalCount', a.total_count,
'amount', a.amount,
'handlingSpecificationsName', (
SELECT hs.specifications_name
FROM sf_handling_specifications as hs
WHERE hs.id = a.handling_specifications_id
)
)
) AS specificationDetails
FROM
sf_handling_group_amount_specifications AS a
left join sf_factory_info as b on a.factory_id = b.id
LEFT JOIN sf_staff AS c ON c.id = a.staff_id
left join sf_handling_group as d on a.handling_group_id = d.id
<where>
a.deleted = 0
and b.deleted = 0
and c.deleted = 0
<if test="vo.factoryId != null">
and a.factory_id = #{vo.factoryId}
</if>
<if test="vo.factoryIds != null and vo.factoryIds.size() > 0">
and a.factory_id in
<foreach collection="vo.factoryIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="vo.handlingSpecificationsId != null">
AND a.handling_specifications_id = #{vo.handlingSpecificationsId}
</if>
<if test="vo.handlingGroupId != null">
and a.handling_group_id = #{vo.handlingGroupId}
</if>
<if test="vo.createTime != null and vo.createTime.length > 0">
<if test="vo.createTime[0] != null">
and STR_TO_DATE( c.date_str, '%Y-%m-%d' ) &gt;= #{vo.createTime[0]}
</if>
<if test="vo.createTime[1] != null">
and STR_TO_DATE( a.date_str, '%Y-%m-%d' ) &lt;= #{vo.createTime[1]}
</if>
</if>
<if test="vo.staffName != null and vo.staffName != ''">
and c.nick_name like concat('%', #{vo.staffName}, '%')
</if>
<if test="vo.porterName != null and vo.porterName != ''">
AND EXISTS (
select e.id from sf_handling_group_user_amount as e
left join sf_staff as g on g.id = e.user_id
where a.factory_id = e.factory_id
and a.date_str = e.date_str
and a.handling_group_id = e.handling_group_id
and g.nick_name like concat('%', #{vo.porterName}, '%')
and e.deleted = 0
)
</if>
</where>
GROUP BY
a.factory_id,
a.date_str,
a.handling_group_id
</select>
</mapper>

View File

@ -24,6 +24,7 @@
<where>
a.deleted = 0
and b.deleted = 0
and d.deleted = 0
<if test="vo.handlingSpecificationsId != null">
AND a.handling_specifications_id = #{vo.handlingSpecificationsId}
</if>
@ -44,11 +45,13 @@
</if>
<if test="vo.porterName != null and vo.porterName != ''">
AND EXISTS (
select e.id from sf_handling_group_user_amount as e
left join sf_staff as g on g.id = e.user_id
where a.id = e.handling_group_amount_specifications_id
and g.nick_name like concat('%', #{vo.porterName}, '%')
and e.deleted = 0
select e.id from sf_handling_group_user_amount as e
left join sf_staff as g on g.id = e.user_id
where a.factory_id = e.factory_id
and a.date_str = e.date_str
and a.handling_group_id = e.handling_group_id
and g.nick_name like concat('%', #{vo.porterName}, '%')
and e.deleted = 0
)
</if>
<if test="vo.createTime != null and vo.createTime.length > 0">
@ -132,7 +135,9 @@
LEFT JOIN sf_staff AS d ON d.id = c.user_id
WHERE
c.deleted = 0
and a.id = c.handling_group_amount_specifications_id
and a.factory_id = c.factory_id
and a.date_str = c.date_str
and a.handling_group_id = c.handling_group_id
and d.nick_name like concat('%', #{dto.porterName}, '%')
)
</if>

View File

@ -24,9 +24,6 @@
<if test="vo.handlingGroupId != null">
AND a.handling_group_id = #{vo.handlingGroupId}
</if>
<if test="vo.handlingGroupAmountSpecificationsId != null">
AND a.handling_group_amount_specifications_id= #{vo.handlingGroupAmountSpecificationsId}
</if>
<if test="vo.dateStr != null and vo.dateStr != ''">
and a.dateStr like concat('%', #{vo.dateStr}, '%')
</if>
@ -57,9 +54,6 @@
<if test="dto.factoryId != null">
AND a.factory_id = #{dto.factoryId}
</if>
<if test="dto.handlingGroupAmountSpecificationsId != null">
AND b.handling_group_amount_specifications_id = #{dto.handlingGroupAmountSpecificationsId}
</if>
<if test="dto.dateStr != null and dto.dateStr != ''">
and b.date_str like concat('%', #{dto.dateStr}, '%')
</if>
@ -113,14 +107,14 @@
<if test="vo.userId != null">
AND a.user_id = #{vo.userId}
</if>
<if test="vo.factoryId != null">
and a.factory_id = #{vo.factoryId}
</if>
<if test="vo.handlingGroupId != null">
AND a.handling_group_id = #{vo.handlingGroupId}
</if>
<if test="vo.handlingGroupAmountSpecificationsId != null">
AND a.handling_group_amount_specifications_id= #{vo.handlingGroupAmountSpecificationsId}
</if>
<if test="vo.dateStr != null and vo.dateStr != ''">
and a.dateStr like concat('%', #{vo.dateStr}, '%')
and a.date_str like concat('%', #{vo.dateStr}, '%')
</if>
<if test="vo.createTime != null and vo.createTime.length > 0">
<if test="vo.createTime[0] != null">
@ -132,23 +126,6 @@
</if>
</where>
</select>
<select id="getByHandlingGroupAmountSpecificationsId"
resultType="cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO">
select a.*,
b.nick_name as userName
FROM sf_handling_group_user_amount as a
LEFT JOIN sf_staff as b on a.user_id = b.id
<where>
a.deleted = 0
and b.deleted = 0
<if test="handlingGroupAmountSpecificationsIds != null and handlingGroupAmountSpecificationsIds.size() > 0">
and a.handling_group_amount_specifications_id in
<foreach collection="handlingGroupAmountSpecificationsIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
<select id="selectAmountSum" resultType="cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO">
SELECT
@ -198,4 +175,33 @@
</if>
</where>
</select>
<select id="getByFactorIdAndDateStrAndHandlingGroupId"
resultType="cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupuseramount.HandlingGroupUserAmountDO">
select a.*,
b.nick_name as userName
FROM sf_handling_group_user_amount as a
LEFT JOIN sf_staff as b on a.user_id = b.id
<where>
a.deleted = 0
and b.deleted = 0
<if test="factoryIds != null and factoryIds.size() > 0 ">
and a.factory_id in
<foreach collection="factoryIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="dateStrList != null and dateStrList.size() > 0 ">
and a.date_str in
<foreach collection="dateStrList" item="dateStr" open="(" separator="," close=")">
#{dateStr}
</foreach>
</if>
<if test="handlingGroupIds != null and handlingGroupIds.size() > 0 ">
and a.handling_group_id in
<foreach collection="handlingGroupIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
</mapper>