Commit 07799ad6 by 王炜晨

Merge branch 'develop' of…

Merge branch 'develop' of https://gitlab.beecode.cn/kunlun/xyst_dinas/xyst_dinas_backend into develop
parents 75ed5383 cb5ecc59
......@@ -92,7 +92,6 @@ public class SandMiningAreaServiceImpl implements SandMiningAreaService {
sandMiningAreaDao.deleteById(id);
WarnSetting warnSetting = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_MINING_AREA_BILL_TYPE, id, SandMiningAreaConstant.SAND_MINING_AREA_WARN_TARGET);
warningSettingService.deleteWarnSetting(warnSetting.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting.getSettingId());
}
@Override
......
......@@ -174,7 +174,7 @@ public class WarningServiceImpl implements WarningService{
/**
* 删除预警设置
* 删除预警设置, 自动结束预警执行记录
*
* @param warnSettingId
*/
......@@ -184,26 +184,35 @@ public class WarningServiceImpl implements WarningService{
kObject.set("del",true);
kObject.set("discard",true);
warnSettingDao.update(kObject);
//结束预警执行记录
KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId);
warnSettingDao.endWarnRecordState(warnExeRecord);
}
/**
* 删除预警设置
*
* @param billType
* @param billId
* @param target
* 开启或关闭预警设置; 可重复开启或关闭
* @param warnSettingId 预警设置ID
* @param isOpen 开启true/关闭false
*/
@Override
public void deleteWarnSetting(String billType, UUID billId, String target) {
WarnSetting warnSetting = warnSettingDao.getWarnSetting(billType, billId, target);
KObject kObject = warnSettingDao.queryWarnSettingById(warnSetting.getSettingId());
kObject.set("del",true);
kObject.set("discard",true);
warnSettingDao.update(kObject);
public void onOffWarnSetting(UUID warnSettingId,boolean isOpen) {
KObject warnSetting = warnSettingDao.queryWarnSettingById(warnSettingId);
boolean isOpen2 = warnSetting.getBoolean(WarnSettingConstant.isOpen);
if(isOpen == isOpen2) return;
warnSetting.set(WarnSettingConstant.isOpen,isOpen);
warnSettingDao.update(warnSetting);
if(isOpen) {
//再次开启,触发预警
BaseBusinessWarn baseBusinessWarn = new BaseBusinessWarn(warnSettingId);
baseBusinessWarn.warn();
}else {
//关闭预警,结束预警执行记录
KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId);
warnSettingDao.endWarnRecordState(warnExeRecord);
}
}
private String UuidListToString(List<UUID> uuids) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < uuids.size(); i++) {
......
......@@ -23,6 +23,7 @@ import org.hibernate.criterion.Restrictions;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.orm.hibernate5.HibernateOperations;
import org.springframework.stereotype.Repository;
......@@ -98,6 +99,24 @@ public class WarnSettingDao {
});
}
public List<KObject> queryWarnSettings(String billType, @Nullable UUID billId,@Nullable String target) {
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNSETTING + " where billType =:billType";
return template.execute(session -> {
StringBuilder hql = new StringBuilder(QUERY_HQL);
if (billId != null) hql.append(" and billId =:billId");
if (target != null) hql.append(" and target =:target");
Query<KObject> query = session.createQuery(hql.toString(), KObject.class);
query.setParameter("billType", billType);
if (billId != null) query.setParameter("billId", billId);
if (target != null) query.setParameter("target", target);
return query.getResultList();
});
}
private WarnSetting warnSettingToEntity(KObject singleResult) {
if (singleResult == null) return null;
UUID settingId = singleResult.getUuid("id");
......
......@@ -41,16 +41,18 @@ public interface WarningService {
void updateWarnSetting(WarnSettingReq warnSetting);
/**
* 删除预警设置
* 删除预警设置, 自动结束预警执行记录
* @param warnSettingId
*/
void deleteWarnSetting(@NonNull UUID warnSettingId);
/**
* 删除预警设置
* 开启或关闭预警设置; 可重复开启或关闭
* @param warnSettingId 预警设置ID
* @param isOpen 开启true/关闭false
*/
void deleteWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target);
public void onOffWarnSetting(UUID warnSettingId,boolean isOpen) ;
/***************************************/
......
......@@ -11,6 +11,8 @@ public class ContractConstant {
/** 实体名:合同子表 */
public static final String CONTRACT_DETAILS = "contractDetails";
/** 合同信息表ID */
public static final String CONTRACT_ID = "contractId";
/** 项目 */
public static final String PROJECT = "project";
/** 项目编号 */
......
......@@ -77,6 +77,25 @@ public class ContractDao {
}
});
}
/**
* 根据合同信息表ID查找当前有效合同
* @param infoid
* @return
*/
public KObject getContractByContractInfoId(UUID infoid) {
List<KObject> contracts = template.execute(new HibernateCallback<List<KObject>>() {
@Override
public List<KObject> doInHibernate(Session session) throws HibernateException {
Query<KObject> query = session.createQuery("from " + ContractConstant.ENTITY_CONTRACT + " where (discard is null or discard = 0) and contractId =:contractId order by createTime desc", KObject.class);
query.setParameter("contractId", infoid);
return query.getResultList();
}
});
if(contracts.isEmpty()) return null;
return contracts.get(0);
}
public List<KObject> queryContractByCode(String contractCode) {
return (List<KObject>)template.execute(new HibernateCallback<List<KObject>>() {
@Override
......
......@@ -215,7 +215,7 @@ public class ContractServiceImpl implements ContractService {
contractInfoDao.update(contract);
//1.合同审批通过后,自动新增砂石余量预警设置
UUID contractId = contract.getUuid("id");
UUID contractId = contract.getUuid(ContractConstant.CONTRACT_ID);
String billType = ContractWarnConst.billType;
String contractBaseInfo = getContractBaseInfo(contract);
List<KObject> detials = contract.get("contractDetails").toList();
......@@ -308,8 +308,10 @@ public class ContractServiceImpl implements ContractService {
@Override
public Object queryWarnSettingById(UUID id) {
KObject warnSetting = warnSettingDao.queryWarnSettingById(id);
String billId = warnSetting.getString("billId");
KObject contract = contractDao.load(UUID.fromString(billId));
String contractId = warnSetting.getString("billId");
KObject contractInfo = contractInfoDao.load(UUID.fromString(contractId));
KObject contract = contractDao.getContractByContractInfoId(contractInfo.getUuid("id"));
Map<String, Object> map = new HashMap<>();
map.put("contractName", contract.getString("contractName"));
map.put("purchaseSandUnitName", contract.get("purchaseSandUnit").getString("name"));
......@@ -337,6 +339,12 @@ public class ContractServiceImpl implements ContractService {
KObject contract = contractDao.load(id);
contract.set(ContractConstant.CONTRACT_STATE,ContractStateEnum.COMPLETED.name());
contractDao.update(contract);
//合同完成后,把该合同的所有预警设置全部清除
UUID contractInfoId = contract.getUuid(ContractConstant.CONTRACT_ID);
List<KObject> warnSettings = warnSettingDao.queryWarnSettings(ContractWarnConst.billType, contractInfoId, null);
for (KObject warnSetting : warnSettings) {
warningSettingService.deleteWarnSetting(warnSetting.getUuid(BaseConstants.ID));
}
}
@Transactional
......
......@@ -22,7 +22,8 @@ public class ContractPerformWarningProcessor implements DataProcessor {
for (RowData row : rowDatas) {
//合同,项目,购砂单位
UUID contractId = UUID.fromString(row.get("billId").toString());
KObject contract = contractService.queryContract(contractId);
KObject contractInfo = contractService.queryContractInfo(contractId);
KObject contract = contractService.getLastContractByInfoId(contractInfo.getUuid("id"));
row.put("projectName", contract.isNull("project") ? "" : contract.get("project").getString("projectName"));
row.put("contractName", contract.getString("contractName"));
String purchaseSandUnitName = contract.get("purchaseSandUnit").getString("name");
......
......@@ -35,7 +35,8 @@ public class ContractWarnSettingProcessor implements DataProcessor {
for (RowData row : rowDatas) {
//合同,项目,购砂单位
UUID contractId = UUID.fromString(row.get("billId").toString());
KObject contract = contractService.queryContract(contractId);
KObject contractInfo = contractService.queryContractInfo(contractId);
KObject contract = contractService.getLastContractByInfoId(contractInfo.getUuid("id"));
Assert.notNull(contract, "找不到对应的合同!");
row.put("projectName", contract.isNull("project") ? "" : contract.get("project").getString("projectName"));
row.put("contractName", contract.getString("contractName"));
......
......@@ -30,7 +30,8 @@ public class AdvanceBalanceWarningCalculator implements IWarningCalculator{
String min = warnSetting.getMin();
String target = warnSetting.getTarget();
if(min==null || min.trim().length()==0) return false;
KObject contract = contractService.queryContract(warnSetting.getBillId());
KObject contractInfo = contractService.queryContractInfo(warnSetting.getBillId());
KObject contract = contractService.getLastContractByInfoId(contractInfo.getUuid("id"));
advanceBalance = contract.getDouble(ContractConstant.ADVANCE_BALANCE);
if (advanceBalance < Double.valueOf(min)) {
String contractCode = contract.getString(ContractConstant.CONTRACT_CODE);
......
......@@ -34,7 +34,8 @@ public class ContractExpireWarningCalculator implements IWarningCalculator{
String min = warnSetting.getMin();
if(min==null || min.trim().length()==0) return false;
KObject contract = contractService.queryContract(warnSetting.getBillId());
KObject contractInfo = contractService.queryContractInfo(warnSetting.getBillId());
KObject contract = contractService.getLastContractByInfoId(contractInfo.getUuid("id"));
Date endDate = contract.getDate(ContractConstant.endDate);
Date now = new Date();
diffDays = (int) ((endDate.getTime() -now.getTime()) / millisOfDay);
......
......@@ -35,7 +35,8 @@ public class DinasCountWarningCalculator implements IWarningCalculator{
String target = warnSetting.getTarget();
if(min==null || min.trim().length()==0) return false;
KObject contract = contractService.queryContract(warnSetting.getBillId());
KObject contractInfo = contractService.queryContractInfo(warnSetting.getBillId());
KObject contract = contractService.getLastContractByInfoId(contractInfo.getUuid("id"));
List<KObject> details = contract.get(ContractConstant.CONTRACT_DETAILS).toList();
for (KObject detail : details) {
String dinasTypeName = detail.get(ContractConstant.dinasType).getString(DinasTypeConstant.DINASTYPE_NAME);
......
......@@ -58,7 +58,7 @@
<description></description>
</field>
<field title='购砂单位'>
<name>purchaseSandCompany.id</name>
<name>purchaseSandUnit.id</name>
<type>uuid</type>
<ref>
<type></type>
......@@ -67,7 +67,7 @@
<description></description>
</field>
<field title='购砂单位name'>
<name>purchaseSandCompany.name</name>
<name>purchaseSandUnit.name</name>
<type>string</type>
<ref>
<type></type>
......@@ -85,11 +85,11 @@
<description></description>
</field>
<field title='项目名称'>
<name>projectName</name>
<name>project.projectName</name>
<type>string</type>
<ref>
<type></type>
<name></name>
<name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref>
<description></description>
</field>
......
......@@ -58,7 +58,7 @@
<description></description>
</field>
<field title='购砂单位'>
<name>purchaseSandCompany.id</name>
<name>purchaseSandUnit.id</name>
<type>uuid</type>
<ref>
<type></type>
......@@ -67,7 +67,7 @@
<description></description>
</field>
<field title='购砂单位name'>
<name>purchaseSandCompany.name</name>
<name>purchaseSandUnit.name</name>
<type>string</type>
<ref>
<type></type>
......@@ -85,11 +85,11 @@
<description></description>
</field>
<field title='项目名称'>
<name>projectName</name>
<name>project.projectName</name>
<type>string</type>
<ref>
<type></type>
<name></name>
<name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref>
<description></description>
</field>
......
......@@ -58,7 +58,7 @@
<description></description>
</field>
<field title='购砂单位'>
<name>purchaseSandCompany.id</name>
<name>purchaseSandUnit.id</name>
<type>uuid</type>
<ref>
<type></type>
......@@ -67,7 +67,7 @@
<description></description>
</field>
<field title='购砂单位name'>
<name>purchaseSandCompany.name</name>
<name>purchaseSandUnit.name</name>
<type>string</type>
<ref>
<type></type>
......@@ -85,11 +85,11 @@
<description></description>
</field>
<field title='项目名称'>
<name>projectName</name>
<name>project.projectName</name>
<type>string</type>
<ref>
<type></type>
<name></name>
<name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref>
<description></description>
</field>
......
......@@ -67,7 +67,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.id</m:name>
<m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title>
<m:type>uuid</m:type>
<m:ref>
......@@ -77,7 +77,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.name</m:name>
<m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title>
<m:type>string</m:type>
<m:ref>
......@@ -97,11 +97,11 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>projectName</m:name>
<m:name>project.projectName</m:name>
<m:title>项目名称</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
......
......@@ -67,7 +67,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.id</m:name>
<m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title>
<m:type>uuid</m:type>
<m:ref>
......@@ -77,7 +77,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.name</m:name>
<m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title>
<m:type>string</m:type>
<m:ref>
......@@ -97,11 +97,11 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>projectName</m:name>
<m:name>project.projectName</m:name>
<m:title>项目名称</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
......
......@@ -67,7 +67,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.id</m:name>
<m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title>
<m:type>uuid</m:type>
<m:ref>
......@@ -77,7 +77,7 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>purchaseSandCompany.name</m:name>
<m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title>
<m:type>string</m:type>
<m:ref>
......@@ -97,11 +97,11 @@
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>projectName</m:name>
<m:name>project.projectName</m:name>
<m:title>项目名称</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
......
......@@ -95,17 +95,12 @@ public class SandMiningServiceImpl implements SandMiningService {
WarnSetting warnSetting = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_SHIP_WARN_BILL_TYPE, id, SandMiningAreaConstant.SAND_SHIP_WARN_TARGET_ENTER_WARNING_AREA);
if(null!=warnSetting){
warningSettingService.deleteWarnSetting(warnSetting.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting.getSettingId());
}
//非作业时间采砂的
WarnSetting warnSetting1 = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_SHIP_WARN_BILL_TYPE, id, SandMiningAreaConstant.SAND_SHIP_WARN_TARGET_NO_OPERATING_HOURS);
if(null!=warnSetting1){
warningSettingService.deleteWarnSetting(warnSetting1.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting1.getSettingId());
}
}
@Override
......
......@@ -9,6 +9,8 @@ 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);
......@@ -43,6 +41,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) {
List<UUID> list = new ArrayList<>();
String sql = " SELECT DISTINCT contract FROM xyst_dinas_sales_need_plan WHERE HEX(planning_cycle) =: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;
......@@ -19,6 +21,9 @@ public class NeedPlanServiceImpl implements NeedPlanService {
@Autowired
private NeedPlanDao needPlanDao;
@Autowired
private ContractService contractService;
@Override
public KObject queryNeedPlanAmountByDinasType(UUID planningCycleId,UUID contractId, UUID dinasTypeId) {
KObject kObject = null;
......@@ -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 {
......@@ -12,4 +13,6 @@ public interface NeedPlanService {
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
......@@ -39,4 +38,11 @@ public class NeedPlanController {
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": {
......@@ -205,7 +219,7 @@
"title" : "详情",
"action" : "openDetail",
"param" : {
"modelName" : "123"
"listenerName" : "project-and-company-query-detail"
},
"type" : ""
} ],
......
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