1.0.36 采购信息关联采购物料,根据项目ID查询预算、合同物料

dev
yinq 1 month ago
parent 0e5f92055f
commit d94edd6914

@ -18,6 +18,7 @@ import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo; import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo; import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.oa.erp.service.IErpProjectPurchaseService; import org.dromara.oa.erp.service.IErpProjectPurchaseService;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -124,4 +125,18 @@ public class ErpProjectPurchaseController extends BaseController {
return R.ok(list); return R.ok(list);
} }
/**
* ID
* 10
*/
@SaCheckPermission("oa/erp:projectPurchase:query")
@GetMapping("/getContractMaterialsByProjectId/{projectId}/{spareFlag}")
public R<List<ErpProjectPurchaseMaterialVo>> getContractMaterialsByProjectId(@NotNull(message = "项目ID不能为空")
@PathVariable("projectId") Long projectId,
@NotBlank(message = "备件标识不能为空")
@PathVariable("spareFlag") String spareFlag) {
List<ErpProjectPurchaseMaterialVo> materials = erpProjectPurchaseService.getProjectMaterialsByProjectId(projectId, spareFlag);
return R.ok(materials);
}
} }

@ -24,7 +24,7 @@ public class ErpProjectPurchase extends TenantEntity {
/** /**
* ID * ID
*/ */
@TableId(value = "project_purchase_id", type = IdType.AUTO) @TableId(value = "project_purchase_id", type = IdType.ASSIGN_ID)
private Long projectPurchaseId; private Long projectPurchaseId;
/** /**
@ -37,6 +37,11 @@ public class ErpProjectPurchase extends TenantEntity {
*/ */
private String projectCode; private String projectCode;
/**
*
*/
private String purchaseCode;
/** /**
* *
*/ */

@ -27,7 +27,7 @@ public class ErpProjectPurchaseMaterial extends TenantEntity {
/** /**
* ID * ID
*/ */
@TableId(value = "purchase_material_id", type = IdType.AUTO) @TableId(value = "purchase_material_id", type = IdType.ASSIGN_ID)
private Long purchaseMaterialId; private Long purchaseMaterialId;
/** /**

@ -9,7 +9,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt;
import org.dromara.oa.erp.domain.ErpProjectPurchaseMaterial;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -39,6 +41,11 @@ public class ErpProjectPurchaseBo extends BaseEntity {
@NotBlank(message = "项目号不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "项目号不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectCode; private String projectCode;
/**
*
*/
private String purchaseCode;
/** /**
* *
*/ */
@ -126,5 +133,9 @@ public class ErpProjectPurchaseBo extends BaseEntity {
*/ */
private RemoteFlowInstanceBizExt bizExt; private RemoteFlowInstanceBizExt bizExt;
/**
*
*/
private List<ErpProjectPurchaseMaterial> purchaseMaterialList;
} }

@ -143,5 +143,19 @@ public class ErpProjectPurchaseMaterialVo implements Serializable {
@ExcelDictFormat(dictType = "active_flag") @ExcelDictFormat(dictType = "active_flag")
private String activeFlag; private String activeFlag;
/**
*
*/
private String relationMaterialCode;
/**
*
*/
private String relationMaterialName;
/**
*
*/
private String purchaseMaterialName;
} }

@ -46,30 +46,66 @@ public class ErpProjectPurchaseVo implements Serializable {
@ExcelProperty(value = "项目号") @ExcelProperty(value = "项目号")
private String projectCode; private String projectCode;
/**
*
*/
@ExcelProperty(value = "采购编号")
private String purchaseCode;
/**
*
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/** /**
* *
*/ */
@ExcelProperty(value = "项目经理") @ExcelProperty(value = "项目经理")
private Long managerId; private Long managerId;
/**
*
*/
@ExcelProperty(value = "项目经理名称")
private String managerName;
/** /**
* *
*/ */
@ExcelProperty(value = "部门负责人") @ExcelProperty(value = "部门负责人")
private Long chargeId; private Long chargeId;
/**
*
*/
@ExcelProperty(value = "部门负责人名称")
private String chargeName;
/** /**
* *
*/ */
@ExcelProperty(value = "分管副总") @ExcelProperty(value = "分管副总")
private Long deputyId; private Long deputyId;
/**
*
*/
@ExcelProperty(value = "分管副总名称")
private String deputyName;
/** /**
* *
*/ */
@ExcelProperty(value = "提报人") @ExcelProperty(value = "提报人")
private Long reporterId; private Long reporterId;
/**
*
*/
@ExcelProperty(value = "提报人名称")
private String reporterName;
/** /**
* *
*/ */

@ -5,6 +5,8 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.oa.erp.domain.ErpProjectPurchase; import org.dromara.oa.erp.domain.ErpProjectPurchase;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo; import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -24,6 +26,10 @@ public interface ErpProjectPurchaseMapper extends BaseMapperPlus<ErpProjectPurch
* @param queryWrapper * @param queryWrapper
* @return * @return
*/ */
@DataPermission({
@DataColumn(key = "deptName", value = "t.create_dept"),
@DataColumn(key = "userName", value = "t.create_by")
})
public Page<ErpProjectPurchaseVo> selectCustomErpProjectPurchaseVoList(@Param("page") Page<ErpProjectPurchaseVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchase> queryWrapper); public Page<ErpProjectPurchaseVo> selectCustomErpProjectPurchaseVoList(@Param("page") Page<ErpProjectPurchaseVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchase> queryWrapper);
/** /**
@ -32,6 +38,10 @@ public interface ErpProjectPurchaseMapper extends BaseMapperPlus<ErpProjectPurch
* @param queryWrapper * @param queryWrapper
* @return * @return
*/ */
@DataPermission({
@DataColumn(key = "deptName", value = "t.create_dept"),
@DataColumn(key = "userName", value = "t.create_by")
})
public List<ErpProjectPurchaseVo> selectCustomErpProjectPurchaseVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchase> queryWrapper); public List<ErpProjectPurchaseVo> selectCustomErpProjectPurchaseVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchase> queryWrapper);
} }

@ -34,4 +34,20 @@ public interface ErpProjectPurchaseMaterialMapper extends BaseMapperPlus<ErpProj
*/ */
public List<ErpProjectPurchaseMaterialVo> selectCustomErpProjectPurchaseMaterialVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchaseMaterial> queryWrapper); public List<ErpProjectPurchaseMaterialVo> selectCustomErpProjectPurchaseMaterialVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpProjectPurchaseMaterial> queryWrapper);
/**
* ID
*
* @param projectId ID
* @return
*/
List<ErpProjectPurchaseMaterialVo> selectBudgetMaterialsByProjectId(@Param("projectId") Long projectId, @Param("spareFlag") String spareFlag);
/**
* ID
*
* @param projectId ID
* @return
*/
List<ErpProjectPurchaseMaterialVo> selectContractMaterialsByProjectId(@Param("projectId") Long projectId, @Param("spareFlag") String spareFlag);
} }

@ -2,6 +2,7 @@ package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.ErpProjectPurchase; import org.dromara.oa.erp.domain.ErpProjectPurchase;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo; import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo; import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
@ -74,4 +75,9 @@ public interface IErpProjectPurchaseService {
* @return * @return
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* ID
*/
List<ErpProjectPurchaseMaterialVo> getProjectMaterialsByProjectId(Long projectId, String spareFlag);
} }

@ -53,7 +53,7 @@ public class ErpProjectPurchaseMaterialServiceImpl implements IErpProjectPurchas
@Override @Override
public TableDataInfo<ErpProjectPurchaseMaterialVo> queryPageList(ErpProjectPurchaseMaterialBo bo, PageQuery pageQuery) { public TableDataInfo<ErpProjectPurchaseMaterialVo> queryPageList(ErpProjectPurchaseMaterialBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpProjectPurchaseMaterial> lqw = buildQueryWrapper(bo); MPJLambdaWrapper<ErpProjectPurchaseMaterial> lqw = buildQueryWrapper(bo);
Page<ErpProjectPurchaseMaterialVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<ErpProjectPurchaseMaterialVo> result = baseMapper.selectCustomErpProjectPurchaseMaterialVoList(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -66,7 +66,7 @@ public class ErpProjectPurchaseMaterialServiceImpl implements IErpProjectPurchas
@Override @Override
public List<ErpProjectPurchaseMaterialVo> queryList(ErpProjectPurchaseMaterialBo bo) { public List<ErpProjectPurchaseMaterialVo> queryList(ErpProjectPurchaseMaterialBo bo) {
MPJLambdaWrapper<ErpProjectPurchaseMaterial> lqw = buildQueryWrapper(bo); MPJLambdaWrapper<ErpProjectPurchaseMaterial> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); return baseMapper.selectCustomErpProjectPurchaseMaterialVoList(lqw);
} }
private MPJLambdaWrapper<ErpProjectPurchaseMaterial> buildQueryWrapper(ErpProjectPurchaseMaterialBo bo) { private MPJLambdaWrapper<ErpProjectPurchaseMaterial> buildQueryWrapper(ErpProjectPurchaseMaterialBo bo) {

@ -17,22 +17,24 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.oa.erp.domain.ErpProjectPurchase; import org.dromara.oa.erp.domain.ErpProjectPurchase;
import org.dromara.oa.erp.domain.ErpProjectPurchaseMaterial;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo; import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo; import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.mapper.ErpProjectPurchaseMapper; import org.dromara.oa.erp.mapper.ErpProjectPurchaseMapper;
import org.dromara.oa.erp.mapper.ErpProjectPurchaseMaterialMapper;
import org.dromara.oa.erp.service.IErpProjectPurchaseService; import org.dromara.oa.erp.service.IErpProjectPurchaseService;
import org.dromara.system.api.RemoteCodeRuleService;
import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.RemoteWorkflowService;
import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt;
import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessEvent;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection; import java.util.*;
import java.util.HashMap; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
* Service * Service
@ -47,9 +49,14 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
private final ErpProjectPurchaseMapper baseMapper; private final ErpProjectPurchaseMapper baseMapper;
private final ErpProjectPurchaseMaterialMapper purchaseMaterialMapper;
@DubboReference(timeout = 30000) @DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService; private RemoteWorkflowService remoteWorkflowService;
@DubboReference()
private RemoteCodeRuleService remoteCodeRuleService;
/** /**
* *
* *
@ -117,12 +124,24 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(ErpProjectPurchaseBo bo) { public Boolean insertByBo(ErpProjectPurchaseBo bo) {
ErpProjectPurchase add = MapstructUtils.convert(bo, ErpProjectPurchase.class); ErpProjectPurchase add = MapstructUtils.convert(bo, ErpProjectPurchase.class);
assert add != null;
validEntityBeforeSave(add); validEntityBeforeSave(add);
String purchaseCode = remoteCodeRuleService.selectCodeRuleCode("1007");
add.setPurchaseCode(purchaseCode);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setProjectPurchaseId(add.getProjectPurchaseId()); bo.setProjectPurchaseId(add.getProjectPurchaseId());
// 保存物料列表
List<ErpProjectPurchaseMaterial> purchaseMaterialList = bo.getPurchaseMaterialList();
if (purchaseMaterialList != null && !purchaseMaterialList.isEmpty()) {
for (ErpProjectPurchaseMaterial material : purchaseMaterialList) {
material.setProjectPurchaseId(add.getProjectPurchaseId());
purchaseMaterialMapper.insert(material);
}
}
} }
return flag; return flag;
} }
@ -181,10 +200,39 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ErpProjectPurchaseBo bo) { public Boolean updateByBo(ErpProjectPurchaseBo bo) {
ErpProjectPurchase update = MapstructUtils.convert(bo, ErpProjectPurchase.class); ErpProjectPurchase update = MapstructUtils.convert(bo, ErpProjectPurchase.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0; boolean flag = baseMapper.updateById(update) > 0;
if (flag) {
List<ErpProjectPurchaseMaterial> purchaseMaterialList = bo.getPurchaseMaterialList();
MPJLambdaWrapper<ErpProjectPurchaseMaterial> lqwRecord = JoinWrappers.lambda(ErpProjectPurchaseMaterial.class);
lqwRecord.eq(ErpProjectPurchaseMaterial::getProjectPurchaseId, bo.getProjectPurchaseId());
List<ErpProjectPurchaseMaterial> oldMaterialList = purchaseMaterialMapper.selectList(lqwRecord);
if (purchaseMaterialList != null && !purchaseMaterialList.isEmpty()) {
for (ErpProjectPurchaseMaterial material : purchaseMaterialList) {
material.setProjectPurchaseId(bo.getProjectPurchaseId());
purchaseMaterialMapper.insertOrUpdate(material);
}
Set<Long> existingMaterialIds = purchaseMaterialList.stream()
.map(ErpProjectPurchaseMaterial::getPurchaseMaterialId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
List<ErpProjectPurchaseMaterial> toDeleteList = oldMaterialList.stream()
.filter(material -> !existingMaterialIds.contains(material.getPurchaseMaterialId()))
.toList();
for (ErpProjectPurchaseMaterial toDelete : toDeleteList) {
purchaseMaterialMapper.deleteById(toDelete.getPurchaseMaterialId());
}
} else {
// 如果新列表为空,删除所有旧物料
for (ErpProjectPurchaseMaterial oldMaterial : oldMaterialList) {
purchaseMaterialMapper.deleteById(oldMaterial.getPurchaseMaterialId());
}
}
}
return flag;
} }
/** /**
@ -209,6 +257,29 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
/**
* ID
*
* @param projectId ID
* @param spareFlag 1-0-
* @return
*/
@Override
public List<ErpProjectPurchaseMaterialVo> getProjectMaterialsByProjectId(Long projectId, String spareFlag) {
if (projectId == null) {
return Collections.emptyList();
}
List<ErpProjectPurchaseMaterialVo> list = new ArrayList<>();
if ("0".equals(spareFlag)) {
// 非备件-预算物料
list = purchaseMaterialMapper.selectBudgetMaterialsByProjectId(projectId, spareFlag);
} else if ("1".equals(spareFlag)) {
// 备件-合同物料
list = purchaseMaterialMapper.selectContractMaterialsByProjectId(projectId, spareFlag);
}
return list;
}
/** /**
* *
* *
@ -225,10 +296,10 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) {
purchase.setProjectPurchaseStatus(OAStatusEnum.COMPLETED.getStatus()); purchase.setProjectPurchaseStatus(OAStatusEnum.COMPLETED.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) {
purchase.setProjectPurchaseStatus(OAStatusEnum.INVALID.getStatus()); purchase.setProjectPurchaseStatus(OAStatusEnum.INVALID.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) {
purchase.setProjectPurchaseStatus(OAStatusEnum.DRAFT.getStatus()); purchase.setProjectPurchaseStatus(OAStatusEnum.DRAFT.getStatus());
} }
baseMapper.updateById(purchase); baseMapper.updateById(purchase);

@ -7,32 +7,43 @@
</resultMap> </resultMap>
<select id="selectCustomErpProjectPurchaseVoList" resultMap="ErpProjectPurchaseResult"> <select id="selectCustomErpProjectPurchaseVoList" resultMap="ErpProjectPurchaseResult">
select project_purchase_id, select t.project_purchase_id,
tenant_id, t.tenant_id,
project_id, t.project_id,
project_code, t.project_code,
manager_id, t.purchase_code,
charge_id, t.manager_id,
deputy_id, t.charge_id,
version, t.deputy_id,
reporter_id, t.version,
consignee_user, t.reporter_id,
consignee_address, t.consignee_user,
consignee_contact, t.consignee_address,
project_purchase_status, t.consignee_contact,
flow_status, t.project_purchase_status,
sort_order, t.flow_status,
relation_id, t.sort_order,
remark, t.relation_id,
spare_flag, t.remark,
active_flag, t.spare_flag,
del_flag, t.active_flag,
create_dept, t.del_flag,
create_by, t.create_dept,
create_time, t.create_by,
update_by, t.create_time,
update_time t.update_by,
t.update_time,
p.project_name,
u1.nick_name as managerName,
u2.nick_name as chargeName,
u3.nick_name as deputyName,
u4.nick_name as reporterName
from erp_project_purchase t from erp_project_purchase t
left join erp_project_info p on t.project_id = p.project_id
left join sys_user u1 on t.manager_id = u1.user_id
left join sys_user u2 on t.charge_id = u2.user_id
left join sys_user u3 on t.deputy_id = u3.user_id
left join sys_user u4 on t.reporter_id = u4.user_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>

@ -1,14 +1,102 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.oa.erp.mapper.ErpProjectPurchaseMaterialMapper"> <mapper namespace="org.dromara.oa.erp.mapper.ErpProjectPurchaseMaterialMapper">
<resultMap type="org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo" id="ErpProjectPurchaseMaterialResult"> <resultMap type="org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo" id="ErpProjectPurchaseMaterialResult">
</resultMap> </resultMap>
<select id="selectCustomErpProjectPurchaseMaterialVoList" resultMap="ErpProjectPurchaseMaterialResult"> <select id="selectCustomErpProjectPurchaseMaterialVoList" resultMap="ErpProjectPurchaseMaterialResult">
select purchase_material_id, tenant_id, project_purchase_id, relation_details_id, spare_flag, purchase_plan_flag, material_flag, material_id, relation_material_id, material_code, material_name, specification_description, unit_id, need_purchase_amount, purchase_amount, arrival_time, serial_number, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_project_purchase_material t select t.purchase_material_id,
t.tenant_id,
t.project_purchase_id,
t.relation_details_id,
t.spare_flag,
t.purchase_plan_flag,
t.material_flag,
t.material_id,
t.relation_material_id,
t.material_code,
t.material_name,
t.specification_description,
t.unit_id,
t.need_purchase_amount,
t.purchase_amount,
t.arrival_time,
t.serial_number,
t.remark,
t.active_flag,
t.del_flag,
t.create_dept,
t.create_by,
t.create_time,
t.update_by,
t.update_time,
COALESCE(bmc.material_code, cm_m.material_code) as relation_material_code,
COALESCE(bmc.material_name, cm.product_name) as relation_material_name,
u.unit_name
from erp_project_purchase_material t
left join erp_budget_material_cost bmc on bmc.material_cost_id = t.relation_details_id and t.spare_flag = '0'
left join erp_contract_material cm on cm.contract_material_id = t.relation_details_id and t.spare_flag = '1'
left join base_material_info m on m.material_id = t.material_id
left join base_material_info cm_m on cm_m.material_id = cm.material_id
left join base_relation_material r on r.relation_material_id = t.relation_material_id
left join base_unit_info u on u.unit_id = t.unit_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectContractMaterialsByProjectId"
resultType="org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo">
select t.contract_material_id as relation_details_id,
1 as spare_flag,
null as purchase_plan_flag,
t.material_flag,
t.material_id,
t.relation_material_id,
m.material_code as material_code,
COALESCE(m.material_name, t.product_name) as material_name,
t.specification_description,
t.unit_id,
u.unit_name,
t.amount as need_purchase_amount,
t.amount as purchase_amount,
m.material_code as relation_material_code,
COALESCE(m.material_name, t.product_name) as relation_material_name
from erp_contract_material t
left join erp_project_contracts pc on pc.contract_id = t.contract_id and pc.del_flag = '0'
left join base_material_info m on m.material_id = t.material_id
left join base_unit_info u on u.unit_id = t.unit_id
where t.del_flag = '0'
and pc.project_id = #{projectId}
</select>
<select id="selectBudgetMaterialsByProjectId"
resultType="org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo">
select null as purchase_material_id,
null as project_purchase_id,
t.material_cost_id as relation_details_id,
#{spareFlag} as spare_flag,
null as purchase_plan_flag,
null as material_flag,
t.materiel_id as material_id,
t.relation_materiel_id as relation_material_id,
t.materiel_code as material_code,
t.materiel_name as material_name,
t.materiel_code as specification_description,
t.unit_id,
t.amount as need_purchase_amount,
t.amount as purchase_amount,
null as arrival_time,
null as serial_number,
t.remark,
null as active_flag,
t.materiel_code as relation_material_code,
t.materiel_name as relation_material_name,
t.materiel_name as purchase_material_name
from erp_budget_material_cost t
where t.del_flag = '0'
and t.project_id = #{projectId}
order by t.material_cost_id asc
</select>
</mapper> </mapper>

Loading…
Cancel
Save