1.0.11 合同物料优化

dev
yinq 4 months ago
parent 98f73c452b
commit f960eb05c4

@ -17,99 +17,99 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.oa.erp.domain.vo.ErpContractMaterielVo;
import org.dromara.oa.erp.domain.bo.ErpContractMaterielBo;
import org.dromara.oa.erp.service.IErpContractMaterielService;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.oa.erp.domain.bo.ErpContractMaterialBo;
import org.dromara.oa.erp.service.IErpContractMaterialService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/oa/erp/contractMateriel
* 访:/oa/erp/contractMaterial
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/erp/contractMateriel")
public class ErpContractMaterielController extends BaseController {
@RequestMapping("/erp/contractMaterial")
public class ErpContractMaterialController extends BaseController {
private final IErpContractMaterielService erpContractMaterielService;
private final IErpContractMaterialService erpContractMaterialService;
/**
*
*/
@SaCheckPermission("oa/erp:contractMateriel:list")
@SaCheckPermission("oa/erp:contractMaterial:list")
@GetMapping("/list")
public TableDataInfo<ErpContractMaterielVo> list(ErpContractMaterielBo bo, PageQuery pageQuery) {
return erpContractMaterielService.queryPageList(bo, pageQuery);
public TableDataInfo<ErpContractMaterialVo> list(ErpContractMaterialBo bo, PageQuery pageQuery) {
return erpContractMaterialService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("oa/erp:contractMateriel:export")
@SaCheckPermission("oa/erp:contractMaterial:export")
@Log(title = "合同物料信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ErpContractMaterielBo bo, HttpServletResponse response) {
List<ErpContractMaterielVo> list = erpContractMaterielService.queryList(bo);
ExcelUtil.exportExcel(list, "合同物料信息", ErpContractMaterielVo.class, response);
public void export(ErpContractMaterialBo bo, HttpServletResponse response) {
List<ErpContractMaterialVo> list = erpContractMaterialService.queryList(bo);
ExcelUtil.exportExcel(list, "合同物料信息", ErpContractMaterialVo.class, response);
}
/**
*
*
* @param contractMaterielId
* @param contractMaterialId
*/
@SaCheckPermission("oa/erp:contractMateriel:query")
@GetMapping("/{contractMaterielId}")
public R<ErpContractMaterielVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("contractMaterielId") Long contractMaterielId) {
return R.ok(erpContractMaterielService.queryById(contractMaterielId));
@SaCheckPermission("oa/erp:contractMaterial:query")
@GetMapping("/{contractMaterialId}")
public R<ErpContractMaterialVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("contractMaterialId") Long contractMaterialId) {
return R.ok(erpContractMaterialService.queryById(contractMaterialId));
}
/**
*
*/
@SaCheckPermission("oa/erp:contractMateriel:add")
@SaCheckPermission("oa/erp:contractMaterial:add")
@Log(title = "合同物料信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ErpContractMaterielBo bo) {
return toAjax(erpContractMaterielService.insertByBo(bo));
public R<Void> add(@Validated(AddGroup.class) @RequestBody ErpContractMaterialBo bo) {
return toAjax(erpContractMaterialService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("oa/erp:contractMateriel:edit")
@SaCheckPermission("oa/erp:contractMaterial:edit")
@Log(title = "合同物料信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ErpContractMaterielBo bo) {
return toAjax(erpContractMaterielService.updateByBo(bo));
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ErpContractMaterialBo bo) {
return toAjax(erpContractMaterialService.updateByBo(bo));
}
/**
*
*
* @param contractMaterielIds
* @param contractMaterialIds
*/
@SaCheckPermission("oa/erp:contractMateriel:remove")
@SaCheckPermission("oa/erp:contractMaterial:remove")
@Log(title = "合同物料信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{contractMaterielIds}")
@DeleteMapping("/{contractMaterialIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("contractMaterielIds") Long[] contractMaterielIds) {
return toAjax(erpContractMaterielService.deleteWithValidByIds(List.of(contractMaterielIds), true));
@PathVariable("contractMaterialIds") Long[] contractMaterialIds) {
return toAjax(erpContractMaterialService.deleteWithValidByIds(List.of(contractMaterialIds), true));
}
/**
*
*/
@GetMapping("/getErpContractMaterielList")
public R<List<ErpContractMaterielVo>> getErpContractMaterielList(ErpContractMaterielBo bo) {
List<ErpContractMaterielVo> list = erpContractMaterielService.queryList(bo);
@GetMapping("/getErpContractMaterialList")
public R<List<ErpContractMaterialVo>> getErpContractMaterialList(ErpContractMaterialBo bo) {
List<ErpContractMaterialVo> list = erpContractMaterialService.queryList(bo);
return R.ok(list);
}

@ -9,6 +9,7 @@ import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
import java.util.List;
/**
* erp_contract_info
@ -27,7 +28,7 @@ public class ErpContractInfo extends TenantEntity {
/**
* ID
*/
@TableId(value = "contract_id", type = IdType.AUTO)
@TableId(value = "contract_id", type = IdType.ASSIGN_ID)
private Long contractId;
/**
@ -156,5 +157,9 @@ public class ErpContractInfo extends TenantEntity {
@TableLogic
private String delFlag;
/**
* List
*/
@TableField(exist = false)
private List<ErpContractMateriel> contractMaterielList;
}

@ -9,15 +9,15 @@ import java.math.BigDecimal;
import java.io.Serial;
/**
* erp_contract_materiel
* erp_contract_material
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("erp_contract_materiel")
public class ErpContractMateriel extends TenantEntity {
@TableName("erp_contract_material")
public class ErpContractMaterial extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
@ -25,8 +25,13 @@ public class ErpContractMateriel extends TenantEntity {
/**
* ID
*/
@TableId(value = "contract_materiel_id", type = IdType.AUTO)
private Long contractMaterielId;
@TableId(value = "contract_material_id", type = IdType.AUTO)
private Long contractMaterialId;
/**
* 1 2
*/
private String planFlag;
/**
* ID
@ -46,17 +51,17 @@ public class ErpContractMateriel extends TenantEntity {
/**
* ID
*/
private Long materielId;
private Long materialId;
/**
* ID
*/
private Long relationMaterielId;
private Long relationMaterialId;
/**
*
*/
private Long amount;
private BigDecimal amount;
/**
* ID

@ -10,7 +10,10 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.oa.erp.domain.ErpContractMateriel;
/**
* erp_contract_info
@ -149,5 +152,10 @@ public class ErpContractInfoBo extends BaseEntity {
*/
private String activeFlag;
/**
* List
*/
private List<ErpContractMateriel> contractMaterielList;
}

@ -1,6 +1,6 @@
package org.dromara.oa.erp.domain.bo;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@ -11,20 +11,26 @@ import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
* erp_contract_materiel
* erp_contract_material
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ErpContractMateriel.class, reverseConvertGenerate = false)
public class ErpContractMaterielBo extends BaseEntity {
@AutoMapper(target = ErpContractMaterial.class, reverseConvertGenerate = false)
public class ErpContractMaterialBo extends BaseEntity {
/**
* ID
*/
private Long contractMaterielId;
@NotNull(message = "合同物料ID不能为空", groups = { EditGroup.class })
private Long contractMaterialId;
/**
* 1 2
*/
private String planFlag;
/**
* ID
@ -44,17 +50,17 @@ public class ErpContractMaterielBo extends BaseEntity {
/**
* ID
*/
private Long materielId;
private Long materialId;
/**
* ID
*/
private Long relationMaterielId;
private Long relationMaterialId;
/**
*
*/
private Long amount;
private BigDecimal amount;
/**
* ID

@ -10,11 +10,12 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -211,5 +212,8 @@ public class ErpContractInfoVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
* List
*/
private List<ErpContractMateriel> contractMaterielList;
}

@ -1,7 +1,7 @@
package org.dromara.oa.erp.domain.vo;
import java.math.BigDecimal;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@ -16,15 +16,15 @@ import java.util.Date;
/**
* erp_contract_materiel
* erp_contract_material
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ErpContractMateriel.class)
public class ErpContractMaterielVo implements Serializable {
@AutoMapper(target = ErpContractMaterial.class)
public class ErpContractMaterialVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ -33,7 +33,14 @@ public class ErpContractMaterielVo implements Serializable {
* ID
*/
@ExcelProperty(value = "合同物料ID")
private Long contractMaterielId;
private Long contractMaterialId;
/**
* 1 2
*/
@ExcelProperty(value = "计划标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "plan_flag")
private String planFlag;
/**
* ID
@ -57,19 +64,19 @@ public class ErpContractMaterielVo implements Serializable {
* ID
*/
@ExcelProperty(value = "物料ID")
private Long materielId;
private Long materialId;
/**
* ID
*/
@ExcelProperty(value = "销售物料ID")
private Long relationMaterielId;
private Long relationMaterialId;
/**
*
*/
@ExcelProperty(value = "数量")
private Long amount;
private BigDecimal amount;
/**
* ID
@ -114,5 +121,23 @@ public class ErpContractMaterielVo implements Serializable {
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
}

@ -5,17 +5,17 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.domain.vo.ErpContractMaterielVo;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
public interface ErpContractMaterielMapper extends BaseMapperPlus<ErpContractMateriel, ErpContractMaterielVo> {
public interface ErpContractMaterialMapper extends BaseMapperPlus<ErpContractMaterial, ErpContractMaterialVo> {
/**
*
@ -24,7 +24,7 @@ public interface ErpContractMaterielMapper extends BaseMapperPlus<ErpContractMat
* @param queryWrapper
* @return
*/
public Page<ErpContractMaterielVo> selectCustomErpContractMaterielVoList(@Param("page") Page<ErpContractMaterielVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractMateriel> queryWrapper);
public Page<ErpContractMaterialVo> selectCustomErpContractMaterialVoList(@Param("page") Page<ErpContractMaterialVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractMaterial> queryWrapper);
/**
*
@ -32,6 +32,6 @@ public interface ErpContractMaterielMapper extends BaseMapperPlus<ErpContractMat
* @param queryWrapper
* @return
*/
public List<ErpContractMaterielVo> selectCustomErpContractMaterielVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractMateriel> queryWrapper);
public List<ErpContractMaterialVo> selectCustomErpContractMaterialVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractMaterial> queryWrapper);
}

@ -1,8 +1,8 @@
package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.domain.vo.ErpContractMaterielVo;
import org.dromara.oa.erp.domain.bo.ErpContractMaterielBo;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.oa.erp.domain.bo.ErpContractMaterialBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@ -13,17 +13,17 @@ import java.util.List;
* Service
*
* @author Yinq
* @date 2025-10-11
* @date 2025-10-14
*/
public interface IErpContractMaterielService {
public interface IErpContractMaterialService {
/**
*
*
* @param contractMaterielId
* @param contractMaterialId
* @return
*/
ErpContractMaterielVo queryById(Long contractMaterielId);
ErpContractMaterialVo queryById(Long contractMaterialId);
/**
*
@ -32,7 +32,7 @@ public interface IErpContractMaterielService {
* @param pageQuery
* @return
*/
TableDataInfo<ErpContractMaterielVo> queryPageList(ErpContractMaterielBo bo, PageQuery pageQuery);
TableDataInfo<ErpContractMaterialVo> queryPageList(ErpContractMaterialBo bo, PageQuery pageQuery);
/**
*
@ -40,7 +40,7 @@ public interface IErpContractMaterielService {
* @param bo
* @return
*/
List<ErpContractMaterielVo> queryList(ErpContractMaterielBo bo);
List<ErpContractMaterialVo> queryList(ErpContractMaterialBo bo);
/**
*
@ -48,7 +48,7 @@ public interface IErpContractMaterielService {
* @param bo
* @return
*/
Boolean insertByBo(ErpContractMaterielBo bo);
Boolean insertByBo(ErpContractMaterialBo bo);
/**
*
@ -56,7 +56,7 @@ public interface IErpContractMaterielService {
* @param bo
* @return
*/
Boolean updateByBo(ErpContractMaterielBo bo);
Boolean updateByBo(ErpContractMaterialBo bo);
/**
*

@ -1,24 +1,30 @@
package org.dromara.oa.erp.service.impl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.mapper.ErpContractMaterielMapper;
import org.springframework.stereotype.Service;
import org.dromara.oa.erp.domain.bo.ErpContractInfoBo;
import org.dromara.oa.erp.domain.vo.ErpContractInfoVo;
import org.dromara.oa.erp.domain.ErpContractInfo;
import org.dromara.oa.erp.mapper.ErpContractInfoMapper;
import org.dromara.oa.erp.service.IErpContractInfoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Service
@ -32,6 +38,8 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
private final ErpContractInfoMapper baseMapper;
private final ErpContractMaterielMapper contractMaterielMapper;
/**
*
*
@ -39,23 +47,23 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
* @return
*/
@Override
public ErpContractInfoVo queryById(Long contractId){
public ErpContractInfoVo queryById(Long contractId) {
return baseMapper.selectVoById(contractId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractInfoVo> queryPageList(ErpContractInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractInfo> lqw = buildQueryWrapper(bo);
Page<ErpContractInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractInfoVo> queryPageList(ErpContractInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractInfo> lqw = buildQueryWrapper(bo);
Page<ErpContractInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
@ -72,31 +80,30 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
private MPJLambdaWrapper<ErpContractInfo> buildQueryWrapper(ErpContractInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ErpContractInfo> lqw = JoinWrappers.lambda(ErpContractInfo.class)
.selectAll(ErpContractInfo.class)
.eq(StringUtils.isNotBlank(bo.getContractFlag()), ErpContractInfo::getContractFlag, bo.getContractFlag())
.eq(StringUtils.isNotBlank(bo.getContractCode()), ErpContractInfo::getContractCode, bo.getContractCode())
.like(StringUtils.isNotBlank(bo.getContractName()), ErpContractInfo::getContractName, bo.getContractName())
.eq(StringUtils.isNotBlank(bo.getContractCategory()), ErpContractInfo::getContractCategory, bo.getContractCategory())
.eq(StringUtils.isNotBlank(bo.getContractType()), ErpContractInfo::getContractType, bo.getContractType())
.eq(StringUtils.isNotBlank(bo.getBusinessDirection()), ErpContractInfo::getBusinessDirection, bo.getBusinessDirection())
.eq(bo.getContractDeptId() != null, ErpContractInfo::getContractDeptId, bo.getContractDeptId())
.eq(bo.getContractDate() != null, ErpContractInfo::getContractDate, bo.getContractDate())
.eq(bo.getTotalPrice() != null, ErpContractInfo::getTotalPrice, bo.getTotalPrice())
.eq(bo.getACustomerId() != null, ErpContractInfo::getACustomerId, bo.getACustomerId())
.eq(StringUtils.isNotBlank(bo.getARepresent()), ErpContractInfo::getARepresent, bo.getARepresent())
.eq(bo.getADate() != null, ErpContractInfo::getADate, bo.getADate())
.eq(bo.getBCustomerId() != null, ErpContractInfo::getBCustomerId, bo.getBCustomerId())
.eq(StringUtils.isNotBlank(bo.getBRepresent()), ErpContractInfo::getBRepresent, bo.getBRepresent())
.eq(bo.getBDate() != null, ErpContractInfo::getBDate, bo.getBDate())
.eq(StringUtils.isNotBlank(bo.getContractStatus()), ErpContractInfo::getContractStatus, bo.getContractStatus())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpContractInfo::getFlowStatus, bo.getFlowStatus())
.eq(bo.getTemplateId() != null, ErpContractInfo::getTemplateId, bo.getTemplateId())
.eq(StringUtils.isNotBlank(bo.getOssId()), ErpContractInfo::getOssId, bo.getOssId())
.eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpContractInfo::getPaymentMethod, bo.getPaymentMethod())
.eq(bo.getSignatureAppendix() != null, ErpContractInfo::getSignatureAppendix, bo.getSignatureAppendix())
.eq(bo.getTaxRate() != null, ErpContractInfo::getTaxRate, bo.getTaxRate())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractInfo::getActiveFlag, bo.getActiveFlag())
;
.selectAll(ErpContractInfo.class)
.eq(StringUtils.isNotBlank(bo.getContractFlag()), ErpContractInfo::getContractFlag, bo.getContractFlag())
.eq(StringUtils.isNotBlank(bo.getContractCode()), ErpContractInfo::getContractCode, bo.getContractCode())
.like(StringUtils.isNotBlank(bo.getContractName()), ErpContractInfo::getContractName, bo.getContractName())
.eq(StringUtils.isNotBlank(bo.getContractCategory()), ErpContractInfo::getContractCategory, bo.getContractCategory())
.eq(StringUtils.isNotBlank(bo.getContractType()), ErpContractInfo::getContractType, bo.getContractType())
.eq(StringUtils.isNotBlank(bo.getBusinessDirection()), ErpContractInfo::getBusinessDirection, bo.getBusinessDirection())
.eq(bo.getContractDeptId() != null, ErpContractInfo::getContractDeptId, bo.getContractDeptId())
.eq(bo.getContractDate() != null, ErpContractInfo::getContractDate, bo.getContractDate())
.eq(bo.getTotalPrice() != null, ErpContractInfo::getTotalPrice, bo.getTotalPrice())
.eq(bo.getACustomerId() != null, ErpContractInfo::getACustomerId, bo.getACustomerId())
.eq(StringUtils.isNotBlank(bo.getARepresent()), ErpContractInfo::getARepresent, bo.getARepresent())
.eq(bo.getADate() != null, ErpContractInfo::getADate, bo.getADate())
.eq(bo.getBCustomerId() != null, ErpContractInfo::getBCustomerId, bo.getBCustomerId())
.eq(StringUtils.isNotBlank(bo.getBRepresent()), ErpContractInfo::getBRepresent, bo.getBRepresent())
.eq(bo.getBDate() != null, ErpContractInfo::getBDate, bo.getBDate())
.eq(StringUtils.isNotBlank(bo.getContractStatus()), ErpContractInfo::getContractStatus, bo.getContractStatus())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpContractInfo::getFlowStatus, bo.getFlowStatus())
.eq(bo.getTemplateId() != null, ErpContractInfo::getTemplateId, bo.getTemplateId())
.eq(StringUtils.isNotBlank(bo.getOssId()), ErpContractInfo::getOssId, bo.getOssId())
.eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpContractInfo::getPaymentMethod, bo.getPaymentMethod())
.eq(bo.getSignatureAppendix() != null, ErpContractInfo::getSignatureAppendix, bo.getSignatureAppendix())
.eq(bo.getTaxRate() != null, ErpContractInfo::getTaxRate, bo.getTaxRate())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractInfo::getActiveFlag, bo.getActiveFlag());
return lqw;
}
@ -107,12 +114,18 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(ErpContractInfoBo bo) {
ErpContractInfo add = MapstructUtils.convert(bo, ErpContractInfo.class);
validEntityBeforeSave(add);
List<ErpContractMateriel> contractMaterielList = bo.getContractMaterielList();
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setContractId(add.getContractId());
for (ErpContractMateriel erpContractMateriel : contractMaterielList) {
erpContractMateriel.setContractId(add.getContractId());
contractMaterielMapper.insert(erpContractMateriel);
}
}
return flag;
}
@ -124,17 +137,38 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ErpContractInfoBo bo) {
ErpContractInfo update = MapstructUtils.convert(bo, ErpContractInfo.class);
validEntityBeforeSave(update);
List<ErpContractMateriel> contractMaterielList = bo.getContractMaterielList();
MPJLambdaWrapper<ErpContractMateriel> lqwRecord = JoinWrappers.lambda(ErpContractMateriel.class);
lqwRecord.eq(ErpContractMateriel::getContractId, bo.getContractId());
List<ErpContractMateriel> contractMaterielOldList = contractMaterielMapper.selectList(lqwRecord);
if (!contractMaterielList.isEmpty()) {
for (ErpContractMateriel contractMateriel : contractMaterielList) {
contractMaterielMapper.insertOrUpdate(contractMateriel);
}
Set<Long> existingContractMaterielIds = contractMaterielList.stream()
.map(ErpContractMateriel::getContractMaterielId)
.collect(Collectors.toSet());
List<ErpContractMateriel> filterContractMaterielIds = contractMaterielOldList.stream()
.filter(materiel -> !existingContractMaterielIds.contains(materiel.getContractMaterielId()))
.toList();
for (ErpContractMateriel filterContractMaterielId : filterContractMaterielIds) {
contractMaterielMapper.deleteById(filterContractMaterielId.getContractMaterielId());
}
}
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ErpContractInfo entity){
//TODO 做一些数据校验,如唯一约束
private void validEntityBeforeSave(ErpContractInfo entity) {
if (entity.getContractMaterielList() == null || entity.getContractMaterielList().isEmpty()) {
throw new ServiceException("请填写合同物料!");
}
}
/**
@ -146,7 +180,7 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;

@ -0,0 +1,144 @@
package org.dromara.oa.erp.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.oa.erp.domain.bo.ErpContractMaterialBo;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.oa.erp.mapper.ErpContractMaterialMapper;
import org.dromara.oa.erp.service.IErpContractMaterialService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class ErpContractMaterialServiceImpl implements IErpContractMaterialService {
private final ErpContractMaterialMapper baseMapper;
/**
*
*
* @param contractMaterialId
* @return
*/
@Override
public ErpContractMaterialVo queryById(Long contractMaterialId) {
return baseMapper.selectVoById(contractMaterialId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractMaterialVo> queryPageList(ErpContractMaterialBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractMaterial> lqw = buildQueryWrapper(bo);
Page<ErpContractMaterialVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ErpContractMaterialVo> queryList(ErpContractMaterialBo bo) {
MPJLambdaWrapper<ErpContractMaterial> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ErpContractMaterial> buildQueryWrapper(ErpContractMaterialBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ErpContractMaterial> lqw = JoinWrappers.lambda(ErpContractMaterial.class)
.selectAll(ErpContractMaterial.class)
.eq(StringUtils.isNotBlank(bo.getPlanFlag()), ErpContractMaterial::getPlanFlag, bo.getPlanFlag())
.eq(bo.getContractId() != null, ErpContractMaterial::getContractId, bo.getContractId())
.like(StringUtils.isNotBlank(bo.getProductName()), ErpContractMaterial::getProductName, bo.getProductName())
.eq(StringUtils.isNotBlank(bo.getSpecificationDescription()), ErpContractMaterial::getSpecificationDescription, bo.getSpecificationDescription())
.eq(bo.getMaterialId() != null, ErpContractMaterial::getMaterialId, bo.getMaterialId())
.eq(bo.getRelationMaterialId() != null, ErpContractMaterial::getRelationMaterialId, bo.getRelationMaterialId())
.eq(bo.getAmount() != null, ErpContractMaterial::getAmount, bo.getAmount())
.eq(bo.getUnitId() != null, ErpContractMaterial::getUnitId, bo.getUnitId())
.eq(bo.getBeforePrice() != null, ErpContractMaterial::getBeforePrice, bo.getBeforePrice())
.eq(bo.getTaxRate() != null, ErpContractMaterial::getTaxRate, bo.getTaxRate())
.eq(bo.getIncludingPrice() != null, ErpContractMaterial::getIncludingPrice, bo.getIncludingPrice())
.eq(bo.getSubtotal() != null, ErpContractMaterial::getSubtotal, bo.getSubtotal())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractMaterial::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ErpContractMaterial::getContractMaterialId);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ErpContractMaterialBo bo) {
ErpContractMaterial add = MapstructUtils.convert(bo, ErpContractMaterial.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setContractMaterialId(add.getContractMaterialId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ErpContractMaterialBo bo) {
ErpContractMaterial update = MapstructUtils.convert(bo, ErpContractMaterial.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ErpContractMaterial entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -1,143 +0,0 @@
package org.dromara.oa.erp.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.oa.erp.domain.bo.ErpContractMaterielBo;
import org.dromara.oa.erp.domain.vo.ErpContractMaterielVo;
import org.dromara.oa.erp.domain.ErpContractMateriel;
import org.dromara.oa.erp.mapper.ErpContractMaterielMapper;
import org.dromara.oa.erp.service.IErpContractMaterielService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-10-11
*/
@RequiredArgsConstructor
@Service
public class ErpContractMaterielServiceImpl implements IErpContractMaterielService {
private final ErpContractMaterielMapper baseMapper;
/**
*
*
* @param contractMaterielId
* @return
*/
@Override
public ErpContractMaterielVo queryById(Long contractMaterielId){
return baseMapper.selectVoById(contractMaterielId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractMaterielVo> queryPageList(ErpContractMaterielBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractMateriel> lqw = buildQueryWrapper(bo);
Page<ErpContractMaterielVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ErpContractMaterielVo> queryList(ErpContractMaterielBo bo) {
MPJLambdaWrapper<ErpContractMateriel> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ErpContractMateriel> buildQueryWrapper(ErpContractMaterielBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ErpContractMateriel> lqw = JoinWrappers.lambda(ErpContractMateriel.class)
.selectAll(ErpContractMateriel.class)
.eq(bo.getContractId() != null, ErpContractMateriel::getContractId, bo.getContractId())
.like(StringUtils.isNotBlank(bo.getProductName()), ErpContractMateriel::getProductName, bo.getProductName())
.eq(StringUtils.isNotBlank(bo.getSpecificationDescription()), ErpContractMateriel::getSpecificationDescription, bo.getSpecificationDescription())
.eq(bo.getMaterielId() != null, ErpContractMateriel::getMaterielId, bo.getMaterielId())
.eq(bo.getRelationMaterielId() != null, ErpContractMateriel::getRelationMaterielId, bo.getRelationMaterielId())
.eq(bo.getAmount() != null, ErpContractMateriel::getAmount, bo.getAmount())
.eq(bo.getUnitId() != null, ErpContractMateriel::getUnitId, bo.getUnitId())
.eq(bo.getBeforePrice() != null, ErpContractMateriel::getBeforePrice, bo.getBeforePrice())
.eq(bo.getTaxRate() != null, ErpContractMateriel::getTaxRate, bo.getTaxRate())
.eq(bo.getIncludingPrice() != null, ErpContractMateriel::getIncludingPrice, bo.getIncludingPrice())
.eq(bo.getSubtotal() != null, ErpContractMateriel::getSubtotal, bo.getSubtotal())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractMateriel::getActiveFlag, bo.getActiveFlag())
;
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ErpContractMaterielBo bo) {
ErpContractMateriel add = MapstructUtils.convert(bo, ErpContractMateriel.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setContractMaterielId(add.getContractMaterielId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ErpContractMaterielBo bo) {
ErpContractMateriel update = MapstructUtils.convert(bo, ErpContractMateriel.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ErpContractMateriel entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,14 @@
<?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="org.dromara.oa.erp.mapper.ErpContractMaterialMapper">
<resultMap type="org.dromara.oa.erp.domain.vo.ErpContractMaterialVo" id="ErpContractMaterialResult">
</resultMap>
<select id="selectCustomErpContractMaterialVoList" resultMap="ErpContractMaterialResult">
select contract_material_id, tenant_id, plan_flag, contract_id, product_name, specification_description, material_id, relation_material_id, amount, unit_id, before_price, tax_rate, including_price, subtotal, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_contract_material t
${ew.getCustomSqlSegment}
</select>
</mapper>

@ -1,14 +0,0 @@
<?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="org.dromara.oa.erp.mapper.ErpContractMaterielMapper">
<resultMap type="org.dromara.oa.erp.domain.vo.ErpContractMaterielVo" id="ErpContractMaterielResult">
</resultMap>
<select id="selectCustomErpContractMaterielVoList" resultMap="ErpContractMaterielResult">
select contract_materiel_id, tenant_id, contract_id, product_name, specification_description, materiel_id, relation_materiel_id, amount, unit_id, before_price, tax_rate, including_price, subtotal, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_contract_materiel t
${ew.getCustomSqlSegment}
</select>
</mapper>
Loading…
Cancel
Save