Commit f2431b08 authored by ZhangRunSong's avatar ZhangRunSong

feat:物资导出

parent f2dfe881
......@@ -7,6 +7,7 @@ import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.annotation.Excel;
/**
* Entity基类
......
......@@ -82,7 +82,7 @@ public class PsaMaterialController extends BaseController
{
List<PsaMaterial> list = psaMaterialService.selectPsaMaterialList(psaMaterial);
ExcelUtil<PsaMaterial> util = new ExcelUtil<PsaMaterial>(PsaMaterial.class);
util.exportExcel(response, list, "物品信息数据");
util.exportExcel(response, list, "物品信息数据","基础物品信息");
}
/**
......@@ -103,6 +103,7 @@ public class PsaMaterialController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody PsaMaterialNewDTO psaMaterialNewDTO)
{
return toAjax(psaMaterialService.insertPsaMaterial(psaMaterialNewDTO));
}
......
......@@ -26,27 +26,34 @@ public class PsaMaterial extends BaseEntity
@Excel(name = "物品编号")
private String itemCode;
/** 物品id */
@Excel(name = "物品id")
private Long itemId;
/** 物品类型id */
@Excel(name = "物品类型id")
private Long typeId;
/** 库存数量 */
@Excel(name = "库存数量")
private Long stock;
@Excel(name = "物品类型")
private String typeName;
@Excel(name = "物品名称")
private String materialName;
/** 物品id */
private Long itemId;
/** 单位 */
@Excel(name = "单位")
private String unit;
/** 库存数量 */
@Excel(name = "库存数量")
private Long stock;
/** 提交人 */
@Excel(name = "创建人")
private String createBy;
/** 备注 */
@Excel(name = "申请备注")
private String remark;
/** 草稿箱 */
@Excel(name = "草稿箱")
private String draft;
/** 删除 */
......@@ -54,6 +61,7 @@ public class PsaMaterial extends BaseEntity
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
......@@ -7,6 +7,7 @@ import com.ruoyi.material.domain.PsaMaterialTypeDetail;
import com.ruoyi.material.domain.dto.EditMaterialDTO;
import com.ruoyi.material.domain.dto.MaterialQueryDTO;
import com.ruoyi.material.domain.dto.PsaMaterialNewDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
......@@ -17,6 +18,7 @@ import org.apache.ibatis.annotations.Update;
* @author ruoyi
* @date 2025-03-12
*/
@Mapper
public interface PsaMaterialMapper
{
/**
......@@ -98,4 +100,6 @@ public interface PsaMaterialMapper
void addStock(@Param("materialId")Long materialId, @Param("entryQuantity")Long entryQuantity);
void minusStock(@Param("materialId")Long materialId, @Param("minusQuantity")Long minusQuantity);
Long getPsaMaterialId(@Param("materialTypeId")Long materialTypeId, @Param("materialTypeDetailId")Long materialTypeDetailId);
}
......@@ -82,6 +82,7 @@ public class PsaMaterialServiceImpl implements IPsaMaterialService
* @return 结果
*/
@Override
@Transactional
public int insertPsaMaterial(PsaMaterialNewDTO psaMaterialNewDTO)
{
PsaMaterial psaMaterial = new PsaMaterial();
......
......@@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
import com.ruoyi.materialapply.domain.ProjectUser;
import com.ruoyi.materialapply.domain.PsaMaterialApply;
import com.ruoyi.materialapply.service.IPsaMaterialApplyService;
import com.ruoyi.materialreturn.domain.PsaMaterialReturn;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -56,7 +57,7 @@ public class PsaMaterialApplyController extends BaseController
{
List<PsaMaterialApply> list = psaMaterialApplyService.selectPsaMaterialApplyList(psaMaterialApply);
ExcelUtil<PsaMaterialApply> util = new ExcelUtil<PsaMaterialApply>(PsaMaterialApply.class);
util.exportExcel(response, list, "物品借用申请数据");
util.exportExcel(response, list, "物品借用申请数据","物品借用记录");
}
/**
......@@ -91,6 +92,17 @@ public class PsaMaterialApplyController extends BaseController
return toAjax(psaMaterialApplyService.updatePsaMaterialApply(psaMaterialApply));
}
/**
* 审核借用申请
*/
@PreAuthorize("@ss.hasPermi('material:apply:check')")
@Log(title = "物品归还审核", businessType = BusinessType.UPDATE)
@PutMapping("/check")
public AjaxResult check(@RequestBody PsaMaterialApply psaMaterialApply)
{
return toAjax(psaMaterialApplyService.checkPsaMaterialReturn(psaMaterialApply));
}
/**
* 删除物品借用申请
*/
......
......@@ -2,9 +2,12 @@ package com.ruoyi.materialapply.domain;
import java.util.List;
import java.util.Date;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
......@@ -16,6 +19,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi
* @date 2025-03-18
*/
@Data
public class PsaMaterialApply extends BaseEntity
{
private static final long serialVersionUID = 1L;
......@@ -24,18 +28,19 @@ public class PsaMaterialApply extends BaseEntity
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
private Long projectId;
/** 项目名称 */
@Excel(name = "项目名称")
private String projectName;
/** 申请人userID */
private Long userId;
/** 申请人姓名 */
@Excel(name = "申请人姓名")
private String userName;
/** 审批状态 */
@Excel(name = "审批状态")
@Excel(name = "审批状态",dictType = "material_status")
private String checkStatus;
/** 审批时间 */
......@@ -49,121 +54,14 @@ public class PsaMaterialApply extends BaseEntity
/** 删除 */
private String delFlag;
/** 备注 */
@Excel(name = "申请备注")
private String remark;
/** 物品借用细节信息 */
@JsonProperty("items")
@Excel(name = "物品明细")
private List<PsaMaterialApplyDetail> psaMaterialApplyDetailList;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setProjectId(Long projectId)
{
this.projectId = projectId;
}
public Long getProjectId()
{
return projectId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserName()
{
return userName;
}
public void setCheckStatus(String checkStatus)
{
this.checkStatus = checkStatus;
}
public String getCheckStatus()
{
return checkStatus;
}
public void setApprovalDate(Date approvalDate)
{
this.approvalDate = approvalDate;
}
public Date getApprovalDate()
{
return approvalDate;
}
public void setApprovalAdvice(String approvalAdvice)
{
this.approvalAdvice = approvalAdvice;
}
public String getApprovalAdvice()
{
return approvalAdvice;
}
public void setDraft(String draft)
{
this.draft = draft;
}
public String getDraft()
{
return draft;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getDelFlag()
{
return delFlag;
}
public List<PsaMaterialApplyDetail> getPsaMaterialApplyDetailList()
{
return psaMaterialApplyDetailList;
}
public void setPsaMaterialApplyDetailList(List<PsaMaterialApplyDetail> psaMaterialApplyDetailList)
{
this.psaMaterialApplyDetailList = psaMaterialApplyDetailList;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("projectId", getProjectId())
.append("userId", getUserId())
.append("userName", getUserName())
.append("remark", getRemark())
.append("checkStatus", getCheckStatus())
.append("approvalDate", getApprovalDate())
.append("approvalAdvice", getApprovalAdvice())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("createBy", getCreateBy())
.append("updateBy", getUpdateBy())
.append("draft", getDraft())
.append("delFlag", getDelFlag())
.append("psaMaterialApplyDetailList", getPsaMaterialApplyDetailList())
.toString();
}
}
package com.ruoyi.materialapply.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
......@@ -12,6 +13,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi
* @date 2025-03-18
*/
@Data
public class PsaMaterialApplyDetail
{
private static final long serialVersionUID = 1L;
......@@ -20,78 +22,28 @@ public class PsaMaterialApplyDetail
private Long id;
/** 申请表ID */
@Excel(name = "申请表ID")
private Long applyId;
/** 类型ID */
@Excel(name = "类型ID")
@JsonProperty("type")
private Long materialTypeId;
/** 物品ID */
@JsonProperty("material_detail")
@Excel(name = "物品ID")
private Long materialTypeDetailId;
@Excel(name = "物品名称")
private String materialName;
/** 申请个数 */
@Excel(name = "申请个数")
@JsonProperty("quantity")
private Long applyNumber;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setApplyId(Long applyId)
{
this.applyId = applyId;
}
public Long getApplyId()
{
return applyId;
}
public void setMaterialTypeId(Long materialTypeId)
{
this.materialTypeId = materialTypeId;
}
public Long getMaterialTypeId()
{
return materialTypeId;
}
public void setMaterialTypeDetailId(Long materialTypeDetailId)
{
this.materialTypeDetailId = materialTypeDetailId;
}
private Long stock;
public Long getMaterialTypeDetailId()
{
return materialTypeDetailId;
}
public void setApplyNumber(Long applyNumber)
{
this.applyNumber = applyNumber;
}
private String unit;
public Long getApplyNumber()
{
return applyNumber;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("applyId", getApplyId())
.append("materialTypeId", getMaterialTypeId())
.append("materialTypeDetailId", getMaterialTypeDetailId())
.append("applyNumber", getApplyNumber())
.toString();
}
}
......@@ -44,6 +44,13 @@ public interface IPsaMaterialApplyService
* @return 结果
*/
public int updatePsaMaterialApply(PsaMaterialApply psaMaterialApply);
/**
* 借用审核
*
* @param psaMaterialApply 物品借用申请
* @return 结果
*/
int checkPsaMaterialReturn(PsaMaterialApply psaMaterialApply);
/**
* 批量删除物品借用申请
......@@ -63,4 +70,6 @@ public interface IPsaMaterialApplyService
List<ProjectUser> selectPorjectUser();
}
package com.ruoyi.materialapply.service.impl;
import java.security.Security;
import java.util.List;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.attendance.enums.AttendanceDelFlag;
import com.ruoyi.attendance.enums.AttendanceDraft;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.material.mapper.PsaMaterialMapper;
import com.ruoyi.materialapply.domain.ProjectUser;
import com.ruoyi.materialapply.domain.PsaMaterialApply;
import com.ruoyi.materialapply.domain.PsaMaterialApplyDetail;
import com.ruoyi.materialapply.enums.MaterialApplyStatus;
import com.ruoyi.materialapply.mapper.PsaMaterialApplyMapper;
import com.ruoyi.materialapply.service.IPsaMaterialApplyService;
import com.ruoyi.materialreturn.domain.PsaMaterialReturnDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
......@@ -32,6 +35,9 @@ public class PsaMaterialApplyServiceImpl implements IPsaMaterialApplyService
@Autowired
private PsaMaterialApplyMapper psaMaterialApplyMapper;
@Autowired
private PsaMaterialMapper psaMaterialMapper;
/**
* 查询物品借用申请
*
......@@ -53,6 +59,9 @@ public class PsaMaterialApplyServiceImpl implements IPsaMaterialApplyService
@Override
public List<PsaMaterialApply> selectPsaMaterialApplyList(PsaMaterialApply psaMaterialApply)
{
if (StrUtil.isBlank(psaMaterialApply.getDraft())){
psaMaterialApply.setDraft(AttendanceDraft.NO.getValue());
}
return psaMaterialApplyMapper.selectPsaMaterialApplyList(psaMaterialApply);
}
......@@ -69,7 +78,9 @@ public class PsaMaterialApplyServiceImpl implements IPsaMaterialApplyService
psaMaterialApply.setCheckStatus(MaterialApplyStatus.DSH.getValue());
psaMaterialApply.setCreateBy(SecurityUtils.getUsername());
psaMaterialApply.setCreateTime(DateUtils.getNowDate());
if (StrUtil.isBlank(psaMaterialApply.getDraft())){
psaMaterialApply.setDraft(AttendanceDraft.NO.getValue());
}
psaMaterialApply.setDelFlag(AttendanceDelFlag.EXIST.getValue());
int rows = psaMaterialApplyMapper.insertPsaMaterialApply(psaMaterialApply);
insertPsaMaterialApplyDetail(psaMaterialApply);
......@@ -92,6 +103,26 @@ public class PsaMaterialApplyServiceImpl implements IPsaMaterialApplyService
return psaMaterialApplyMapper.updatePsaMaterialApply(psaMaterialApply);
}
@Override
public int checkPsaMaterialReturn(PsaMaterialApply psaMaterialApply) {
psaMaterialApply.setApprovalDate(DateUtils.getNowDate());
if (psaMaterialApply.getCheckStatus().equals(MaterialApplyStatus.TG.getValue())){
List<PsaMaterialApplyDetail> psaMaterialApplyDetailList = psaMaterialApply.getPsaMaterialApplyDetailList();
for (PsaMaterialApplyDetail detail : psaMaterialApplyDetailList) {
// 获取物料ID
Long id = psaMaterialMapper.getPsaMaterialId(
detail.getMaterialTypeId(),
detail.getMaterialTypeDetailId()
);
// 扣除库存
psaMaterialMapper.minusStock(id, detail.getApplyNumber());
}
}
return psaMaterialApplyMapper.updatePsaMaterialApply(psaMaterialApply);
}
/**
* 批量删除物品借用申请
*
......
......@@ -71,7 +71,7 @@ public class PsaMaterialEntryController extends BaseController
{
List<PsaMaterialEntry> list = psaMaterialEntryService.selectPsaMaterialEntryList(psaMaterialEntry);
ExcelUtil<PsaMaterialEntry> util = new ExcelUtil<PsaMaterialEntry>(PsaMaterialEntry.class);
util.exportExcel(response, list, "物品入库信息数据");
util.exportExcel(response, list, "物品入库信息数据","物品入库记录");
}
/**
......
package com.ruoyi.materialentry.domain;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
......@@ -11,6 +12,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi
* @date 2025-03-13
*/
@Data
public class PsaMaterialEntry extends BaseEntity
{
private static final long serialVersionUID = 1L;
......@@ -19,24 +21,26 @@ public class PsaMaterialEntry extends BaseEntity
private Long id;
/** 入库方式 */
@Excel(name = "入库方式")
@Excel(name = "入库方式" ,dictType = "entry_type")
private String entryMethod;
/** 物品ID */
@Excel(name = "物品ID")
private Long materialId;
/** 报销ID */
@Excel(name = "报销ID")
@Excel(name = "报销ID",defaultValue = "无")
private Long expenseId;
/** 物类ID */
@Excel(name = "物类ID")
private Long typeId;
/** 类下物ID */
@Excel(name = "类下物ID")
private Long itemId;
/** 物品名称 */
@Excel(name = "物品类型")
private String typeName;
/** 物品名称 */
@Excel(name = "物品名称")
......@@ -45,123 +49,14 @@ public class PsaMaterialEntry extends BaseEntity
/** 入库数量 */
@Excel(name = "入库数量")
private Long entryQuantity;
/** 备注 */
@Excel(name = "申请备注")
private String remark;
/** 草稿箱 */
@Excel(name = "草稿箱")
private String draft;
/** 删除 */
private String delFlag;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setEntryMethod(String entryMethod)
{
this.entryMethod = entryMethod;
}
public String getEntryMethod()
{
return entryMethod;
}
public void setMaterialId(Long materialId)
{
this.materialId = materialId;
}
public Long getMaterialId()
{
return materialId;
}
public void setExpenseId(Long expenseId)
{
this.expenseId = expenseId;
}
public Long getExpenseId()
{
return expenseId;
}
public void setTypeId(Long typeId)
{
this.typeId = typeId;
}
public Long getTypeId()
{
return typeId;
}
public void setItemId(Long itemId)
{
this.itemId = itemId;
}
public Long getItemId()
{
return itemId;
}
public void setItemName(String itemName)
{
this.itemName = itemName;
}
public String getItemName()
{
return itemName;
}
public void setEntryQuantity(Long entryQuantity)
{
this.entryQuantity = entryQuantity;
}
public Long getEntryQuantity()
{
return entryQuantity;
}
public void setDraft(String draft)
{
this.draft = draft;
}
public String getDraft()
{
return draft;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getDelFlag()
{
return delFlag;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("entryMethod", getEntryMethod())
.append("materialId", getMaterialId())
.append("expenseId", getExpenseId())
.append("typeId", getTypeId())
.append("itemId", getItemId())
.append("itemName", getItemName())
.append("entryQuantity", getEntryQuantity())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("createBy", getCreateBy())
.append("updateBy", getUpdateBy())
.append("remark", getRemark())
.append("draft", getDraft())
.append("delFlag", getDelFlag())
.toString();
}
}
package com.ruoyi.materialreturn.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.materialreturn.domain.PsaMaterialReturn;
import com.ruoyi.materialreturn.service.IPsaMaterialReturnService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 物品归还申请Controller
*
* @author fangjianyu
* @date 2025-03-25
*/
@RestController
@RequestMapping("/material/return")
public class PsaMaterialReturnController extends BaseController
{
@Autowired
private IPsaMaterialReturnService psaMaterialReturnService;
/**
* 查询物品归还申请列表
*/
@PreAuthorize("@ss.hasPermi('material:return:list')")
@GetMapping("/list")
public TableDataInfo list(PsaMaterialReturn psaMaterialReturn)
{
startPage();
List<PsaMaterialReturn> list = psaMaterialReturnService.selectPsaMaterialReturnList(psaMaterialReturn);
return getDataTable(list);
}
/**
* 导出物品归还申请列表
*/
@PreAuthorize("@ss.hasPermi('material:return:export')")
@Log(title = "物品归还申请", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, PsaMaterialReturn psaMaterialReturn)
{
List<PsaMaterialReturn> list = psaMaterialReturnService.selectPsaMaterialReturnList(psaMaterialReturn);
ExcelUtil<PsaMaterialReturn> util = new ExcelUtil<PsaMaterialReturn>(PsaMaterialReturn.class);
util.exportExcel(response, list, "物品归还申请数据","物品归还记录");
}
/**
* 获取物品归还申请详细信息
*/
@PreAuthorize("@ss.hasPermi('material:return:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(psaMaterialReturnService.selectPsaMaterialReturnById(id));
}
/**
* 新增物品归还申请
*/
@PreAuthorize("@ss.hasPermi('material:return:add')")
@Log(title = "物品归还申请", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody PsaMaterialReturn psaMaterialReturn)
{
return toAjax(psaMaterialReturnService.insertPsaMaterialReturn(psaMaterialReturn));
}
/**
* 修改物品归还申请
*/
@PreAuthorize("@ss.hasPermi('material:return:edit')")
@Log(title = "物品归还申请", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody PsaMaterialReturn psaMaterialReturn)
{
return toAjax(psaMaterialReturnService.updatePsaMaterialReturn(psaMaterialReturn));
}
/**
* 审核归还申请
*/
@PreAuthorize("@ss.hasPermi('material:return:check')")
@Log(title = "物品归还审核", businessType = BusinessType.UPDATE)
@PutMapping("/check")
public AjaxResult check(@RequestBody PsaMaterialReturn psaMaterialReturn)
{
return toAjax(psaMaterialReturnService.checkPsaMaterialReturn(psaMaterialReturn));
}
/**
* 删除物品归还申请
*/
@PreAuthorize("@ss.hasPermi('material:return:remove')")
@Log(title = "物品归还申请", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(psaMaterialReturnService.deletePsaMaterialReturnByIds(ids));
}
}
package com.ruoyi.materialreturn.domain;
import java.util.List;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 物品归还申请对象 psa_material_return
*
* @author fangjianyu
* @date 2025-03-25
*/
@Data
public class PsaMaterialReturn extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 归还ID */
private Long id;
/** 项目ID */
private Long projectId;
@Excel(name = "项目名称")
private String projectName;
/** 归还人userID */
private Long userId;
/** 申请人姓名 */
@Excel(name = "申请人姓名")
private String userName;
/** 审批状态 */
@Excel(name = "审批状态",dictType = "material_status")
private String checkStatus;
/** 审批时间 */
private Date approvalDate;
/** 审批意见 */
private String approvalAdvice;
/** 草稿箱 */
private String draft;
/** 删除 */
private String delFlag;
/** 备注 */
@Excel(name = "申请备注")
private String remark;
/** 物品归还细节信息 */
@JsonProperty("items")
@Excel(name = "物品明细")
private List<PsaMaterialReturnDetail> psaMaterialReturnDetailList;
}
package com.ruoyi.materialreturn.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 物品归还细节对象 psa_material_return_detail
*
* @author fangjianyu
* @date 2025-03-25
*/
@Data
public class PsaMaterialReturnDetail
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 归还表ID */
private Long returnId;
/** 类型ID */
@JsonProperty("type")
private Long materialTypeId;
/** 物品ID */
@JsonProperty("material_detail")
private Long materialTypeDetailId;
@Excel(name = "物品名称")
private String materialName;
/** 归还个数 */
@Excel(name = "归还个数")
@JsonProperty("quantity")
private Long returnNumber;
}
package com.ruoyi.materialreturn.mapper;
import com.ruoyi.materialreturn.domain.PsaMaterialReturn;
import com.ruoyi.materialreturn.domain.PsaMaterialReturnDetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 物品归还申请Mapper接口
*
* @author fangjianyu
* @date 2025-03-25
*/
@Mapper
public interface PsaMaterialReturnMapper
{
/**
* 查询物品归还申请
*
* @param id 物品归还申请主键
* @return 物品归还申请
*/
public PsaMaterialReturn selectPsaMaterialReturnById(Long id);
/**
* 查询物品归还申请列表
*
* @param psaMaterialReturn 物品归还申请
* @return 物品归还申请集合
*/
public List<PsaMaterialReturn> selectPsaMaterialReturnList(PsaMaterialReturn psaMaterialReturn);
/**
* 新增物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
public int insertPsaMaterialReturn(PsaMaterialReturn psaMaterialReturn);
/**
* 修改物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
public int updatePsaMaterialReturn(PsaMaterialReturn psaMaterialReturn);
/**
* 删除物品归还申请
*
* @param id 物品归还申请主键
* @return 结果
*/
public int deletePsaMaterialReturnById(Long id);
/**
* 批量删除物品归还申请
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deletePsaMaterialReturnByIds(Long[] ids);
/**
* 批量删除物品归还细节
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deletePsaMaterialReturnDetailByReturnIds(Long[] ids);
/**
* 批量新增物品归还细节
*
* @param psaMaterialReturnDetailList 物品归还细节列表
* @return 结果
*/
public int batchPsaMaterialReturnDetail(List<PsaMaterialReturnDetail> psaMaterialReturnDetailList);
/**
* 通过物品归还申请主键删除物品归还细节信息
*
* @param id 物品归还申请ID
* @return 结果
*/
public int deletePsaMaterialReturnDetailByReturnId(Long id);
}
package com.ruoyi.materialreturn.service;
import com.ruoyi.materialreturn.domain.PsaMaterialReturn;
import java.util.List;
/**
* 物品归还申请Service接口
*
* @author fangjianyu
* @date 2025-03-25
*/
public interface IPsaMaterialReturnService
{
/**
* 查询物品归还申请
*
* @param id 物品归还申请主键
* @return 物品归还申请
*/
public PsaMaterialReturn selectPsaMaterialReturnById(Long id);
/**
* 查询物品归还申请列表
*
* @param psaMaterialReturn 物品归还申请
* @return 物品归还申请集合
*/
public List<PsaMaterialReturn> selectPsaMaterialReturnList(PsaMaterialReturn psaMaterialReturn);
/**
* 新增物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
public int insertPsaMaterialReturn(PsaMaterialReturn psaMaterialReturn);
/**
* 修改物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
public int updatePsaMaterialReturn(PsaMaterialReturn psaMaterialReturn);
/**
* 批量删除物品归还申请
*
* @param ids 需要删除的物品归还申请主键集合
* @return 结果
*/
public int deletePsaMaterialReturnByIds(Long[] ids);
/**
* 删除物品归还申请信息
*
* @param id 物品归还申请主键
* @return 结果
*/
public int deletePsaMaterialReturnById(Long id);
/**
* 审核归还
*
* @param psaMaterialReturn 物品归还
* @return 结果
*/
int checkPsaMaterialReturn(PsaMaterialReturn psaMaterialReturn);
}
package com.ruoyi.materialreturn.service.impl;
import java.util.List;
import com.ruoyi.attendance.enums.AttendanceDelFlag;
import com.ruoyi.attendance.enums.AttendanceDraft;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.material.mapper.PsaMaterialMapper;
import com.ruoyi.materialapply.enums.MaterialApplyStatus;
import com.ruoyi.materialreturn.domain.PsaMaterialReturn;
import com.ruoyi.materialreturn.domain.PsaMaterialReturnDetail;
import com.ruoyi.materialreturn.mapper.PsaMaterialReturnMapper;
import com.ruoyi.materialreturn.service.IPsaMaterialReturnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
/**
* 物品归还申请Service业务层处理
*
* @author fangjianyu
* @date 2025-03-25
*/
@Service
public class PsaMaterialReturnServiceImpl implements IPsaMaterialReturnService
{
@Autowired
private PsaMaterialReturnMapper psaMaterialReturnMapper;
@Autowired
private PsaMaterialMapper psaMaterialMapper;
/**
* 查询物品归还申请
*
* @param id 物品归还申请主键
* @return 物品归还申请
*/
@Override
public PsaMaterialReturn selectPsaMaterialReturnById(Long id)
{
return psaMaterialReturnMapper.selectPsaMaterialReturnById(id);
}
/**
* 查询物品归还申请列表
*
* @param psaMaterialReturn 物品归还申请
* @return 物品归还申请
*/
@Override
public List<PsaMaterialReturn> selectPsaMaterialReturnList(PsaMaterialReturn psaMaterialReturn)
{
return psaMaterialReturnMapper.selectPsaMaterialReturnList(psaMaterialReturn);
}
/**
* 新增物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
@Transactional
@Override
public int insertPsaMaterialReturn(PsaMaterialReturn psaMaterialReturn)
{
psaMaterialReturn.setCreateBy(SecurityUtils.getUsername());
psaMaterialReturn.setCheckStatus(MaterialApplyStatus.DSH.getValue());
psaMaterialReturn.setDraft(AttendanceDraft.NO.getValue());
psaMaterialReturn.setDelFlag(AttendanceDelFlag.EXIST.getValue());
psaMaterialReturn.setCreateTime(DateUtils.getNowDate());
int rows = psaMaterialReturnMapper.insertPsaMaterialReturn(psaMaterialReturn);
insertPsaMaterialReturnDetail(psaMaterialReturn);
return rows;
}
/**
* 修改物品归还申请
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
@Transactional
@Override
public int updatePsaMaterialReturn(PsaMaterialReturn psaMaterialReturn)
{
psaMaterialReturn.setUpdateTime(DateUtils.getNowDate());
psaMaterialReturnMapper.deletePsaMaterialReturnDetailByReturnId(psaMaterialReturn.getId());
insertPsaMaterialReturnDetail(psaMaterialReturn);
return psaMaterialReturnMapper.updatePsaMaterialReturn(psaMaterialReturn);
}
/**
* 审核物品归还
*
* @param psaMaterialReturn 物品归还申请
* @return 结果
*/
@Override
public int checkPsaMaterialReturn(PsaMaterialReturn psaMaterialReturn) {
psaMaterialReturn.setApprovalDate(DateUtils.getNowDate());
if (psaMaterialReturn.getCheckStatus().equals(MaterialApplyStatus.TG.getValue())) {
// 通过归还,加库存
List<PsaMaterialReturnDetail> psaMaterialReturnDetailList = psaMaterialReturn.getPsaMaterialReturnDetailList();
// 遍历物料归还明细列表
for (PsaMaterialReturnDetail detail : psaMaterialReturnDetailList) {
// 获取物料ID
Long id = psaMaterialMapper.getPsaMaterialId(
detail.getMaterialTypeId(),
detail.getMaterialTypeDetailId()
);
// 增加库存
psaMaterialMapper.addStock(id, detail.getReturnNumber());
}
}
return psaMaterialReturnMapper.updatePsaMaterialReturn(psaMaterialReturn);
}
/**
* 批量删除物品归还申请
*
* @param ids 需要删除的物品归还申请主键
* @return 结果
*/
@Transactional
@Override
public int deletePsaMaterialReturnByIds(Long[] ids)
{
psaMaterialReturnMapper.deletePsaMaterialReturnDetailByReturnIds(ids);
return psaMaterialReturnMapper.deletePsaMaterialReturnByIds(ids);
}
/**
* 删除物品归还申请信息
*
* @param id 物品归还申请主键
* @return 结果
*/
@Transactional
@Override
public int deletePsaMaterialReturnById(Long id)
{
psaMaterialReturnMapper.deletePsaMaterialReturnDetailByReturnId(id);
return psaMaterialReturnMapper.deletePsaMaterialReturnById(id);
}
/**
* 新增物品归还细节信息
*
* @param psaMaterialReturn 物品归还申请对象
*/
public void insertPsaMaterialReturnDetail(PsaMaterialReturn psaMaterialReturn)
{
List<PsaMaterialReturnDetail> psaMaterialReturnDetailList = psaMaterialReturn.getPsaMaterialReturnDetailList();
Long id = psaMaterialReturn.getId();
if (StringUtils.isNotNull(psaMaterialReturnDetailList))
{
List<PsaMaterialReturnDetail> list = new ArrayList<PsaMaterialReturnDetail>();
for (PsaMaterialReturnDetail psaMaterialReturnDetail : psaMaterialReturnDetailList)
{
psaMaterialReturnDetail.setReturnId(id);
list.add(psaMaterialReturnDetail);
}
if (list.size() > 0)
{
psaMaterialReturnMapper.batchPsaMaterialReturnDetail(list);
}
}
}
}
......@@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="draft" column="draft" />
<result property="delFlag" column="del_flag" />
<result property="projectName" column="project_name" />
<!-- 子表集合映射 -->
<collection property="psaMaterialApplyDetailList" ofType="PsaMaterialApplyDetail">
<id property="id" column="detail_id"/>
......@@ -26,6 +27,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="materialTypeId" column="type"/>
<result property="materialTypeDetailId" column="material_detail"/>
<result property="applyNumber" column="quantity"/>
<result property="materialName" column="material_name"/>
<result property="stock" column="stock"/>
<result property="unit" column="unit"/>
</collection>
</resultMap>
......@@ -66,9 +70,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
d.apply_id,
d.material_type_id AS type,
d.material_type_detail_id AS material_detail,
d.apply_number AS quantity
d.apply_number AS quantity,
p.project_name,
mtd.material_name,
pm.stock,
pm.unit
FROM psa_material_apply a
LEFT JOIN psa_material_apply_detail d ON a.id = d.apply_id
LEFT JOIN project_manage p ON a.project_id = p.id
LEFT JOIN psa_material_type_detail mtd ON d.material_type_detail_id = mtd.id
LEFT JOIN psa_material pm ON pm.item_id = mtd.id and pm.type_id = mtd.type_id
</sql>
<select id="selectPsaMaterialApplyList" parameterType="PsaMaterialApply" resultMap="PsaMaterialApplyResult">
......@@ -78,13 +89,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
<if test="checkStatus != null and checkStatus != ''"> and check_status = #{checkStatus}</if>
<if test="createTime != null "> and date(create_time) = #{createTime}</if>
<if test="draft != null "> and a.draft = #{draft}</if>
</where>
</select>
<select id="selectPsaMaterialApplyById" parameterType="Long" resultMap="PsaMaterialApplyPsaMaterialApplyDetailResult">
select id, project_id, user_id, user_name, remark, check_status, approval_date, approval_advice, create_time, update_time, create_by, update_by, draft, del_flag
from psa_material_apply
where id = #{id}
<select id="selectPsaMaterialApplyById" parameterType="Long" resultMap="PsaMaterialApplyResult">
<include refid="selectPsaMaterialApplyVo"/>
where a.id = #{id}
</select>
<select id="selectPsaMaterialApplyDetailList" resultMap="PsaMaterialApplyDetailResult">
......
......@@ -20,10 +20,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="remark" column="remark" />
<result property="draft" column="draft" />
<result property="delFlag" column="del_flag" />
<result property="typeName" column="type_name" />
</resultMap>
<sql id="selectPsaMaterialEntryVo">
select id, entry_method, material_id, expense_id, type_id, item_id, item_name, entry_quantity, create_time, update_time, create_by, update_by, remark, draft, del_flag from psa_material_entry
select pe.id,
pe.entry_method,
pe.material_id,
pe.expense_id,
pe.type_id,
pe.item_id,
pe.item_name,
pe.entry_quantity,
pe.create_time,
pe.update_time,
pe.create_by,
pe.update_by,
pe.remark,
pe.draft,
pe.del_flag,
pmt.type_name
from psa_material_entry pe
left join psa_material_type pmt on pe.type_id = pmt.id
</sql>
<select id="selectPsaMaterialEntryList" parameterType="PsaMaterialEntry" resultMap="PsaMaterialEntryResult">
......
......@@ -18,6 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="remark" column="remark" />
<result property="draft" column="draft" />
<result property="delFlag" column="del_flag" />
<result property="materialName" column="material_name" />
<result property="typeName" column="type_name" />
</resultMap>
<resultMap type="PsaMaterialType" id="PsaMaterialTypeResult">
......@@ -36,7 +38,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectPsaMaterialVo">
select material_id, item_code, item_id, type_id, stock, unit, create_time, update_time, create_by, update_by, remark, draft, del_flag from psa_material
select pm.material_id,
pm.item_code,
pm.item_id,
pm.type_id,
pm.stock,
pm.unit,
pm.create_time,
pm.update_time,
pm.create_by,
pm.update_by,
pm.remark,
pm.draft,
pm.del_flag,
pmd.material_name,
pmt.type_name
from psa_material pm
LEFT JOIN psa_material_type_detail pmd ON pm.item_id = pmd.id
LEFT JOIN psa_material_type pmt ON pm.type_id = pmt.id
</sql>
<sql id="selectPsaMateriaTypelVo">
select id, type_name from psa_material_type
......@@ -97,6 +116,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="getPsaMaterialId" resultType="java.lang.Long">
select material_id from psa_material where type_id = #{materialTypeId} and item_id = #{materialTypeDetailId}
</select>
<insert id="insertPsaMaterial" parameterType="PsaMaterial" useGeneratedKeys="true" keyProperty="materialId">
......@@ -187,4 +209,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<delete id="deletePsaMaterialDetailById" parameterType="Long">
delete from psa_material_type_detail where id = #{itemId}
</delete>
<!-- 根据item_id查询物品详情 -->
<select id="selectMaterialDetailById" resultType="com.ruoyi.material.domain.PsaMaterialTypeDetail">
SELECT id, type_id, material_name
FROM psa_material_type_detail
WHERE id = #{item_id}
</select>
</mapper>
\ No newline at end of file
<?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.materialreturn.mapper.PsaMaterialReturnMapper">
<resultMap type="PsaMaterialReturn" id="PsaMaterialReturnResult">
<id property="id" column="id"/>
<!-- <result property="id" column="id" />-->
<result property="projectId" column="project_id" />
<result property="userId" column="user_id" />
<result property="userName" column="user_name" />
<result property="remark" column="remark" />
<result property="checkStatus" column="check_status" />
<result property="approvalDate" column="approval_date" />
<result property="approvalAdvice" column="approval_advice" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="createBy" column="create_by" />
<result property="updateBy" column="update_by" />
<result property="draft" column="draft" />
<result property="delFlag" column="del_flag" />
<result property="projectName" column="project_name" />
<collection property="psaMaterialReturnDetailList" ofType="psaMaterialReturnDetail">
<id property="id" column="detail_id"/>
<result property="returnId" column="return_id"/>
<result property="materialTypeId" column="type"/>
<result property="materialTypeDetailId" column="material_detail"/>
<result property="returnNumber" column="quantity"/>
<result property="materialName" column="material_name"/>
</collection>
</resultMap>
<resultMap id="PsaMaterialReturnPsaMaterialReturnDetailResult" type="PsaMaterialReturn" extends="PsaMaterialReturnResult">
<collection property="psaMaterialReturnDetailList" ofType="PsaMaterialReturnDetail" column="id" select="selectPsaMaterialReturnDetailList" />
</resultMap>
<resultMap type="PsaMaterialReturnDetail" id="PsaMaterialReturnDetailResult">
<result property="id" column="id" />
<result property="returnId" column="return_id" />
<result property="materialTypeId" column="material_type_id" />
<result property="materialTypeDetailId" column="material_type_detail_id" />
<result property="returnNumber" column="return_number" />
</resultMap>
<sql id="selectPsaMaterialReturnVo">
select r.id,
r.project_id,
r.user_id,
r.user_name,
r.remark,
r.check_status,
r.approval_date,
r.approval_advice,
r.create_time,
r.update_time,
r.create_by,
r.update_by,
r.draft,
r.del_flag,
d.id AS detail_id,
d.return_id,
d.material_type_id AS type,
d.material_type_detail_id AS material_detail,
d.return_number AS quantity,
p.project_name,
mtd.material_name
from psa_material_return r
LEFT JOIN psa_material_return_detail d ON r.id = d.return_id
left join project_manage p ON r.project_id = p.id
LEFT JOIN psa_material_type_detail mtd ON d.material_type_detail_id = mtd.id
</sql>
<select id="selectPsaMaterialReturnList" parameterType="PsaMaterialReturn" resultMap="PsaMaterialReturnResult">
<include refid="selectPsaMaterialReturnVo"/>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
<if test="checkStatus != null and checkStatus != ''"> and check_status = #{checkStatus}</if>
</where>
</select>
<select id="selectPsaMaterialReturnById" parameterType="Long" resultMap="PsaMaterialReturnPsaMaterialReturnDetailResult">
select id, project_id, user_id, user_name, remark, check_status, approval_date, approval_advice, create_time, update_time, create_by, update_by, draft, del_flag
from psa_material_return
where id = #{id}
</select>
<select id="selectPsaMaterialReturnDetailList" resultMap="PsaMaterialReturnDetailResult">
select id, return_id, material_type_id, material_type_detail_id, return_number
from psa_material_return_detail
where return_id = #{return_id}
</select>
<insert id="insertPsaMaterialReturn" parameterType="PsaMaterialReturn" useGeneratedKeys="true" keyProperty="id">
insert into psa_material_return
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="userId != null">user_id,</if>
<if test="userName != null">user_name,</if>
<if test="remark != null">remark,</if>
<if test="checkStatus != null">check_status,</if>
<if test="approvalDate != null">approval_date,</if>
<if test="approvalAdvice != null">approval_advice,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="createBy != null">create_by,</if>
<if test="updateBy != null">update_by,</if>
<if test="draft != null">draft,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="userId != null">#{userId},</if>
<if test="userName != null">#{userName},</if>
<if test="remark != null">#{remark},</if>
<if test="checkStatus != null">#{checkStatus},</if>
<if test="approvalDate != null">#{approvalDate},</if>
<if test="approvalAdvice != null">#{approvalAdvice},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="draft != null">#{draft},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updatePsaMaterialReturn" parameterType="PsaMaterialReturn">
update psa_material_return
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="userName != null">user_name = #{userName},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="checkStatus != null">check_status = #{checkStatus},</if>
<if test="approvalDate != null">approval_date = #{approvalDate},</if>
<if test="approvalAdvice != null">approval_advice = #{approvalAdvice},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="draft != null">draft = #{draft},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<delete id="deletePsaMaterialReturnById" parameterType="Long">
delete from psa_material_return where id = #{id}
</delete>
<delete id="deletePsaMaterialReturnByIds" parameterType="String">
delete from psa_material_return where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deletePsaMaterialReturnDetailByReturnIds" parameterType="String">
delete from psa_material_return_detail where return_id in
<foreach item="returnId" collection="array" open="(" separator="," close=")">
#{returnId}
</foreach>
</delete>
<delete id="deletePsaMaterialReturnDetailByReturnId" parameterType="Long">
delete from psa_material_return_detail where return_id = #{returnId}
</delete>
<insert id="batchPsaMaterialReturnDetail">
insert into psa_material_return_detail( id, return_id, material_type_id, material_type_detail_id, return_number) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.returnId}, #{item.materialTypeId}, #{item.materialTypeDetailId}, #{item.returnNumber})
</foreach>
</insert>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment