Commit d41c9dcc by 王衍超

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

parents 1626c473 2d9b83c2
...@@ -9,6 +9,8 @@ public interface NeedPlanDao { ...@@ -9,6 +9,8 @@ public interface NeedPlanDao {
KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId); KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId);
List<KObject> queryNeedPlanByContractId(UUID contractId);
List<UUID> queryNeedPlanContratByCycleId(UUID planningCycleId); 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; ...@@ -3,7 +3,6 @@ package com.xyst.dinas.sales.internal.dao;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import javax.persistence.Tuple; import javax.persistence.Tuple;
...@@ -28,7 +27,6 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant { ...@@ -28,7 +27,6 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
@Override @Override
public KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId) { public KObject queryNeedPlanByContractIdAndCycleId(UUID planningCycleId, UUID contractId) {
return (KObject)template.execute(new HibernateCallback<KObject>() { return (KObject)template.execute(new HibernateCallback<KObject>() {
@SuppressWarnings("unchecked")
@Override @Override
public KObject doInHibernate(Session session) throws HibernateException { 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); Query<KObject> query = session.createQuery("from " + NEED_PLAN_NTITY + " where planningCycle.id=:planningCycleId and contract.id=:contractId and submitState=:submitState", KObject.class);
...@@ -43,6 +41,21 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant { ...@@ -43,6 +41,21 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
} }
@Override @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) { public List<UUID> queryNeedPlanContratByCycleId(UUID planningCycleId) {
List<UUID> list = new ArrayList<>(); List<UUID> list = new ArrayList<>();
String sql = " SELECT DISTINCT contract FROM xyst_dinas_sales_need_plan WHERE HEX(planning_cycle) =:planningCycleId "; String sql = " SELECT DISTINCT contract FROM xyst_dinas_sales_need_plan WHERE HEX(planning_cycle) =:planningCycleId ";
......
package com.xyst.dinas.sales.internal.service; package com.xyst.dinas.sales.internal.service;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Stream;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.beecode.bcp.type.KObject; 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.dao.NeedPlanDao;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
import com.xyst.dinas.sales.service.NeedPlanService; import com.xyst.dinas.sales.service.NeedPlanService;
...@@ -19,6 +21,9 @@ public class NeedPlanServiceImpl implements NeedPlanService { ...@@ -19,6 +21,9 @@ public class NeedPlanServiceImpl implements NeedPlanService {
@Autowired @Autowired
private NeedPlanDao needPlanDao; private NeedPlanDao needPlanDao;
@Autowired
private ContractService contractService;
@Override @Override
public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) { public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) {
KObject kObject = null; KObject kObject = null;
...@@ -39,4 +44,47 @@ public class NeedPlanServiceImpl implements NeedPlanService { ...@@ -39,4 +44,47 @@ public class NeedPlanServiceImpl implements NeedPlanService {
return list; 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; ...@@ -4,6 +4,7 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
public interface NeedPlanService { public interface NeedPlanService {
...@@ -12,4 +13,6 @@ public interface NeedPlanService { ...@@ -12,4 +13,6 @@ public interface NeedPlanService {
List<UUID> queryNeedPlanContratByCycleId(UUID fromString); List<UUID> queryNeedPlanContratByCycleId(UUID fromString);
List<ContractExecuteDetail> queryContractExecuteDetailByContractId(UUID contractId);
} }
package com.xyst.dinas.sales.web; package com.xyst.dinas.sales.web;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired; 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -14,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.beecode.bcp.type.KObject; import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.team.pojo.ResponseObj; import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.xyst.dinas.sales.entity.ContractExecuteDetail;
import com.xyst.dinas.sales.service.NeedPlanService; import com.xyst.dinas.sales.service.NeedPlanService;
@RestController @RestController
...@@ -39,4 +38,11 @@ public class NeedPlanController { ...@@ -39,4 +38,11 @@ public class NeedPlanController {
return ResponseObj.success("success", list); 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 @@ ...@@ -13,6 +13,8 @@
<sql> <sql>
SELECT SELECT
organization.id AS id, organization.id AS id,
contract.id AS contractId,
contract.contractName AS contractName,
organization.name AS orgName, organization.name AS orgName,
company.name AS companyName, company.name AS companyName,
project.projectName AS projectName, project.projectName AS projectName,
...@@ -20,7 +22,7 @@ ...@@ -20,7 +22,7 @@
contract.deposit AS contractDeposit, contract.deposit AS contractDeposit,
contract.advanceBalance AS contractAdvanceBalance, contract.advanceBalance AS contractAdvanceBalance,
contract.dinasAmount AS dinasAmount, contract.dinasAmount AS dinasAmount,
SUM(need_plan.needPlanTotalAmount) AS needPlanTotalAmount, need_plan.needPlanTotalAmount AS needPlanTotalAmount,
contract.saleDinasAmount AS saleDinasAmount, contract.saleDinasAmount AS saleDinasAmount,
contract.dinasAmount - contract.saleDinasAmount AS surplusAmount, contract.dinasAmount - contract.saleDinasAmount AS surplusAmount,
round(contract.saleDinasAmount / contract.dinasAmount * 100, 2) AS finishPercent round(contract.saleDinasAmount / contract.dinasAmount * 100, 2) AS finishPercent
...@@ -30,7 +32,7 @@ ...@@ -30,7 +32,7 @@
LEFT JOIN Contract AS contract ON contract.purchaseSandUnit = company.id LEFT JOIN Contract AS contract ON contract.purchaseSandUnit = company.id
LEFT JOIN ProjectFiled AS project ON project.id = contract.project LEFT JOIN ProjectFiled AS project ON project.id = contract.project
LEFT JOIN ProjectType AS project_type ON project_type.id = project.projectType 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 WHERE organization.id = :?regionalCompanyId and company.name like :?companyName and project.projectName like :?projectName and project_type.id = :?projectTypeId
</sql> </sql>
</template> </template>
......
...@@ -44,14 +44,6 @@ ...@@ -44,14 +44,6 @@
"action": "query_export", "action": "query_export",
"title": "导出", "title": "导出",
"type": "" "type": ""
},
{
"name": "queryRefresh",
"title": "刷新",
"action": "queryRefresh",
"param": [],
"type": "",
"enable": "ALL"
} }
], ],
"table": { "table": {
...@@ -76,6 +68,28 @@ ...@@ -76,6 +68,28 @@
}, },
{ {
"type": "VALUE", "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": "区域公司", "title": "区域公司",
"key": "orgName", "key": "orgName",
"columnType": { "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