From 2ecac1a3f607ad139bb5e7efd9ec9cd4df8c3446 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 9 May 2024 10:11:57 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E5=A5=96=E6=83=A9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=EF=BC=8C=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/iocoder/yudao/module/system/api/dept/DeptApi.java | 6 ++++++ .../yudao/module/system/api/dept/DeptApiImpl.java | 9 +++++++++ .../yudao/module/system/dal/dataobject/dept/DeptDO.java | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java index 2ef9514a..ef3dc5cb 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java @@ -9,6 +9,8 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.Collection; @@ -46,6 +48,10 @@ public interface DeptApi { @Operation(summary = "获取所有部门信息") CommonResult> getDeptList(); + @PostMapping(PREFIX + "/create") + @Operation(summary = "获取所有部门信息") + CommonResult createDept(@RequestBody DeptRespDTO deptRespDTO); + /** * 获得指定编号的部门 Map * diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java index 83438711..89353dfd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.service.dept.DeptService; import org.springframework.validation.annotation.Validated; @@ -61,4 +62,12 @@ public class DeptApiImpl implements DeptApi { return success(BeanUtils.toBean(deptDOs, DeptRespDTO.class)); } + @Override + public CommonResult createDept(DeptRespDTO deptRespDTO) { + + DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptRespDTO, DeptSaveReqVO.class); + + return null; + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java index 68633426..1b8817ad 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java @@ -52,6 +52,10 @@ public class DeptDO extends TenantBaseDO { * 关联 {@link AdminUserDO#getId()} */ private Long leaderUserId; + /** + * 工厂编号 + */ + private Long factoryId; /** * 联系电话 */ From d14a0bd598e728f541b19f9c1d218926bf9d55d0 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 9 May 2024 10:12:27 +0800 Subject: [PATCH 02/20] =?UTF-8?q?=E5=A5=96=E6=83=A9=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=EF=BC=8C=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/factory/vo/SfFactoryInfoPageReqVO.java | 4 ++-- .../controller/admin/factory/vo/SfFactoryInfoRespVO.java | 6 +++--- .../admin/factory/vo/SfFactoryInfoSaveReqVO.java | 4 ++-- .../admin/factoryinfo/vo/FactoryInfoPageReqVO.java | 4 ++-- .../admin/factoryinfo/vo/FactoryInfoRespVO.java | 8 +++++--- .../admin/factoryinfo/vo/FactoryInfoSaveReqVO.java | 8 +++++--- .../dal/dataobject/factory/SfFactoryInfoDO.java | 5 ++--- .../dal/dataobject/factoryinfo/FactoryInfoDO.java | 8 ++++---- .../dal/mysql/factory/SfFactoryInfoMapper.java | 2 +- .../dal/mysql/factoryinfo/FactoryInfoMapper.java | 2 +- .../service/factoryinfo/FactoryInfoServiceImpl.java | 9 ++++++++- .../service/factoryinfo/FactoryInfoServiceImplTest.java | 6 +++--- 12 files changed, 38 insertions(+), 28 deletions(-) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoPageReqVO.java index e1dcbb0b..22990425 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoPageReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoPageReqVO.java @@ -22,8 +22,8 @@ public class SfFactoryInfoPageReqVO extends PageParam { @Schema(description = "工厂简称", example = "王五") private String shortName; - @Schema(description = "工厂代号") - private String code; + @Schema(description = "工厂类型") + private String type; @Schema(description = "工厂简介", example = "你猜") private String description; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoRespVO.java index 4e09bbb2..e5870a32 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoRespVO.java @@ -26,9 +26,9 @@ public class SfFactoryInfoRespVO { @ExcelProperty("工厂简称") private String shortName; - @Schema(description = "工厂代号") - @ExcelProperty("工厂代号") - private String code; + @Schema(description = "工厂类型") + @ExcelProperty("工厂类型") + private String type; @Schema(description = "工厂简介", example = "你猜") @ExcelProperty("工厂简介") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoSaveReqVO.java index fa5fd8d0..7159fa4b 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoSaveReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factory/vo/SfFactoryInfoSaveReqVO.java @@ -22,8 +22,8 @@ public class SfFactoryInfoSaveReqVO { @NotEmpty(message = "工厂简称不能为空") private String shortName; - @Schema(description = "工厂代号") - private String code; + @Schema(description = "工厂类型") + private String type; @Schema(description = "工厂简介", example = "你猜") private String description; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoPageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoPageReqVO.java index cc2cedbe..871bb512 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoPageReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoPageReqVO.java @@ -22,8 +22,8 @@ public class FactoryInfoPageReqVO extends PageParam { @Schema(description = "工厂简称", example = "第一工厂") private String shortName; - @Schema(description = "工厂代码", example = "10000") - private String code; + @Schema(description = "工厂类型", example = "1") + private String type; @Schema(description = "状态", example = "1") private Integer status; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoRespVO.java index 22acdb2b..f90d9d4d 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoRespVO.java @@ -28,9 +28,9 @@ public class FactoryInfoRespVO { @ExcelProperty("工厂简称") private String shortName; - @Schema(description = "工厂代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @ExcelProperty("工厂代码") - private String code; + @Schema(description = "工厂类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("工厂类型") + private String type; @Schema(description = "工厂简介", example = "这是一个工厂简介") @ExcelProperty("工厂简介") @@ -61,4 +61,6 @@ public class FactoryInfoRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "负责人编号", example = "126") + private Long leaderUserId; } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java index 89427dfb..08251bdf 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java @@ -22,9 +22,9 @@ public class FactoryInfoSaveReqVO { @NotEmpty(message = "工厂简称不能为空") private String shortName; - @Schema(description = "工厂代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000") - @NotEmpty(message = "工厂代码不能为空") - private String code; + @Schema(description = "工厂类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "工厂类型不能为空") + private String type; @Schema(description = "工厂简介", example = "这是一个工厂简介") private String description; @@ -70,4 +70,6 @@ public class FactoryInfoSaveReqVO { @NotNull(message = "状态不能为空") private Integer status; + @Schema(description = "负责人编号", example = "126") + private Long leaderUserId; } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factory/SfFactoryInfoDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factory/SfFactoryInfoDO.java index 601ca11a..0a6d0a6c 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factory/SfFactoryInfoDO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factory/SfFactoryInfoDO.java @@ -16,7 +16,6 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; * @author 艾楷 */ @TableName("sf_factory_info") -@KeySequence("sf_factory_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @@ -39,9 +38,9 @@ public class SfFactoryInfoDO extends BaseDO { */ private String shortName; /** - * 工厂代号 + * 工厂类型 */ - private String code; + private String type; /** * 工厂简介 */ diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java index 2f0f010a..b9346fd6 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; @@ -15,7 +16,6 @@ import java.math.BigDecimal; * @author 姚君 */ @TableName("sf_factory_info") -@KeySequence("sf_factory_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @@ -47,9 +47,9 @@ public class FactoryInfoDO extends BaseDO { */ private String shortName; /** - * 工厂代码 + * 工厂类型 */ - private String code; + private String type; /** * 工厂简介 */ @@ -104,7 +104,7 @@ public class FactoryInfoDO extends BaseDO { /** * 状态 *

- * 枚举 {@link TODO common_status 对应的类} + * 枚举 {@link CommonStatusEnum 枚举类} */ private Integer status; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factory/SfFactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factory/SfFactoryInfoMapper.java index db2539e6..358f73bc 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factory/SfFactoryInfoMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factory/SfFactoryInfoMapper.java @@ -19,7 +19,7 @@ public interface SfFactoryInfoMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(SfFactoryInfoDO::getFullName, reqVO.getFullName()) .likeIfPresent(SfFactoryInfoDO::getShortName, reqVO.getShortName()) - .eqIfPresent(SfFactoryInfoDO::getCode, reqVO.getCode()) + .eqIfPresent(SfFactoryInfoDO::getType, reqVO.getType()) .eqIfPresent(SfFactoryInfoDO::getDescription, reqVO.getDescription()) .eqIfPresent(SfFactoryInfoDO::getProvinceId, reqVO.getProvinceId()) .likeIfPresent(SfFactoryInfoDO::getProvinceName, reqVO.getProvinceName()) diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java index c69ff244..8cf342f3 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java @@ -23,7 +23,7 @@ public interface FactoryInfoMapper extends BaseMapperX { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(FactoryInfoDO::getName, reqVO.getName()) .likeIfPresent(FactoryInfoDO::getShortName, reqVO.getShortName()) - .likeIfPresent(FactoryInfoDO::getCode, reqVO.getCode()) + .likeIfPresent(FactoryInfoDO::getType, reqVO.getType()) .eqIfPresent(FactoryInfoDO::getStatus, reqVO.getStatus()) .betweenIfPresent(FactoryInfoDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(FactoryInfoDO::getSort)); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index 10930439..e3427e1a 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory. import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.ProvincesDataRespVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factoryinfo.FactoryInfoMapper; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -36,11 +37,18 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { @Resource private FactoryInfoMapper factoryInfoMapper; + @Resource + private DeptApi deptApi; + @Override public Long createFactoryInfo(FactoryInfoSaveReqVO createReqVO) { // 插入 FactoryInfoDO factoryInfo = BeanUtils.toBean(createReqVO, FactoryInfoDO.class); factoryInfoMapper.insert(factoryInfo); + + //同步插入对应 生产部的下级部门 + + // 返回 return factoryInfo.getId(); } @@ -132,5 +140,4 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { public String getWeatherCodeByFactoryId(Long factoryId, String areaCode) { return factoryInfoMapper.getWeatherCodeByFactoryId(factoryId, areaCode); } - } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/test/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImplTest.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/test/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImplTest.java index 46e482f5..d4a5faaa 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/test/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImplTest.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/test/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImplTest.java @@ -112,7 +112,7 @@ public class FactoryInfoServiceImplTest extends BaseDbUnitTest { FactoryInfoDO dbFactoryInfo = randomPojo(FactoryInfoDO.class, o -> { // 等会查询到 o.setName(null); o.setShortName(null); - o.setCode(null); + o.setType(null); o.setStatus(null); o.setCreateTime(null); }); @@ -122,7 +122,7 @@ public class FactoryInfoServiceImplTest extends BaseDbUnitTest { // 测试 shortName 不匹配 factoryInfoMapper.insert(cloneIgnoreId(dbFactoryInfo, o -> o.setShortName(null))); // 测试 code 不匹配 - factoryInfoMapper.insert(cloneIgnoreId(dbFactoryInfo, o -> o.setCode(null))); + factoryInfoMapper.insert(cloneIgnoreId(dbFactoryInfo, o -> o.setType(null))); // 测试 status 不匹配 factoryInfoMapper.insert(cloneIgnoreId(dbFactoryInfo, o -> o.setStatus(null))); // 测试 createTime 不匹配 @@ -131,7 +131,7 @@ public class FactoryInfoServiceImplTest extends BaseDbUnitTest { FactoryInfoPageReqVO reqVO = new FactoryInfoPageReqVO(); reqVO.setName(null); reqVO.setShortName(null); - reqVO.setCode(null); + reqVO.setType(null); reqVO.setStatus(null); reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); From 8bf2a96f15dcedea17fd6d8113a9b945c1230d2e Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Sat, 11 May 2024 17:53:05 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E5=B7=A5=E5=8E=82=E4=BF=A1=E6=81=AF:=20?= =?UTF-8?q?=20=20=E8=A7=84=E6=A0=BC=E7=AE=A1=E7=90=86=20=20=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E7=BA=BF=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/module/system/api/dept/DeptApi.java | 16 +++- .../system/api/dept/dto/DeptRespDTO.java | 3 + .../module/system/api/dept/DeptApiImpl.java | 33 +++++++- .../admin/dept/vo/dept/DeptRespVO.java | 3 + .../admin/dept/vo/dept/DeptSaveReqVO.java | 3 + .../system/service/dept/DeptService.java | 2 + .../system/service/dept/DeptServiceImpl.java | 6 ++ .../enums/ErrorCodeConstants.java | 7 ++ .../factoryinfo/FactoryInfoController.java | 10 +++ .../factoryinfo/vo/FactoryInfoSaveReqVO.java | 2 +- .../factoryinfo/vo/FactorySimpleRespVO.java | 20 +++++ .../admin/packageInfo/PackageController.java | 72 ++++++++++++++++ .../packageInfo/vo/PackagePageReqVO.java | 39 +++++++++ .../admin/packageInfo/vo/PackageRespVO.java | 50 +++++++++++ .../packageInfo/vo/PackageSaveReqVO.java | 35 ++++++++ .../controller/admin/size/SizeController.java | 82 +++++++++++++++++++ .../admin/size/vo/SizePageReqVO.java | 27 ++++++ .../controller/admin/size/vo/SizeRespVO.java | 27 ++++++ .../admin/size/vo/SizeSaveReqVO.java | 19 +++++ .../dataobject/factoryinfo/FactoryInfoDO.java | 8 -- .../dal/dataobject/packageInfo/PackageDO.java | 51 ++++++++++++ .../dal/dataobject/size/SizeDO.java | 32 ++++++++ .../mysql/factoryinfo/FactoryInfoMapper.java | 2 +- .../dal/mysql/packageInfo/PackageMapper.java | 20 +++++ .../dal/mysql/size/SizeMapper.java | 25 ++++++ .../factoryinfo/FactoryInfoService.java | 6 ++ .../factoryinfo/FactoryInfoServiceImpl.java | 51 ++++++++++-- .../service/packageInfo/PackageService.java | 55 +++++++++++++ .../packageInfo/PackageServiceImpl.java | 76 +++++++++++++++++ .../service/size/SizeService.java | 61 ++++++++++++++ .../service/size/SizeServiceImpl.java | 80 ++++++++++++++++++ .../mapper/factorydata/FactoryDataMapper.xml | 2 +- .../mapper/packageInfo/PackageMapper.xml | 40 +++++++++ 33 files changed, 947 insertions(+), 18 deletions(-) create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactorySimpleRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/PackageController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackagePageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/SizeController.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizePageReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeRespVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeSaveReqVO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/packageInfo/PackageDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/size/SizeDO.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/packageInfo/PackageMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/size/SizeMapper.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeService.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeServiceImpl.java create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/packageInfo/PackageMapper.xml diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java index ef3dc5cb..5e1a936a 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java @@ -49,9 +49,23 @@ public interface DeptApi { CommonResult> getDeptList(); @PostMapping(PREFIX + "/create") - @Operation(summary = "获取所有部门信息") + @Operation(summary = "创建部门") CommonResult createDept(@RequestBody DeptRespDTO deptRespDTO); + @PostMapping(PREFIX + "/update") + @Operation(summary = "修改部门信息") + void updateDept(@RequestBody DeptRespDTO deptRespDTO); + + @PostMapping(PREFIX + "/delete") + @Operation(summary = "删除部门信息") + @Parameter(name = "factoryId", description = "工厂编号", example = "100001", required = true) + void deleteDept(@RequestParam("factoryId") Long factoryId); + + @PostMapping(PREFIX + "/getByFactoryId") + @Operation(summary = "根据工厂ID获得部门信息") + @Parameter(name = "factoryId", description = "工厂编号", example = "100001", required = true) + CommonResult getDeptByFactoryId(@RequestParam("factoryId") Long factoryId); + /** * 获得指定编号的部门 Map * diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/dto/DeptRespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/dto/DeptRespDTO.java index 27ad7fd4..30ea8ff6 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/dto/DeptRespDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/dto/DeptRespDTO.java @@ -22,6 +22,9 @@ public class DeptRespDTO { @Schema(description = "负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Long leaderUserId; + @Schema(description = "工厂编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long factoryId; + @Schema(description = "部门标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private String flag; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java index 89353dfd..8f3dfef1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java @@ -67,7 +67,38 @@ public class DeptApiImpl implements DeptApi { DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptRespDTO, DeptSaveReqVO.class); - return null; + return success(deptService.createDept(deptSaveReqVO)); } + @Override + public void updateDept(DeptRespDTO deptRespDTO) { + + DeptDO deptDO = deptService.getDeptByFactoryId(deptRespDTO.getFactoryId()); + + if (deptDO != null) { + + DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptDO, DeptSaveReqVO.class); + deptSaveReqVO.setLeaderUserId(deptRespDTO.getLeaderUserId()); + deptSaveReqVO.setName(deptRespDTO.getName()); + + deptService.updateDept(deptSaveReqVO); + } + } + + @Override + public void deleteDept(Long factoryId) { + + DeptDO deptDO = deptService.getDeptByFactoryId(factoryId); + if (deptDO != null) { + + deptService.deleteDept(deptDO.getId()); + } + } + + @Override + public CommonResult getDeptByFactoryId(Long factoryId) { + + DeptDO deptDO = deptService.getDeptByFactoryId(factoryId); + return success(BeanUtils.toBean(deptDO, DeptRespDTO.class)); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java index 777cb75d..45e66e83 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java @@ -24,6 +24,9 @@ public class DeptRespVO { @Schema(description = "负责人的用户编号", example = "2048") private Long leaderUserId; + @Schema(description = "工厂编号", example = "2048") + private Long factoryId; + @Schema(description = "联系电话", example = "15601691000") private String phone; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java index fb9f2984..a5859c0b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java @@ -32,6 +32,9 @@ public class DeptSaveReqVO { @Schema(description = "负责人的用户编号", example = "2048") private Long leaderUserId; + @Schema(description = "工厂编号", example = "1") + private Long factoryId; + @Schema(description = "联系电话", example = "15601691000") @Size(max = 11, message = "联系电话长度不能超过11个字符") private String phone; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java index 7fdbc5d9..a229813d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java @@ -103,4 +103,6 @@ public interface DeptService { List getDeptByLeaderId(Long leaderUserId); List getDeptTree(); + + DeptDO getDeptByFactoryId(Long factoryId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java index 58d40585..a3e429ee 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java @@ -278,4 +278,10 @@ public class DeptServiceImpl implements DeptService { return deptMapper.selectTree(); } + + @Override + public DeptDO getDeptByFactoryId(Long factoryId) { + + return deptMapper.selectOne(DeptDO::getFactoryId, factoryId); + } } diff --git a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java index 4c242517..aa44f4fc 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java +++ b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/enums/ErrorCodeConstants.java @@ -12,4 +12,11 @@ public interface ErrorCodeConstants { ErrorCode FACTORY_INFO_NOT_EXISTS = new ErrorCode(1_000_000_001, "工厂信息不存在"); ErrorCode CAMERA_DEVICE_NOT_EXISTS = new ErrorCode(1_000_000_002, "监控摄像头不存在"); + ErrorCode FACTOYRY_EXISTS_STAFF = new ErrorCode(1_000_000_003, "工厂下存在员工,不能删除工厂"); + + ErrorCode SIZE_NOT_EXISTS = new ErrorCode(1_000_002_001, "规格不存在"); + + ErrorCode PACKAGE_NOT_EXISTS = new ErrorCode(1_000_001_001, "打包线信息不存在"); + + } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java index cb718dab..3a2f4eb0 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/FactoryInfoController.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo.FactorySimpleRespVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService; import io.swagger.v3.oas.annotations.Operation; @@ -69,6 +70,15 @@ public class FactoryInfoController { return success(factoryInfo); } + @GetMapping("/simple-list") + @Operation(summary = "获得工厂列表 | 用于前端下拉框") + @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')") + public CommonResult> getFactoryList() { + + List factoryInfo = factoryInfoService.getFactoryListByType(); + return success(BeanUtils.toBean(factoryInfo, FactorySimpleRespVO.class)); + } + @GetMapping("/page") @Operation(summary = "获得工厂信息分页") @PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java index 08251bdf..3862a101 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactoryInfoSaveReqVO.java @@ -39,7 +39,7 @@ public class FactoryInfoSaveReqVO { @Schema(description = "区县id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22761") @NotNull(message = "区县id不能为空") - private Long districtId; + private Long adCode; @Schema(description = "省名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "江西省") @NotEmpty(message = "省名称不能为空") diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactorySimpleRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactorySimpleRespVO.java new file mode 100644 index 00000000..7a7f4b40 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factoryinfo/vo/FactorySimpleRespVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.factoryinfo.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 工厂信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class FactorySimpleRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "28794") + private Long id; + + @Schema(description = "工厂名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "江西省南昌市第一工厂") + private String name; + + @Schema(description = "工厂简称", requiredMode = Schema.RequiredMode.REQUIRED, example = "第一工厂") + private String shortName; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/PackageController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/PackageController.java new file mode 100644 index 00000000..46c8fb35 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/PackageController.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackagePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packageInfo.PackageDO; +import cn.iocoder.yudao.module.smartfactory.service.packageInfo.PackageService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 打包线") +@RestController +@RequestMapping("/smartfactory/package") +@Validated +public class PackageController { + + @Resource + private PackageService packageService; + + @PostMapping("/create") + @Operation(summary = "创建打包线") + @PreAuthorize("@ss.hasPermission('smartfactory:package:create')") + public CommonResult createPackage(@Valid @RequestBody PackageSaveReqVO createReqVO) { + return success(packageService.createPackage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新打包线") + @PreAuthorize("@ss.hasPermission('smartfactory:package:update')") + public CommonResult updatePackage(@Valid @RequestBody PackageSaveReqVO updateReqVO) { + packageService.updatePackage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除打包线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:package:delete')") + public CommonResult deletePackage(@RequestParam("id") Long id) { + packageService.deletePackage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得打包线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:package:query')") + public CommonResult getPackage(@RequestParam("id") Long id) { + PackageDO packageDO = packageService.getPackage(id); + return success(BeanUtils.toBean(packageDO, PackageRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得打包线分页") + @PreAuthorize("@ss.hasPermission('smartfactory:package:query')") + public CommonResult> getPackagePage(@Valid PackagePageReqVO pageReqVO) { + + return success(packageService.getPackagePage(pageReqVO)); + } +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackagePageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackagePageReqVO.java new file mode 100644 index 00000000..a347ed72 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackagePageReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo; + +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.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 打包线分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PackagePageReqVO extends PageParam { + + @Schema(description = "工厂id", example = "10000078") + private Long factoryId; + + @Schema(description = "规格id", example = "100") + private Long sizeId; + + @Schema(description = "规格片数", example = "3") + private Integer sizePieces; + + @Schema(description = "打包线名称", example = "1线") + private String name; + + @Schema(description = "设备名称", example = "芋艿") + private String deviceName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageRespVO.java new file mode 100644 index 00000000..15732d5f --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageRespVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo; + +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.time.LocalDateTime; + +@Schema(description = "管理后台 - 打包线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PackageRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000078") + @ExcelProperty("工厂id") + private Long factoryId; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "新景象") + @ExcelProperty("工厂名称") + private Long factoryName; + + @Schema(description = "规格id", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @ExcelProperty("规格id") + private Long sizeId; + + @Schema(description = "规格名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "300*300") + @ExcelProperty("规格名称") + private Long sizeName; + + @Schema(description = "规格片数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3") + @ExcelProperty("规格片数") + private Integer sizePieces; + + @Schema(description = "打包线名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1线") + @ExcelProperty("打包线名称") + private String name; + + @Schema(description = "设备名称", example = "芋艿") + @ExcelProperty("设备名称") + private String deviceName; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageSaveReqVO.java new file mode 100644 index 00000000..46396797 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/packageInfo/vo/PackageSaveReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 打包线新增/修改 Request VO") +@Data +public class PackageSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") + private Long id; + + @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "10000078") + @NotNull(message = "工厂id不能为空") + private Long factoryId; + + @Schema(description = "规格id", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") + @NotNull(message = "规格id不能为空") + private Long sizeId; + + @Schema(description = "规格片数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3") + @NotNull(message = "规格片数不能为空") + private Integer sizePieces; + + @Schema(description = "打包线名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1线") + @NotEmpty(message = "打包线名称不能为空") + private String name; + + @Schema(description = "设备名称", example = "芋艿") + private String deviceName; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/SizeController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/SizeController.java new file mode 100644 index 00000000..0345e542 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/SizeController.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.size; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizeRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizeSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.size.SizeDO; +import cn.iocoder.yudao.module.smartfactory.service.size.SizeService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 规格") +@RestController +@RequestMapping("/smartfactory/size") +@Validated +public class SizeController { + + @Resource + private SizeService sizeService; + + @PostMapping("/create") + @Operation(summary = "创建规格") + @PreAuthorize("@ss.hasPermission('smartfactory:size:create')") + public CommonResult createSize(@Valid @RequestBody SizeSaveReqVO createReqVO) { + return success(sizeService.createSize(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新规格") + @PreAuthorize("@ss.hasPermission('smartfactory:size:update')") + public CommonResult updateSize(@Valid @RequestBody SizeSaveReqVO updateReqVO) { + sizeService.updateSize(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除规格") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('smartfactory:size:delete')") + public CommonResult deleteSize(@RequestParam("id") Long id) { + sizeService.deleteSize(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得规格") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('smartfactory:size:query')") + public CommonResult getSize(@RequestParam("id") Long id) { + SizeDO size = sizeService.getSize(id); + return success(BeanUtils.toBean(size, SizeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得规格分页") + @PreAuthorize("@ss.hasPermission('smartfactory:size:query')") + public CommonResult> getSizePage(@Valid SizePageReqVO pageReqVO) { + PageResult pageResult = sizeService.getSizePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SizeRespVO.class)); + } + + @GetMapping("/simple-list") + @Operation(summary = "获得规格列表 | 用于前端下拉框") + @PreAuthorize("@ss.hasPermission('smartfactory:size:query')") + public CommonResult> getSize() { + + List sizes = sizeService.getListSize(); + return success(BeanUtils.toBean(sizes, SizeRespVO.class)); + } +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizePageReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizePageReqVO.java new file mode 100644 index 00000000..564cc724 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizePageReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo; + +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.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 规格分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SizePageReqVO extends PageParam { + + @Schema(description = "规格名称", example = "300*300") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeRespVO.java new file mode 100644 index 00000000..6a4a9a47 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeRespVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo; + +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.time.LocalDateTime; + +@Schema(description = "管理后台 - 规格 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SizeRespVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("主键id") + private Long id; + + @Schema(description = "规格名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "300*300") + @ExcelProperty("规格名称") + private String name; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeSaveReqVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeSaveReqVO.java new file mode 100644 index 00000000..28d6e47a --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/size/vo/SizeSaveReqVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@Schema(description = "管理后台 - 规格新增/修改 Request VO") +@Data +public class SizeSaveReqVO { + + @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long id; + + @Schema(description = "规格名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "300*300") + @NotEmpty(message = "规格名称不能为空") + private String name; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java index b9346fd6..05c3a954 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/factoryinfo/FactoryInfoDO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 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; @@ -108,11 +107,4 @@ public class FactoryInfoDO extends BaseDO { */ private Integer status; - public void setId(Long id) { - //由于 直接在数据库中改了 id 所以这里要加一层判断 - if (id == 1L){ - id = 10000078L; - } - this.id = id; - } } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/packageInfo/PackageDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/packageInfo/PackageDO.java new file mode 100644 index 00000000..1e5a2dea --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/packageInfo/PackageDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.packageInfo; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 打包线 DO + * + * @author 符溶馨 + */ +@TableName("sf_package") +@KeySequence("sf_package_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PackageDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 工厂id + */ + private Long factoryId; + /** + * 规格id + */ + private Long sizeId; + /** + * 规格片数 + */ + private Integer sizePieces; + /** + * 打包线名称 + */ + private String name; + /** + * 设备名称 + */ + private String deviceName; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/size/SizeDO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/size/SizeDO.java new file mode 100644 index 00000000..633b3396 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/dataobject/size/SizeDO.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.smartfactory.dal.dataobject.size; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 规格 DO + * + * @author 符溶馨 + */ +@TableName("sf_size") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SizeDO extends BaseDO { + + /** + * 主键id + */ + @TableId + private Long id; + /** + * 规格名称 + */ + private String name; + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java index 8cf342f3..12870ac0 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factoryinfo/FactoryInfoMapper.java @@ -26,7 +26,7 @@ public interface FactoryInfoMapper extends BaseMapperX { .likeIfPresent(FactoryInfoDO::getType, reqVO.getType()) .eqIfPresent(FactoryInfoDO::getStatus, reqVO.getStatus()) .betweenIfPresent(FactoryInfoDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(FactoryInfoDO::getSort)); + .orderByAsc(FactoryInfoDO::getSort)); } /** diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/packageInfo/PackageMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/packageInfo/PackageMapper.java new file mode 100644 index 00000000..3d11edac --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/packageInfo/PackageMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.packageInfo; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackagePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageRespVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packageInfo.PackageDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 打包线 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface PackageMapper extends BaseMapperX { + + IPage selectPackagePage(@Param("page") IPage mpPage, @Param("reqVO") PackagePageReqVO pageReqVO); +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/size/SizeMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/size/SizeMapper.java new file mode 100644 index 00000000..e01772b7 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/size/SizeMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.smartfactory.dal.mysql.size; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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.size.vo.SizePageReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.size.SizeDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 规格 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface SizeMapper extends BaseMapperX { + + default PageResult selectPage(SizePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(SizeDO::getName, reqVO.getName()) + .betweenIfPresent(SizeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SizeDO::getId)); + } + +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java index c3a53f15..729e7e19 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java @@ -47,6 +47,12 @@ public interface FactoryInfoService { */ FactoryInfoDO getFactoryInfo(Long id); + /** + * 获得类型为工厂的工厂信息列表 + * @return 工厂列表 + */ + List getFactoryListByType(); + /** * 获得工厂信息分页 * diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index e3427e1a..7edc57ac 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; @@ -12,18 +14,19 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory. import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factoryinfo.FactoryInfoMapper; 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 cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACTORY_INFO_NOT_EXISTS; +import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.FACTOYRY_EXISTS_STAFF; /** * 工厂信息 Service 实现类 @@ -40,6 +43,9 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { @Resource private DeptApi deptApi; + @Resource + private AdminUserApi userApi; + @Override public Long createFactoryInfo(FactoryInfoSaveReqVO createReqVO) { // 插入 @@ -47,7 +53,13 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { factoryInfoMapper.insert(factoryInfo); //同步插入对应 生产部的下级部门 - + DeptRespDTO deptRespDTO = new DeptRespDTO(); + deptRespDTO.setFactoryId(factoryInfo.getId()); + deptRespDTO.setName(createReqVO.getShortName()); + deptRespDTO.setParentId(130L); //这里设置上级部门为 生产部 + deptRespDTO.setLeaderUserId(createReqVO.getLeaderUserId()); + deptRespDTO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + deptApi.createDept(deptRespDTO); // 返回 return factoryInfo.getId(); @@ -60,14 +72,36 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { // 更新 FactoryInfoDO updateObj = BeanUtils.toBean(updateReqVO, FactoryInfoDO.class); factoryInfoMapper.updateById(updateObj); + + //同步更新 部门信息 + DeptRespDTO deptRespDTO = new DeptRespDTO(); + deptRespDTO.setName(updateReqVO.getShortName()); + deptRespDTO.setLeaderUserId(updateReqVO.getLeaderUserId()); + deptRespDTO.setFactoryId(updateReqVO.getId()); + deptApi.updateDept(deptRespDTO); } @Override public void deleteFactoryInfo(Long id) { // 校验存在 validateFactoryInfoExists(id); + + //校验工厂下是否存在 员工 + DeptRespDTO deptRespDTO = deptApi.getDeptByFactoryId(id).getCheckedData(); + + List deptId = new ArrayList<>(); + deptId.add(deptRespDTO.getId()); + List userRespDTOS = userApi.getUserListByDeptIds(deptId).getCheckedData(); + + if (userRespDTOS != null && !userRespDTOS.isEmpty()) { + throw exception(FACTOYRY_EXISTS_STAFF); + } + // 删除 factoryInfoMapper.deleteById(id); + + //同步删除部门 + deptApi.deleteDept(id); } private void validateFactoryInfoExists(Long id) { @@ -78,9 +112,16 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { @Override public FactoryInfoDO getFactoryInfo(Long id) { + return factoryInfoMapper.selectById(id); } + @Override + public List getFactoryListByType() { + + return factoryInfoMapper.selectList(FactoryInfoDO::getType, 3); + } + @Override public PageResult getFactoryInfoPage(FactoryInfoPageReqVO pageReqVO) { return factoryInfoMapper.selectPage(pageReqVO); diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageService.java new file mode 100644 index 00000000..de237f36 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.smartfactory.service.packageInfo; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackagePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packageInfo.PackageDO; + +import javax.validation.Valid; + +/** + * 打包线 Service 接口 + * + * @author 符溶馨 + */ +public interface PackageService { + + /** + * 创建打包线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPackage(@Valid PackageSaveReqVO createReqVO); + + /** + * 更新打包线 + * + * @param updateReqVO 更新信息 + */ + void updatePackage(@Valid PackageSaveReqVO updateReqVO); + + /** + * 删除打包线 + * + * @param id 编号 + */ + void deletePackage(Long id); + + /** + * 获得打包线 + * + * @param id 编号 + * @return 打包线 + */ + PackageDO getPackage(Long id); + + /** + * 获得打包线分页 + * + * @param pageReqVO 分页查询 + * @return 打包线分页 + */ + PageResult getPackagePage(PackagePageReqVO pageReqVO); +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageServiceImpl.java new file mode 100644 index 00000000..2aedeef0 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/packageInfo/PackageServiceImpl.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.smartfactory.service.packageInfo; + +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.packageInfo.vo.PackagePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageRespVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packageInfo.PackageDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.packageInfo.PackageMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.PACKAGE_NOT_EXISTS; + +/** + * 打包线 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class PackageServiceImpl implements PackageService { + + @Resource + private PackageMapper packageMapper; + + @Override + public Long createPackage(PackageSaveReqVO createReqVO) { + // 插入 + PackageDO packDO = BeanUtils.toBean(createReqVO, PackageDO.class); + packageMapper.insert(packDO); + // 返回 + return packDO.getId(); + } + + @Override + public void updatePackage(PackageSaveReqVO updateReqVO) { + // 校验存在 + validatePackageExists(updateReqVO.getId()); + // 更新 + PackageDO updateObj = BeanUtils.toBean(updateReqVO, PackageDO.class); + packageMapper.updateById(updateObj); + } + + @Override + public void deletePackage(Long id) { + // 校验存在 + validatePackageExists(id); + // 删除 + packageMapper.deleteById(id); + } + + private void validatePackageExists(Long id) { + if (packageMapper.selectById(id) == null) { + throw exception(PACKAGE_NOT_EXISTS); + } + } + + @Override + public PackageDO getPackage(Long id) { + return packageMapper.selectById(id); + } + + @Override + public PageResult getPackagePage(PackagePageReqVO pageReqVO) { + + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); + IPage page = packageMapper.selectPackagePage(mpPage, pageReqVO); + return new PageResult<>(page.getRecords(), page.getTotal()); + } +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeService.java new file mode 100644 index 00000000..211fa4c8 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeService.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.smartfactory.service.size; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizeSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.size.SizeDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 规格 Service 接口 + * + * @author 符溶馨 + */ +public interface SizeService { + + /** + * 创建规格 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSize(@Valid SizeSaveReqVO createReqVO); + + /** + * 更新规格 + * + * @param updateReqVO 更新信息 + */ + void updateSize(@Valid SizeSaveReqVO updateReqVO); + + /** + * 删除规格 + * + * @param id 编号 + */ + void deleteSize(Long id); + + /** + * 获得规格 + * + * @param id 编号 + * @return 规格 + */ + SizeDO getSize(Long id); + + /** + * 获得规格分页 + * + * @param pageReqVO 分页查询 + * @return 规格分页 + */ + PageResult getSizePage(SizePageReqVO pageReqVO); + + /** + * 获得规格列表 + * @return 规格列表 + */ + List getListSize(); +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeServiceImpl.java new file mode 100644 index 00000000..b93b67e6 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/size/SizeServiceImpl.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.smartfactory.service.size; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizePageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.size.vo.SizeSaveReqVO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.size.SizeDO; +import cn.iocoder.yudao.module.smartfactory.dal.mysql.size.SizeMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.smartfactory.enums.ErrorCodeConstants.SIZE_NOT_EXISTS; + +/** + * 规格 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class SizeServiceImpl implements SizeService { + + @Resource + private SizeMapper sizeMapper; + + @Override + public Long createSize(SizeSaveReqVO createReqVO) { + // 插入 + SizeDO size = BeanUtils.toBean(createReqVO, SizeDO.class); + sizeMapper.insert(size); + // 返回 + return size.getId(); + } + + @Override + public void updateSize(SizeSaveReqVO updateReqVO) { + // 校验存在 + validateSizeExists(updateReqVO.getId()); + // 更新 + SizeDO updateObj = BeanUtils.toBean(updateReqVO, SizeDO.class); + sizeMapper.updateById(updateObj); + } + + @Override + public void deleteSize(Long id) { + // 校验存在 + validateSizeExists(id); + // 删除 + sizeMapper.deleteById(id); + } + + private void validateSizeExists(Long id) { + if (sizeMapper.selectById(id) == null) { + throw exception(SIZE_NOT_EXISTS); + } + } + + @Override + public SizeDO getSize(Long id) { + + return sizeMapper.selectById(id); + } + + @Override + public PageResult getSizePage(SizePageReqVO pageReqVO) { + + return sizeMapper.selectPage(pageReqVO); + } + + @Override + public List getListSize() { + + return sizeMapper.selectList(); + } +} \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml index 5ab8182c..735bdb24 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml @@ -1,6 +1,6 @@ - + + + + \ No newline at end of file From deb11f1481ebda17e8f668ecbd1ba1fb4350b9de Mon Sep 17 00:00:00 2001 From: Echo <4759156@qq.com> Date: Tue, 14 May 2024 15:26:14 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E9=85=8D?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=A8=8B=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81=20=E3=80=90=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E6=B5=81=E7=A8=8B=E5=88=86=E9=85=8D=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=A7=84=E5=88=99=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/bpm/enums/ErrorCodeConstants.java | 1 + .../definition/BpmTaskRuleScriptEnum.java | 4 +- .../admin/oa/BpmOAWorkTaskController.java | 73 +++++++++++++ .../oa/vo/worktask/BpmOAWorkTaskReqVO.java | 59 ++++++++++ .../oa/vo/worktask/BpmOAWorkTaskRespVO.java | 76 +++++++++++++ .../bpm/convert/oa/BpmOAWorkTaskConvert.java | 30 ++++++ .../dal/dataobject/oa/BpmOAWorkTaskDO.java | 99 +++++++++++++++++ .../bpm/dal/mysql/oa/BpmOAWorkTaskMapper.java | 20 ++++ .../BpmTaskWorkTaskReceiverUserScript.java | 55 ++++++++++ .../bpm/service/oa/BpmOAWorkTaskService.java | 58 ++++++++++ .../service/oa/BpmOAWorkTaskServiceImpl.java | 102 ++++++++++++++++++ .../listener/BpmOAWorkTaskResultListener.java | 32 ++++++ 12 files changed, 607 insertions(+), 2 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAWorkTaskController.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskRespVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAWorkTaskConvert.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAWorkTaskDO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAWorkTaskMapper.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskWorkTaskReceiverUserScript.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskService.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskServiceImpl.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAWorkTaskResultListener.java diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java index f983d7ce..986a7790 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java @@ -32,6 +32,7 @@ public interface ErrorCodeConstants { ErrorCode OA_SECOND_NOT_EXISTS = new ErrorCode(1_009_001_108, "借调申请不存在"); ErrorCode OA_IMPREST_NOT_EXISTS = new ErrorCode(1_009_001_109, "备用金申请不存在"); ErrorCode OA_INCENTIVE_NOT_EXISTS = new ErrorCode(1_009_001_110, "奖惩申请不存在"); + ErrorCode OA_WORK_TASK_NOT_EXISTS = new ErrorCode(1_009_001_110, "工作任务不存在"); // ========== 流程模型 1-009-002-000 ========== ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java index 997f006d..251635ea 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/definition/BpmTaskRuleScriptEnum.java @@ -19,8 +19,8 @@ public enum BpmTaskRuleScriptEnum { LEADER_X2(21L, "流程发起人的二级领导"), LEADER_X3(22L, "流程发起人的三级领导"), LEADER_X4(23L, "审批人的一级领导"), - LEADER_X5(24L, "调岗部门领导"); - + LEADER_X5(24L, "调岗部门领导"), + LEADER_X6(25L, "分配任务的责任人"); /** * 脚本编号 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAWorkTaskController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAWorkTaskController.java new file mode 100644 index 00000000..fef4e633 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAWorkTaskController.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskRespVO; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOALeaveConvert; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAWorkTaskConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOALeaveService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAWorkTaskService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * OA 任务分配 Controller + * + * @author 姚君 + + */ +@Tag(name = "管理后台 - OA 任务分配") +@RestController +@RequestMapping("/bpm/oa/worktask") +@Validated +public class BpmOAWorkTaskController { + + @Resource + private BpmOAWorkTaskService workTaskService; + + @PostMapping("/create") + @Operation(summary = "创建任务分配") + public CommonResult createLeave(@Valid @RequestBody BpmOAWorkTaskReqVO createReqVO) { + return success(workTaskService.createWorkTask(getLoginUserId(), createReqVO)); + } + + @GetMapping("/get") + @Operation(summary = "获得任务分配") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getLeave(@RequestParam("id") Long id) { + BpmOAWorkTaskDO workTask = workTaskService.getWorkTask(id); + return success(BpmOAWorkTaskConvert.INSTANCE.convert(workTask)); + } + + @PostMapping("/add") + @Operation(summary = "添加任务跟踪数据【全量传】") + public CommonResult addTrackInfo(@RequestBody List trackInfos) { + workTaskService.addTrackInfo(getLoginUserId(), trackInfos) ; + return success(true); + } + + @PostMapping("/update") + @Operation(summary = "更新工作任务的状态和进度") + public CommonResult updateWorkTask(@RequestBody BpmOAWorkTaskReqVO createReqVO) { + workTaskService.updateWorkTask(getLoginUserId(), createReqVO) ; + return success(true); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskReqVO.java new file mode 100644 index 00000000..73eb14e5 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskReqVO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 工作任务 创建 Request VO + * + * @author yj + */ +@Schema(description = "管理后台 - 工作任务分配 Request VO") +@Data +@EqualsAndHashCode() +@ToString(callSuper = true) +public class BpmOAWorkTaskReqVO { + + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务名称不能为空") + private String taskName; + + @Schema(description = "任务内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务内容不能为空") + private String taskContent; + + @Schema(description = "任务的开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + + @Schema(description = "任务的截止时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; + + @Schema(description = "责任人ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "责任人不能为空") + private Long userId; + + @Schema(description = "任务进度百分比", requiredMode = Schema.RequiredMode.REQUIRED) + private Long schedule ; + + @Schema(description = "工作任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1:待启动,2:进行中,3.已完成,4.延期, 5.搁置") + private Integer workTaskStatus ; + + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) + private List fileItems; +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskRespVO.java new file mode 100644 index 00000000..9052b3e1 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/worktask/BpmOAWorkTaskRespVO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.ReimbursementDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +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; + +@Schema(description = "管理后台 - 报销响应数据 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAWorkTaskRespVO extends BpmOABaseRespVO { + + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务名称不能为空") + private String taskName; + + @Schema(description = "任务内容", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务内容不能为空") + private String taskContent; + + @Schema(description = "任务的开始时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime startTime; + + @Schema(description = "任务的截止时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime endTime; + + @Schema(description = "责任人名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "责任名称不能为空") + private Long userName; + + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "部门名称不能为空") + private Long deptName; + + @Schema(description = "任务进度百分比", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "任务进度百分比") + private Long schedule ; + + @Schema(description = "工作任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1:待启动,2:进行中,3.已完成,4.延期, 5.搁置") + @NotNull(message = "工作任务状态") + private Integer workTaskStatus ; + + @Schema(description = "跟踪内容集合") + private List trackInfos ; + + @Schema(description = "任务跟踪信息") + @Data + public static class TrackInfo { + + @Schema(description = "跟踪人", example = "126") + private Long TrackUserId; + + @Schema(description = "跟踪内容", example = "11111112122222") + private String TrackContent; + + @Schema(description = "跟踪内容提交时间", example = "2024-05-12 12:00:44") + private LocalDateTime trackTime; + } + + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAWorkTaskConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAWorkTaskConvert.java new file mode 100644 index 00000000..c99a1193 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAWorkTaskConvert.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 分配任务 Convert + * + * @author 芋艿 + */ +@Mapper +public interface BpmOAWorkTaskConvert { + + BpmOAWorkTaskConvert INSTANCE = Mappers.getMapper(BpmOAWorkTaskConvert.class); + + BpmOAWorkTaskDO convert(BpmOAWorkTaskReqVO bean); + + BpmOAWorkTaskRespVO convert(BpmOAWorkTaskDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAWorkTaskDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAWorkTaskDO.java new file mode 100644 index 00000000..26cf94a0 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAWorkTaskDO.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * OA 分配任务 DO + * + * @author 姚君 + + */ +@TableName(value ="bpm_oa_work_task", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOAWorkTaskDO extends BaseDO { + + /** + * 工作任务表单主键 + */ + @TableId + private Long id; + + /** + * 发起人 + */ + private Long fromUserId; + + /** + * 接受人 + */ + private Long receiverUserId; + + /** + * 任务名称 + */ + private String taskName; + /** + * 任务内容 + */ + private String taskContent; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 截止时间 + */ + private LocalDateTime endTime; + /** + * 任务进度 百分比 + */ + private Long schedule; + /** + * 任务的状态 任务自身的状态 1:待启动,2:进行中,3.已完成,4.延期, 5.搁置 + */ + private Integer workTaskStatus ; + + /** + * 任务分配BPM流程的结果 + * + * 枚举 {@link BpmProcessInstanceResultEnum} + * 考虑到简单,所以直接复用了 BpmProcessInstanceResultEnum 枚举,也可以自己定义一个枚举哈 + */ + private Integer result; + + /** + * 对应的流程编号 + * + * 关联 ProcessInstance 的 id 属性 + */ + private String processInstanceId; + + /** + * 附件基本信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fileItems ; + + /** + * 任务跟踪信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List trackInfos ; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAWorkTaskMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAWorkTaskMapper.java new file mode 100644 index 00000000..8bd4f0e1 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAWorkTaskMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.oa; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 分配任务 Mapper + * + * @author yj + + */ +@Mapper +public interface BpmOAWorkTaskMapper extends BaseMapperX { + + default BpmOAWorkTaskDO selectByProcessInstanceId(String processInstanceId) { + return selectOne(BpmOAWorkTaskDO::getProcessInstanceId, processInstanceId); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskWorkTaskReceiverUserScript.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskWorkTaskReceiverUserScript.java new file mode 100644 index 00000000..6b1d8191 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/behavior/script/impl/BpmTaskWorkTaskReceiverUserScript.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.SetUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAWorkTaskMapper; +import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum; +import cn.iocoder.yudao.module.bpm.framework.flowable.core.behavior.script.BpmTaskAssignScript; +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.runtime.ProcessInstance; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +import static java.util.Collections.emptySet; + +@Component +public class BpmTaskWorkTaskReceiverUserScript implements BpmTaskAssignScript { + + @Resource + private BpmOAWorkTaskMapper bpmOAWorkTaskMapper; + + @Resource + @Lazy // 解决循环依赖 + private BpmProcessInstanceService bpmProcessInstanceService; + + @Resource + @Lazy // 解决循环依赖 + private BpmTaskService bpmTaskService ; + @Override + public Set calculateTaskCandidateUsers(DelegateExecution execution) { + + // 获得发起人 + ProcessInstance processInstance = bpmProcessInstanceService.getProcessInstance(execution.getProcessInstanceId()); + List bpmTaskRespVOs = bpmTaskService.getTaskListByProcessInstanceId(processInstance.getProcessInstanceId()); + if (CollUtil.isEmpty(bpmTaskRespVOs)) { + return emptySet(); + } + + //根据流程实例ID 取到分配工作的流程表单 + BpmOAWorkTaskDO workTask = bpmOAWorkTaskMapper.selectByProcessInstanceId(processInstance.getProcessInstanceId()); + return SetUtils.asSet(workTask.getReceiverUserId()); + } + + @Override + public BpmTaskRuleScriptEnum getEnum() { + return BpmTaskRuleScriptEnum.LEADER_X6; + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskService.java new file mode 100644 index 00000000..dab1fcd3 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeaveCreateReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.leave.BpmOALeavePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 任务分配 Service 接口 + * + * @author jason + + */ +public interface BpmOAWorkTaskService { + + /** + * 创建工作任务 + * + * @param userId 用户编号 + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createWorkTask(Long userId, @Valid BpmOAWorkTaskReqVO createReqVO); + + /** + * 更新工作任务的状态 + * + * @param id 编号 + * @param result 结果 + */ + void updateWorkTaskResult(Long id, Integer result); + + /** + * 获得工作任务详情 + * + * @param id 编号 + * @return 请假申请 + */ + BpmOAWorkTaskDO getWorkTask(Long id); + + /** + * 更新 工作跟踪日志数据 + * 因为是所有数据是存储在一个字段,所以是全量更新 + * @param id + * @param trackInfos + */ + void addTrackInfo(Long id, List trackInfos) ; + + void updateWorkTask( Long id, BpmOAWorkTaskReqVO createReqVO) ; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskServiceImpl.java new file mode 100644 index 00000000..1e373239 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAWorkTaskServiceImpl.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.worktask.BpmOAWorkTaskRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAWorkTaskConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAWorkTaskDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAWorkTaskMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.OA_WORK_TASK_NOT_EXISTS; + +/** + * OA 请假申请 Service 实现类 + * + * @author jason + + */ +@Service +@Validated +public class BpmOAWorkTaskServiceImpl extends BpmOABaseService implements BpmOAWorkTaskService { + + /** + * OA 请假对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_work_task"; + + @Resource + private BpmOAWorkTaskMapper workTaskMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createWorkTask(Long userId, BpmOAWorkTaskReqVO createReqVO) { + BpmOAWorkTaskDO workTask = BpmOAWorkTaskConvert.INSTANCE.convert(createReqVO) + .setFromUserId(userId) + .setWorkTaskStatus(1) //默认待启动状态 + .setReceiverUserId(createReqVO.getUserId()) + .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); + workTaskMapper.insert(workTask); + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(workTask.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 请假单中 + workTaskMapper.updateById(new BpmOAWorkTaskDO().setId(workTask.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems() ; + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + } + return workTask.getId(); + } + + @Override + public void updateWorkTaskResult(Long id, Integer result) { + validateLeaveExists(id); + //bpm流程设置成已完成,需要将任务自生的状态设置成已完成 + workTaskMapper.updateById(new BpmOAWorkTaskDO().setId(id).setResult(result).setWorkTaskStatus(3)); + } + + private void validateLeaveExists(Long id) { + if (workTaskMapper.selectById(id) == null) { + throw exception(OA_WORK_TASK_NOT_EXISTS); + } + } + + @Override + public BpmOAWorkTaskDO getWorkTask(Long id) { + return workTaskMapper.selectById(id); + } + + @Override + public void addTrackInfo(Long id, List trackInfos) { + validateLeaveExists(id); + workTaskMapper.updateById(new BpmOAWorkTaskDO().setId(id).setTrackInfos(trackInfos)); + } + + @Override + public void updateWorkTask(Long id, BpmOAWorkTaskReqVO createReqVO) { + validateLeaveExists(id); + //更新任务进度 和 任务状态 + workTaskMapper.updateById(new BpmOAWorkTaskDO().setId(id).setWorkTaskStatus(createReqVO.getWorkTaskStatus()).setSchedule(createReqVO.getSchedule())); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAWorkTaskResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAWorkTaskResultListener.java new file mode 100644 index 00000000..d211c71e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAWorkTaskResultListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAWorkTaskService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAWorkTaskServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 分配工作 的结果的监听器实现类 + * + * @author 姚君 + */ +@Component +public class BpmOAWorkTaskResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAWorkTaskService workTaskService; + + @Override + protected String getProcessDefinitionKey() { + + return BpmOAWorkTaskServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + workTaskService.updateWorkTaskResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +} From e4b9d9c6ac4439c40cb1d2a07b907d0a4791e047 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Tue, 21 May 2024 14:39:58 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8F=90=E9=86=92=E5=AE=A1=E6=89=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/BpmProcessInstanceController.java | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java index def01287..e8c6b5ee 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java @@ -6,17 +6,24 @@ import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.print.BpmProcessInstancePrintDataReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.print.BpmProcessInstancePrintDataRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; +import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO; +import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert; +import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; - import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -31,6 +38,15 @@ public class BpmProcessInstanceController { @Resource private BpmProcessInstanceService processInstanceService; + @Resource + private BpmTaskService bpmTaskService; + + @Resource + private AdminUserApi adminUserApi; + + @Resource + private BpmMessageService messageService; + @GetMapping("/my-page") @Operation(summary = "获得我的实例分页列表", description = "在【我的流程】菜单中,进行调用") @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") @@ -57,6 +73,28 @@ public class BpmProcessInstanceController { return success(processInstanceService.getProcessInstanceVO(id)); } + @GetMapping("/urge-approve") + @Operation(summary = "审批提醒", description = "在【流程详细】界面中,进行调用") + @Parameter(name = "id", description = "流程实例的编号", required = true) + @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") + @DataPermission(enable = false) + public CommonResult urgeApprove(@RequestParam("id") String id) { + + //获得流程实例 + ProcessInstance processInstance = processInstanceService.getProcessInstance(id); + if (processInstance != null) { + // 获得任务列表 + List BpmTaskRespVOs = bpmTaskService.getTaskListByProcessInstanceId(id); + AdminUserRespDTO startUser = adminUserApi.getUser(Long.valueOf(processInstance.getStartUserId())).getCheckedData(); + Task task = bpmTaskService.getTasksByProcessInstanceId(id).get(0); + //发送信息通知 + messageService.sendMessageWhenTaskAssigned( + BpmTaskConvert.INSTANCE.convert(processInstance, startUser, task, BpmTaskRespVOs)); + } + + return success(true); + } + @DeleteMapping("/cancel") @Operation(summary = "取消流程实例", description = "撤回发起的流程") @PreAuthorize("@ss.hasPermission('bpm:process-instance:cancel')") From 2b53048bdad1abd367af8aed04c78e347c53c2f7 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Tue, 21 May 2024 14:41:15 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=A1=A8=EF=BC=8C=E6=96=B0=E5=A2=9Euser=5Ftype=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=20=20=E5=AF=B9=E7=94=A8=E4=BF=AE=E6=94=B9=E7=9B=B8?= =?UTF-8?q?=E5=BA=94sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dal/dataobject/user/AdminUserDO.java | 5 +++++ .../system/dal/mysql/user/AdminUserMapper.java | 14 +++++++++++--- .../service/user/AdminUserServiceImpl.java | 17 ----------------- .../resources/mapper/user/AdminUserMapper.xml | 13 ++++++++----- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java index 258c2592..e51baca3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java @@ -92,6 +92,11 @@ public class AdminUserDO extends TenantBaseDO { * 枚举 {@link CommonStatusEnum} */ private Integer status; + /** + * 用户类型 + * 1:公司用户 2:工厂用户 + */ + private Integer userType; /** * 最后登录IP */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index 72443122..97c5d70f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -38,6 +38,7 @@ public interface AdminUserMapper extends BaseMapperX { .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) .inIfPresent(AdminUserDO::getDeptId, deptIds) + .eq(AdminUserDO::getUserType, 1) //查询公司用户 .orderByDesc(AdminUserDO::getId)); } @@ -46,17 +47,24 @@ public interface AdminUserMapper extends BaseMapperX { } default List selectListByStatus(Integer status) { - return selectList(AdminUserDO::getStatus, status); + + return selectList(new LambdaQueryWrapperX() + .eq(AdminUserDO::getStatus, status) + .eq(AdminUserDO::getUserType, 1)); } default List selectListByDeptIds(Collection deptIds) { - return selectList(AdminUserDO::getDeptId, deptIds); + + return selectList(new LambdaQueryWrapperX() + .in(AdminUserDO::getDeptId, deptIds) + .eq(AdminUserDO::getUserType, 1)); } default List selectListByDeptId(Long deptId, Long userId) { return selectList(new LambdaQueryWrapperX() .eq(AdminUserDO::getDeptId, deptId) - .ne(AdminUserDO::getId, userId)); + .ne(AdminUserDO::getId, userId) + .eq(AdminUserDO::getUserType , 1)); } void emptyOpenId(@Param("openId") String openId); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index ea8d2875..31eef3e9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -33,12 +33,10 @@ import org.springframework.context.annotation.Lazy; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -544,21 +542,6 @@ public class AdminUserServiceImpl implements AdminUserService { return passwordEncoder.encode(password); } - private void IdCardAnalysis(AdminUserDO updateUser) { - - LocalDate nowDate = LocalDate.now(); - - String idCard = updateUser.getIdcard(); - - //通过身份证号码 获得出生日期 - LocalDate date = LocalDate.parse(idCard.substring(6, 14)); - //通过身份证号码 获得性别 - Integer sex = Integer.parseInt(idCard.substring(16, 17)) % 2 == 0 ? 2 : 1; - //通过身份证号码 获得年龄 - Integer age = nowDate.getYear() - date.getYear(); - - } - @Override public String getSignImgPath(Long userId) { //2L 用户签名 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml index c8b5e294..f6985cc7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml @@ -17,11 +17,14 @@ + SELECT + id, + factory_id, + date, + square_num, + damage_num, + CASE WHEN data_type = 1 THEN total_num END AS outTotalNum, + CASE WHEN data_type = 2 THEN total_num END AS inTotalNum + FROM + sf_factory_data + + + AND factory_id = #{reqVO.factoryId} + + + AND data_type = #{reqVO.dataType} + + + + AND date >= #{reqVO.date[0]} + + + AND date <= #{reqVO.date[1]} + + + + + AND create_time >= #{reqVO.createTime[0]} + + + AND create_time <= #{reqVO.createTime[1]} + + + + ORDER BY id DESC + \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml new file mode 100644 index 00000000..a117738b --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/packageInfo/PackageMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/packageInfo/PackageMapper.xml index 75c8681b..91802ecd 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/packageInfo/PackageMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/packageInfo/PackageMapper.xml @@ -12,8 +12,8 @@ + SELECT + a.*, + b.name AS factoryName + FROM + sf_package_data AS a, + sf_factory_info AS b + WHERE + a.factory_id = b.id + + AND a.factory_id = #{reqVO.factoryId} + + + AND a.size_name = #{reqVO.sizeName} + + + AND a.package_date = #{reqVO.packageDate} + + + AND a.device_name LIKE CONCAT('%', #{reqVO.deviceName}, '%') + + + + and a.create_time >= #{reqVO.createTime[0]} + + + and a.create_time <= #{reqVO.createTime[1]} + + + ORDER BY a.id DESC + + \ No newline at end of file From 5361325478a355048544508376ef2be10e9c00ae Mon Sep 17 00:00:00 2001 From: Echo <4759156@qq.com> Date: Wed, 22 May 2024 17:22:32 +0800 Subject: [PATCH 12/20] =?UTF-8?q?=E6=88=91=E7=9A=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E3=80=81=E4=BB=A3=E5=8A=9E=E4=BB=BB=E5=8A=A1=E3=80=81=E5=B7=B2?= =?UTF-8?q?=E5=8A=9E=E4=BB=BB=E5=8A=A1=E3=80=81=E7=BB=9F=E8=AE=A1=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8F=AA=E6=9F=A5=E8=AF=A2=E6=B5=81=E7=A8=8B=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=A0=87=E8=AF=86=E4=B8=BAoa=5F=E5=BC=80=E5=A4=B4?= =?UTF-8?q?=E7=9A=84=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java | 6 ++++++ .../yudao/module/bpm/service/task/BpmTaskServiceImpl.java | 6 ++++++ .../resources/mapper/task/BpmProcessInstanceExtMapper.xml | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java index 8128614e..b41f90e9 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceExtMapper.java @@ -18,6 +18,8 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX selectCCPage(Long userId, BpmProcessInstanceMyPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() // .eqIfPresent(BpmProcessInstanceExtDO::getStartUserId, userId) + //只能查询流程标识定义为oa开头的流程 + .likeIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_") .likeIfPresent(BpmProcessInstanceExtDO::getCcids, "[" + userId + "]") .eqIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, reqVO.getProcessDefinitionId()) .eqIfPresent(BpmProcessInstanceExtDO::getCategory, reqVO.getCategory()) @@ -30,6 +32,8 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX selectPage(Long userId, BpmProcessInstanceMyPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + //只能查询流程标识定义为oa开头的流程 + .likeIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_") .eqIfPresent(BpmProcessInstanceExtDO::getStartUserId, userId) .likeIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName()) .eqIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, reqVO.getProcessDefinitionId()) @@ -57,6 +61,8 @@ public interface BpmProcessInstanceExtMapper extends BaseMapperX selectStatisticePage(BpmProcessInstanceMyPageReqVO reqVO) { //如果为空,那么查询全部 return selectPage(reqVO, new LambdaQueryWrapperX() + //只能查询流程标识定义为oa开头的流程 + .likeIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, "oa_leave") .likeIfPresent(BpmProcessInstanceExtDO::getName, reqVO.getName()) .eqIfPresent(BpmProcessInstanceExtDO::getProcessDefinitionId, reqVO.getProcessDefinitionId()) .eqIfPresent(BpmProcessInstanceExtDO::getCategory, reqVO.getCategory()) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 3e125832..8a17dabb 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -138,10 +138,13 @@ public class BpmTaskServiceImpl implements BpmTaskService { public PageResult getTodoTaskPage(Long userId, BpmTaskTodoPageReqVO pageVO) { // 查询待办任务 TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee(String.valueOf(userId)) // 分配给自己 + //只能查询流程标识定义为oa开头的流程 + .processDefinitionKeyLike("oa_%") .orderByTaskCreateTime().desc(); // 创建时间倒序 if (StrUtil.isNotBlank(pageVO.getName())) { //流程定义的名称 taskQuery.processDefinitionName(pageVO.getName()); + // taskQuery.taskNameLike("%" + pageVO.getName() + "%"); } if (ArrayUtil.get(pageVO.getCreateTime(), 0) != null) { @@ -178,6 +181,8 @@ public class BpmTaskServiceImpl implements BpmTaskService { queryWrapperX.eq(BpmTaskExtDO::getDeleted, false); queryWrapperX.groupBy(BpmTaskExtDO::getName); queryWrapperX.select(BpmTaskExtDO::getName); + //只能查询流程标识定义为oa开头的流程 + queryWrapperX.likeIfPresent(BpmTaskExtDO::getProcessDefinitionId,"oa_"); List list = taskExtMapper.selectList(queryWrapperX); List taskNames = list.stream().map(BpmTaskExtDO::getName) .collect(Collectors.toList()); @@ -185,6 +190,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { // 查询已办任务 HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().finished() // 已完成 .taskAssignee(String.valueOf(userId)) // 分配给自己 + .processDefinitionKeyLike("oa_%") .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序 if (taskNames != null && !taskNames.isEmpty()) { /** diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml index 35470cec..47175070 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/task/BpmProcessInstanceExtMapper.xml @@ -19,6 +19,7 @@ #{id} + AND process_definition_id like 'oa_%' GROUP BY name @@ -42,6 +43,7 @@ #{id} + AND process_definition_id like 'oa_%' GROUP BY result @@ -55,6 +57,7 @@ WHERE end_time IS NOT NULL AND reason != '自动审批' AND deleted = FALSE + AND process_definition_id like 'oa_%' GROUP BY assignee_user_id order by userTime desc limit 0, 10 @@ -72,6 +75,7 @@ #{id} + AND process_definition_id like 'oa_%' GROUP BY assignee_user_id From 4a5dae14a8a0f33efbb0ebc010f6de845cab4811 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 23 May 2024 11:28:26 +0800 Subject: [PATCH 13/20] =?UTF-8?q?=E5=B7=A5=E5=8E=82=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=9A=20=20=20=E8=A7=84=E6=A0=BC=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E6=89=93=E5=8C=85=E7=BA=BF=E7=AE=A1=E7=90=86=E3=80=81=E6=89=93?= =?UTF-8?q?=E5=8C=85=E7=BA=BF=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../factorydata/FactoryDataController.java | 10 +++++- .../vo/FactoryDataDetailRespVO.java | 3 ++ .../factorydata/vo/FactoryDataInfoRespVO.java | 17 +++++++++- .../factorydata/vo/FactoryDataTotalVO.java | 18 ++++++++++ .../mysql/factorydata/FactoryDataMapper.java | 3 ++ .../factorydata/FactoryDataService.java | 7 ++++ .../factorydata/FactoryDataServiceImpl.java | 33 ++++++++++++++++--- .../FactoryDataSizeServiceImpl.java | 6 ++++ .../factoryinfo/FactoryInfoService.java | 9 +++++ .../factoryinfo/FactoryInfoServiceImpl.java | 7 +++- .../mapper/factorydata/FactoryDataMapper.xml | 12 +++++++ .../factorydata/FactoryDataSizeMapper.xml | 27 +++++++++++---- .../mapper/packageInfo/PackageMapper.xml | 1 + .../mapper/packagedata/PackageDataMapper.xml | 1 + 14 files changed, 139 insertions(+), 15 deletions(-) create mode 100644 zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java index 93b9217f..79a04458 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java @@ -7,6 +7,7 @@ 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.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataSizeService; @@ -76,6 +77,14 @@ public class FactoryDataController { return success(dataService.getData(factoryId, date)); } + @GetMapping("/get-total") + @Operation(summary = "获得出入库数据总数 | 入库总数、出库总数、破损总数") + @PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')") + public CommonResult getDataTotal() { + + return success(dataService.getDataTotal()); + } + @GetMapping("/page") @Operation(summary = "获得工厂出库入库数据分页") @PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')") @@ -96,5 +105,4 @@ public class FactoryDataController { ExcelUtils.write(response, "工厂出库入库数据.xls", "数据", FactoryDataDetailRespVO.class, list); } - } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java index 70ed1c9e..d2f82368 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java @@ -17,6 +17,9 @@ public class FactoryDataDetailRespVO { @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000078") private Long factoryId; + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "新景象") + private String factoryName; + @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-05-14") private LocalDate date; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java index ded3b634..42f41305 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java @@ -10,9 +10,15 @@ import java.time.LocalDate; @Data public class FactoryDataInfoRespVO { + @Schema(description = "打包线数据id") + private Long id; + @Schema(description = "工厂id") private Long factoryId; + @Schema(description = "打包线名称") + private String packageName; + @Schema(description = "日期") private LocalDate date; @@ -22,6 +28,15 @@ public class FactoryDataInfoRespVO { @Schema(description = "规格名称") private String sizeName; + @Schema(description = "规格片数") + private Integer sizePieces; + + @Schema(description = "手动打包数") + private Integer num; + + @Schema(description = "自动打包数") + private Integer autoNum; + @Schema(description = "入库数量") private Integer inNum; @@ -29,7 +44,7 @@ public class FactoryDataInfoRespVO { private BigDecimal squareNum; @Schema(description = "打包破损数") - private Integer packageDamageNum; + private Integer damageNum; @Schema(description = "入库破损数id") private Long inDamageNumId; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java new file mode 100644 index 00000000..b277e107 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 工厂出库入库数据 总览 Request VO") +@Data +public class FactoryDataTotalVO { + + @Schema(description = "入库总数") + private Integer inTotal; + + @Schema(description = "出库总数") + private Integer outTotal; + + @Schema(description = "破损总数") + private Integer damageNum; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java index 6bd72d44..e27f7fd4 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java @@ -4,6 +4,7 @@ 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.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; @@ -36,4 +37,6 @@ public interface FactoryDataMapper extends BaseMapperX { .eq(FactoryDataDO::getFactoryId, factoryId) .eq(FactoryDataDO::getDate, date)); } + + FactoryDataTotalVO selectDataSum(); } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java index a760458b..0bba4d99 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.smartfactory.service.factorydata; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; @@ -58,6 +59,12 @@ public interface FactoryDataService { */ PageResult getDataPage(FactoryDataPageReqVO pageReqVO); + /** + * 获得工厂总数 总览 + * @return + */ + FactoryDataTotalVO getDataTotal(); + /** * 获取当天的所有数据 * diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java index 98049af4..7c47de23 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java @@ -7,13 +7,16 @@ import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeSaveReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataCreateReqVO; import cn.iocoder.yudao.module.smartfactory.convert.packageData.PackageDataConvert; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper; +import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -26,8 +29,11 @@ import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 工厂出库入库数据 Service 实现类 @@ -45,6 +51,9 @@ public class FactoryDataServiceImpl implements FactoryDataService { @Lazy // 循环依赖,避免报错 private FactoryDataSizeService dataSizeService; + @Resource + private FactoryInfoService factoryInfoService; + @Override public Long createData(List factoryDataDOS) { @@ -62,7 +71,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { //校验 出入库统计数据是否存在 List factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(), updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - if (factoryDataDOS != null) { + if (factoryDataDOS != null && !factoryDataDOS.isEmpty()) { PackageDataCreateReqVO createReqVO = new PackageDataCreateReqVO(); createReqVO.setPackageData(updateReqVO.getPackageData()); @@ -150,6 +159,11 @@ public class FactoryDataServiceImpl implements FactoryDataService { List respVOS = dataPage.getList(); if (!respVOS.isEmpty()) { + //获得工厂信息列表 + List factoryIdS = respVOS.stream().map(FactoryDataDetailRespVO::getFactoryId).collect(Collectors.toList()); + List factoryInfoDOS = factoryInfoService.getFactoryList(factoryIdS); + Map factoryMap = convertMap(factoryInfoDOS, FactoryInfoDO::getId); + //获得 入库数、打包破损、入库破损、出库数、出库破损的工厂规格数据 List infoDatas = dataSizeService.getDetailList(pageReqVO.getFactoryId(), pageReqVO.getDate()); @@ -161,6 +175,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { .collect(Collectors.toList()); items.setItems(infoList); + items.setFactoryName(factoryMap.get(items.getFactoryId()).getName()); //移除 已处理过的数据 infoDatas.removeAll(infoList); @@ -182,15 +197,16 @@ public class FactoryDataServiceImpl implements FactoryDataService { dataDetailRespVO.setId(respVOS.get(0).getId() + 1); dataDetailRespVO.setFactoryId(factoryId); + dataDetailRespVO.setFactoryName(factoryMap.get(factoryId).getName()); dataDetailRespVO.setDate(date); //设置入库总数 - dataDetailRespVO.setInTotalNum(infoList.stream().mapToInt(FactoryDataInfoRespVO::getInNum).sum()); + dataDetailRespVO.setInTotalNum(infoList.stream().filter(info -> info.getInNum() != null).mapToInt(FactoryDataInfoRespVO::getInNum).sum()); //设置入库平方数 - dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).reduce(BigDecimal.ZERO, BigDecimal::add)); + dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)); //设置出库总数 - dataDetailRespVO.setOutTotalNum(infoDatas.stream().mapToInt(FactoryDataInfoRespVO::getOutNum).sum()); + dataDetailRespVO.setOutTotalNum(infoDatas.stream().filter(info -> info.getOutNum() != null).mapToInt(FactoryDataInfoRespVO::getOutNum).sum()); //设置 出入库破损总数 - dataDetailRespVO.setDamageNum(infoDatas.stream().mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum()); + dataDetailRespVO.setDamageNum(infoDatas.stream().filter(info -> info.getInDamageNum() != null).mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum()); dataDetailRespVO.setItems(infoList); //设置 可编辑状态 dataDetailRespVO.setIsEdit(1); @@ -198,12 +214,19 @@ public class FactoryDataServiceImpl implements FactoryDataService { respVOS.add(0, dataDetailRespVO); }); }); + dataPage.setTotal((long) respVOS.size()); } } return dataPage; } + @Override + public FactoryDataTotalVO getDataTotal() { + + return dataMapper.selectDataSum(); + } + @Override public List getTodayInboundAndOutboundOverview(Date time) { String timeStr = null; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java index f71ea726..9c9202c9 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataSiz import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -46,6 +47,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ private FactoryDataService factoryDataService; @Override + @Transactional(rollbackFor = Exception.class) public Long createData(FactoryDataSizeCreateReqVO createReqVO) { //校验 当前日期得数据是否已经录入 @@ -114,6 +116,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ if (!createReqVO.getPackageData().isEmpty()) { PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); + packCreateReqVO.setFactoryId(createReqVO.getPackageData().get(0).getFactoryId()); packCreateReqVO.setPackageData(createReqVO.getPackageData()); packCreateReqVO.setPackageDate(createReqVO.getDate()); @@ -125,6 +128,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ } @Override + @Transactional(rollbackFor = Exception.class) public void updateData(FactoryDataSizeCreateReqVO updateReqVO) { // 更新 @@ -171,6 +175,8 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ if (!updateReqVO.getPackageData().isEmpty()) { PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); + packCreateReqVO.setFactoryId(updateReqVO.getFactoryId()); + packCreateReqVO.setPackageDate(updateReqVO.getDate()); packCreateReqVO.setPackageData(updateReqVO.getPackageData()); //插入打包线数据 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java index 729e7e19..3e2a4d30 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory. import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import javax.validation.Valid; +import java.util.Collection; import java.util.List; /** @@ -47,6 +48,14 @@ public interface FactoryInfoService { */ FactoryInfoDO getFactoryInfo(Long id); + /** + * 获得工厂信息列表 + * + * @param ids 编号 + * @return 工厂信息 + */ + List getFactoryList(Collection ids); + /** * 获得类型为工厂的工厂信息列表 * @return 工厂列表 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index 7edc57ac..5993b845 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; @@ -116,6 +115,12 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { return factoryInfoMapper.selectById(id); } + @Override + public List getFactoryList(Collection ids) { + + return factoryInfoMapper.selectList(FactoryInfoDO::getId, ids); + } + @Override public List getFactoryListByType() { diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml index 6fadfe8c..d169442e 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml @@ -21,6 +21,7 @@ FROM sf_factory_data + deleted = 0 AND factory_id = #{reqVO.factoryId} @@ -46,4 +47,15 @@ ORDER BY id DESC + + \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml index a117738b..4c44ffc1 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml @@ -11,13 +11,18 @@ SELECT - id, factory_id, date, - square_num, - damage_num, - CASE WHEN data_type = 1 THEN total_num END AS outTotalNum, - CASE WHEN data_type = 2 THEN total_num END AS inTotalNum + SUM(CASE WHEN data_type = 2 THEN total_num END) AS inTotalNum, + SUM(CASE WHEN data_type = 1 THEN square_num END) AS squareNum, + SUM(CASE WHEN data_type = 1 THEN total_num END) AS outTotalNum, + SUM(CASE WHEN data_type = 1 or data_type = 2 THEN damage_num END) AS damageNum FROM sf_factory_data @@ -45,7 +44,8 @@ - ORDER BY id DESC + GROUP BY factory_id,date + ORDER BY date DESC