修复撤回流程,编辑流程
parent
2290d5f963
commit
3dbe861ecd
|
@ -528,12 +528,16 @@ public class ProcessController {
|
||||||
|
|
||||||
Integer contractId = contract.getId();
|
Integer contractId = contract.getId();
|
||||||
|
|
||||||
|
// 本次表单的数据为全量数据 需要删除
|
||||||
|
List<SupplierMaterial> supplierMaterialsToRemove = processService.getSupplierMaterials(processId);
|
||||||
if (!CollectionUtils.isEmpty(form.supplierMaterials)) {
|
if (!CollectionUtils.isEmpty(form.supplierMaterials)) {
|
||||||
for (SupplierMaterial material : form.supplierMaterials) {
|
for (SupplierMaterial material : form.supplierMaterials) {
|
||||||
material.setProcessId(processId);
|
material.setProcessId(processId);
|
||||||
material.setContractId(contractId);
|
material.setContractId(contractId);
|
||||||
// 更新或者新增
|
// 更新或者新增
|
||||||
if (material.getId() != null) {
|
if (material.getId() != null) {
|
||||||
|
// 更新了某个ID的数据就不删除了
|
||||||
|
supplierMaterialsToRemove.remove(material);
|
||||||
entityManager.merge(material);
|
entityManager.merge(material);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -542,16 +546,21 @@ public class ProcessController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (SupplierMaterial material : supplierMaterialsToRemove) {
|
||||||
|
entityManager.remove(material);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<BudgetPurchaseAmount> purchaseAmountToRemove = processService.getProcessPurchaseAmount(processId);
|
||||||
|
List<BudgetPurchaseDetail> purchaseDetailToRemove = processService.getProcessPurchaseDetail(processId);
|
||||||
|
|
||||||
if (!CollectionUtils.isEmpty(form.purchaseAmount)) {
|
if (!CollectionUtils.isEmpty(form.purchaseAmount)) {
|
||||||
for (BudgetPurchaseAmountModel amountForm : form.purchaseAmount) {
|
for (BudgetPurchaseAmountModel amountForm : form.purchaseAmount) {
|
||||||
// 草稿模式也不允许为空 (基础数据), 更新ID不能为空
|
// 草稿模式也不允许为空 (基础数据), 更新ID不能为空
|
||||||
Assert.notNull(amountForm.amount, "合同明细填写不完整");
|
Assert.notNull(amountForm.amount, "合同明细填写不完整");
|
||||||
Assert.notNull(amountForm.amountId, "合同明细填写不完整");
|
|
||||||
Assert.notNull(amountForm.budgetCostId, "合同明细填写不完整");
|
Assert.notNull(amountForm.budgetCostId, "合同明细填写不完整");
|
||||||
|
|
||||||
// 新建
|
// 新建
|
||||||
BudgetPurchaseAmount purchaseAmount = new BudgetPurchaseAmount();
|
BudgetPurchaseAmount purchaseAmount = new BudgetPurchaseAmount();
|
||||||
purchaseAmount.setId(amountForm.amountId);
|
|
||||||
purchaseAmount.setProcessId(processId);
|
purchaseAmount.setProcessId(processId);
|
||||||
purchaseAmount.setContractId(contractId);
|
purchaseAmount.setContractId(contractId);
|
||||||
purchaseAmount.setAmount(amountForm.amount);
|
purchaseAmount.setAmount(amountForm.amount);
|
||||||
|
@ -565,7 +574,15 @@ public class ProcessController {
|
||||||
purchaseAmount.setSubmit(true);
|
purchaseAmount.setSubmit(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
entityManager.merge(purchaseAmount);
|
if (amountForm.amountId != null) {
|
||||||
|
// 更新了某个ID的数据就不删除了
|
||||||
|
purchaseAmount.setId(amountForm.amountId);
|
||||||
|
purchaseAmountToRemove.remove(purchaseAmount);
|
||||||
|
entityManager.merge(purchaseAmount);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
entityManager.persist(purchaseAmount);
|
||||||
|
}
|
||||||
|
|
||||||
Integer amountId = purchaseAmount.getId(); // ID 自动生成或者使用之前已经有的
|
Integer amountId = purchaseAmount.getId(); // ID 自动生成或者使用之前已经有的
|
||||||
// 保存成本对应的 明细
|
// 保存成本对应的 明细
|
||||||
|
@ -573,19 +590,35 @@ public class ProcessController {
|
||||||
for (BudgetPurchaseDetailModel detail : amountForm.details) {
|
for (BudgetPurchaseDetailModel detail : amountForm.details) {
|
||||||
BudgetPurchaseDetail purchaseDetail = new BudgetPurchaseDetail();
|
BudgetPurchaseDetail purchaseDetail = new BudgetPurchaseDetail();
|
||||||
// 关联主键
|
// 关联主键
|
||||||
purchaseDetail.setId(detail.id);
|
|
||||||
purchaseDetail.setAmountId(amountId);
|
purchaseDetail.setAmountId(amountId);
|
||||||
purchaseDetail.setProcessId(processId);
|
purchaseDetail.setProcessId(processId);
|
||||||
purchaseDetail.setContractId(contractId);
|
purchaseDetail.setContractId(contractId);
|
||||||
purchaseDetail.setBudgetCostId(amountForm.budgetCostId);
|
purchaseDetail.setBudgetCostId(amountForm.budgetCostId);
|
||||||
|
|
||||||
BeanUtils.copyProperties(detail, purchaseDetail, "details");
|
BeanUtils.copyProperties(detail, purchaseDetail, "details");
|
||||||
entityManager.merge(purchaseDetail);
|
|
||||||
|
if (detail.id != null) {
|
||||||
|
// 更新了某个ID的数据就不删除了
|
||||||
|
purchaseDetail.setId(detail.id);
|
||||||
|
purchaseDetailToRemove.remove(purchaseDetail);
|
||||||
|
entityManager.merge(purchaseDetail);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
entityManager.persist(purchaseDetail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
for (BudgetPurchaseAmount amount : purchaseAmountToRemove) {
|
||||||
|
entityManager.remove(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (BudgetPurchaseDetail detail : purchaseDetailToRemove) {
|
||||||
|
entityManager.remove(detail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (form.getStatus() == ProcessStatus.to_be_audit) {
|
if (form.getStatus() == ProcessStatus.to_be_audit) {
|
||||||
|
@ -697,8 +730,7 @@ public class ProcessController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isStartAuditProgress(ProjectTaskRecord record) {
|
private boolean isStartAuditProgress(ProjectTaskRecord record) {
|
||||||
return Objects.equals("提交申请", record.getTaskName())
|
return Objects.equals("提交申请", record.getTaskName());
|
||||||
&& Objects.equals("提交销售合同流程", record.getTaskComment());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProjectProcess obtainProjectProcess(int id) {
|
private ProjectProcess obtainProjectProcess(int id) {
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package cn.palmte.work.model.process;
|
package cn.palmte.work.model.process;
|
||||||
|
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
import org.hibernate.annotations.GenericGenerator;
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
|
@ -12,7 +14,10 @@ import javax.persistence.Id;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
import javax.persistence.Transient;
|
import javax.persistence.Transient;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购合同流程预算采购明细的数量记录
|
* 采购合同流程预算采购明细的数量记录
|
||||||
|
@ -25,7 +30,10 @@ import lombok.Data;
|
||||||
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
||||||
* @since 2.0 2022/12/28 14:15
|
* @since 2.0 2022/12/28 14:15
|
||||||
*/
|
*/
|
||||||
@Data
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "procurement_contract_budget_purchase_amount")
|
@Table(name = "procurement_contract_budget_purchase_amount")
|
||||||
public class BudgetPurchaseAmount implements Serializable {
|
public class BudgetPurchaseAmount implements Serializable {
|
||||||
|
@ -60,4 +68,19 @@ public class BudgetPurchaseAmount implements Serializable {
|
||||||
return submit != null && submit;
|
return submit != null && submit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o))
|
||||||
|
return false;
|
||||||
|
BudgetPurchaseAmount that = (BudgetPurchaseAmount) o;
|
||||||
|
return id != null && Objects.equals(id, that.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return getClass().hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package cn.palmte.work.model.process;
|
package cn.palmte.work.model.process;
|
||||||
|
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
import org.hibernate.annotations.GenericGenerator;
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
|
@ -12,6 +14,10 @@ import javax.persistence.Id;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购合同流程预算采购明细的详情
|
* 采购合同流程预算采购明细的详情
|
||||||
|
@ -21,7 +27,10 @@ import lombok.Data;
|
||||||
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
||||||
* @since 2.0 2022/12/28 11:41
|
* @since 2.0 2022/12/28 11:41
|
||||||
*/
|
*/
|
||||||
@Data
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@ToString
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "procurement_contract_budget_purchase_detail")
|
@Table(name = "procurement_contract_budget_purchase_detail")
|
||||||
public class BudgetPurchaseDetail implements Serializable {
|
public class BudgetPurchaseDetail implements Serializable {
|
||||||
|
@ -62,4 +71,19 @@ public class BudgetPurchaseDetail implements Serializable {
|
||||||
// 项目的成本明细ID
|
// 项目的成本明细ID
|
||||||
private Integer budgetCostId;
|
private Integer budgetCostId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o))
|
||||||
|
return false;
|
||||||
|
BudgetPurchaseDetail that = (BudgetPurchaseDetail) o;
|
||||||
|
return id != null && Objects.equals(id, that.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return getClass().hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,7 +378,7 @@ public class ProjectProcessService {
|
||||||
return amountQuery.getResultList();
|
return amountQuery.getResultList();
|
||||||
}
|
}
|
||||||
catch (NoResultException e) {
|
catch (NoResultException e) {
|
||||||
return null;
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,6 +402,18 @@ public class ProjectProcessService {
|
||||||
return amountQuery.getResultList();
|
return amountQuery.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<BudgetPurchaseDetail> getProcessPurchaseDetail(Integer processId) {
|
||||||
|
TypedQuery<BudgetPurchaseDetail> amountQuery = entityManager.createQuery(
|
||||||
|
"from BudgetPurchaseDetail where processId=:processId", BudgetPurchaseDetail.class);
|
||||||
|
amountQuery.setParameter("processId", processId);
|
||||||
|
try {
|
||||||
|
return amountQuery.getResultList();
|
||||||
|
}
|
||||||
|
catch (NoResultException e) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算当前已经提交的采购数量
|
* 计算当前已经提交的采购数量
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue