huangjiayang
2025-05-10 14f982bf34e45b0ad5218212346cf2b33f0a6915
【ADD】1.新增同步物料定时任务 2.同步任务增加批次号
已修改11个文件
已添加5个文件
1046 ■■■■■ 文件已修改
aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialManagement.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialManagementJob.java 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsStandardProcessRouteHeaderJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsStandardProcessRouteLineJob.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialManagementJobMapper.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialManagementJobService.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialManagementJobServiceImpl.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialManagementJobMapper.xml 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-api/aps-api-system/src/main/java/com/aps/system/api/RemoteCoreService.java
@@ -25,4 +25,12 @@
    @PostMapping("/ApsBomHeader/setBomDataToRedis")
    R<Boolean> setBomDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * åˆ·æ–°å·¥è‰ºè·¯çº¿æ•°æ®åˆ°Redis
     * @param source
     * @return
     */
    @PostMapping("/ApsStandardProcessRouteHeader/setProcessRouteDataToRedis")
    R<Boolean> setProcessRouteDataToRedis(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
aps-api/aps-api-system/src/main/java/com/aps/system/api/factory/RemoteCoreFallbackFactory.java
@@ -21,6 +21,19 @@
    public RemoteCoreService create(Throwable throwable)
    {
        log.error("任务服务调用失败:{}", throwable.getMessage());
        return source -> R.fail("BOM数据存储到Redis中失败:" + throwable.getMessage());
        return new RemoteCoreService()
        {
            @Override
            public R<Boolean> setBomDataToRedis(String source)
            {
                return R.fail("BOM数据存储到Redis中失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> setProcessRouteDataToRedis(String source)
            {
                return R.fail("工艺路线数据存储到Redis中失败:" + throwable.getMessage());
            }
        };
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsStandardProcessRouteHeaderController.java
@@ -116,14 +116,14 @@
        R<Boolean> res = remoteJobService.refreshProcessRouteData(SecurityConstants.INNER);
        if (R.isSuccess(res))
        {
            return success();
            apsStandardProcessRouteHeaderService.setProcessRouteDataToRedis("");
        }
        return error();
    }
    @PostMapping("/test")
    public void test()
    @PostMapping("/setProcessRouteDataToRedis")
    public boolean setProcessRouteDataToRedis()
    {
        apsStandardProcessRouteHeaderService.setProcessRouteDataToRedis("FORTUNA");
        return apsStandardProcessRouteHeaderService.setProcessRouteDataToRedis("FORTUNA");
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialManagement.java
@@ -1,12 +1,13 @@
package com.aps.core.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.aps.common.core.annotation.Excel;
import com.aps.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.aps.common.core.annotation.Excel;
import com.aps.common.core.web.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
 * ç‰©æ–™ç®¡ç†å¯¹è±¡ aps_material_management
@@ -19,7 +20,7 @@
    private static final long serialVersionUID = 1L;
    /** id */
    private String id;
    private Long id;
    /** æ–™å· */
    @Excel(name = "料号")
@@ -70,26 +71,26 @@
    private String applicableWorkshop;
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expiringDate;
    /** é›†æˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "集成日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "集成日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date integrationDate;
    public void setId(String id)
    public void setId(Long id)
    {
        this.id = id;
    }
    public String getId()
    public Long getId()
    {
        return id;
    }
aps-modules/aps-job/src/main/java/com/aps/job/controller/SysJobController.java
@@ -67,6 +67,9 @@
    @Autowired
    public RedisTemplate redisTemplate;
    @Autowired
    private IApsMaterialManagementJobService apsMaterialManagementJobService;
    /**
     * æŸ¥è¯¢å®šæ—¶ä»»åŠ¡åˆ—è¡¨
     */
@@ -227,7 +230,10 @@
    public void test(@RequestBody SysJob job) throws Exception
    {
        System.out.println("start");
        apsStandardProcessRouteHeaderJobService.syncProcessRouteData(159, 1000, "", "");
        //同步物料数据
        apsMaterialManagementJobService.syncApsMaterialData(1, 1000, "FORTUNA", "");
        //同步工艺路线数据
//        apsStandardProcessRouteHeaderJobService.syncProcessRouteData(1, 1000, "", "");
        //获取Redis缓存中的BOM数据
//        JSONArray jsonArray = (JSONArray)redisTemplate.opsForValue().get("BOM:BOM_FORTUNA_A6501-001080");
        //将BOM数据存进Redis中
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomHeaderJob.java
@@ -40,14 +40,14 @@
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonProperty("HEffectiveDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonProperty("HDisableDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;
    /** å·¥åŽ‚ç¼–ç  */
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsBomLineJob.java
@@ -45,14 +45,14 @@
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonProperty("LEffectiveDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonProperty("LDisableDate")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;
    /** å·¥åŽ‚ç¼–ç  */
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialManagementJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,291 @@
package com.aps.job.domain;
import com.aps.common.core.annotation.Excel;
import com.aps.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
/**
 * ç‰©æ–™ç®¡ç†å¯¹è±¡ aps_material_management_job
 *
 * @author hjy
 * @date 2025-05-10
 */
@Schema(description = "物料管理实体类")
public class ApsMaterialManagementJob extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** id */
    @Schema(description = "id")
    private Long id;
    /** æ–™å· */
    @Excel(name = "料号")
    @Schema(description = "料号")
    private String itemNumber;
    /** ç‰©æ–™æè¿° */
    @Excel(name = "物料描述")
    @Schema(description = "物料描述")
    private String materialDescription;
    /** ç‰©æ–™çŠ¶æ€ */
    @Excel(name = "物料状态")
    @Schema(description = "物料状态")
    private String materialStatus;
    /** ç‰©æ–™ç±»åž‹ */
    @Excel(name = "物料类型")
    @Schema(description = "物料类型")
    private String materialType;
    /** ä¸“业归属 */
    @Excel(name = "专业归属")
    @Schema(description = "专业归属")
    private String professionalAffiliation;
    /** å›¾å· */
    @Excel(name = "图号")
    @Schema(description = "图号")
    private String drawingNo;
    /** ç‰ˆæœ¬ */
    @Excel(name = "版本")
    @Schema(description = "版本")
    private String versionNumber;
    /** æœ€æ—©å¯æå‰ç”Ÿäº§å¤©æ•° */
    @Excel(name = "最早可提前生产天数")
    @Schema(description = "最早可提前生产天数")
    private BigDecimal advanceProductionDays;
    /** æ‹†åˆ†æ‰¹é‡ */
    @Excel(name = "拆分批量")
    @Schema(description = "拆分批量")
    private Integer splitBatch;
    /** æ˜¯å¦è‡ªåˆ¶ */
    @Excel(name = "是否自制")
    @Schema(description = "是否自制")
    private String selfMade;
    /** é€‚用工厂 */
    @Excel(name = "适用工厂")
    @Schema(description = "适用工厂")
    private String applicableFactories;
    /** é€‚用车间 */
    @Excel(name = "适用车间")
    @Schema(description = "适用车间")
    private String applicableWorkshop;
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "生效日期")
    private Date effectiveDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "失效日期")
    private Date expiringDate;
    /** é›†æˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "集成日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "集成日期")
    private Date integrationDate;
    public void setId(Long id)
    {
        this.id = id;
    }
    public Long getId()
    {
        return id;
    }
    public void setItemNumber(String itemNumber)
    {
        this.itemNumber = itemNumber;
    }
    public String getItemNumber()
    {
        return itemNumber;
    }
    public void setMaterialDescription(String materialDescription)
    {
        this.materialDescription = materialDescription;
    }
    public String getMaterialDescription()
    {
        return materialDescription;
    }
    public void setMaterialStatus(String materialStatus)
    {
        this.materialStatus = materialStatus;
    }
    public String getMaterialStatus()
    {
        return materialStatus;
    }
    public void setMaterialType(String materialType)
    {
        this.materialType = materialType;
    }
    public String getMaterialType()
    {
        return materialType;
    }
    public void setProfessionalAffiliation(String professionalAffiliation)
    {
        this.professionalAffiliation = professionalAffiliation;
    }
    public String getProfessionalAffiliation()
    {
        return professionalAffiliation;
    }
    public void setDrawingNo(String drawingNo)
    {
        this.drawingNo = drawingNo;
    }
    public String getDrawingNo()
    {
        return drawingNo;
    }
    public void setVersionNumber(String versionNumber)
    {
        this.versionNumber = versionNumber;
    }
    public String getVersionNumber()
    {
        return versionNumber;
    }
    public void setAdvanceProductionDays(BigDecimal advanceProductionDays)
    {
        this.advanceProductionDays = advanceProductionDays;
    }
    public BigDecimal getAdvanceProductionDays()
    {
        return advanceProductionDays;
    }
    public void setSplitBatch(Integer splitBatch)
    {
        this.splitBatch = splitBatch;
    }
    public Integer getSplitBatch()
    {
        return splitBatch;
    }
    public void setSelfMade(String selfMade)
    {
        this.selfMade = selfMade;
    }
    public String getSelfMade()
    {
        return selfMade;
    }
    public void setApplicableFactories(String applicableFactories)
    {
        this.applicableFactories = applicableFactories;
    }
    public String getApplicableFactories()
    {
        return applicableFactories;
    }
    public void setApplicableWorkshop(String applicableWorkshop)
    {
        this.applicableWorkshop = applicableWorkshop;
    }
    public String getApplicableWorkshop()
    {
        return applicableWorkshop;
    }
    public void setEffectiveDate(Date effectiveDate)
    {
        this.effectiveDate = effectiveDate;
    }
    public Date getEffectiveDate()
    {
        return effectiveDate;
    }
    public void setExpiringDate(Date expiringDate)
    {
        this.expiringDate = expiringDate;
    }
    public Date getExpiringDate()
    {
        return expiringDate;
    }
    public void setIntegrationDate(Date integrationDate)
    {
        this.integrationDate = integrationDate;
    }
    public Date getIntegrationDate()
    {
        return integrationDate;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("itemNumber", getItemNumber())
            .append("materialDescription", getMaterialDescription())
            .append("materialStatus", getMaterialStatus())
            .append("materialType", getMaterialType())
            .append("professionalAffiliation", getProfessionalAffiliation())
            .append("drawingNo", getDrawingNo())
            .append("versionNumber", getVersionNumber())
            .append("advanceProductionDays", getAdvanceProductionDays())
            .append("splitBatch", getSplitBatch())
            .append("selfMade", getSelfMade())
            .append("applicableFactories", getApplicableFactories())
            .append("applicableWorkshop", getApplicableWorkshop())
            .append("effectiveDate", getEffectiveDate())
            .append("expiringDate", getExpiringDate())
            .append("integrationDate", getIntegrationDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsMaterialStorageManagementJob.java
@@ -41,14 +41,14 @@
    private String applicableFactories;
    /** é›†æˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "集成日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "集成日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "集成日期")
    private Date integrationDate;
    /** åˆ·æ–°æ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "刷新日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "刷新日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "刷新日期")
    private Date refreshDate;
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsStandardProcessRouteHeaderJob.java
@@ -36,14 +36,14 @@
    private String version;
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "生效日期")
    private Date startDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "失效日期")
    private Date endDate;
aps-modules/aps-job/src/main/java/com/aps/job/domain/ApsStandardProcessRouteLineJob.java
@@ -41,14 +41,14 @@
    private String routeName;
    /** ç”Ÿæ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "生效日期")
    private Date startDate;
    /** å¤±æ•ˆæ—¥æœŸ */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @Schema(description = "失效日期")
    private Date endDate;
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsMaterialManagementJobMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.aps.job.mapper;
import com.aps.job.domain.ApsMaterialManagementJob;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * ç‰©æ–™ç®¡ç†Mapper接口
 *
 * @author hjy
 * @date 2025-05-10
 */
public interface ApsMaterialManagementJobMapper
{
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç‰©æ–™ç®¡ç†
     */
    public ApsMaterialManagementJob selectApsMaterialManagementJobById(String id);
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†åˆ—表
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç‰©æ–™ç®¡ç†é›†åˆ
     */
    public List<ApsMaterialManagementJob> selectApsMaterialManagementJobList(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * æ–°å¢žç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    public int insertApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * ä¿®æ”¹ç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    public int updateApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * åˆ é™¤ç‰©æ–™ç®¡ç†
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteApsMaterialManagementJobById(String id);
    /**
     * æ‰¹é‡åˆ é™¤ç‰©æ–™ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteApsMaterialManagementJobByIds(String[] ids);
    /**
     * æ‰¹é‡æ’入物料数据
     * @param list
     * @return
     */
    public int insertApsMaterialBatch(@Param("list") List<ApsMaterialManagementJob> list);
    /**
     * æ‰¹é‡æ’入物料数据到业务表
     * @return
     */
    public void insertIntoApsMaterialManagement();
    /**
     * åˆ é™¤ç‰©æ–™æ•°æ®
     * @return
     */
    public void deleteApsMaterial();
    /**
     * åˆ é™¤ä¸­é—´è¡¨ç‰©æ–™æ•°æ®
     */
    public void deleteApsMaterialJob();
}
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsMaterialManagementJobService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.aps.job.service;
import com.aps.job.domain.ApsMaterialManagementJob;
import java.util.List;
/**
 * ç‰©æ–™ç®¡ç†Service接口
 *
 * @author hjy
 * @date 2025-05-10
 */
public interface IApsMaterialManagementJobService
{
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç‰©æ–™ç®¡ç†
     */
    public ApsMaterialManagementJob selectApsMaterialManagementJobById(String id);
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†åˆ—表
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç‰©æ–™ç®¡ç†é›†åˆ
     */
    public List<ApsMaterialManagementJob> selectApsMaterialManagementJobList(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * æ–°å¢žç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    public int insertApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * ä¿®æ”¹ç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    public int updateApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob);
    /**
     * æ‰¹é‡åˆ é™¤ç‰©æ–™ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„物料管理主键集合
     * @return ç»“æžœ
     */
    public int deleteApsMaterialManagementJobByIds(String[] ids);
    /**
     * åˆ é™¤ç‰©æ–™ç®¡ç†ä¿¡æ¯
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteApsMaterialManagementJobById(String id);
    /**
     * åŒæ­¥ç‰©æ–™æ•°æ®
     * @param pageIndex
     * @param pageSize
     * @param orgCode
     * @param itemCodeList
     * @return
     */
    public boolean syncApsMaterialData(int pageIndex, int pageSize, String orgCode, String itemCodeList);
    /**
     * åŒæ­¥å…¨é‡ç‰©æ–™æ•°æ®å®šæ—¶ä»»åŠ¡
     * @param pageIndex
     * @param pageSize
     * @param orgCode
     * @param itemCodeList
     * @return
     */
    public boolean syncApsMaterialDataJob(int pageIndex, int pageSize, String orgCode, String itemCodeList);
}
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsMaterialManagementJobServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,235 @@
package com.aps.job.service.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.StringUtils;
import com.aps.common.core.utils.uuid.IdUtils;
import com.aps.job.domain.ApsMaterialManagementJob;
import com.aps.job.domain.ApsWorkOrderJobLog;
import com.aps.job.mapper.ApsMaterialManagementJobMapper;
import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
import com.aps.job.service.IApsMaterialManagementJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
/**
 * ç‰©æ–™ç®¡ç†Service业务层处理
 *
 * @author hjy
 * @date 2025-05-10
 */
@Service
public class ApsMaterialManagementJobServiceImpl implements IApsMaterialManagementJobService
{
    @Autowired
    private ApsMaterialManagementJobMapper apsMaterialManagementJobMapper;
    @Value("${u9.materialUrl}")
    private String getMaterialUrl;
    @Autowired
    private ApsWorkOrderJobLogMapper jobLogMapper;
    @Autowired
    private RestTemplate restTemplate;
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç‰©æ–™ç®¡ç†
     */
    @Override
    public ApsMaterialManagementJob selectApsMaterialManagementJobById(String id)
    {
        return apsMaterialManagementJobMapper.selectApsMaterialManagementJobById(id);
    }
    /**
     * æŸ¥è¯¢ç‰©æ–™ç®¡ç†åˆ—表
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç‰©æ–™ç®¡ç†
     */
    @Override
    public List<ApsMaterialManagementJob> selectApsMaterialManagementJobList(ApsMaterialManagementJob apsMaterialManagementJob)
    {
        return apsMaterialManagementJobMapper.selectApsMaterialManagementJobList(apsMaterialManagementJob);
    }
    /**
     * æ–°å¢žç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    @Override
    public int insertApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob)
    {
        apsMaterialManagementJob.setCreateTime(DateUtils.getNowDate());
        return apsMaterialManagementJobMapper.insertApsMaterialManagementJob(apsMaterialManagementJob);
    }
    /**
     * ä¿®æ”¹ç‰©æ–™ç®¡ç†
     *
     * @param apsMaterialManagementJob ç‰©æ–™ç®¡ç†
     * @return ç»“æžœ
     */
    @Override
    public int updateApsMaterialManagementJob(ApsMaterialManagementJob apsMaterialManagementJob)
    {
        apsMaterialManagementJob.setUpdateTime(DateUtils.getNowDate());
        return apsMaterialManagementJobMapper.updateApsMaterialManagementJob(apsMaterialManagementJob);
    }
    /**
     * æ‰¹é‡åˆ é™¤ç‰©æ–™ç®¡ç†
     *
     * @param ids éœ€è¦åˆ é™¤çš„物料管理主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteApsMaterialManagementJobByIds(String[] ids)
    {
        return apsMaterialManagementJobMapper.deleteApsMaterialManagementJobByIds(ids);
    }
    /**
     * åˆ é™¤ç‰©æ–™ç®¡ç†ä¿¡æ¯
     *
     * @param id ç‰©æ–™ç®¡ç†ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteApsMaterialManagementJobById(String id)
    {
        return apsMaterialManagementJobMapper.deleteApsMaterialManagementJobById(id);
    }
    @Override
    public boolean syncApsMaterialData(int pageIndex, int pageSize, String orgCode, String itemCodeList) {
        JSONObject requestBody = new JSONObject();
        ResponseEntity<String> response = null;
        ApsWorkOrderJobLog jobLog = new ApsWorkOrderJobLog();
        String batchNum = "";
        try {
            // è®¾ç½®è¯·æ±‚头
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            // è®¾ç½®è¯·æ±‚体
            while (true) {
                batchNum = IdUtils.fastSimpleUUID();
                jobLog = new ApsWorkOrderJobLog();
                requestBody = new JSONObject();
                requestBody.put("PageIndex", pageIndex);
                requestBody.put("PageSize", pageSize);
                if(!StringUtils.isEmpty(orgCode)){
                    requestBody.put("OrgCode", orgCode);
                }
                // åˆ›å»ºHttpEntity对象
                HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
                // å‘送POST请求
                response = restTemplate.postForEntity(getMaterialUrl, request, String.class);
                JSONObject responseBodyJson = JSONObject.parseObject(response.getBody());
                if (response.getStatusCode().is2xxSuccessful() && "200".equals(responseBodyJson.getString("status"))) {
                    JSONArray jsonArray = responseBodyJson.getJSONArray("data");
                    if (!jsonArray.isEmpty()) {
                        List<ApsMaterialManagementJob> materialList = new ArrayList<>();
                        for (Object o : jsonArray) {
                            JSONObject materialObj = (JSONObject) o;
                            ApsMaterialManagementJob material = new ApsMaterialManagementJob();
                            material.setId(IdUtil.getSnowflakeNextId());
                            material.setItemNumber(materialObj.getString("ItemCode"));
                            material.setMaterialDescription(materialObj.getString("ItemName"));
                            material.setMaterialStatus(materialObj.getString("Status"));
                            material.setMaterialType(materialObj.getString("ItemFormAttribute"));
                            material.setDrawingNo(materialObj.getString("ItemFigure"));
                            material.setVersionNumber(materialObj.getString("ItemFigureVersion"));
                            material.setAdvanceProductionDays(materialObj.getBigDecimal("FixedLT"));
                            material.setSplitBatch(materialObj.getInteger("CFPL"));
                            material.setApplicableFactories(materialObj.getString("OrgCode"));
                            material.setEffectiveDate(DateUtils.parseDate(materialObj.getString("EffectiveDate")));
                            material.setExpiringDate(DateUtils.parseDate(materialObj.getString("DisableDate")));
                            material.setCreateBy(batchNum);
                            materialList.add(material);
                        }
                        List<ApsMaterialManagementJob> temp = new ArrayList<>();
                        for(int i=0;i<materialList.size();i++){
                            temp.add(materialList.get(i));
                            if(temp.size()>=20){
                                apsMaterialManagementJobMapper.insertApsMaterialBatch(temp);
                                temp = new ArrayList<>();
                            }
                        }
                        jobLog.setRequestData(requestBody.toJSONString());
                        jobLog.setPageNum(Long.valueOf(pageIndex));
                        jobLog.setPageCount(Long.valueOf(pageSize));
                        jobLog.setCreateTime(DateUtils.getNowDate());
                        jobLog.setBizType("material");
                        jobLog.setResult("material:"+materialList.size());
                        jobLog.setCreateBy(batchNum);
                        jobLogMapper.insertApsWorkOrderJobLog(jobLog);
                        pageIndex++;
                    }else{
                        break;
                    }
                }else{
                    jobLog.setRequestData(requestBody.toJSONString());
                    jobLog.setResponseData(response.getBody());
                    jobLog.setPageNum(Long.valueOf(pageIndex));
                    jobLog.setPageCount(Long.valueOf(pageSize));
                    jobLog.setCreateTime(DateUtils.getNowDate());
                    jobLog.setBizType("storage");
                    jobLog.setResult("error");
                    jobLog.setCreateBy(batchNum);
                    jobLogMapper.insertApsWorkOrderJobLog(jobLog);
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            jobLog.setRequestData(requestBody.toJSONString());
            jobLog.setResponseData(response.getBody());
            jobLog.setPageNum(Long.valueOf(pageIndex));
            jobLog.setPageCount(Long.valueOf(pageSize));
            jobLog.setCreateTime(DateUtils.getNowDate());
            jobLog.setBizType("storage");
            jobLog.setResult("error");
            jobLog.setCreateBy(batchNum);
            jobLogMapper.insertApsWorkOrderJobLog(jobLog);
            return false;
        }
        return true;
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean syncApsMaterialDataJob(int pageIndex, int pageSize, String orgCode, String itemCodeList) {
        try {
            apsMaterialManagementJobMapper.deleteApsMaterialJob();
            boolean res = syncApsMaterialData(pageIndex, pageSize, orgCode, itemCodeList);
            if(!res){
                return false;
            }
            apsMaterialManagementJobMapper.deleteApsMaterial();
            apsMaterialManagementJobMapper.insertIntoApsMaterialManagement();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
@@ -40,6 +40,9 @@
    @Autowired
    private IApsStandardProcessRouteHeaderJobService apsStandardProcessRouteHeaderJobService;
    @Autowired
    private IApsMaterialManagementJobService apsMaterialManagementJobService;
    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法: å­—符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -172,9 +175,17 @@
    public void syncProcessRouteJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList)
    {
        boolean res =  apsStandardProcessRouteHeaderJobService.syncProcessRouteDataJob(pageIndex, pageSize, orgCode, itemCodeList);
//        if(res){
//            remoteCoreService.setBomDataToRedis(SecurityConstants.INNER);
//        }
        if(res){
            remoteCoreService.setProcessRouteDataToRedis(SecurityConstants.INNER);
        }
    }
    /**
     * åŒæ­¥å…¨é‡ç‰©æ–™æ•°æ®å®šæ—¶ä»»åŠ¡
     */
    public void syncApsMaterialDataJob(Integer pageIndex, Integer pageSize, String orgCode, String itemCodeList)
    {
        apsMaterialManagementJobService.syncApsMaterialDataJob(pageIndex, pageSize, orgCode, itemCodeList);
    }
aps-modules/aps-job/src/main/resources/mapper/job/ApsMaterialManagementJobMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,228 @@
<?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.aps.job.mapper.ApsMaterialManagementJobMapper">
    <resultMap type="ApsMaterialManagementJob" id="ApsMaterialManagementJobResult">
        <result property="id"    column="id"    />
        <result property="itemNumber"    column="item_number"    />
        <result property="materialDescription"    column="material_description"    />
        <result property="materialStatus"    column="material_status"    />
        <result property="materialType"    column="material_type"    />
        <result property="professionalAffiliation"    column="professional_affiliation"    />
        <result property="drawingNo"    column="drawing_no"    />
        <result property="versionNumber"    column="version_number"    />
        <result property="advanceProductionDays"    column="advance_production_days"    />
        <result property="splitBatch"    column="split_batch"    />
        <result property="selfMade"    column="self_made"    />
        <result property="applicableFactories"    column="applicable_factories"    />
        <result property="applicableWorkshop"    column="applicable_workshop"    />
        <result property="effectiveDate"    column="effective_date"    />
        <result property="expiringDate"    column="expiring_date"    />
        <result property="integrationDate"    column="integration_date"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
    </resultMap>
    <sql id="selectApsMaterialManagementJobVo">
        select id, item_number, material_description, material_status, material_type, professional_affiliation, drawing_no, version_number, advance_production_days, split_batch, self_made, applicable_factories, applicable_workshop, effective_date, expiring_date, integration_date, create_by, create_time, update_by, update_time from aps_material_management_job
    </sql>
    <select id="selectApsMaterialManagementJobList" parameterType="ApsMaterialManagementJob" resultMap="ApsMaterialManagementJobResult">
        <include refid="selectApsMaterialManagementJobVo"/>
        <where>
            <if test="itemNumber != null  and itemNumber != ''"> and item_number = #{itemNumber}</if>
            <if test="materialDescription != null  and materialDescription != ''"> and material_description = #{materialDescription}</if>
            <if test="materialStatus != null  and materialStatus != ''"> and material_status = #{materialStatus}</if>
            <if test="materialType != null  and materialType != ''"> and material_type = #{materialType}</if>
            <if test="professionalAffiliation != null  and professionalAffiliation != ''"> and professional_affiliation = #{professionalAffiliation}</if>
            <if test="drawingNo != null  and drawingNo != ''"> and drawing_no = #{drawingNo}</if>
            <if test="versionNumber != null  and versionNumber != ''"> and version_number = #{versionNumber}</if>
            <if test="advanceProductionDays != null "> and advance_production_days = #{advanceProductionDays}</if>
            <if test="splitBatch != null "> and split_batch = #{splitBatch}</if>
            <if test="selfMade != null  and selfMade != ''"> and self_made = #{selfMade}</if>
            <if test="applicableFactories != null  and applicableFactories != ''"> and applicable_factories = #{applicableFactories}</if>
            <if test="applicableWorkshop != null  and applicableWorkshop != ''"> and applicable_workshop = #{applicableWorkshop}</if>
            <if test="effectiveDate != null "> and effective_date = #{effectiveDate}</if>
            <if test="expiringDate != null "> and expiring_date = #{expiringDate}</if>
            <if test="integrationDate != null "> and integration_date = #{integrationDate}</if>
        </where>
    </select>
    <select id="selectApsMaterialManagementJobById" parameterType="String" resultMap="ApsMaterialManagementJobResult">
        <include refid="selectApsMaterialManagementJobVo"/>
        where id = #{id}
    </select>
    <insert id="insertApsMaterialManagementJob" parameterType="ApsMaterialManagementJob">
        insert into aps_material_management_job
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="itemNumber != null">item_number,</if>
            <if test="materialDescription != null">material_description,</if>
            <if test="materialStatus != null">material_status,</if>
            <if test="materialType != null">material_type,</if>
            <if test="professionalAffiliation != null">professional_affiliation,</if>
            <if test="drawingNo != null">drawing_no,</if>
            <if test="versionNumber != null">version_number,</if>
            <if test="advanceProductionDays != null">advance_production_days,</if>
            <if test="splitBatch != null">split_batch,</if>
            <if test="selfMade != null">self_made,</if>
            <if test="applicableFactories != null">applicable_factories,</if>
            <if test="applicableWorkshop != null">applicable_workshop,</if>
            <if test="effectiveDate != null">effective_date,</if>
            <if test="expiringDate != null">expiring_date,</if>
            <if test="integrationDate != null">integration_date,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="itemNumber != null">#{itemNumber},</if>
            <if test="materialDescription != null">#{materialDescription},</if>
            <if test="materialStatus != null">#{materialStatus},</if>
            <if test="materialType != null">#{materialType},</if>
            <if test="professionalAffiliation != null">#{professionalAffiliation},</if>
            <if test="drawingNo != null">#{drawingNo},</if>
            <if test="versionNumber != null">#{versionNumber},</if>
            <if test="advanceProductionDays != null">#{advanceProductionDays},</if>
            <if test="splitBatch != null">#{splitBatch},</if>
            <if test="selfMade != null">#{selfMade},</if>
            <if test="applicableFactories != null">#{applicableFactories},</if>
            <if test="applicableWorkshop != null">#{applicableWorkshop},</if>
            <if test="effectiveDate != null">#{effectiveDate},</if>
            <if test="expiringDate != null">#{expiringDate},</if>
            <if test="integrationDate != null">#{integrationDate},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>
    <update id="updateApsMaterialManagementJob" parameterType="ApsMaterialManagementJob">
        update aps_material_management_job
        <trim prefix="SET" suffixOverrides=",">
            <if test="itemNumber != null">item_number = #{itemNumber},</if>
            <if test="materialDescription != null">material_description = #{materialDescription},</if>
            <if test="materialStatus != null">material_status = #{materialStatus},</if>
            <if test="materialType != null">material_type = #{materialType},</if>
            <if test="professionalAffiliation != null">professional_affiliation = #{professionalAffiliation},</if>
            <if test="drawingNo != null">drawing_no = #{drawingNo},</if>
            <if test="versionNumber != null">version_number = #{versionNumber},</if>
            <if test="advanceProductionDays != null">advance_production_days = #{advanceProductionDays},</if>
            <if test="splitBatch != null">split_batch = #{splitBatch},</if>
            <if test="selfMade != null">self_made = #{selfMade},</if>
            <if test="applicableFactories != null">applicable_factories = #{applicableFactories},</if>
            <if test="applicableWorkshop != null">applicable_workshop = #{applicableWorkshop},</if>
            <if test="effectiveDate != null">effective_date = #{effectiveDate},</if>
            <if test="expiringDate != null">expiring_date = #{expiringDate},</if>
            <if test="integrationDate != null">integration_date = #{integrationDate},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteApsMaterialManagementJobById" parameterType="String">
        delete from aps_material_management_job where id = #{id}
    </delete>
    <delete id="deleteApsMaterialManagementJobByIds" parameterType="String">
        delete from aps_material_management_job where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <insert id="insertApsMaterialBatch">
        INSERT INTO aps_material_management_job (
        id,
        item_number,
        material_description,
        material_status,
        material_type,
        drawing_no,
        version_number,
        advance_production_days,
        split_batch,
        applicable_factories,
        effective_date,
        expiring_date,
        create_by,
        create_time
        ) VALUES
        <foreach collection="list" item="item" separator=",">
            (
            #{item.id},
            #{item.itemNumber},
            #{item.materialDescription},
            #{item.materialStatus},
            #{item.materialType},
            #{item.drawingNo},
            #{item.versionNumber},
            #{item.advanceProductionDays},
            #{item.splitBatch},
            #{item.applicableFactories},
            #{item.effectiveDate},
            #{item.expiringDate},
            #{item.createBy},
            now()
            )
        </foreach>
    </insert>
    <!-- æ’入数据到 aps_material_management -->
    <insert id="insertIntoApsMaterialManagement">
        INSERT INTO aps_material_management (
            id,
            item_number,
            material_description,
            material_status,
            material_type,
            drawing_no,
            version_number,
            advance_production_days,
            split_batch,
            applicable_factories,
            effective_date,
            expiring_date,
            create_by,
            create_time
        )
        SELECT
            id,
            item_number,
            material_description,
            material_status,
            material_type,
            drawing_no,
            version_number,
            advance_production_days,
            split_batch,
            applicable_factories,
            effective_date,
            expiring_date,
            create_by,
            now()
        FROM aps_material_management_job
    </insert>
    <!-- åˆ é™¤ aps_material_management è¡¨ä¸­çš„æ•°æ® -->
    <delete id="deleteApsMaterial">
        DELETE FROM aps_material_management
    </delete>
    <!-- åˆ é™¤ aps_material_management_job è¡¨ä¸­çš„æ•°æ® -->
    <delete id="deleteApsMaterialJob">
        DELETE FROM aps_material_management_job
    </delete>
</mapper>