工厂信息:

规格管理
  打包线管理
This commit is contained in:
furongxin 2024-05-11 17:53:05 +08:00
parent 898c3e6681
commit 8bf2a96f15
33 changed files with 947 additions and 18 deletions

View File

@ -49,9 +49,23 @@ public interface DeptApi {
CommonResult<List<DeptRespDTO>> getDeptList();
@PostMapping(PREFIX + "/create")
@Operation(summary = "获取所有部门信息")
@Operation(summary = "创建部门")
CommonResult<Long> 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<DeptRespDTO> getDeptByFactoryId(@RequestParam("factoryId") Long factoryId);
/**
* 获得指定编号的部门 Map
*

View File

@ -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;

View File

@ -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<DeptRespDTO> getDeptByFactoryId(Long factoryId) {
DeptDO deptDO = deptService.getDeptByFactoryId(factoryId);
return success(BeanUtils.toBean(deptDO, DeptRespDTO.class));
}
}

View File

@ -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;

View File

@ -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;

View File

@ -103,4 +103,6 @@ public interface DeptService {
List<DeptDO> getDeptByLeaderId(Long leaderUserId);
List<DeptDO> getDeptTree();
DeptDO getDeptByFactoryId(Long factoryId);
}

View File

@ -278,4 +278,10 @@ public class DeptServiceImpl implements DeptService {
return deptMapper.selectTree();
}
@Override
public DeptDO getDeptByFactoryId(Long factoryId) {
return deptMapper.selectOne(DeptDO::getFactoryId, factoryId);
}
}

View File

@ -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, "打包线信息不存在");
}

View File

@ -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<List<FactorySimpleRespVO>> getFactoryList() {
List<FactoryInfoDO> factoryInfo = factoryInfoService.getFactoryListByType();
return success(BeanUtils.toBean(factoryInfo, FactorySimpleRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工厂信息分页")
@PreAuthorize("@ss.hasPermission('smartfactory:factory-info:query')")

View File

@ -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 = "省名称不能为空")

View File

@ -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;
}

View File

@ -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<Long> createPackage(@Valid @RequestBody PackageSaveReqVO createReqVO) {
return success(packageService.createPackage(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新打包线")
@PreAuthorize("@ss.hasPermission('smartfactory:package:update')")
public CommonResult<Boolean> 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<Boolean> 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<PackageRespVO> 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<PageResult<PackageRespVO>> getPackagePage(@Valid PackagePageReqVO pageReqVO) {
return success(packageService.getPackagePage(pageReqVO));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<Long> createSize(@Valid @RequestBody SizeSaveReqVO createReqVO) {
return success(sizeService.createSize(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新规格")
@PreAuthorize("@ss.hasPermission('smartfactory:size:update')")
public CommonResult<Boolean> 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<Boolean> 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<SizeRespVO> 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<PageResult<SizeRespVO>> getSizePage(@Valid SizePageReqVO pageReqVO) {
PageResult<SizeDO> pageResult = sizeService.getSizePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, SizeRespVO.class));
}
@GetMapping("/simple-list")
@Operation(summary = "获得规格列表 | 用于前端下拉框")
@PreAuthorize("@ss.hasPermission('smartfactory:size:query')")
public CommonResult<List<SizeRespVO>> getSize() {
List<SizeDO> sizes = sizeService.getListSize();
return success(BeanUtils.toBean(sizes, SizeRespVO.class));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 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;
}

View File

@ -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;
}

View File

@ -26,7 +26,7 @@ public interface FactoryInfoMapper extends BaseMapperX<FactoryInfoDO> {
.likeIfPresent(FactoryInfoDO::getType, reqVO.getType())
.eqIfPresent(FactoryInfoDO::getStatus, reqVO.getStatus())
.betweenIfPresent(FactoryInfoDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(FactoryInfoDO::getSort));
.orderByAsc(FactoryInfoDO::getSort));
}
/**

View File

@ -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<PackageDO> {
IPage<PackageRespVO> selectPackagePage(@Param("page") IPage<PackageRespVO> mpPage, @Param("reqVO") PackagePageReqVO pageReqVO);
}

View File

@ -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<SizeDO> {
default PageResult<SizeDO> selectPage(SizePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SizeDO>()
.likeIfPresent(SizeDO::getName, reqVO.getName())
.betweenIfPresent(SizeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(SizeDO::getId));
}
}

View File

@ -47,6 +47,12 @@ public interface FactoryInfoService {
*/
FactoryInfoDO getFactoryInfo(Long id);
/**
* 获得类型为工厂的工厂信息列表
* @return 工厂列表
*/
List<FactoryInfoDO> getFactoryListByType();
/**
* 获得工厂信息分页
*

View File

@ -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<Long> deptId = new ArrayList<>();
deptId.add(deptRespDTO.getId());
List<AdminUserRespDTO> 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<FactoryInfoDO> getFactoryListByType() {
return factoryInfoMapper.selectList(FactoryInfoDO::getType, 3);
}
@Override
public PageResult<FactoryInfoDO> getFactoryInfoPage(FactoryInfoPageReqVO pageReqVO) {
return factoryInfoMapper.selectPage(pageReqVO);

View File

@ -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<PackageRespVO> getPackagePage(PackagePageReqVO pageReqVO);
}

View File

@ -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<PackageRespVO> getPackagePage(PackagePageReqVO pageReqVO) {
IPage<PackageRespVO> mpPage = MyBatisUtils.buildPage(pageReqVO);
IPage<PackageRespVO> page = packageMapper.selectPackagePage(mpPage, pageReqVO);
return new PageResult<>(page.getRecords(), page.getTotal());
}
}

View File

@ -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<SizeDO> getSizePage(SizePageReqVO pageReqVO);
/**
* 获得规格列表
* @return 规格列表
*/
List<SizeDO> getListSize();
}

View File

@ -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<SizeDO> getSizePage(SizePageReqVO pageReqVO) {
return sizeMapper.selectPage(pageReqVO);
}
@Override
public List<SizeDO> getListSize() {
return sizeMapper.selectList();
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.smartfactory.dal.mysql.packagedata.FactoryDataMapper">
<mapper namespace="cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.smartfactory.dal.mysql.packageInfo.PackageMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="selectPackagePage" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.packageInfo.vo.PackageRespVO">
SELECT
a.*,
b.NAME AS factoryName,
c.NAME AS sizeName
FROM
sf_package AS a,
sf_factory_info AS b,
sf_size AS c
WHERE
a.factory_id = b.id
AND a.size_id = c.id
<if test="reqVO.factoryId != null">
AND a.factoryId = #{reqVO.factoryId}
</if>
<if test="reqVO.sizeId != null">
AND a.sizeId = #{reqVO.sizeId}
</if>
<if test="reqVO.createTime != null and reqVO.createTime.length > 0">
<if test="reqVO.createTime[0] != null">
and a.create_time &gt;= #{reqVO.createTime[0]}
</if>
<if test="reqVO.createTime[1] != null">
and a.create_time &lt;= #{reqVO.createTime[1]}
</if>
</if>
ORDER BY a.id DESC
</select>
</mapper>