Commit d41c9dcc by 王衍超

Merge branch 'develop' of gitlab.beecode.cn:kunlun/xyst_dinas/xyst_dinas_backend into develop

parents 1626c473 2d9b83c2
......@@ -8,6 +8,8 @@ import com.beecode.bcp.type.KObject;
public interface NeedPlanDao {
KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId);
List<KObject> queryNeedPlanByContractId(UUID contractId);
List<UUID> queryNeedPlanContratByCycleId(UUID planningCycleId);
......
package com.xyst.dinas.sales.entity;
import java.math.BigDecimal;
import java.util.UUID;
public class ContractExecuteDetail {
private UUID dinasTypeId;
private String dinasTypeName;
private BigDecimal contractAmount;
private BigDecimal needPlanAmount;
private BigDecimal saleAmount;
private BigDecimal surplusAmount;
public ContractExecuteDetail(UUID dinasTypeId, String dinasTypeName) {
this.dinasTypeId = dinasTypeId;
this.dinasTypeName = dinasTypeName;
}
public UUID getDinasTypeId() {
return dinasTypeId;
}
public void setDinasTypeId(UUID dinasTypeId) {
this.dinasTypeId = dinasTypeId;
}
public String getDinasTypeName() {
return dinasTypeName;
}
public void setDinasTypeName(String dinasTypeName) {
this.dinasTypeName = dinasTypeName;
}
public BigDecimal getContractAmount() {
return contractAmount;
}
public void setContractAmount(BigDecimal contractAmount) {
this.contractAmount = contractAmount;
}
public BigDecimal getNeedPlanAmount() {
return needPlanAmount;
}
public void setNeedPlanAmount(BigDecimal needPlanAmount) {
this.needPlanAmount = needPlanAmount;
}
public BigDecimal getSaleAmount() {
return saleAmount;
}
public void setSaleAmount(BigDecimal saleAmount) {
this.saleAmount = saleAmount;
}
public BigDecimal getSurplusAmount() {
return surplusAmount;
}
public void setSurplusAmount(BigDecimal surplusAmount) {
this.surplusAmount = surplusAmount;
}
}
......@@ -3,7 +3,6 @@ package com.xyst.dinas.sales.internal.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.persistence.Tuple;
......@@ -28,7 +27,6 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
@Override
public KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId) {
return (KObject)template.execute(new HibernateCallback<KObject>() {
@SuppressWarnings("unchecked")
@Override
public KObject doInHibernate(Session session) throws HibernateException {
Query<KObject> query = session.createQuery("from " + NEED_PLAN_NTITY + " where planningCycle.id=:planningCycleId and contract.id=:contractId and submitState=:submitState", KObject.class);
......@@ -41,6 +39,21 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
}
});
}
@Override
public List<KObject> queryNeedPlanByContractId(UUID contractId) {
return (List<KObject>)template.execute(new HibernateCallback<List<KObject>>() {
@Override
public List<KObject> doInHibernate(Session session) throws HibernateException {
Query<KObject> query = session.createQuery("from " + NEED_PLAN_NTITY + " where contract.id=:contractId and submitState=:submitState", KObject.class);
query.setParameter("contractId", contractId);
query.setParameter("submitState", "SUBMITTED");
List<KObject> resultList = query.getResultList();
if(resultList.isEmpty()) return null;
return resultList;
}
});
}
@Override
public List<UUID> queryNeedPlanContratByCycleId(UUID planningCycleId) {
......
package com.xyst.dinas.sales.internal.service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Stream;
import org.springframework.beans.factory.annotation.Autowired;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.contract.service.ContractService;
import com.xyst.dinas.sales.dao.NeedPlanDao;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
import com.xyst.dinas.sales.service.NeedPlanService;
......@@ -18,6 +20,9 @@ public class NeedPlanServiceImpl implements NeedPlanService {
@Autowired
private NeedPlanDao needPlanDao;
@Autowired
private ContractService contractService;
@Override
public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) {
......@@ -39,4 +44,47 @@ public class NeedPlanServiceImpl implements NeedPlanService {
return list;
}
@Override
public List<ContractExecuteDetail> queryContractExecuteDetailByContractId(UUID contractId) {
List<ContractExecuteDetail> result = new ArrayList<ContractExecuteDetail>();
KObject contract = contractService.queryContract(contractId);
KObject[] contractDetails = contract.get("contractDetails").toArray();
//计算该合同的所有已提交的需用计划中各种砂石类型的需用总量
List<KObject> needPlanList = needPlanDao.queryNeedPlanByContractId(contractId);
Map<UUID, BigDecimal> map = new HashMap<UUID, BigDecimal>();
if(needPlanList != null) {
for(int i = 0; i < needPlanList.size(); i++) {
KObject needPlan = needPlanList.get(i);
KObject[] needPlanDetails = needPlan.get("NeedPlanDetails").toArray();
for(int j = 0; j < needPlanDetails.length; j++) {
KObject needPlanDetail = needPlanDetails[j];
UUID key = needPlanDetail.get("dinasType").getUuid("id");
BigDecimal amount = needPlanDetail.getBigDecimal("needPlanAmount");
if(map.containsKey(key)) {
BigDecimal oldAmount = map.get(key);
map.put(key, oldAmount.add(amount));
} else {
map.put(key, amount);
}
}
}
}
for(int i = 0; i < contractDetails.length; i++) {
KObject contractDetail = contractDetails[i];
UUID dinasTypeId = contractDetail.get("dinasType").getUuid("id");
String dinasTypeName = contractDetail.get("dinasType").getString("dinasTypeName");
ContractExecuteDetail item = new ContractExecuteDetail(dinasTypeId, dinasTypeName);
item.setContractAmount(contractDetail.getBigDecimal("purchaseAmount"));
if(map.containsKey(dinasTypeId)) {
item.setNeedPlanAmount(map.get(dinasTypeId));
} else {
item.setNeedPlanAmount(new BigDecimal(0));
}
item.setSaleAmount(contractDetail.getBigDecimal("purchaseAmount").subtract(contractDetail.getBigDecimal("dinasAmount")));
item.setSurplusAmount(contractDetail.getBigDecimal("dinasAmount"));
result.add(item);
}
return result;
}
}
......@@ -4,6 +4,7 @@ import java.util.List;
import java.util.UUID;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
public interface NeedPlanService {
......@@ -11,5 +12,7 @@ public interface NeedPlanService {
KObject queryNeedPlanAmountByDinasType(UUID planningCycleId, UUID contractId, UUID DinasTypeId);
List<UUID> queryNeedPlanContratByCycleId(UUID fromString);
List<ContractExecuteDetail> queryContractExecuteDetailByContractId(UUID contractId);
}
package com.xyst.dinas.sales.web;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
import com.xyst.dinas.sales.service.NeedPlanService;
@RestController
......@@ -38,5 +37,12 @@ public class NeedPlanController {
List<UUID> list = needPlanService.queryNeedPlanContratByCycleId(UUID.fromString(planningCycleId));
return ResponseObj.success("success", list);
}
@ResponseBody
@RequestMapping(value = "/project/queryContractExecuteDetailByContractId", method = RequestMethod.GET)
public Object queryContractExecuteDetailByContractId(@RequestParam("contractId") String contractId) {
List<ContractExecuteDetail> list = needPlanService.queryContractExecuteDetailByContractId(UUID.fromString(contractId));
return ResponseObj.success("success", list);
}
}
......@@ -13,6 +13,8 @@
<sql>
SELECT
organization.id AS id,
contract.id AS contractId,
contract.contractName AS contractName,
organization.name AS orgName,
company.name AS companyName,
project.projectName AS projectName,
......@@ -20,7 +22,7 @@
contract.deposit AS contractDeposit,
contract.advanceBalance AS contractAdvanceBalance,
contract.dinasAmount AS dinasAmount,
SUM(need_plan.needPlanTotalAmount) AS needPlanTotalAmount,
need_plan.needPlanTotalAmount AS needPlanTotalAmount,
contract.saleDinasAmount AS saleDinasAmount,
contract.dinasAmount - contract.saleDinasAmount AS surplusAmount,
round(contract.saleDinasAmount / contract.dinasAmount * 100, 2) AS finishPercent
......@@ -30,7 +32,7 @@
LEFT JOIN Contract AS contract ON contract.purchaseSandUnit = company.id
LEFT JOIN ProjectFiled AS project ON project.id = contract.project
LEFT JOIN ProjectType AS project_type ON project_type.id = project.projectType
LEFT JOIN NeedPlan AS need_plan ON need_plan.contract = contract.id
LEFT JOIN (SELECT contract AS contractId, sum(needPlanTotalAmount) AS needPlanTotalAmount FROM NeedPlan) AS need_plan ON need_plan.contractId = contract.id
WHERE organization.id = :?regionalCompanyId and company.name like :?companyName and project.projectName like :?projectName and project_type.id = :?projectTypeId
</sql>
</template>
......
......@@ -44,14 +44,6 @@
"action": "query_export",
"title": "导出",
"type": ""
},
{
"name": "queryRefresh",
"title": "刷新",
"action": "queryRefresh",
"param": [],
"type": "",
"enable": "ALL"
}
],
"table": {
......@@ -76,6 +68,28 @@
},
{
"type": "VALUE",
"title": "合同Id",
"key": "contractId",
"columnType": {
"name" : "inner",
"data": {
"selected": true
}
}
},
{
"type": "VALUE",
"title": "合同名称",
"key": "contractName",
"columnType": {
"name" : "inner",
"data": {
"selected": true
}
}
},
{
"type": "VALUE",
"title": "区域公司",
"key": "orgName",
"columnType": {
......
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