doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -1,53 +1,34 @@ CREATE TABLE `prod_demand_main` CREATE TABLE `production_plan` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'èªå¢ä¸»é®', `tenant_id` bigint(20) NOT NULL COMMENT 'ç§æ·ç¼å·', `dept_id` bigint(20) DEFAULT NULL COMMENT 'é¨é¨ID (ç¨äºæ°æ®æéé离)', `form_instance_id` varchar(64) NOT NULL COMMENT '表åå®ä¾å¯ä¸ID (å ³èå表ç¨)', `serial_no` varchar(64) DEFAULT NULL COMMENT 'åæ®æµæ°´å· (serialNo)', `title` varchar(128) DEFAULT NULL COMMENT 'åæ®æ é¢ (title)', `originator_user_id` varchar(64) DEFAULT NULL COMMENT 'ç¬¬ä¸æ¹å起人ID (creatorUserId)', `originator_name` varchar(64) DEFAULT NULL COMMENT 'ç¬¬ä¸æ¹å起人å§å (originator.userName)', `biz_create_time` datetime DEFAULT NULL COMMENT 'ç¬¬ä¸æ¹åæ®å建æ¶é´ (createdTimeGMT)', `project_name` varchar(128) DEFAULT NULL COMMENT '项ç®åç§°/å®¢æ· (textField_lbkozohg)', `batch_no` varchar(128) DEFAULT NULL COMMENT 'æ¹æ¬¡/å ³èç¼å· (textField_l7fytfco)', `contact_person` varchar(128) DEFAULT NULL COMMENT 'è系人/夿³¨ (textareaField_l7fytfcy)', `ext_text1` varchar(128) DEFAULT NULL COMMENT 'é¢çææ¬1 (textField_l7fytfcx)', `ext_text2` varchar(128) DEFAULT NULL COMMENT 'é¢çææ¬2 (textField_lbknlltp)', `create_user` bigint(20) DEFAULT NULL COMMENT 'å建è ', `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', `update_user` bigint(20) DEFAULT NULL COMMENT 'æ´æ°è ', `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'èªå¢ä¸»é®', `form_instance_id` VARCHAR(64) NOT NULL COMMENT '表åå®ä¾ID', `serial_no` VARCHAR(64) DEFAULT NULL COMMENT 'åæ®æµæ°´å·', `title` VARCHAR(128) DEFAULT NULL COMMENT 'åæ®æ é¢', `originator_user_id` VARCHAR(64) DEFAULT NULL COMMENT 'å起人ID', `originator_name` VARCHAR(64) DEFAULT NULL COMMENT 'å起人å§å', `biz_create_time` DATETIME DEFAULT NULL COMMENT 'åæ®å建æ¶é´', `project_name` VARCHAR(128) DEFAULT NULL COMMENT '项ç®åç§°', `batch_no` VARCHAR(128) DEFAULT NULL COMMENT 'æ¹æ¬¡å·', `contact_person` VARCHAR(128) DEFAULT NULL COMMENT 'è系人', `ext_text1` VARCHAR(128) DEFAULT NULL COMMENT 'é¢ç1', `ext_text2` VARCHAR(128) DEFAULT NULL COMMENT 'é¢ç2', `material_code` VARCHAR(64) DEFAULT NULL COMMENT 'ç©æç¼ç ', `material_category` VARCHAR(64) DEFAULT NULL COMMENT 'ç©æåç±»', `spec_desc` VARCHAR(128) DEFAULT NULL COMMENT 'è§æ ¼æè¿°', `grade_type` VARCHAR(32) DEFAULT NULL COMMENT 'ç级', `length` DECIMAL(10, 2) DEFAULT NULL COMMENT 'é¿åº¦', `width` DECIMAL(10, 2) DEFAULT NULL COMMENT '宽度', `thickness` DECIMAL(10, 2) DEFAULT NULL COMMENT 'å度', `quantity` INT DEFAULT NULL COMMENT 'æ°é', `volume` DECIMAL(10, 4) DEFAULT NULL COMMENT 'æ»ä½ç§¯', `date_start` DATETIME DEFAULT NULL COMMENT 'å¼å§æ¶é´', `date_end` DATETIME DEFAULT NULL COMMENT 'ç»ææ¶é´', `association_receipt` TEXT COMMENT 'å ³èåæ®', `data_sync_type` TINYINT DEFAULT 1 COMMENT 'æ°æ®æ¹å¼: 1=æå¨ 2=宿¶', `data_source_type` TINYINT DEFAULT 1 COMMENT 'æ°æ®æ¥æº: 1=éå®è®¢å 2=çäº§é¢æµ', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_form_instance_id` (`form_instance_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='éå®çäº§éæ±'; CREATE TABLE `prod_demand_detail` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'èªå¢ä¸»é®', `tenant_id` bigint(20) NOT NULL COMMENT 'ç§æ·ç¼å·', `prod_demand_main_id` bigint(20) NOT NULL COMMENT 'ç¶ç±»å ³èID', `material_code` varchar(64) DEFAULT NULL COMMENT 'ç©æç¼ç (textField_l9xo62q5)', `material_category` varchar(64) DEFAULT NULL COMMENT 'ç©æåç±» (textField_l9xo62q7)', `spec_desc` varchar(128) DEFAULT NULL COMMENT 'è§æ ¼æè¿° (textField_l9xo62q8)', `grade_type` varchar(32) DEFAULT NULL COMMENT 'ç级/ç±»å (radioField_m9urarr2)', `length` decimal(10, 2) DEFAULT NULL COMMENT 'é¿åº¦ (numberField_lb7lgatg)', `width` decimal(10, 2) DEFAULT NULL COMMENT '宽度 (numberField_lb7lgath)', `thickness` decimal(10, 2) DEFAULT NULL COMMENT 'å度 (numberField_lb7lgati)', `quantity` int(11) DEFAULT NULL COMMENT 'æ°é (numberField_lb7lgatj)', `volume` decimal(10, 4) DEFAULT NULL COMMENT 'æ»ä½ç§¯ (numberField_l7fytfd3)', `date_range` varchar(255) DEFAULT NULL COMMENT 'æ¶é´åºé´æ°ç»å符串 (cascadeDateField_lfxqqluw)', `association_receipt` text DEFAULT NULL COMMENT 'å ³èçå ¶ä»åæ® (associationFormField_l9xo62q6_id)', `create_user` bigint(20) DEFAULT NULL COMMENT 'å建è ', `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', `update_user` bigint(20) DEFAULT NULL COMMENT 'æ´æ°è ', `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', `remark` varchar(500) DEFAULT NULL COMMENT '夿³¨', PRIMARY KEY (`id`), KEY `idx_prod_demand_main_id` (`prod_demand_main_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='éå®çäº§éæ±_æç»è¡¨'; KEY `idx_form_instance_id` (`form_instance_id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = 'éå®çäº§éæ±'; src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -25,7 +25,7 @@ /** * éç¨httpåéæ¹æ³ * * * @author ruoyi */ public class HttpUtils @@ -132,7 +132,7 @@ /** * åæå® URL åéPOSTæ¹æ³çè¯·æ± * * * @param url åé请æ±ç URL * @param param 请æ±åæ° * @param contentType å 容类å @@ -299,7 +299,7 @@ */ public static String sendPostJson(String url, String jsonParam) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),null); return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(), null, ""); } /** @@ -311,7 +311,7 @@ */ public static String sendPostJson(String url, String jsonParam, String headerValue) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue); return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue,""); } /** @@ -321,7 +321,7 @@ * @param charset ç¼ç ç±»åï¼å¦UTF-8ãGBKçï¼å»ºè®®ä½¿ç¨StandardCharsets常éï¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam, String charset,String headerValue) { public static String sendPostJson(String url, String jsonParam, String charset,String headerValue,String accessToken) { PrintWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); @@ -340,6 +340,9 @@ if(StringUtils.isNotEmpty(headerValue)){ conn.setRequestProperty("Authorization", headerValue); } if (StringUtils.isNotEmpty(accessToken)) { conn.setRequestProperty("x-acs-dingtalk-access-token", accessToken); } // 2. å¼å¯è¾å ¥è¾åºæµï¼POST请æ±å¿ é¡»ï¼ conn.setDoOutput(true); conn.setDoInput(true); src/main/java/com/ruoyi/prodDemand/controller/ProdDemandDetailController.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/controller/ProdDemandMainController.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/mapper/ProdDemandDetailMapper.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/mapper/ProdDemandMainMapper.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/pojo/ProdDemandDetail.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/pojo/ProdDemandMain.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/service/ProdDemandDetailService.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/service/ProdDemandMainService.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/service/impl/ProdDemandDetailServiceImpl.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/service/impl/ProdDemandMainServiceImpl.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/prodDemand/task/ProdDemandTask.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.productionPlan.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <br> * éå®çäº§éæ±æ§å¶å± * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 10:01 */ @RestController @RequestMapping("/productionPlan") public class ProductionPlanController { } src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.productionPlan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.productionPlan.pojo.ProductionPlan; /** * <br> * éå®çäº§éæ±Mapper * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 9:56 */ public interface ProductionPlanMapper extends BaseMapper<ProductionPlan> { } src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,171 @@ package com.ruoyi.productionPlan.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <br> * éå®çäº§éæ± * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 9:54 */ @Data @TableName("production_plan") public class ProductionPlan { /** * èªå¢ä¸»é® */ @TableId(type = IdType.AUTO) private Long id; /** * 表åå®ä¾ID */ private String formInstanceId; /** * åæ®æµæ°´å· */ private String serialNo; /** * åæ®æ é¢ */ private String title; /** * å起人ID */ private String originatorUserId; /** * å起人å§å */ private String originatorName; /** * åæ®å建æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime bizCreateTime; /** * 项ç®åç§° */ private String projectName; /** * æ¹æ¬¡å· */ private String batchNo; /** * è系人 */ private String contactPerson; /** * é¢ç1 */ private String extText1; /** * é¢ç2 */ private String extText2; /** * ç©æç¼ç */ private String materialCode; /** * ç©æåç±» */ private String materialCategory; /** * è§æ ¼æè¿° */ private String specDesc; /** * ç级 */ private String gradeType; /** * é¿åº¦ */ private BigDecimal length; /** * 宽度 */ private BigDecimal width; /** * å度 */ private BigDecimal thickness; /** * æ°é */ private Integer quantity; /** * æ»ä½ç§¯ */ private BigDecimal volume; /** * å¼å§æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime dateStart; /** * ç»ææ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime dateEnd; /** * å ³èåæ® */ private String associationReceipt; /** * æ°æ®æ¹å¼: 1=æå¨ 2=宿¶ */ private Integer dataSyncType; /** * æ°æ®æ¥æº: 1=éå®è®¢å 2=çäº§é¢æµ */ private Integer dataSourceType; /** * å建æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * æ´æ°æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; } src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.productionPlan.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.productionPlan.pojo.ProductionPlan; /** * <br> * éå®çäº§éæ±æ¥å£ * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 10:00 */ public interface ProductionPlanService extends IService<ProductionPlan> { } src/main/java/com/ruoyi/productionPlan/service/impl/ProdDemandService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,165 @@ package com.ruoyi.productionPlan.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.framework.config.AliDingConfig; import com.ruoyi.productionPlan.pojo.ProductionPlan; import com.ruoyi.productionPlan.service.ProductionPlanService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.nio.charset.StandardCharsets; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; import java.util.List; /** * <br> * æåééæ°æ®å¹¶å¯¼å ¥ * </br> * * @author deslrey * @version 1.0 * @since 2026/03/09 17:31 */ @Slf4j @Service public class ProdDemandService { @Autowired private ProductionPlanService productionPlanService; @Autowired private AliDingConfig aliDingConfig; @Transactional(rollbackFor = Exception.class) public void LoadProdDemandData(Integer currentPage, Integer pageSize) { System.out.println("aliDingConfig = " + aliDingConfig); String params = "appkey=" + "dingjnydbagc9ol7cwq4" + "&appsecret=" + "fO07qSZC5SMLw9It3Ydd3BuoFyVbRlsWXUnVr2kwPJXz0OpUntCAO5dqnr8G7zq5"; String tokenRes = HttpUtils.sendGet(aliDingConfig.getAccessTokenUrl(), params); JSONObject tokenObj = JSON.parseObject(tokenRes); String accessToken = tokenObj.getString("access_token"); if (StringUtils.isEmpty(accessToken)) { log.error("è·åéé AccessToken 失败ï¼è¿åç»æï¼{}", tokenRes); return; } log.info("æåè·åéé AccessToken: {}", accessToken); JSONObject searchParam = new JSONObject(); searchParam.put("appType", aliDingConfig.getAppType()); searchParam.put("systemToken", aliDingConfig.getSystemToken()); searchParam.put("userId", aliDingConfig.getUserId()); searchParam.put("formUuid", aliDingConfig.getFormUuid()); if (currentPage == null || currentPage <= 0) { currentPage = 1; } searchParam.put("currentPage", currentPage); if (pageSize == null || pageSize <= 0) { pageSize = 1; } searchParam.put("pageSize", pageSize); String dataRes = HttpUtils.sendPostJson( aliDingConfig.getSearchFormDataUrl(), searchParam.toJSONString(), StandardCharsets.UTF_8.name(), null, accessToken ); if (StringUtils.isEmpty(dataRes)) { log.error("æåå®æè¡¨åæ°æ®ä¸ºç©ºï¼"); return; } JSONObject resultObj = JSON.parseObject(dataRes); JSONArray dataArr = resultObj.getJSONArray("data"); if (dataArr == null || dataArr.isEmpty()) { log.warn("没æè·åå°è¡¨åæ°æ®"); return; } List<ProductionPlan> list = new ArrayList<>(); for (int i = 0; i < dataArr.size(); i++) { JSONObject item = dataArr.getJSONObject(i); String formInstanceId = item.getString("formInstanceId"); String serialNo = item.getString("serialNo"); String title = item.getString("title"); JSONObject originator = item.getJSONObject("originator"); String originatorUserId = originator.getString("userId"); String originatorName = originator.getJSONObject("userName").getString("nameInChinese"); JSONObject formData = item.getJSONObject("formData"); String projectName = formData.getString("textField_lbkozohg"); String batchNo = formData.getString("textField_l7fytfco"); String contactPerson = formData.getString("textareaField_l7fytfcy"); JSONArray tableArr = formData.getJSONArray("tableField_l7fytfcn"); if (tableArr == null) { continue; } for (int j = 0; j < tableArr.size(); j++) { JSONObject row = tableArr.getJSONObject(j); ProductionPlan plan = new ProductionPlan(); plan.setFormInstanceId(formInstanceId); plan.setSerialNo(serialNo); plan.setTitle(title); plan.setOriginatorUserId(originatorUserId); plan.setOriginatorName(originatorName); plan.setProjectName(projectName); plan.setBatchNo(batchNo); plan.setContactPerson(contactPerson); plan.setMaterialCode(row.getString("textField_l9xo62q5")); plan.setMaterialCategory(row.getString("textField_l9xo62q7")); plan.setSpecDesc(row.getString("textField_l9xo62q8")); plan.setGradeType(row.getString("radioField_m9urarr2")); plan.setLength(row.getBigDecimal("numberField_lb7lgatg")); plan.setWidth(row.getBigDecimal("numberField_lb7lgath")); plan.setThickness(row.getBigDecimal("numberField_lb7lgati")); plan.setQuantity(row.getInteger("numberField_lb7lgatj")); plan.setVolume(row.getBigDecimal("numberField_l7fytfd3")); // æ¥æ JSONArray dateArr = row.getJSONArray("cascadeDateField_lfxqqluw"); if (dateArr != null && dateArr.size() == 2) { long start = dateArr.getLongValue(0); long end = dateArr.getLongValue(1); plan.setDateStart(Instant.ofEpochMilli(start) .atZone(ZoneId.systemDefault()) .toLocalDateTime()); plan.setDateEnd(Instant.ofEpochMilli(end) .atZone(ZoneId.systemDefault()) .toLocalDateTime()); } plan.setDataSyncType(2); plan.setDataSourceType(1); plan.setCreateTime(LocalDateTime.now()); list.add(plan); } } if (!list.isEmpty()) { productionPlanService.saveBatch(list); } log.info("忥çäº§éæ±æ°æ®å®æï¼å ± {} æ¡", list.size()); } } src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.productionPlan.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.productionPlan.mapper.ProductionPlanMapper; import com.ruoyi.productionPlan.pojo.ProductionPlan; import com.ruoyi.productionPlan.service.ProductionPlanService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * <br> * éå®çäº§éæ±æ¥å£å®ç°ç±» * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 10:00 */ @Slf4j @Service public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper, ProductionPlan> implements ProductionPlanService { } src/main/java/com/ruoyi/productionPlan/task/ProductionPlanTask.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.ruoyi.productionPlan.task; /** * <br> * éå®çäº§éæ±å®æ¶ä»»å¡ * </br> * * @author deslrey * @version 1.0 * @since 2026/03/09 17:02 */ public class ProductionPlanTask { } src/main/resources/application-zsjc.yml
@@ -33,7 +33,7 @@ form-uuid: "FORM-4IA66891C5H3QWMDBSGO05C0OX9628GRPYF7L8" system-token: "4J766L91OFH3V612E7LG5B4DI8M13MQF9VF7LG4" # æ¥å£å°å access-token-url: "https://api.dingtalk.com/v1.0/oauth2/accessToken" access-token-url: "https://oapi.dingtalk.com/gettoken" search-form-data-url: "https://api.dingtalk.com/v2.0/yida/forms/instances/search" # å¼åç¯å¢é ç½® src/main/resources/mapper/prodDemand/ProdDemandDetailMapper.xml
ÎļþÒÑɾ³ý src/main/resources/mapper/prodDemand/ProdDemandMainMapper.xml
ÎļþÒÑɾ³ý src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.productionPlan.mapper.ProductionPlanMapper"> <resultMap id="ProductionPlanResultMap" type="com.ruoyi.productionPlan.pojo.ProductionPlan"> <id property="id" column="id"/> <result property="formInstanceId" column="form_instance_id"/> <result property="serialNo" column="serial_no"/> <result property="title" column="title"/> <result property="originatorUserId" column="originator_user_id"/> <result property="originatorName" column="originator_name"/> <result property="bizCreateTime" column="biz_create_time"/> <result property="projectName" column="project_name"/> <result property="batchNo" column="batch_no"/> <result property="contactPerson" column="contact_person"/> <result property="extText1" column="ext_text1"/> <result property="extText2" column="ext_text2"/> <result property="materialCode" column="material_code"/> <result property="materialCategory" column="material_category"/> <result property="specDesc" column="spec_desc"/> <result property="gradeType" column="grade_type"/> <result property="length" column="length"/> <result property="width" column="width"/> <result property="thickness" column="thickness"/> <result property="quantity" column="quantity"/> <result property="volume" column="volume"/> <result property="dateStart" column="date_start"/> <result property="dateEnd" column="date_end"/> <result property="associationReceipt" column="association_receipt"/> <result property="dataSyncType" column="data_sync_type"/> <result property="dataSourceType" column="data_source_type"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> </resultMap> </mapper> src/test/com/ruoyi/productionPlan/service/ProdDemandServiceTest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.productionPlan.service; import com.ruoyi.productionPlan.service.impl.ProdDemandService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; /** * <br> * * </br> * * @author deslrey * @version 1.0 * @since 2026/03/10 9:15 */ @SpringBootTest class ProdDemandServiceTest { @Autowired private ProdDemandService prodDemandService; @Test void loadProdDemandData() { prodDemandService.LoadProdDemandData(1, 1); } }