diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java index 23282d4..6ab37d7 100644 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java +++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java @@ -8,4 +8,11 @@ public interface ErrorCodeConstants { ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_001_000_002, "ERP物料数据不存在"); ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java index 2b86448..20b12f4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/ErpServerApplication.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.erp; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; /** * ContractOrder 模块的启动类 diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java new file mode 100644 index 0000000..7fa68eb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/ErpConfig.java @@ -0,0 +1,124 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.*; +import java.util.stream.Collectors; + +import static dm.jdbc.util.DriverUtil.log; + +@Configuration +public class ErpConfig { + + @Value("${erp.address}") + private String erpAddress; + + @Value("${erp.sapsys}") + private String sapsys; + + @Resource + private RedisTemplate redisTemplate; + + + /** + * 调用ERP接口获取公司数据 + */ + public JSONArray fetchDataFromERP(String funcnr, Map req) { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/get"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("sapsys", sapsys); + requestBody.put("funcnr", funcnr); // 获取枚举值 + if (req != null) { + requestBody.put("req", req); + } + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + // 解析响应结果 + String responseBody = response.getBody(); + if (responseBody == null) { + log.warn("ERP接口返回空响应"); + return null; + } + + JSONObject jsonResponse = JSON.parseObject(responseBody); + if (jsonResponse == null) { + log.warn("ERP接口响应无法解析为JSON"); + return null; + } + + // 正确获取E_DATA数组 + JSONObject dataObject = jsonResponse.getJSONObject("data"); + if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { + return dataObject.getJSONArray("E_DATA"); + } else { + log.warn("ERP接口调用失败或返回错误标志"); + return null; + } + } + + + public Map> numbers(JSONArray dataArray, String key,String dataKey) { + // 使用 Redis 获取缓存数据 + Map> numbers = new HashMap<>(); + List cachedNumbers = (List) redisTemplate.opsForValue().get(key); + if (cachedNumbers == null) { + cachedNumbers = new ArrayList<>(); + } + + // 提取有效的 BUKRS 编号 + List existingNumbers = new ArrayList<>(); + if (dataArray != null) { + existingNumbers = dataArray.stream() + .filter(Objects::nonNull) + .map(dataJson -> ((JSONObject) dataJson).getString(dataKey)) + .filter(Objects::nonNull) + .map(String::trim) // 去除字符串首尾空格 + .collect(Collectors.toList()); + } + + // 找出共同存在的编号 + Set cachedNumberSet = new HashSet<>(cachedNumbers != null ? cachedNumbers : new ArrayList<>()); + List commonNumbers = existingNumbers.stream() + .filter(cachedNumberSet::contains) + .collect(Collectors.toList()); + numbers.put("com", commonNumbers); + + List newNumbers = existingNumbers.stream() + .filter(num -> !cachedNumberSet.contains(num)) + .collect(Collectors.toList()); + + // 合并所有编号 + List allNumbers = new ArrayList<>(cachedNumbers); + allNumbers.addAll(newNumbers); + numbers.put("all", allNumbers); + return numbers; + } + + public void updateRedisCache(String key, List allnumbers) { + // 使用 Redis 更新缓存数据 + redisTemplate.opsForValue().set(key, allnumbers); + } +} diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java new file mode 100644 index 0000000..d8dfa42 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/conf/MyRedisConfig.java @@ -0,0 +1,165 @@ +package cn.iocoder.yudao.module.erp.common.conf; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +//import redis.clients.jedis.JedisPoolConfig; + + +/** + * @author wuxz + * @create 2022-06-07 20:54 + */ +@Primary +@Configuration +public class MyRedisConfig { + +/* + @Value("${spring.redis.database}") + private Integer database; + + @Value("${spring.redis.host}") + private String host; + + @Value("${spring.redis.port}") + private Integer port; + + @Value("${spring.redis.password}") + private String password; + + @Value("${spring.redis.jedis.pool.max-idle}") + private Integer max_idle; + + @Value("${spring.redis.jedis.pool.min-idle}") + private Integer min_idle; + + @Value("${spring.redis.jedis.pool.max-active}") + private Integer max_active; + + @Value("${spring.redis.jedis.pool.max-wait}") + private Integer max_wait; +*/ + + + + + + @Bean(value = "MyRedisTemplate") + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + // 通过 Jackson 组件进行序列化 + RedisSerializer serializer = redisSerializer(); + + // key 和 value + // 一般来说, redis-key采用字符串序列化; + // redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(serializer); + + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(serializer); + + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + + @Bean + public RedisSerializer redisSerializer() { + //创建JSON序列化器 + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // objectMapper.enableDefaultTyping()被弃用 + objectMapper.activateDefaultTyping( + LaissezFaireSubTypeValidator.instance, + ObjectMapper.DefaultTyping.NON_FINAL, + JsonTypeInfo.As.WRAPPER_ARRAY); + serializer.setObjectMapper(objectMapper); + return serializer; + } + + + + + +// @Bean +// public JedisPoolConfig jedisPoolConfig() { +// JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); +// //最小空闲连接数 +// jedisPoolConfig.setMinIdle(min_idle); +// jedisPoolConfig.setMaxIdle(max_idle); +// jedisPoolConfig.setMaxTotal(max_active); +// //当池内没有可用的连接时,最大等待时间 +// jedisPoolConfig.setMaxWaitMillis(max_wait); +// //------其他属性根据需要自行添加------------- +// return jedisPoolConfig; +// } +// +// +// /** +// * jedis连接工厂 +// * @param jedisPoolConfig +// * @return +// */ +// @Bean +// public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) { +// //单机版jedis +// RedisStandaloneConfiguration redisStandaloneConfiguration = +// new RedisStandaloneConfiguration(); +// //设置redis服务器的host或者ip地址 +// redisStandaloneConfiguration.setHostName(host); +// //设置默认使用的数据库 +// redisStandaloneConfiguration.setDatabase(database); +// //设置密码 +// redisStandaloneConfiguration.setPassword(password); +// //设置redis的服务的端口号 +// redisStandaloneConfiguration.setPort(port); +// //获得默认的连接池构造器 +// JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jc = +// (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder(); +// //指定jedisPoolConifig +// jc.poolConfig(jedisPoolConfig); +// //通过构造器来构造jedis客户端配置 +// JedisClientConfiguration jedisClientConfiguration = jc.build(); +// return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration); +// } +// +// +// @Bean +// @ConditionalOnMissingBean(name = {"redisTemplate"}) +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + + /** + * 序列化乱码问题解决 + */ +// @Bean +// public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){ +// RedisTemplate redisTemplate = new RedisTemplate<>(); +// redisTemplate.setKeySerializer(new StringRedisSerializer()); +// redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); +// redisTemplate.setConnectionFactory(jedisConnectionFactory); +// return redisTemplate; +// } + + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java index c369956..2023e46 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/enums/OftenEnum.java @@ -13,32 +13,60 @@ public class OftenEnum { //接口编号枚举 public enum FuncnrEnum { - 公司代码("001"), - 工厂信息("002"), - 客商信息("003"), - 成本中心("004"), - 内部订单("005"), - 库位信息("006"), - 采购组织("007"), - 销售组织("008"), - 合同信息("009"), - 资产卡片("010"), - 库存信息("011"), - 辅组编码("012"), - 生产订单("013"), - BOM清单("014"), - 工艺路线("015"), - 生产版本("016"), - 生产投料("017"), - 生产订单明细("018"), - 库存明细("019"), - 发票状态("020"), - 物料数据("021"); + 公司代码("001", "BUKRS", ""), + 工厂信息("002", "", ""), + 客商信息("003", "PARTNER", "DATUM"), + 成本中心("004", "", ""), + 内部订单("005", "", ""), + 库位信息("006", "", ""), + 采购组织("007", "", ""), + 销售组织("008", "", ""), + 合同信息("009", "", ""), + 资产卡片("010", "", ""), + 库存信息("011", "", ""), + 辅组编码("012", "", ""), + 生产订单("013", "", ""), + BOM清单("014", "", ""), + 工艺路线("015", "", ""), + 生产版本("016", "", ""), + 生产投料("017", "", ""), + 生产订单明细("018", "", ""), + 库存明细("019", "", ""), + 发票状态("020", "", ""), + 物料数据("021", "", "ERSDA"); - public String funcnr = null; + private final String funcnr; + private final String datakey; + private final String datekey; - FuncnrEnum(String funcnr) { + FuncnrEnum(String funcnr, String datakey,String datekey) { this.funcnr = funcnr; + this.datakey = datakey; + this.datekey = datekey; + } + + public String getFuncnr() { + return funcnr; + } + + public String getDatakey() { + return datakey; + } + + public String getDatekey() { + return datekey; + } + } + + //接口编号枚举 + public enum ModeTypeEnum { + 供应商("K"), + 客户("D"); + + public String modetype = null; + + ModeTypeEnum(String modetype) { + this.modetype = modetype; } } } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java similarity index 96% rename from yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java rename to yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java index 12d62a9..ed38050 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticsTask.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/common/task/statisticstask.java @@ -15,7 +15,7 @@ import org.springframework.transaction.annotation.Transactional; **/ @Configuration @EnableScheduling -public class statisticsTask { +public class statisticstask { @Resource private ErpCompanyService erpCompanyService; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java new file mode 100644 index 0000000..610e2c5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)") +@RestController +@RequestMapping("/sply/erp-bom") +@Validated +public class ErpBomController { + + + @Resource + private ErpBomService erpBomService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:create')") + public CommonResult createErpBom(@Valid @RequestBody ErpBomSaveReqVO createReqVO) { + return success(erpBomService.createErpBom(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:update')") + public CommonResult updateErpBom(@Valid @RequestBody ErpBomSaveReqVO updateReqVO) { + erpBomService.updateErpBom(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBom(@RequestParam("id") Long id) { + erpBomService.deleteErpBom(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:delete')") + public CommonResult deleteErpBomList(@RequestBody BatchDeleteReqVO req) { + erpBomService.deleteErpBomListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult getErpBom(@RequestParam("id") Long id) { + ErpBomDO erpBom = erpBomService.getErpBom(id); + return success(BeanUtils.toBean(erpBom, ErpBomRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:query')") + public CommonResult> getErpBomPage(@Valid ErpBomPageReqVO pageReqVO) { + PageResult pageResult = erpBomService.getErpBomPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM) Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomExcel(@Valid ErpBomPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomService.getErpBomPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM).xls", "数据", ErpBomRespVO.class, + BeanUtils.toBean(list, ErpBomRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java new file mode 100644 index 0000000..1e6768e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpBomDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpBomDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP物料清单(BOM)明细") +@RestController +@RequestMapping("/sply/erp-bom-detail") +@Validated +public class ErpBomDetailController { + + + @Resource + private ErpBomDetailService erpBomDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:create')") + public CommonResult createErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO createReqVO) { + return success(erpBomDetailService.createErpBomDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:update')") + public CommonResult updateErpBomDetail(@Valid @RequestBody ErpBomDetailSaveReqVO updateReqVO) { + erpBomDetailService.updateErpBomDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetail(@RequestParam("id") Long id) { + erpBomDetailService.deleteErpBomDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP物料清单(BOM)明细") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:delete')") + public CommonResult deleteErpBomDetailList(@RequestBody BatchDeleteReqVO req) { + erpBomDetailService.deleteErpBomDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP物料清单(BOM)明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult getErpBomDetail(@RequestParam("id") Long id) { + ErpBomDetailDO erpBomDetail = erpBomDetailService.getErpBomDetail(id); + return success(BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP物料清单(BOM)明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:query')") + public CommonResult> getErpBomDetailPage(@Valid ErpBomDetailPageReqVO pageReqVO) { + PageResult pageResult = erpBomDetailService.getErpBomDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpBomDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP物料清单(BOM)明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-bom-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpBomDetailExcel(@Valid ErpBomDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpBomDetailService.getErpBomDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP物料清单(BOM)明细.xls", "数据", ErpBomDetailRespVO.class, + BeanUtils.toBean(list, ErpBomDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java index 26f8584..07474b0 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCompanyController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; import cn.iocoder.yudao.module.erp.service.erp.ErpCompanyService; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP公司") @RestController -@RequestMapping("/admin/erp/company") +@RequestMapping("/sply/erp-company") @Validated public class ErpCompanyController { @@ -104,10 +101,10 @@ public class ErpCompanyController { BeanUtils.toBean(list, ErpCompanyRespVO.class)); } - @PostMapping("/callErpRfcInterface") + @PostMapping("/getErpCompanyTask") @Operation(summary = "定时获得erp更新公司") @PreAuthorize("@ss.hasPermission('sply:erp-company:query')") - public void callErpRfcInterface() { + public void getErpCompanyTask() { erpCompanyService.callErpRfcInterface(); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java new file mode 100644 index 0000000..45c270e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCostcenterController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCostcenterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP成本中心") +@RestController +@RequestMapping("/sply/erp-costcenter") +@Validated +public class ErpCostcenterController { + + + @Resource + private ErpCostcenterService erpCostcenterService; + + @PostMapping("/create") + @Operation(summary = "创建ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:create')") + public CommonResult createErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO createReqVO) { + return success(erpCostcenterService.createErpCostcenter(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:update')") + public CommonResult updateErpCostcenter(@Valid @RequestBody ErpCostcenterSaveReqVO updateReqVO) { + erpCostcenterService.updateErpCostcenter(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP成本中心") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenter(@RequestParam("id") Long id) { + erpCostcenterService.deleteErpCostcenter(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP成本中心") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:delete')") + public CommonResult deleteErpCostcenterList(@RequestBody BatchDeleteReqVO req) { + erpCostcenterService.deleteErpCostcenterListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP成本中心") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult getErpCostcenter(@RequestParam("id") Long id) { + ErpCostcenterDO erpCostcenter = erpCostcenterService.getErpCostcenter(id); + return success(BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP成本中心分页") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:query')") + public CommonResult> getErpCostcenterPage(@Valid ErpCostcenterPageReqVO pageReqVO) { + PageResult pageResult = erpCostcenterService.getErpCostcenterPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpCostcenterRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP成本中心 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-costcenter:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpCostcenterExcel(@Valid ErpCostcenterPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpCostcenterService.getErpCostcenterPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP成本中心.xls", "数据", ErpCostcenterRespVO.class, + BeanUtils.toBean(list, ErpCostcenterRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java index c3e41ac..5dde0d4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpCustomerController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.service.erp.ErpCustomerService; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpCustomerService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; import java.io.IOException; import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP客商信息") @RestController -@RequestMapping("/erp/customer") +@RequestMapping("/sply/erp-customer") @Validated public class ErpCustomerController { @@ -104,4 +101,18 @@ public class ErpCustomerController { BeanUtils.toBean(list, ErpCustomerRespVO.class)); } + @PostMapping("/getErpCustomerTask") + @Operation(summary = "定时获得erp更新客商主数据") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void getErpCustomerTask() { + erpCustomerService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-customer:create')") + public void initialize() { + erpCustomerService.initialize(); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java new file mode 100644 index 0000000..3194879 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpFactoryController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpFactoryService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工厂") +@RestController +@RequestMapping("/sply/erp-factory") +@Validated +public class ErpFactoryController { + + + @Resource + private ErpFactoryService erpFactoryService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:create')") + public CommonResult createErpFactory(@Valid @RequestBody ErpFactorySaveReqVO createReqVO) { + return success(erpFactoryService.createErpFactory(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:update')") + public CommonResult updateErpFactory(@Valid @RequestBody ErpFactorySaveReqVO updateReqVO) { + erpFactoryService.updateErpFactory(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工厂") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactory(@RequestParam("id") Long id) { + erpFactoryService.deleteErpFactory(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工厂") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')") + public CommonResult deleteErpFactoryList(@RequestBody BatchDeleteReqVO req) { + erpFactoryService.deleteErpFactoryListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工厂") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult getErpFactory(@RequestParam("id") Long id) { + ErpFactoryDO erpFactory = erpFactoryService.getErpFactory(id); + return success(BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工厂分页") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:query')") + public CommonResult> getErpFactoryPage(@Valid ErpFactoryPageReqVO pageReqVO) { + PageResult pageResult = erpFactoryService.getErpFactoryPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工厂 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-factory:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpFactoryExcel(@Valid ErpFactoryPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpFactoryService.getErpFactoryPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工厂.xls", "数据", ErpFactoryRespVO.class, + BeanUtils.toBean(list, ErpFactoryRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java index 33ec30e..2a27116 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpMaterialController.java @@ -1,39 +1,36 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import cn.iocoder.yudao.module.erp.service.erp.ErpMaterialService; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; import java.io.IOException; +import java.util.List; -import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - @Tag(name = "管理后台 - ERP物料信息") @RestController -@RequestMapping("/erp/material") +@RequestMapping("/sply/erp-material") @Validated public class ErpMaterialController { @@ -104,4 +101,18 @@ public class ErpMaterialController { BeanUtils.toBean(list, ErpMaterialRespVO.class)); } + @PostMapping("/getErpMaterialTask") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void getErpMaterialTask() { + erpMaterialService.callErpRfcInterface(); + } + + @PostMapping("/initialize") + @Operation(summary = "把数据库数据number搞到redis") + @PreAuthorize("@ss.hasPermission('sply:erp-material:create')") + public void initialize() { + erpMaterialService.initialize(); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java new file mode 100644 index 0000000..92831bd --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线") +@RestController +@RequestMapping("/sply/erp-process") +@Validated +public class ErpProcessController { + + + @Resource + private ErpProcessService erpProcessService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:create')") + public CommonResult createErpProcess(@Valid @RequestBody ErpProcessSaveReqVO createReqVO) { + return success(erpProcessService.createErpProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:update')") + public CommonResult updateErpProcess(@Valid @RequestBody ErpProcessSaveReqVO updateReqVO) { + erpProcessService.updateErpProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcess(@RequestParam("id") Long id) { + erpProcessService.deleteErpProcess(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线") + @PreAuthorize("@ss.hasPermission('sply:erp-process:delete')") + public CommonResult deleteErpProcessList(@RequestBody BatchDeleteReqVO req) { + erpProcessService.deleteErpProcessListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult getErpProcess(@RequestParam("id") Long id) { + ErpProcessDO erpProcess = erpProcessService.getErpProcess(id); + return success(BeanUtils.toBean(erpProcess, ErpProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process:query')") + public CommonResult> getErpProcessPage(@Valid ErpProcessPageReqVO pageReqVO) { + PageResult pageResult = erpProcessService.getErpProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessExcel(@Valid ErpProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessService.getErpProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线.xls", "数据", ErpProcessRespVO.class, + BeanUtils.toBean(list, ErpProcessRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java new file mode 100644 index 0000000..a7358fc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProcessDetailController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProcessDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP工艺路线明细") +@RestController +@RequestMapping("/sply/erp-process-detail") +@Validated +public class ErpProcessDetailController { + + + @Resource + private ErpProcessDetailService erpProcessDetailService; + + @PostMapping("/create") + @Operation(summary = "创建ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:create')") + public CommonResult createErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO createReqVO) { + return success(erpProcessDetailService.createErpProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:update')") + public CommonResult updateErpProcessDetail(@Valid @RequestBody ErpProcessDetailSaveReqVO updateReqVO) { + erpProcessDetailService.updateErpProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetail(@RequestParam("id") Long id) { + erpProcessDetailService.deleteErpProcessDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP工艺路线明细") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:delete')") + public CommonResult deleteErpProcessDetailList(@RequestBody BatchDeleteReqVO req) { + erpProcessDetailService.deleteErpProcessDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult getErpProcessDetail(@RequestParam("id") Long id) { + ErpProcessDetailDO erpProcessDetail = erpProcessDetailService.getErpProcessDetail(id); + return success(BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:query')") + public CommonResult> getErpProcessDetailPage(@Valid ErpProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = erpProcessDetailService.getErpProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-process-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProcessDetailExcel(@Valid ErpProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProcessDetailService.getErpProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP工艺路线明细.xls", "数据", ErpProcessDetailRespVO.class, + BeanUtils.toBean(list, ErpProcessDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java new file mode 100644 index 0000000..83e13a2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/ErpProductiveVersionController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.vo.BatchDeleteReqVO; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.service.erp.ErpProductiveVersionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - ERP生产版本") +@RestController +@RequestMapping("/sply/erp-productive-version") +@Validated +public class ErpProductiveVersionController { + + + @Resource + private ErpProductiveVersionService erpProductiveVersionService; + + @PostMapping("/create") + @Operation(summary = "创建ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:create')") + public CommonResult createErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO createReqVO) { + return success(erpProductiveVersionService.createErpProductiveVersion(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:update')") + public CommonResult updateErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO updateReqVO) { + erpProductiveVersionService.updateErpProductiveVersion(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除ERP生产版本") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersion(@RequestParam("id") Long id) { + erpProductiveVersionService.deleteErpProductiveVersion(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除ERP生产版本") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:delete')") + public CommonResult deleteErpProductiveVersionList(@RequestBody BatchDeleteReqVO req) { + erpProductiveVersionService.deleteErpProductiveVersionListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得ERP生产版本") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult getErpProductiveVersion(@RequestParam("id") Long id) { + ErpProductiveVersionDO erpProductiveVersion = erpProductiveVersionService.getErpProductiveVersion(id); + return success(BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得ERP生产版本分页") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:query')") + public CommonResult> getErpProductiveVersionPage(@Valid ErpProductiveVersionPageReqVO pageReqVO) { + PageResult pageResult = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpProductiveVersionRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出ERP生产版本 Excel") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportErpProductiveVersionExcel(@Valid ErpProductiveVersionPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = erpProductiveVersionService.getErpProductiveVersionPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "ERP生产版本.xls", "数据", ErpProductiveVersionRespVO.class, + BeanUtils.toBean(list, ErpProductiveVersionRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java new file mode 100644 index 0000000..04f836f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细分页 Request VO") +@Data +public class ErpBomDetailPageReqVO extends PageParam { + + @Schema(description = "BOM主键", example = "24876") + private String bomId; + + @Schema(description = "ERP物料清单主键", example = "14731") + private String erpBomId; + + @Schema(description = "子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别") + private String category; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + + @Schema(description = "物料标识", example = "2") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java new file mode 100644 index 0000000..976de61 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @ExcelProperty("BOM主键") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @ExcelProperty("ERP物料清单主键") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料编码") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项物料描述") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("子项类别") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("物料标识") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java new file mode 100644 index 0000000..5c834f7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)明细新增/修改 Request VO") +@Data +public class ErpBomDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2110") + private Long id; + + @Schema(description = "BOM主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24876") + @NotEmpty(message = "BOM主键不能为空") + private String bomId; + + @Schema(description = "ERP物料清单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14731") + @NotEmpty(message = "ERP物料清单主键不能为空") + private String erpBomId; + + @Schema(description = "子项物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项物料编码不能为空") + private String childMaterialNumber; + + @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "子项物料描述不能为空") + private BigDecimal childMaterialDescription; + + @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "子项类别不能为空") + private String category; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + + @Schema(description = "物料标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "物料标识不能为空") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java new file mode 100644 index 0000000..f969188 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)分页 Request VO") +@Data +public class ErpBomPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java new file mode 100644 index 0000000..d3cc055 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM) Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpBomRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("顶层物料编码") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("可选BOM") + private String useItem; + + @Schema(description = "物料描述") + @ExcelProperty("物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本数量") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("基本单位") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java new file mode 100644 index 0000000..6a2ffcc --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpBomSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP物料清单(BOM)新增/修改 Request VO") +@Data +public class ErpBomSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31348") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "顶层物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "顶层物料编码不能为空") + private String upMaterial; + + @Schema(description = "可选BOM", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "可选BOM不能为空") + private String useItem; + + @Schema(description = "物料描述") + private String materialDescription; + + @Schema(description = "基本数量", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "基本数量不能为空") + private BigDecimal quantity; + + @Schema(description = "基本单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "基本单位不能为空") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java index 07c08e8..54db844 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyPageReqVO.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; @Schema(description = "管理后台 - ERP公司分页 Request VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java index b53ab3b..8194615 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanyRespVO.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import com.alibaba.excel.annotation.*; +import lombok.Data; @Schema(description = "管理后台 - ERP公司 Response VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java index 06fdbbf..6c63638 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCompanySaveReqVO.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; @Schema(description = "管理后台 - ERP公司新增/修改 Request VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java new file mode 100644 index 0000000..f699a2e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterPageReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +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 = "管理后台 - ERP成本中心分页 Request VO") +@Data +public class ErpCostcenterPageReqVO extends PageParam { + + @Schema(description = "成本中心编码") + private String number; + + @Schema(description = "成本中心描述", example = "赵六") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startDate; + + @Schema(description = "截止日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java new file mode 100644 index 0000000..4ddac56 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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 = "管理后台 - ERP成本中心 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpCostcenterRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("成本中心编码") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("成本中心描述") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工区必填;使用这个基础数据是,如果为X时必须和工区使用") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("功能范围") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + @ExcelProperty("功能范围描述") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("起始日期") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("截止日期") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java new file mode 100644 index 0000000..005eed4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCostcenterSaveReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - ERP成本中心新增/修改 Request VO") +@Data +public class ErpCostcenterSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23318") + private Long id; + + @Schema(description = "成本中心编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "成本中心编码不能为空") + private String number; + + @Schema(description = "成本中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "成本中心描述不能为空") + private String name; + + @Schema(description = "工区必填;使用这个基础数据是,如果为X时必须和工区使用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工区必填;使用这个基础数据是,如果为X时必须和工区使用不能为空") + private String isUse; + + @Schema(description = "功能范围", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "功能范围不能为空") + private String scopeNumber; + + @Schema(description = "功能范围描述", example = "赵六") + private String scopeName; + + @Schema(description = "起始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "起始日期不能为空") + private LocalDateTime startDate; + + @Schema(description = "截止日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "截止日期不能为空") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java index 8a32458..f5b4e38 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerPageReqVO.java @@ -1,9 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; 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; @@ -41,7 +42,4 @@ public class ErpCustomerPageReqVO extends PageParam { @Schema(description = "冻结标识") private String isProvisional; - @Schema(description = "类型", example = "2") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java index 5878fa1..1f68cc4 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerRespVO.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - ERP客商主数据 Response VO") @Data @@ -51,8 +52,4 @@ public class ErpCustomerRespVO { @ExcelProperty("冻结标识") private String isProvisional; - @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @ExcelProperty("类型") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java index cddb3c1..dd593e7 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpCustomerSaveReqVO.java @@ -1,8 +1,9 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import jakarta.validation.constraints.*; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; import java.time.LocalDateTime; @@ -45,8 +46,4 @@ public class ErpCustomerSaveReqVO { @Schema(description = "冻结标识") private String isProvisional; - @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotEmpty(message = "类型不能为空") - private String type; - } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java new file mode 100644 index 0000000..fd4dda5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂分页 Request VO") +@Data +public class ErpFactoryPageReqVO extends PageParam { + + @Schema(description = "工厂名称", example = "赵六") + private String name; + + @Schema(description = "工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java new file mode 100644 index 0000000..e8208c0 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpFactoryRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("工厂名称") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java new file mode 100644 index 0000000..b2de568 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - ERP工厂新增/修改 Request VO") +@Data +public class ErpFactorySaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9235") + private Long id; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "工厂名称不能为空") + private String name; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂编码不能为空") + private String number; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java index fa5b0e1..3e6bf9e 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; 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; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java index 46b5597..459108a 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.Data; + import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - ERP物料数据 Response VO") @Data diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java index 0939bbc..705608f 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + import java.time.LocalDateTime; @Schema(description = "管理后台 - ERP物料数据新增/修改 Request VO") diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java new file mode 100644 index 0000000..aaf2a03 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细分页 Request VO") +@Data +public class ErpProcessDetailPageReqVO extends PageParam { + + @Schema(description = "ERP工艺路线主键", example = "30589") + private String processId; + + @Schema(description = "工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", example = "李四") + private String processingName; + + @Schema(description = "作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", example = "张三") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java new file mode 100644 index 0000000..e98e30f --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailRespVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @ExcelProperty("ERP工艺路线主键") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工序编码") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("工序描述") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("作业的计量单位") + private String uom; + + @Schema(description = "工作中心编号") + @ExcelProperty("工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("工作中心描述") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java new file mode 100644 index 0000000..73ae23c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessDetailSaveReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线明细新增/修改 Request VO") +@Data +public class ErpProcessDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5707") + private Long id; + + @Schema(description = "ERP工艺路线主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30589") + @NotEmpty(message = "ERP工艺路线主键不能为空") + private String processId; + + @Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工序编码不能为空") + private BigDecimal processingNumber; + + @Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "工序描述不能为空") + private String processingName; + + @Schema(description = "作业的计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "作业的计量单位不能为空") + private String uom; + + @Schema(description = "工作中心编号") + private String workCenterNumber; + + @Schema(description = "工作中心描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "工作中心描述不能为空") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java new file mode 100644 index 0000000..886e57d --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线分页 Request VO") +@Data +public class ErpProcessPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "27504") + private Long groupCount; + + @Schema(description = "工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", example = "2") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java new file mode 100644 index 0000000..55854f9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessRespVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProcessRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + @ExcelProperty("物料描述") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @ExcelProperty("组计数器") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线描述") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位") + private String uom; + + @Schema(description = "用途") + @ExcelProperty("用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java new file mode 100644 index 0000000..7145858 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProcessSaveReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP工艺路线新增/修改 Request VO") +@Data +public class ErpProcessSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13200") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "物料描述", example = "李四") + private String materialName; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "27504") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + + @Schema(description = "工艺路线描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线描述不能为空") + private String blineDescription; + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String uom; + + @Schema(description = "用途") + private String useDescription; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "状态不能为空") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java new file mode 100644 index 0000000..548a1eb --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本分页 Request VO") +@Data +public class ErpProductiveVersionPageReqVO extends PageParam { + + @Schema(description = "工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", example = "15610") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java new file mode 100644 index 0000000..17d802c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.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.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ErpProductiveVersionRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("生产版本编码") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + @ExcelProperty("生产版本描述") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + @ExcelProperty("备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线组") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @ExcelProperty("组计数器") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java new file mode 100644 index 0000000..5360149 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.erp.controller.admin.erp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - ERP生产版本新增/修改 Request VO") +@Data +public class ErpProductiveVersionSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27745") + private Long id; + + @Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工厂编码不能为空") + private BigDecimal factoryNumber; + + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码不能为空") + private String materialNumber; + + @Schema(description = "生产版本编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "生产版本编码不能为空") + private String productiveVersionNumber; + + @Schema(description = "生产版本描述", example = "赵六") + private String productiveVersionName; + + @Schema(description = "备选BOM编号") + private String bomNumber; + + @Schema(description = "工艺路线组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线组不能为空") + private String blineGroup; + + @Schema(description = "组计数器", requiredMode = Schema.RequiredMode.REQUIRED, example = "15610") + @NotNull(message = "组计数器不能为空") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java new file mode 100644 index 0000000..af5ebba --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP物料清单(BOM) DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm") +@KeySequence("sply_erp_bm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 顶层物料编码 + */ + @TableField("UP_MTRL") + private String upMaterial; + /** + * 可选BOM + */ + @TableField("USE_ITM") + private String useItem; + /** + * 物料描述 + */ + @TableField("MTRL_DSP") + private String materialDescription; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java new file mode 100644 index 0000000..503cf37 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpBomDetailDO.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP物料清单(BOM)明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_bm_dtl") +@KeySequence("sply_erp_bm_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpBomDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * BOM主键 + */ + @TableField("BM_ID") + private String bomId; + /** + * ERP物料清单主键 + */ + @TableField("ERP_BM_ID") + private String erpBomId; + /** + * 子项物料编码 + */ + @TableField("CHD_MTRL_NUM") + private String childMaterialNumber; + /** + * 子项物料描述 + */ + @TableField("CHD_MTRL_DSP") + private BigDecimal childMaterialDescription; + /** + * 子项类别 + */ + @TableField("CTGR") + private String category; + /** + * 基本数量 + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 基本单位 + */ + @TableField("UNT") + private String unit; + /** + * 物料标识 + */ + @TableField("IDE_TP") + private String identificationType; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java index 779d839..993efd7 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCompanyDO.java @@ -1,9 +1,7 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -import lombok.*; -import java.util.*; import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; /** * ERP公司 DO * @@ -12,7 +10,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_cpn") @KeySequence("sply_erp_cpn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -20,9 +19,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpCompanyDO extends BaseDO { - - +//public class ErpCompanyDO extends BaseDO { +public class ErpCompanyDO{ /** * 主键 @@ -45,4 +43,7 @@ public class ErpCompanyDO extends BaseDO { @TableField("CUR") private String currency; + @TableField(exist = false) + private Integer TENANT_ID; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java new file mode 100644 index 0000000..6826b48 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCostcenterDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.time.LocalDateTime; +/** +* ERP成本中心 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_cctr") +@KeySequence("sply_erp_cctr_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpCostcenterDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 成本中心编码 + */ + @TableField("NUM") + private String number; + /** + * 成本中心描述 + */ + @TableField("NAME") + private String name; + /** + * 工区必填;使用这个基础数据是,如果为X时必须和工区使用 + */ + @TableField("IS_USE") + private String isUse; + /** + * 功能范围 + */ + @TableField("SCO_NUM") + private String scopeNumber; + /** + * 功能范围描述 + */ + @TableField("SCO_NAME") + private String scopeName; + /** + * 起始日期 + */ + @TableField("STRT_DT") + private LocalDateTime startDate; + /** + * 截止日期 + */ + @TableField("END_DT") + private LocalDateTime endDate; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java index 742755e..2423ae2 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpCustomerDO.java @@ -1,11 +1,9 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -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; +import lombok.*; + +import java.time.LocalDateTime; /** * ERP客商主数据 DO * @@ -14,7 +12,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_cstm") @KeySequence("sply_erp_cstm_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -22,7 +21,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpCustomerDO extends BaseDO { +//public class ErpCustomerDO extends BaseDO { +public class ErpCustomerDO{ @@ -76,10 +76,8 @@ public class ErpCustomerDO extends BaseDO { */ @TableField("IS_PRVS") private String isProvisional; - /** - * 类型 - */ - @TableField("TP") - private String type; + + @TableField(exist = false) + private Integer TENANT_ID; } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java new file mode 100644 index 0000000..425021b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpFactoryDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; +/** +* ERP工厂 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_fact") +@KeySequence("sply_erp_fact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpFactoryDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂名称 + */ + @TableField("NAME") + private String name; + /** + * 工厂编码 + */ + @TableField("NUM") + private String number; + /** + * 公司编号 + */ + @TableField("CPN_ID") + private Long companyId; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java index 423e687..b962257 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpMaterialDO.java @@ -1,10 +1,9 @@ package cn.iocoder.yudao.module.erp.dal.dataobject.erp; -import lombok.*; -import java.util.*; - import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.time.LocalDateTime; /** * ERP物料数据 DO * @@ -13,7 +12,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("sply_erp_mtrl") @KeySequence("sply_erp_mtrl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @ToString(callSuper = true) @Builder @NoArgsConstructor @@ -21,7 +21,8 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpMaterialDO extends BaseDO { +//public class ErpMaterialDO extends BaseDO { +public class ErpMaterialDO { @@ -96,4 +97,7 @@ public class ErpMaterialDO extends BaseDO { @TableField("MTRL_LEN_DSP") private String materialLengthDescription; + @TableField(exist = false) + private Integer TENANT_ID; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java new file mode 100644 index 0000000..d34bd98 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs") +@KeySequence("sply_erp_prcs_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料描述 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + /** + * 工艺路线描述 + */ + @TableField("BLN_DSP") + private String blineDescription; + /** + * 计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 用途 + */ + @TableField("USE_DSP") + private String useDescription; + /** + * 状态 + */ + @TableField("STS") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java new file mode 100644 index 0000000..8689ba2 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProcessDetailDO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP工艺路线明细 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_prcs_dtl") +@KeySequence("sply_erp_prcs_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProcessDetailDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP工艺路线主键 + */ + @TableField("PRCS_ID") + private String processId; + /** + * 工序编码 + */ + @TableField("PROC_NUM") + private BigDecimal processingNumber; + /** + * 工序描述 + */ + @TableField("PROC_NAME") + private String processingName; + /** + * 作业的计量单位 + */ + @TableField("UOM") + private String uom; + /** + * 工作中心编号 + */ + @TableField("WRK_CTR_NUM") + private String workCenterNumber; + /** + * 工作中心描述 + */ + @TableField("WRK_CTR_NAME") + private String workCenterName; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java new file mode 100644 index 0000000..e40fbff --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.erp.dal.dataobject.erp; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +/** +* ERP生产版本 DO +* +* @author 后台管理 +*/ +@TableName("sply_erp_pdtv_ver") +@KeySequence("sply_erp_pdtv_ver_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class ErpProductiveVersionDO extends BaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 工厂编码 + */ + @TableField("FACT_NUM") + private BigDecimal factoryNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 生产版本编码 + */ + @TableField("PDTV_VER_NUM") + private String productiveVersionNumber; + /** + * 生产版本描述 + */ + @TableField("PDTV_VER_NAME") + private String productiveVersionName; + /** + * 备选BOM编号 + */ + @TableField("BM_NUM") + private String bomNumber; + /** + * 工艺路线组 + */ + @TableField("BLN_GRP") + private String blineGroup; + /** + * 组计数器 + */ + @TableField("GRP_CNT") + private Long groupCount; + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java new file mode 100644 index 0000000..014a84c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomDetailMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM)明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDetailDO::getBomId, reqVO.getBomId()) + .eqIfPresent(ErpBomDetailDO::getErpBomId, reqVO.getErpBomId()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialNumber, reqVO.getChildMaterialNumber()) + .eqIfPresent(ErpBomDetailDO::getChildMaterialDescription, reqVO.getChildMaterialDescription()) + .eqIfPresent(ErpBomDetailDO::getCategory, reqVO.getCategory()) + .eqIfPresent(ErpBomDetailDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDetailDO::getUnit, reqVO.getUnit()) + .eqIfPresent(ErpBomDetailDO::getIdentificationType, reqVO.getIdentificationType()) + .orderByDesc(ErpBomDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java new file mode 100644 index 0000000..2a794f3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP物料清单(BOM) Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpBomMapper extends BaseMapperX { + + default PageResult selectPage(ErpBomPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpBomDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpBomDO::getUpMaterial, reqVO.getUpMaterial()) + .eqIfPresent(ErpBomDO::getUseItem, reqVO.getUseItem()) + .eqIfPresent(ErpBomDO::getMaterialDescription, reqVO.getMaterialDescription()) + .eqIfPresent(ErpBomDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(ErpBomDO::getUnit, reqVO.getUnit()) + .orderByDesc(ErpBomDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java new file mode 100644 index 0000000..aa8b4c7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCostcenterMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP成本中心 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpCostcenterMapper extends BaseMapperX { + + default PageResult selectPage(ErpCostcenterPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpCostcenterDO::getNumber, reqVO.getNumber()) + .likeIfPresent(ErpCostcenterDO::getName, reqVO.getName()) + .eqIfPresent(ErpCostcenterDO::getIsUse, reqVO.getIsUse()) + .eqIfPresent(ErpCostcenterDO::getScopeNumber, reqVO.getScopeNumber()) + .likeIfPresent(ErpCostcenterDO::getScopeName, reqVO.getScopeName()) + .betweenIfPresent(ErpCostcenterDO::getStartDate, reqVO.getStartDate()) + .betweenIfPresent(ErpCostcenterDO::getEndDate, reqVO.getEndDate()) + .orderByDesc(ErpCostcenterDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java index 6e882ae..dfe7bd6 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpCustomerMapper.java @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.erp.dal.mysql.erp; 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.erp.dal.dataobject.erp.ErpCustomerDO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; import org.apache.ibatis.annotations.Mapper; /** @@ -26,7 +26,6 @@ public interface ErpCustomerMapper extends BaseMapperX { .betweenIfPresent(ErpCustomerDO::getRepairDate, reqVO.getRepairDate()) .eqIfPresent(ErpCustomerDO::getIsGiveback, reqVO.getIsGiveback()) .eqIfPresent(ErpCustomerDO::getIsProvisional, reqVO.getIsProvisional()) - .eqIfPresent(ErpCustomerDO::getType, reqVO.getType()) .orderByDesc(ErpCustomerDO::getId)); } diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java new file mode 100644 index 0000000..b3c195a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpFactoryMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工厂 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpFactoryMapper extends BaseMapperX { + + default PageResult selectPage(ErpFactoryPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ErpFactoryDO::getName, reqVO.getName()) + .eqIfPresent(ErpFactoryDO::getNumber, reqVO.getNumber()) + .orderByDesc(ErpFactoryDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java index 6b06b19..b170f84 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpMaterialMapper.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.erp.dal.mysql.erp; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java new file mode 100644 index 0000000..85e1b28 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessDetailMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线明细 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDetailDO::getProcessId, reqVO.getProcessId()) + .eqIfPresent(ErpProcessDetailDO::getProcessingNumber, reqVO.getProcessingNumber()) + .likeIfPresent(ErpProcessDetailDO::getProcessingName, reqVO.getProcessingName()) + .eqIfPresent(ErpProcessDetailDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDetailDO::getWorkCenterNumber, reqVO.getWorkCenterNumber()) + .likeIfPresent(ErpProcessDetailDO::getWorkCenterName, reqVO.getWorkCenterName()) + .orderByDesc(ErpProcessDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java new file mode 100644 index 0000000..f46e488 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProcessMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP工艺路线 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProcessMapper extends BaseMapperX { + + default PageResult selectPage(ErpProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProcessDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProcessDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(ErpProcessDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(ErpProcessDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProcessDO::getGroupCount, reqVO.getGroupCount()) + .eqIfPresent(ErpProcessDO::getBlineDescription, reqVO.getBlineDescription()) + .eqIfPresent(ErpProcessDO::getUom, reqVO.getUom()) + .eqIfPresent(ErpProcessDO::getUseDescription, reqVO.getUseDescription()) + .eqIfPresent(ErpProcessDO::getStatus, reqVO.getStatus()) + .orderByDesc(ErpProcessDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java new file mode 100644 index 0000000..ddf8200 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.erp.dal.mysql.erp; + +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.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * ERP生产版本 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface ErpProductiveVersionMapper extends BaseMapperX { + + default PageResult selectPage(ErpProductiveVersionPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ErpProductiveVersionDO::getFactoryNumber, reqVO.getFactoryNumber()) + .eqIfPresent(ErpProductiveVersionDO::getMaterialNumber, reqVO.getMaterialNumber()) + .eqIfPresent(ErpProductiveVersionDO::getProductiveVersionNumber, reqVO.getProductiveVersionNumber()) + .likeIfPresent(ErpProductiveVersionDO::getProductiveVersionName, reqVO.getProductiveVersionName()) + .eqIfPresent(ErpProductiveVersionDO::getBomNumber, reqVO.getBomNumber()) + .eqIfPresent(ErpProductiveVersionDO::getBlineGroup, reqVO.getBlineGroup()) + .eqIfPresent(ErpProductiveVersionDO::getGroupCount, reqVO.getGroupCount()) + .orderByDesc(ErpProductiveVersionDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java new file mode 100644 index 0000000..5fea1b5 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM)明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomDetailService { + + /** + * 创建ERP物料清单(BOM)明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomDetailRespVO createErpBomDetail(@Valid ErpBomDetailSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM)明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpBomDetail(@Valid ErpBomDetailSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM)明细 + * + * @param id 编号 + */ + void deleteErpBomDetail(Long id); + + /** + * 批量删除ERP物料清单(BOM)明细 + * + * @param ids 编号 + */ + void deleteErpBomDetailListByIds(List ids); + + /** + * 获得ERP物料清单(BOM)明细 + * + * @param id 编号 + * @return ERP物料清单(BOM)明细 + */ + ErpBomDetailDO getErpBomDetail(Long id); + + /** + * 获得ERP物料清单(BOM)明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)明细分页 + */ + PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java new file mode 100644 index 0000000..3d52c0c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS; + +/** + * ERP物料清单(BOM)明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomDetailServiceImpl implements ErpBomDetailService { + + @Resource + private ErpBomDetailMapper erpBomDetailMapper; + + @Override + public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { + // 插入 + ErpBomDetailDO erpBomDetail = BeanUtils.toBean(createReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.insert(erpBomDetail); + // 返回 + return BeanUtils.toBean(erpBomDetail, ErpBomDetailRespVO.class); + } + + @Override + public void updateErpBomDetail(ErpBomDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomDetailExists(updateReqVO.getId()); + // 更新 + ErpBomDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDetailDO.class); + erpBomDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpBomDetail(Long id) { + // 校验存在 + validateErpBomDetailExists(id); + // 删除 + erpBomDetailMapper.deleteById(id); + } + + @Override + public void deleteErpBomDetailListByIds(List ids) { + // 校验存在 + validateErpBomDetailExists(ids); + // 删除 + erpBomDetailMapper.deleteByIds(ids); + } + + private void validateErpBomDetailExists(List ids) { + List list = erpBomDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + private void validateErpBomDetailExists(Long id) { + if (erpBomDetailMapper.selectById(id) == null) { + throw exception(ERP_BOM_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpBomDetailDO getErpBomDetail(Long id) { + return erpBomDetailMapper.selectById(id); + } + + @Override + public PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO) { + return erpBomDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java new file mode 100644 index 0000000..90da405 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP物料清单(BOM) Service 接口 + * + * @author 后台管理 + */ +public interface ErpBomService { + + /** + * 创建ERP物料清单(BOM) + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpBomRespVO createErpBom(@Valid ErpBomSaveReqVO createReqVO); + + /** + * 更新ERP物料清单(BOM) + * + * @param updateReqVO 更新信息 + */ + void updateErpBom(@Valid ErpBomSaveReqVO updateReqVO); + + /** + * 删除ERP物料清单(BOM) + * + * @param id 编号 + */ + void deleteErpBom(Long id); + + /** + * 批量删除ERP物料清单(BOM) + * + * @param ids 编号 + */ + void deleteErpBomListByIds(List ids); + + /** + * 获得ERP物料清单(BOM) + * + * @param id 编号 + * @return ERP物料清单(BOM) + */ + ErpBomDO getErpBom(Long id); + + /** + * 获得ERP物料清单(BOM)分页 + * + * @param pageReqVO 分页查询 + * @return ERP物料清单(BOM)分页 + */ + PageResult getErpBomPage(ErpBomPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java new file mode 100644 index 0000000..c187dbe --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpBomServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpBomDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpBomMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS; + +/** + * ERP物料清单(BOM) Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpBomServiceImpl implements ErpBomService { + + @Resource + private ErpBomMapper erpBomMapper; + + @Override + public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { + // 插入 + ErpBomDO erpBom = BeanUtils.toBean(createReqVO, ErpBomDO.class); + erpBomMapper.insert(erpBom); + // 返回 + return BeanUtils.toBean(erpBom, ErpBomRespVO.class); + } + + @Override + public void updateErpBom(ErpBomSaveReqVO updateReqVO) { + // 校验存在 + validateErpBomExists(updateReqVO.getId()); + // 更新 + ErpBomDO updateObj = BeanUtils.toBean(updateReqVO, ErpBomDO.class); + erpBomMapper.updateById(updateObj); + } + + @Override + public void deleteErpBom(Long id) { + // 校验存在 + validateErpBomExists(id); + // 删除 + erpBomMapper.deleteById(id); + } + + @Override + public void deleteErpBomListByIds(List ids) { + // 校验存在 + validateErpBomExists(ids); + // 删除 + erpBomMapper.deleteByIds(ids); + } + + private void validateErpBomExists(List ids) { + List list = erpBomMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + private void validateErpBomExists(Long id) { + if (erpBomMapper.selectById(id) == null) { + throw exception(ERP_BOM_NOT_EXISTS); + } + } + + @Override + public ErpBomDO getErpBom(Long id) { + return erpBomMapper.selectById(id); + } + + @Override + public PageResult getErpBomPage(ErpBomPageReqVO pageReqVO) { + return erpBomMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java index b884437..72c6136 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; -import jakarta.validation.*; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP公司 Service 接口 diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java index 147e6c2..cbb7993 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -2,28 +2,24 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCompanyDO; import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCompanyMapper; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.HttpEntity; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestTemplate; -import java.util.*; - -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import java.util.ArrayList; +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.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; @@ -38,15 +34,12 @@ import static dm.jdbc.util.DriverUtil.log; @Validated public class ErpCompanyServiceImpl implements ErpCompanyService { - @Value("${erp.address}") - private String erpAddress; - - @Value("${erp.sapsys}") - private String sapsys; - @Resource private ErpCompanyMapper erpCompanyMapper; + @Resource + private ErpConfig erpConfig; + @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { // 插入 @@ -105,61 +98,91 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { } @Override + @Transactional public void callErpRfcInterface() { try { - // 构建完整URL - String url = "http://" + erpAddress + "/api/rfc/get"; - // 构建请求参数 - JSONObject requestBody = new JSONObject(); - requestBody.put("sapsys", sapsys); - requestBody.put("funcnr", OftenEnum.FuncnrEnum.公司代码.funcnr); // 获取枚举值 - - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 创建HTTP请求实体 - HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); - - // 发送POST请求 - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - - // 解析响应结果 - JSONObject jsonResponse = JSON.parseObject(response.getBody()); - - // 正确获取E_DATA数组 - JSONObject dataObject = jsonResponse.getJSONObject("data"); - if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { - JSONArray companyArray = dataObject.getJSONArray("E_DATA"); - - // 批量插入公司数据 - if (companyArray != null && !companyArray.isEmpty()) { - List erpCompanyDOS = new ArrayList<>(); - for (int i = 0; i < companyArray.size(); i++) { - JSONObject companyJson = companyArray.getJSONObject(i); - if (companyJson != null) { - ErpCompanyDO companyDO = new ErpCompanyDO(); - companyDO.setName(companyJson.getString("BUTXT")); - companyDO.setNumber(companyJson.getString("BUKRS")); - companyDO.setCurrency(companyJson.getString("WAERS")); - erpCompanyDOS.add(companyDO); - } - } - // 批量插入数据库 - if (!erpCompanyDOS.isEmpty()) { - erpCompanyMapper.insertBatch(erpCompanyDOS); - } - } - } else { - log.warn("ERP接口调用失败或返回错误标志"); + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); + if (dataArray == null || dataArray.isEmpty()) { + return; } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } catch (Exception e) { log.error("调用ERP RFC接口失败: {}", e); throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); } } + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("BUKRS").trim(); + if (number != null) { + ErpCompanyDO DO = new ErpCompanyDO(); + DO.setName(dataJson.getString("BUTXT")); + DO.setNumber(number); + DO.setCurrency(dataJson.getString("WAERS")); + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCompanyMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCompanyMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java new file mode 100644 index 0000000..08ea18e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP成本中心 Service 接口 + * + * @author 后台管理 + */ +public interface ErpCostcenterService { + + /** + * 创建ERP成本中心 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpCostcenterRespVO createErpCostcenter(@Valid ErpCostcenterSaveReqVO createReqVO); + + /** + * 更新ERP成本中心 + * + * @param updateReqVO 更新信息 + */ + void updateErpCostcenter(@Valid ErpCostcenterSaveReqVO updateReqVO); + + /** + * 删除ERP成本中心 + * + * @param id 编号 + */ + void deleteErpCostcenter(Long id); + + /** + * 批量删除ERP成本中心 + * + * @param ids 编号 + */ + void deleteErpCostcenterListByIds(List ids); + + /** + * 获得ERP成本中心 + * + * @param id 编号 + * @return ERP成本中心 + */ + ErpCostcenterDO getErpCostcenter(Long id); + + /** + * 获得ERP成本中心分页 + * + * @param pageReqVO 分页查询 + * @return ERP成本中心分页 + */ + PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java new file mode 100644 index 0000000..946a2f3 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCostcenterServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCostcenterDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCostcenterMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_COSTCENTER_NOT_EXISTS; + +/** + * ERP成本中心 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpCostcenterServiceImpl implements ErpCostcenterService { + + @Resource + private ErpCostcenterMapper erpCostcenterMapper; + + @Override + public ErpCostcenterRespVO createErpCostcenter(ErpCostcenterSaveReqVO createReqVO) { + // 插入 + ErpCostcenterDO erpCostcenter = BeanUtils.toBean(createReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.insert(erpCostcenter); + // 返回 + return BeanUtils.toBean(erpCostcenter, ErpCostcenterRespVO.class); + } + + @Override + public void updateErpCostcenter(ErpCostcenterSaveReqVO updateReqVO) { + // 校验存在 + validateErpCostcenterExists(updateReqVO.getId()); + // 更新 + ErpCostcenterDO updateObj = BeanUtils.toBean(updateReqVO, ErpCostcenterDO.class); + erpCostcenterMapper.updateById(updateObj); + } + + @Override + public void deleteErpCostcenter(Long id) { + // 校验存在 + validateErpCostcenterExists(id); + // 删除 + erpCostcenterMapper.deleteById(id); + } + + @Override + public void deleteErpCostcenterListByIds(List ids) { + // 校验存在 + validateErpCostcenterExists(ids); + // 删除 + erpCostcenterMapper.deleteByIds(ids); + } + + private void validateErpCostcenterExists(List ids) { + List list = erpCostcenterMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + private void validateErpCostcenterExists(Long id) { + if (erpCostcenterMapper.selectById(id) == null) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + } + + @Override + public ErpCostcenterDO getErpCostcenter(Long id) { + return erpCostcenterMapper.selectById(id); + } + + @Override + public PageResult getErpCostcenterPage(ErpCostcenterPageReqVO pageReqVO) { + return erpCostcenterMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java index dc27963..58f5ffc 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import jakarta.validation.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP客商主数据 Service 接口 @@ -61,4 +61,7 @@ public interface ErpCustomerService { */ PageResult getErpCustomerPage(ErpCustomerPageReqVO pageReqVO); + void callErpRfcInterface(); + + void initialize(); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java index d6b7e83..e24f78d 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpCustomerServiceImpl.java @@ -1,22 +1,35 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; -import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCustomerMapper; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; -import org.springframework.stereotype.Service; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpCustomerMapper; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import jakarta.annotation.Resource; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CUSTOMER_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; /** * ERP客商主数据 Service 实现类 @@ -27,6 +40,12 @@ import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_CUSTOMER_ @Validated public class ErpCustomerServiceImpl implements ErpCustomerService { + @Resource + private RedisTemplate redisTemplate; + + @Resource + private ErpConfig erpConfig; + @Resource private ErpCustomerMapper erpCustomerMapper; @@ -57,12 +76,12 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { } @Override - public void deleteErpCustomerListByIds(List ids) { + public void deleteErpCustomerListByIds(List ids) { // 校验存在 validateErpCustomerExists(ids); // 删除 erpCustomerMapper.deleteByIds(ids); - } + } private void validateErpCustomerExists(List ids) { List list = erpCustomerMapper.selectByIds(ids); @@ -87,4 +106,129 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { return erpCustomerMapper.selectPage(pageReqVO); } + @Override + @Transactional + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); +// datumEntry.put("low", "2021-05-17"); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); +// req.put("BUKRS", "3001"); + + // 1. 调用ERP接口获取数据 + for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { + req.put("mode", type.modetype); + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + + // 2. 处理数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { + String key = "erp" + funcnrEnum.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key, funcnrEnum.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("PARTNER").trim(); + if (number != null) { + ErpCustomerDO DO = new ErpCustomerDO(); + DO.setName(dataJson.getString("NAME_ORG1")); + DO.setNumber(number); + DO.setAccountGroup(dataJson.getString("BU_GROUP")); + DO.setDescription(dataJson.getString("BU_SORT1")); + DO.setCenterNumber(dataJson.getString("BU_SORT2")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("CRDAT")+"T00:00:00")); + DO.setRepairDate(LocalDateTime.parse(dataJson.getString("CHDAT")+"T00:00:00")); + DO.setIsGiveback(dataJson.getString("XDELE")); + DO.setIsProvisional(dataJson.getString("XBLCK")); +// DO.setType(type.modetype); + + // 使用 Map 优化查找效率,避免每次遍历 comnumbers 列表 + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpCustomerMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpCustomerMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key, result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpCustomerDO::getNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.客商信息.getFuncnr(); + redisTemplate.opsForValue().set(key, existingNumbers); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java new file mode 100644 index 0000000..8d6e338 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工厂 Service 接口 + * + * @author 后台管理 + */ +public interface ErpFactoryService { + + /** + * 创建ERP工厂 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpFactoryRespVO createErpFactory(@Valid ErpFactorySaveReqVO createReqVO); + + /** + * 更新ERP工厂 + * + * @param updateReqVO 更新信息 + */ + void updateErpFactory(@Valid ErpFactorySaveReqVO updateReqVO); + + /** + * 删除ERP工厂 + * + * @param id 编号 + */ + void deleteErpFactory(Long id); + + /** + * 批量删除ERP工厂 + * + * @param ids 编号 + */ + void deleteErpFactoryListByIds(List ids); + + /** + * 获得ERP工厂 + * + * @param id 编号 + * @return ERP工厂 + */ + ErpFactoryDO getErpFactory(Long id); + + /** + * 获得ERP工厂分页 + * + * @param pageReqVO 分页查询 + * @return ERP工厂分页 + */ + PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java new file mode 100644 index 0000000..56cd524 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpFactoryServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpFactoryDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpFactoryMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_FACTORY_NOT_EXISTS; + +/** + * ERP工厂 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpFactoryServiceImpl implements ErpFactoryService { + + @Resource + private ErpFactoryMapper erpFactoryMapper; + + @Override + public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { + // 插入 + ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); + erpFactoryMapper.insert(erpFactory); + // 返回 + return BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class); + } + + @Override + public void updateErpFactory(ErpFactorySaveReqVO updateReqVO) { + // 校验存在 + validateErpFactoryExists(updateReqVO.getId()); + // 更新 + ErpFactoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpFactoryDO.class); + erpFactoryMapper.updateById(updateObj); + } + + @Override + public void deleteErpFactory(Long id) { + // 校验存在 + validateErpFactoryExists(id); + // 删除 + erpFactoryMapper.deleteById(id); + } + + @Override + public void deleteErpFactoryListByIds(List ids) { + // 校验存在 + validateErpFactoryExists(ids); + // 删除 + erpFactoryMapper.deleteByIds(ids); + } + + private void validateErpFactoryExists(List ids) { + List list = erpFactoryMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + private void validateErpFactoryExists(Long id) { + if (erpFactoryMapper.selectById(id) == null) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + + @Override + public ErpFactoryDO getErpFactory(Long id) { + return erpFactoryMapper.selectById(id); + } + + @Override + public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { + return erpFactoryMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java index f64eaa5..3f52ed2 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.erp.service.erp; -import java.util.*; - +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; -import jakarta.validation.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; +import jakarta.validation.Valid; + +import java.util.List; /** * ERP物料数据 Service 接口 @@ -61,4 +61,7 @@ public interface ErpMaterialService { */ PageResult getErpMaterialPage(ErpMaterialPageReqVO pageReqVO); + void callErpRfcInterface(); + + void initialize(); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java index 71e1c06..e3e9df3 100644 --- a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpMaterialServiceImpl.java @@ -1,22 +1,33 @@ package cn.iocoder.yudao.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.erp.common.conf.ErpConfig; +import cn.iocoder.yudao.module.erp.common.enums.OftenEnum; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpMaterialDO; import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpMaterialMapper; -import org.springframework.stereotype.Service; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.util.*; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_MATERIAL_NOT_EXISTS; +import static dm.jdbc.util.DriverUtil.log; /** * ERP物料数据 Service 实现类 @@ -29,6 +40,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Resource private ErpMaterialMapper erpMaterialMapper; + @Resource + private ErpConfig erpConfig; @Override public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { @@ -87,4 +100,124 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { return erpMaterialMapper.selectPage(pageReqVO); } + @Override + @Transactional + public void callErpRfcInterface() { + try { + OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.物料数据; + String funcnr = funcnrEnum.getFuncnr(); + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", "2021-05-16"); +// datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatakey(), datumList); + + // 1. 调用ERP接口获取数据 + JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray,funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + } + } + + /** + * 处理数据,区分新增和更新 + */ + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + String number = dataJson.getString("MATNR").trim(); + if (number != null) { + ErpMaterialDO DO = new ErpMaterialDO(); + DO.setDownCenterNumber(number); + DO.setCenterNumber(dataJson.getString("BISMT")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("ERSDA"))); + DO.setMaterialType(dataJson.getString("MTART")); + DO.setMaterialGroupDate(dataJson.getString("MATKL")); + DO.setExternalMaterialGroupDate(dataJson.getString("EXTWG")); + DO.setUnit(dataJson.getString("MEINS")); + DO.setUnitDescription(dataJson.getString("MSEHT")); + DO.setMaterialTypeDescription(dataJson.getString("MTBEZ")); + DO.setMaterialGroupDescription(dataJson.getString("WGBEZ")); + DO.setExternalMaterialGroupDescription(dataJson.getString("EWBEZ")); + DO.setMaterialName(dataJson.getString("MAKTX")); + DO.setMaterialLengthDescription(dataJson.getString("LDESC")); + + if (comnumbers.contains(number)) { + // 更新 + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + } + } + } + + return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + } + + /** + * 批量保存数据 + */ + private void saveData(ProcessingResult result) { + // 批量新增和更新 + if (!result.toInsert.isEmpty()) { + erpMaterialMapper.insertBatch(result.toInsert); + } + if (!result.toUpdate.isEmpty()) { + erpMaterialMapper.updateBatch(result.toUpdate); + } + erpConfig.updateRedisCache(result.key,result.allnumbers); + } + + /** + * 数据处理结果封装类 + */ + private static class ProcessingResult { + private final List toUpdate; + private final List toInsert; + private final String key; + private final List allnumbers; + + public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + this.toUpdate = toUpdate; + this.toInsert = toInsert; + this.key = key; + this.allnumbers = allnumbers; + } + } + + @Override + public void initialize() { + List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) + .stream() + .map(ErpMaterialDO::getDownCenterNumber) + .collect(Collectors.toList()); + String key = "erp" + OftenEnum.FuncnrEnum.物料数据.getFuncnr(); + erpConfig.updateRedisCache(key, existingNumbers); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java new file mode 100644 index 0000000..a9163e7 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线明细 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessDetailService { + + /** + * 创建ERP工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessDetailRespVO createErpProcessDetail(@Valid ErpProcessDetailSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcessDetail(@Valid ErpProcessDetailSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线明细 + * + * @param id 编号 + */ + void deleteErpProcessDetail(Long id); + + /** + * 批量删除ERP工艺路线明细 + * + * @param ids 编号 + */ + void deleteErpProcessDetailListByIds(List ids); + + /** + * 获得ERP工艺路线明细 + * + * @param id 编号 + * @return ERP工艺路线明细 + */ + ErpProcessDetailDO getErpProcessDetail(Long id); + + /** + * 获得ERP工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线明细分页 + */ + PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java new file mode 100644 index 0000000..8d4e7c6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessDetailServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDetailDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessDetailMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_DETAIL_NOT_EXISTS; + +/** + * ERP工艺路线明细 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { + + @Resource + private ErpProcessDetailMapper erpProcessDetailMapper; + + @Override + public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) { + // 插入 + ErpProcessDetailDO erpProcessDetail = BeanUtils.toBean(createReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.insert(erpProcessDetail); + // 返回 + return BeanUtils.toBean(erpProcessDetail, ErpProcessDetailRespVO.class); + } + + @Override + public void updateErpProcessDetail(ErpProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessDetailExists(updateReqVO.getId()); + // 更新 + ErpProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDetailDO.class); + erpProcessDetailMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcessDetail(Long id) { + // 校验存在 + validateErpProcessDetailExists(id); + // 删除 + erpProcessDetailMapper.deleteById(id); + } + + @Override + public void deleteErpProcessDetailListByIds(List ids) { + // 校验存在 + validateErpProcessDetailExists(ids); + // 删除 + erpProcessDetailMapper.deleteByIds(ids); + } + + private void validateErpProcessDetailExists(List ids) { + List list = erpProcessDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + private void validateErpProcessDetailExists(Long id) { + if (erpProcessDetailMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ErpProcessDetailDO getErpProcessDetail(Long id) { + return erpProcessDetailMapper.selectById(id); + } + + @Override + public PageResult getErpProcessDetailPage(ErpProcessDetailPageReqVO pageReqVO) { + return erpProcessDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java new file mode 100644 index 0000000..4d020a4 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP工艺路线 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProcessService { + + /** + * 创建ERP工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProcessRespVO createErpProcess(@Valid ErpProcessSaveReqVO createReqVO); + + /** + * 更新ERP工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateErpProcess(@Valid ErpProcessSaveReqVO updateReqVO); + + /** + * 删除ERP工艺路线 + * + * @param id 编号 + */ + void deleteErpProcess(Long id); + + /** + * 批量删除ERP工艺路线 + * + * @param ids 编号 + */ + void deleteErpProcessListByIds(List ids); + + /** + * 获得ERP工艺路线 + * + * @param id 编号 + * @return ERP工艺路线 + */ + ErpProcessDO getErpProcess(Long id); + + /** + * 获得ERP工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return ERP工艺路线分页 + */ + PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java new file mode 100644 index 0000000..bc1b832 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProcessServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProcessDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProcessMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_NOT_EXISTS; + +/** + * ERP工艺路线 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProcessServiceImpl implements ErpProcessService { + + @Resource + private ErpProcessMapper erpProcessMapper; + + @Override + public ErpProcessRespVO createErpProcess(ErpProcessSaveReqVO createReqVO) { + // 插入 + ErpProcessDO erpProcess = BeanUtils.toBean(createReqVO, ErpProcessDO.class); + erpProcessMapper.insert(erpProcess); + // 返回 + return BeanUtils.toBean(erpProcess, ErpProcessRespVO.class); + } + + @Override + public void updateErpProcess(ErpProcessSaveReqVO updateReqVO) { + // 校验存在 + validateErpProcessExists(updateReqVO.getId()); + // 更新 + ErpProcessDO updateObj = BeanUtils.toBean(updateReqVO, ErpProcessDO.class); + erpProcessMapper.updateById(updateObj); + } + + @Override + public void deleteErpProcess(Long id) { + // 校验存在 + validateErpProcessExists(id); + // 删除 + erpProcessMapper.deleteById(id); + } + + @Override + public void deleteErpProcessListByIds(List ids) { + // 校验存在 + validateErpProcessExists(ids); + // 删除 + erpProcessMapper.deleteByIds(ids); + } + + private void validateErpProcessExists(List ids) { + List list = erpProcessMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + private void validateErpProcessExists(Long id) { + if (erpProcessMapper.selectById(id) == null) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + } + + @Override + public ErpProcessDO getErpProcess(Long id) { + return erpProcessMapper.selectById(id); + } + + @Override + public PageResult getErpProcessPage(ErpProcessPageReqVO pageReqVO) { + return erpProcessMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java new file mode 100644 index 0000000..84ee98b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * ERP生产版本 Service 接口 + * + * @author 后台管理 + */ +public interface ErpProductiveVersionService { + + /** + * 创建ERP生产版本 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + ErpProductiveVersionRespVO createErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO createReqVO); + + /** + * 更新ERP生产版本 + * + * @param updateReqVO 更新信息 + */ + void updateErpProductiveVersion(@Valid ErpProductiveVersionSaveReqVO updateReqVO); + + /** + * 删除ERP生产版本 + * + * @param id 编号 + */ + void deleteErpProductiveVersion(Long id); + + /** + * 批量删除ERP生产版本 + * + * @param ids 编号 + */ + void deleteErpProductiveVersionListByIds(List ids); + + /** + * 获得ERP生产版本 + * + * @param id 编号 + * @return ERP生产版本 + */ + ErpProductiveVersionDO getErpProductiveVersion(Long id); + + /** + * 获得ERP生产版本分页 + * + * @param pageReqVO 分页查询 + * @return ERP生产版本分页 + */ + PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java new file mode 100644 index 0000000..7ce359c --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/java/cn/iocoder/yudao/module/erp/service/erp/ErpProductiveVersionServiceImpl.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.erp.service.erp; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import cn.iocoder.yudao.module.erp.dal.mysql.erp.ErpProductiveVersionMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_VERSION_NOT_EXISTS; + +/** + * ERP生产版本 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionService { + + @Resource + private ErpProductiveVersionMapper erpProductiveVersionMapper; + + @Override + public ErpProductiveVersionRespVO createErpProductiveVersion(ErpProductiveVersionSaveReqVO createReqVO) { + // 插入 + ErpProductiveVersionDO erpProductiveVersion = BeanUtils.toBean(createReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.insert(erpProductiveVersion); + // 返回 + return BeanUtils.toBean(erpProductiveVersion, ErpProductiveVersionRespVO.class); + } + + @Override + public void updateErpProductiveVersion(ErpProductiveVersionSaveReqVO updateReqVO) { + // 校验存在 + validateErpProductiveVersionExists(updateReqVO.getId()); + // 更新 + ErpProductiveVersionDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.updateById(updateObj); + } + + @Override + public void deleteErpProductiveVersion(Long id) { + // 校验存在 + validateErpProductiveVersionExists(id); + // 删除 + erpProductiveVersionMapper.deleteById(id); + } + + @Override + public void deleteErpProductiveVersionListByIds(List ids) { + // 校验存在 + validateErpProductiveVersionExists(ids); + // 删除 + erpProductiveVersionMapper.deleteByIds(ids); + } + + private void validateErpProductiveVersionExists(List ids) { + List list = erpProductiveVersionMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + private void validateErpProductiveVersionExists(Long id) { + if (erpProductiveVersionMapper.selectById(id) == null) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + } + + @Override + public ErpProductiveVersionDO getErpProductiveVersion(Long id) { + return erpProductiveVersionMapper.selectById(id); + } + + @Override + public PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO) { + return erpProductiveVersionMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml new file mode 100644 index 0000000..020682e --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml new file mode 100644 index 0000000..0143f61 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml new file mode 100644 index 0000000..809b486 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml new file mode 100644 index 0000000..31ccbe6 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml new file mode 100644 index 0000000..5fa8a22 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml new file mode 100644 index 0000000..ac98f4b --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml new file mode 100644 index 0000000..6e4eef9 --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file