multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -60,4 +61,12 @@ return standingBookService.deletedStandingBook(id); } @PostMapping("/importStandingBooks") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = true, value = "companyId"), }) public CommonResult importStandingBooks(MultipartFile file, Long companyId) { return CommonResult.success(standingBookService.importStandingBooks(companyId, file)); } } multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java
@@ -3,8 +3,10 @@ import com.gkhy.exam.common.annotation.RepeatSubmit; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.Material; import com.gkhy.exam.system.domain.OutsourcedUnqualified; import com.gkhy.exam.system.domain.WarehousingRecord; import com.gkhy.exam.system.service.MaterialService; import com.gkhy.exam.system.service.WarehousingRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -29,6 +31,38 @@ @Autowired private WarehousingRecordService warehousingRecordService; @Autowired private MaterialService materialService; @ApiOperation(value = "物料列表(分页)") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"), @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"), }) @GetMapping("/selectMaterialList") public CommonResult selectMaterialList(Material material){ return CommonResult.success(materialService.selectMaterialList(material)); } @RepeatSubmit @ApiOperation(value = "新增编辑物料") @PostMapping("/saveMaterial") public CommonResult saveMaterial(@RequestBody @Validated Material material){ return materialService.saveMaterial(material); } @ApiOperation(value = "删除物料") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"), }) @GetMapping("/deletedMaterial") public CommonResult deletedMaterial(@RequestParam Long id){ return materialService.deletedMaterial(id); } @ApiOperation(value = "出入库记录列表(分页)") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), @@ -39,6 +73,18 @@ public CommonResult selectWarehousingRecordList(WarehousingRecord warehousingRecord){ return CommonResult.success(warehousingRecordService.selectWarehousingRecordList(warehousingRecord)); } @ApiOperation(value = "出入库记录详情列表(分页)") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"), @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"), }) @GetMapping("/selectWarehousingRecordDetailList") public CommonResult selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord){ return CommonResult.success(warehousingRecordService.selectWarehousingRecordList(warehousingRecord)); } @RepeatSubmit @ApiOperation(value = "新增编辑出入库记录") @PostMapping("/saveWarehousingRecord") multi-common/src/main/java/com/gkhy/exam/common/api/ImportResult.java
对比新文件 @@ -0,0 +1,12 @@ package com.gkhy.exam.common.api; import lombok.Data; import java.util.List; @Data public class ImportResult { private Integer successCount; private Integer failCount; private List<String> errorMessages; } multi-system/src/main/java/com/gkhy/exam/system/controller/MaterialController.java
对比新文件 @@ -0,0 +1,20 @@ package com.gkhy.exam.system.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 前端控制器 * </p> * * @author hh * @since 2025-10-11 14:20:49 */ @RestController @RequestMapping("/system/material") public class MaterialController { } multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/StandingBookImportDTO.java
对比新文件 @@ -0,0 +1,50 @@ package com.gkhy.exam.system.domain.DTO; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class StandingBookImportDTO { @ExcelProperty("部门") private String deptName; @ExcelProperty("名称") private String name; @ExcelProperty("型号") private String model; @ExcelProperty("责任人/使用人") private String personResponsible; @ExcelProperty("设备类型") //1计算机设备2办公自动化设备3外部设备4其他 private String deviceType; @ExcelProperty("编号") private String number; @ExcelProperty("品牌") private String brand; @ExcelProperty("密级/类型") private String confidentiality; @ExcelProperty("状态") //1.完好2需整改3损坏 private String status; @ExcelProperty("用途") private String purpose; @ExcelProperty("使用地点") private String location; @ExcelProperty("使用情况") private String used; @ExcelProperty("备注") private String remark; } multi-system/src/main/java/com/gkhy/exam/system/domain/Material.java
对比新文件 @@ -0,0 +1,84 @@ package com.gkhy.exam.system.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** * <p> * * </p> * * @author hh * @since 2025-10-11 14:20:49 */ @Getter @Setter @TableName("material") @ApiModel(value = "Material对象", description = "") public class Material implements Serializable { private static final long serialVersionUID = 1L; @TableId("id") private Long id; @ApiModelProperty(value = "公司ID", required = true) @TableField("company_id") @NotNull(message = "公司ID不能为空") private Long companyId; @ApiModelProperty(value = "名称", required = true) @TableField("material_name") @NotBlank(message = "名称不能为空") private String materialName; @ApiModelProperty(value = "单位", required = true) @TableField("material_unit") @NotBlank(message = "单位不能为空") private String materialUnit; @ApiModelProperty(value = "规格", required = true) @TableField("specification") @NotBlank(message = "规格不能为空") private String specification; @ApiModelProperty("库存量") @TableField("inventory") private Integer inventory; @ApiModelProperty("删除标志(0为删除,1删除,默认0)") @TableField("del_flag") private Integer delFlag; @ApiModelProperty("创建时间") @TableField("create_time") private LocalDateTime createTime; @ApiModelProperty("创建人") @TableField("create_by") private String createBy; @ApiModelProperty("更新时间") @TableField("update_time") private LocalDateTime updateTime; @ApiModelProperty("更新人") @TableField("update_by") private String updateBy; @ApiModelProperty("乐观锁") @TableField("version") private Integer version; } multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java
@@ -47,9 +47,15 @@ @TableField(exist = false) private String deptName; @ApiModelProperty("名称型号") @ApiModelProperty("名称") @TableField("name") @NotBlank(message = "名称不能为空") private String name; @ApiModelProperty("型号") @TableField("model") @NotBlank(message = "名称型号不能为空") @NotBlank(message = "型号不能为空") private String model; @ApiModelProperty("责任人/使用人") @@ -61,7 +67,7 @@ @TableField(exist = false) private String personResponsibleName; @ApiModelProperty("设备类型1生成设备2办公自动化设备") @ApiModelProperty("设备类型1计算机设备2办公自动化设备3外部设备4其他") @TableField("device_type") @NotNull(message = "设备类型不能为空") private Integer deviceType; @@ -79,7 +85,7 @@ @TableField("confidentiality") private String confidentiality; @ApiModelProperty("状态1.完好2损坏") @ApiModelProperty("状态1.完好2需整改3损坏") @TableField("status") private Integer status; multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java
@@ -38,6 +38,15 @@ @NotNull(message = "公司id不能为空") private Long companyId; @ApiModelProperty(value = "物料id",required = true) @TableField("material_id") @NotNull(message = "物料id不能为空") private Long materialId; @ApiModelProperty("库存量") @TableField("inventory") private Integer inventory; @ApiModelProperty(value = "记录名称",required = true) @TableField("record_name") @NotNull(message = "记录名称不能为空") multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java
@@ -39,37 +39,46 @@ @NotNull(message = "登记时间不能为空") private LocalDateTime boardingTime; @ApiModelProperty("名称") @TableField("name") private String name; // @ApiModelProperty("名称") // @TableField("name") // private String name; @ApiModelProperty("入库单位") @TableField("enter_company") private String enterCompany; @ApiModelProperty("单位") @TableField("material_unit") private String materialUnit; @ApiModelProperty("入库数量") @TableField("enter_num") private Integer enterNum; @ApiModelProperty("数量") @TableField("num") private Integer num; @ApiModelProperty("入库经手人") @TableField("enter_person") private String enterPerson; @ApiModelProperty("记录类型1入库2出库") @TableField("record_type") @NotNull(message = "记录类型不能为空") private Integer recordType; @ApiModelProperty("出库单位") @TableField("outbound_company") private String outboundCompany; @ApiModelProperty("规格") @TableField("specification") private String specification; @ApiModelProperty("出库数量") @TableField("outbound_num") private Integer outboundNum; // @ApiModelProperty("入库经手人") // @TableField("enter_person") // private String enterPerson; // // @ApiModelProperty("出库单位") // @TableField("outbound_company") // private String outboundCompany; // // @ApiModelProperty("出库数量") // @TableField("outbound_num") // private Integer outboundNum; // // @ApiModelProperty("出库经手人") // @TableField("outbound_person") // private String outboundPerson; @ApiModelProperty("出库经手人") @TableField("outbound_person") private String outboundPerson; @ApiModelProperty("库存") @TableField("amount") private Integer amount; // @ApiModelProperty("库存") // @TableField("amount") // private Integer amount; @ApiModelProperty("备注") @TableField("remark") multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
@@ -1,6 +1,5 @@ package com.gkhy.exam.system.mapper; import com.gkhy.exam.system.domain.ExternalKnowledge; import com.gkhy.exam.system.domain.InternalKnowledge; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; multi-system/src/main/java/com/gkhy/exam/system/mapper/MaterialMapper.java
对比新文件 @@ -0,0 +1,21 @@ package com.gkhy.exam.system.mapper; import com.gkhy.exam.system.domain.Material; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author hh * @since 2025-10-11 14:20:49 */ @Mapper public interface MaterialMapper extends BaseMapper<Material> { List<Material> selectMaterialList(Material material); } multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java
@@ -1,8 +1,11 @@ package com.gkhy.exam.system.mapper; import com.gkhy.exam.system.domain.WarehousingRecord; import com.gkhy.exam.system.domain.WarehousingRecordDetails; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * <p> @@ -15,4 +18,6 @@ @Mapper public interface WarehousingRecordDetailsMapper extends BaseMapper<WarehousingRecordDetails> { List<WarehousingRecordDetails> selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord); } multi-system/src/main/java/com/gkhy/exam/system/service/MaterialService.java
对比新文件 @@ -0,0 +1,26 @@ package com.gkhy.exam.system.service; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.system.domain.Material; import com.baomidou.mybatisplus.extension.service.IService; import com.gkhy.exam.system.domain.WarehousingRecord; /** * <p> * 服务类 * </p> * * @author hh * @since 2025-10-11 14:20:49 */ public interface MaterialService extends IService<Material> { CommonPage selectMaterialList(Material material); CommonResult saveMaterial(Material material); CommonResult deletedMaterial(Long id); } multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java
@@ -2,9 +2,11 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.api.ImportResult; import com.gkhy.exam.system.domain.Correction; import com.gkhy.exam.system.domain.StandingBook; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -22,4 +24,6 @@ CommonResult updateStandingBook(StandingBook standingBook); CommonResult deletedStandingBook(Integer id); ImportResult importStandingBooks(Long companyId ,MultipartFile file); } multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java
@@ -19,6 +19,8 @@ CommonPage selectWarehousingRecordList(WarehousingRecord warehousingRecord); CommonPage selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord); CommonResult saveWarehousingRecord(WarehousingRecord warehousingRecord); CommonResult getWarehousingRecord(Long id); multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java
@@ -12,15 +12,12 @@ import com.gkhy.exam.system.mapper.CompanySummaryMapper; import com.gkhy.exam.system.service.CompanySummaryService; import com.gkhy.exam.system.service.SysCompanyService; import org.apache.poi.schemas.vmldrawing.XmlDocument; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.time.LocalDateTime; import java.util.List; multi-system/src/main/java/com/gkhy/exam/system/service/impl/MaterialServiceImpl.java
对比新文件 @@ -0,0 +1,81 @@ package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.Material; import com.gkhy.exam.system.domain.WarehousingRecord; import com.gkhy.exam.system.mapper.MaterialMapper; import com.gkhy.exam.system.service.MaterialService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author hh * @since 2025-10-11 14:20:49 */ @Service public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService { @Autowired private MaterialMapper materialMapper; @Override public CommonPage selectMaterialList(Material material) { PageUtils.startPage(); List<Material> materials = materialMapper.selectMaterialList(material); return CommonPage.restPage(materials); } @Override public CommonResult saveMaterial(Material material) { LambdaQueryWrapper<Material> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Material::getMaterialName, material.getMaterialName()); queryWrapper.eq(Material::getDelFlag, UserConstant.ENABLE); queryWrapper.eq(Material::getCompanyId, material.getCompanyId()); queryWrapper.eq(Material::getSpecification, material.getSpecification()); if (material.getId() == null){ long count = materialMapper.selectCount(queryWrapper); if (count > 0){ return CommonResult.failed("该规格物料已存在"); } material.setCreateTime(LocalDateTime.now()); material.setCreateBy(SecurityUtils.getUsername()); materialMapper.insert(material); }else { queryWrapper.ne(Material::getId, material.getId()); long count = materialMapper.selectCount(queryWrapper); if (count > 0){ return CommonResult.failed("该规格物料已存在"); } material.setUpdateTime(LocalDateTime.now()); material.setUpdateBy(SecurityUtils.getUsername()); materialMapper.updateById(material); } return CommonResult.success(); } @Override public CommonResult deletedMaterial(Long id) { materialMapper.update(new Material(), new LambdaUpdateWrapper<Material>().eq(Material::getId, id) .set(Material::getDelFlag, UserConstant.DEPT_DISABLE) .set(Material::getUpdateTime, LocalDateTime.now()) .set(Material::getUpdateBy, SecurityUtils.getUsername())); return CommonResult.success("删除成功"); } } multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
@@ -1,19 +1,35 @@ package com.gkhy.exam.system.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.api.ImportResult; import com.gkhy.exam.common.domain.entity.SysDept; import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.Correction; import com.gkhy.exam.system.domain.DTO.StandingBookImportDTO; import com.gkhy.exam.system.domain.StandingBook; import com.gkhy.exam.system.domain.vo.DeptVo; import com.gkhy.exam.system.mapper.StandingBookMapper; import com.gkhy.exam.system.mapper.SysDeptMapper; import com.gkhy.exam.system.mapper.SysUserMapper; import com.gkhy.exam.system.service.StandingBookService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> @@ -28,6 +44,13 @@ @Autowired private StandingBookMapper standingBookMapper; @Autowired private SysDeptMapper sysDeptMapper; @Autowired private SysUserMapper sysUserMapper; @Override public CommonPage selectStandingBookList(StandingBook standingBook) { PageUtils.startPage(); @@ -71,4 +94,105 @@ } return CommonResult.failed(); } @Override public ImportResult importStandingBooks(Long companyId, MultipartFile file) { ImportResult result = new ImportResult(); result.setSuccessCount(0); result.setFailCount(0); result.setErrorMessages(new ArrayList<>()); SysDept sysDept = new SysDept(); sysDept.setCompanyId(companyId); List<DeptVo> deptVos = sysDeptMapper.selectDeptList(sysDept); Map<String, Long> deptNameIdMap = deptVos.stream() .collect(Collectors.toMap(DeptVo::getDeptName, DeptVo::getDeptId)); LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUser::getCompanyId, companyId); queryWrapper.eq(SysUser::getDelFlag, 0); List<SysUser> sysUsers = sysUserMapper.selectList(queryWrapper); Map<String, Long> userNameIdMap = sysUsers.stream() .collect(Collectors.toMap(SysUser::getName, SysUser::getId)); try { // 使用EasyExcel读取文件 ReadListener<StandingBookImportDTO> listener = new ReadListener<StandingBookImportDTO>() { @Override public void invoke(StandingBookImportDTO dto, AnalysisContext context) { try { // 转换为实体对象 StandingBook standingBook = new StandingBook(); standingBook.setCompanyId(companyId); standingBook.setDeptId(deptNameIdMap.get(dto.getDeptName()) == null ? 0L : deptNameIdMap.get(dto.getDeptName())); standingBook.setName(dto.getName()); standingBook.setModel(dto.getModel()); standingBook.setPersonResponsible(userNameIdMap.get(dto.getPersonResponsible()) == null ? 0L : userNameIdMap.get(dto.getPersonResponsible())); String deviceType = dto.getDeviceType(); switch (deviceType) { case "计算机设备": standingBook.setDeviceType(1); break; case "办公自动化设备": standingBook.setDeviceType(2); break; case "外部设备": standingBook.setDeviceType(3); break; default: standingBook.setDeviceType(4); break; } standingBook.setNumber(dto.getNumber()); standingBook.setBrand(dto.getBrand()); standingBook.setConfidentiality(dto.getConfidentiality()); switch (dto.getStatus()) { case "完好": standingBook.setStatus(1); break; case "需整改": standingBook.setStatus(2); break; default: standingBook.setStatus(3); break; } standingBook.setPurpose(dto.getPurpose()); standingBook.setLocation(dto.getLocation()); standingBook.setUsed(dto.getUsed()); standingBook.setRemark(dto.getRemark()); standingBook.setCreateTime(LocalDateTime.now()); standingBook.setCreateBy(SecurityUtils.getUsername()); standingBookMapper.insert(standingBook); result.setSuccessCount(result.getSuccessCount() + 1); } catch (Exception e) { result.getErrorMessages().add("行" + context.readRowHolder().getRowIndex() + "导入失败:" + e.getMessage()); result.setFailCount(result.getFailCount() + 1); } } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 导入完成后的处理 } }; // 创建读取器 ExcelReader excelReader = EasyExcel.read(file.getInputStream(), StandingBookImportDTO.class, listener).build(); ReadSheet readSheet = EasyExcel.readSheet(0).build(); excelReader.read(readSheet); } catch (Exception e) { result.getErrorMessages().add("导入失败:" + e.getMessage()); } return result; } } multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java
@@ -6,11 +6,14 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.api.CommonResult; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.Material; import com.gkhy.exam.system.domain.OutsourcedUnqualified; import com.gkhy.exam.system.domain.WarehousingRecord; import com.gkhy.exam.system.domain.WarehousingRecordDetails; import com.gkhy.exam.system.mapper.MaterialMapper; import com.gkhy.exam.system.mapper.WarehousingRecordDetailsMapper; import com.gkhy.exam.system.mapper.WarehousingRecordMapper; import com.gkhy.exam.system.service.WarehousingRecordService; @@ -37,17 +40,33 @@ private WarehousingRecordMapper warehousingRecordMapper; @Autowired private WarehousingRecordDetailsMapper warehousingRecordDetailsMapper; @Autowired private MaterialMapper materialMapper; @Override public CommonPage selectWarehousingRecordList(WarehousingRecord warehousingRecord) { PageUtils.startPage(); List<WarehousingRecord> warehousingRecords = warehousingRecordMapper.selectWarehousingRecordList(warehousingRecord); warehousingRecords.stream().forEach(item -> { List<WarehousingRecordDetails> de = warehousingRecordDetailsMapper.selectList( new LambdaQueryWrapper<>(WarehousingRecordDetails.class).eq(WarehousingRecordDetails::getRecordId, item.getId()) .eq(WarehousingRecordDetails::getDelFlag, UserConstant.ENABLE).orderByAsc(WarehousingRecordDetails::getCreateTime)); item.setWarehousingRecordDetails(de); }); return CommonPage.restPage(warehousingRecords); } @Override public CommonPage selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord) { PageUtils.startPage(); List<WarehousingRecordDetails> warehousingRecords = warehousingRecordDetailsMapper.selectWarehousingRecordDetailList(warehousingRecord); return CommonPage.restPage(warehousingRecords); } @Override @Transactional public CommonResult saveWarehousingRecord(WarehousingRecord warehousingRecord) { List<WarehousingRecordDetails> warehousingRecordDetails = warehousingRecord.getWarehousingRecordDetails(); if (ObjectUtil.isEmpty(warehousingRecordDetails)){ return CommonResult.validateFailed("请选择入库记录详情"); @@ -64,12 +83,19 @@ i = warehousingRecordMapper.updateById(warehousingRecord); } if (i > 0){ batchSave(warehousingRecord.getId(), warehousingRecordDetails,warehousingRecord.getDelDetails()); batchSave(warehousingRecord.getId(), warehousingRecordDetails,warehousingRecord.getDelDetails(),warehousingRecord.getMaterialId(),warehousingRecord.getInventory()); } return CommonResult.success(); } private void batchSave(Long id, List<WarehousingRecordDetails> warehousingRecordDetails,List<Long> delDetails) { private void batchSave(Long id, List<WarehousingRecordDetails> warehousingRecordDetails,List<Long> delDetails,Long materialId,int inventory) { Material material = materialMapper.selectById(materialId); if (ObjectUtil.isEmpty(material)){ throw new ApiException("物料不存在"); } warehousingRecordDetails.stream().filter(item -> item.getId() == null).forEach(item -> { item.setRecordId(id); item.setCreateTime(LocalDateTime.now()); @@ -90,6 +116,12 @@ .set(WarehousingRecordDetails::getUpdateBy, SecurityUtils.getUsername())); } materialMapper.update(new Material(), new LambdaUpdateWrapper<Material>().eq(Material::getId, materialId) .set(Material::getInventory, inventory) .set(Material::getUpdateTime, LocalDateTime.now()) .set(Material::getUpdateBy, SecurityUtils.getUsername())); } @Override multi-system/src/main/resources/mapper/system/MaterialMapper.xml
对比新文件 @@ -0,0 +1,19 @@ <?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.gkhy.exam.system.mapper.MaterialMapper"> <select id="selectMaterialList" parameterType="com.gkhy.exam.system.domain.Material" resultType="com.gkhy.exam.system.domain.Material"> select * from material where del_flag = 0 <if test="materialName != null"> and material_name like concat('%',#{materialName},'%') </if> <if test="materialUnit != null"> and material_unit like concat('%',#{materialUnit},'%') </if> <if test="inventory != null"> and inventory = #{inventory} </if> order by update_time desc </select> </mapper> multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml
@@ -2,4 +2,13 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gkhy.exam.system.mapper.WarehousingRecordDetailsMapper"> <select id="selectWarehousingRecordDetailList" resultType="com.gkhy.exam.system.domain.WarehousingRecordDetails" parameterType="com.gkhy.exam.system.domain.WarehousingRecord"> select a.* from warehousing_record_details a left join warehousing_record b on a.record_id = b.id where del_flag = 0 and b.del_flag = 0 </select> </mapper> multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml
@@ -9,6 +9,9 @@ <if test="companyId != null"> and company_id = #{companyId} </if> <if test="materialId != null"> and material_id = #{materialId} </if> order by create_time desc </select> </mapper>