zhanghl
2025-05-20 40ac7937cd9ba88456fef0b44ed150a9cecb52a4
钣金需求日期:批量导入、删除、分页列表
已修改1个文件
已添加6个文件
341 ■■■■■ 文件已修改
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlatePlanController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateRequireDateController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlate/ApsPlateRequireDate.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateRequireDateMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/ApsPlateRequireDateService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateRequireDateServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateRequireDateMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlatePlanController.java
@@ -238,29 +238,4 @@
        }
    }
    /**
     * å¯¼å…¥Excel数据
     * @param file
     * @return
     * @throws Exception
     */
    @Operation(summary = "导入工单需求日期", description = "导入工单需求日期")
    //@RequiresPermissions("apsPlatePlan:import")
    @Log(title = "导入工单需求日期", businessType = BusinessType.IMPORT)
    @PostMapping("/importRequireDate")
    public AjaxResult importRequireDate(MultipartFile file) throws Exception {
        ExcelUtil<ApsPlateRequireDate> util = new ExcelUtil<ApsPlateRequireDate>(ApsPlateRequireDate.class);
        List<ApsPlateRequireDate> plateRequireDateList = util.importExcel(file.getInputStream());
        if (!plateRequireDateList.isEmpty()) {
            try {
                apsPlateRequireDateService.batchSave(plateRequireDateList);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        } else {
            return AjaxResult.error("模板内容为空");
        }
        return AjaxResult.success("导入成功!");
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlate/ApsPlateRequireDateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.aps.core.controller.mainPlan.ApsPlate;
import com.aps.common.core.utils.poi.ExcelUtil;
import com.aps.common.core.web.domain.AjaxResult;
import com.aps.common.log.annotation.Log;
import com.aps.common.log.enums.BusinessType;
import com.aps.common.security.annotation.RequiresPermissions;
import com.aps.core.domain.ApsPlate.ApsPlateRequireDate;
import com.aps.core.service.ApsPlate.ApsPlateRequireDateService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@Tag(name = "钣金工单需求日期管理", description = "钣金工单需求日期管理")
@RestController
@RequestMapping("/plateRequireDate")
public class ApsPlateRequireDateController {
    @Resource
    private ApsPlateRequireDateService apsPlateRequireDateService;
    //@RequiresPermissions("plateRequireDate:list")
    @GetMapping("/list")
    @Tag(name = "查询列表")
    public  Page<ApsPlateRequireDate> list(Page<ApsPlateRequireDate> page,ApsPlateRequireDate apsPlateRequireDate){
        return  apsPlateRequireDateService.pagingList(page, apsPlateRequireDate);
    }
    /**
     * å¯¼å…¥Excel数据
     * @param file
     * @return
     * @throws Exception
     */
    @Operation(summary = "导入工单需求日期", description = "导入工单需求日期")
    //@RequiresPermissions("plateRequireDate:import")
    @Log(title = "导入工单需求日期", businessType = BusinessType.IMPORT)
    @PostMapping("/importRequireDate")
    public AjaxResult importRequireDate(MultipartFile file) throws Exception {
        ExcelUtil<ApsPlateRequireDate> util = new ExcelUtil<ApsPlateRequireDate>(ApsPlateRequireDate.class);
        List<ApsPlateRequireDate> plateRequireDateList = util.importExcel(file.getInputStream());
        if (!plateRequireDateList.isEmpty()) {
            try {
                apsPlateRequireDateService.batchSave(plateRequireDateList);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        } else {
            return AjaxResult.error("模板内容为空");
        }
        return AjaxResult.success("导入成功!");
    }
    /**
    * æ ¹æ®id删除工单需求日期
     * */
    @Operation(summary = "删除需求日期", description = "删除需求日期")
    @Log(title = "删除需求日期", businessType = BusinessType.DELETE)
    @PostMapping("/deleteRequireDate")
    //@RequiresPermissions("plateRequireDate:delete")
    public AjaxResult deleteRequireDate(@RequestBody List<Long> idList) {
        apsPlateRequireDateService.batchDelete(idList);
        return AjaxResult.success("删除成功!");
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlate/ApsPlateRequireDate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.aps.core.domain.ApsPlate;
import com.aps.common.core.annotation.Excel;
import com.aps.common.core.web.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * å·¥å•计划需求日期表
 * @TableName aps_plate_require_date
 */
@EqualsAndHashCode(callSuper = true)
@TableName(value ="aps_plate_require_date")
@Data
public class ApsPlateRequireDate extends BaseEntity implements Serializable {
    /**
     * ä¸»é”®ID
     */
    @TableId(value = "id")
    private Long id;
    /**
     * å·¥å•Id
     */
    @TableField(value = "plan_id")
    private Long planId;
    /**
     * è®¢å•号
     */
    @Excel(name = "工单号")
    @TableField(value = "doc_no")
    private String docNo;
    /**
     * å·¥å•需求时间
     */
    @Excel(name = "需求日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "require_date")
    private Date requireDate;
    /**
     * æ˜¯å¦åˆ é™¤ 0否 1是
     */
    @TableField(value = "del_flag")
    private Integer delFlag;
    /**
     *
     */
    @TableField(value = "create_by")
    private String createBy;
    /**
     *
     */
    @TableField(value = "create_time")
    private Date createTime;
    /**
     *
     */
    @TableField(value = "update_by")
    private String updateBy;
    /**
     *
     */
    @TableField(value = "update_time")
    private Date updateTime;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlateRequireDateMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.aps.core.mapper;
import com.aps.core.domain.ApsPlate.ApsPlateRequireDate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* @author zhl
* @description é’ˆå¯¹è¡¨ã€aps_plate_require_date(工单计划需求日期表)】的数据库操作Mapper
* @createDate 2025-05-19 16:51:36
* @Entity com.aps.core.domain.ApsPlate.ApsPlateRequireDate
*/
public interface ApsPlateRequireDateMapper extends BaseMapper<ApsPlateRequireDate> {
    int deleteByDocNoList(List<String> list,String updateBy);
    int batchInsert(List<ApsPlateRequireDate> list);
}
aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlate/ApsPlateRequireDateService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.aps.core.service.ApsPlate;
import com.aps.common.core.web.domain.AjaxResult;
import com.aps.core.domain.ApsPlate.ApsPlateRequireDate;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author zhl
* @description é’ˆå¯¹è¡¨ã€aps_plate_require_date(工单计划需求日期表)】的数据库操作Service
* @createDate 2025-05-19 16:51:36
*/
public interface ApsPlateRequireDateService extends IService<ApsPlateRequireDate> {
    @Transactional
    void batchSave(List<ApsPlateRequireDate> list);
    int batchDelete(List<Long> idList);
    Page<ApsPlateRequireDate> pagingList(Page<ApsPlateRequireDate> page, ApsPlateRequireDate requireDate);
}
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateRequireDateServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.aps.core.service.impl.ApsPlate;
import cn.hutool.core.util.IdUtil;
import com.aps.common.security.utils.SecurityUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.aps.core.domain.ApsPlate.ApsPlateRequireDate;
import com.aps.core.service.ApsPlate.ApsPlateRequireDateService;
import com.aps.core.mapper.ApsPlateRequireDateMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * @author zhl
 * @description é’ˆå¯¹è¡¨ã€aps_plate_require_date(工单计划需求日期表)】的数据库操作Service实现
 * @createDate 2025-05-19 16:51:36
 */
@Service
public class ApsPlateRequireDateServiceImpl extends ServiceImpl<ApsPlateRequireDateMapper, ApsPlateRequireDate>
        implements ApsPlateRequireDateService {
    @Resource
    private ApsPlateRequireDateMapper apsPlateRequireDateMapper;
    @Transactional
    @Override
    public void batchSave(List<ApsPlateRequireDate> list) {
        if (!list.isEmpty()) {
            list.forEach(apsPlateRequireDate -> {
                apsPlateRequireDate.setId(IdUtil.getSnowflakeNextId());
                apsPlateRequireDate.setCreateBy(SecurityUtils.getUsername());
            });
            int batchSize = 1000;
            for (int i = 0; i < list.size(); i += batchSize) {
                int end = Math.min(i + batchSize, list.size());
                List<ApsPlateRequireDate> batch = list.subList(i, end);
                List<String> docNoList = batch.stream().map(ApsPlateRequireDate::getDocNo).distinct().toList();
                apsPlateRequireDateMapper.deleteByDocNoList(docNoList, SecurityUtils.getUsername());
                apsPlateRequireDateMapper.batchInsert(batch);
            }
        }
    }
    @Override
    public int batchDelete(List<Long> idList){
        //TODO: æ ¹æ®idList批量删除
        LambdaUpdateWrapper<ApsPlateRequireDate> queryWrapper = new LambdaUpdateWrapper<>();
        queryWrapper.in(ApsPlateRequireDate::getId, idList);
        queryWrapper.set(ApsPlateRequireDate::getDelFlag, 0);
        return  apsPlateRequireDateMapper.update(queryWrapper);
    }
    @Override
    public Page<ApsPlateRequireDate> pagingList(Page<ApsPlateRequireDate> page, ApsPlateRequireDate requireDate){
        LambdaQueryWrapper<ApsPlateRequireDate> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.eq(ApsPlateRequireDate::getDelFlag,0);
        queryWrapper.like( null!=requireDate.getDocNo(),  ApsPlateRequireDate::getDocNo,requireDate.getDocNo());
        return apsPlateRequireDateMapper.selectPage(page, queryWrapper);
    }
}
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlate/ApsPlateRequireDateMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
<?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.core.mapper.ApsPlateRequireDateMapper">
    <resultMap id="BaseResultMap" type="com.aps.core.domain.ApsPlate.ApsPlateRequireDate">
            <id property="id" column="id" />
            <result property="planId" column="plan_id" />
            <result property="docNo" column="doc_no" />
            <result property="requireDate" column="require_date" />
            <result property="delFlag" column="del_flag" />
            <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="Base_Column_List">
        id,plan_id,doc_no,require_date,del_flag,create_by,
        create_time,update_by,update_time
    </sql>
    <update id="deleteByDocNoList" parameterType="String">
        update aps_plate_require_date
        set del_flag = 1, update_time = now(),update_by=#{updateBy}
        where doc_no in
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </update>
    <insert id="batchInsert" parameterType="com.aps.core.domain.ApsPlate.ApsPlateRequireDate">
        insert into aps_plate_require_date
            (id,plan_id,doc_no,require_date,del_flag,create_by,create_time)
        values
        <foreach item="item" collection="list" separator="," index="index">
            (#{item.id},#{item.planId},#{item.docNo},#{item.requireDate},0,#{item.createBy},now())
        </foreach>
    </insert>
</mapper>