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 { ...@@ -92,7 +92,6 @@ public class SandMiningAreaServiceImpl implements SandMiningAreaService {
sandMiningAreaDao.deleteById(id); sandMiningAreaDao.deleteById(id);
WarnSetting warnSetting = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_MINING_AREA_BILL_TYPE, id, SandMiningAreaConstant.SAND_MINING_AREA_WARN_TARGET); WarnSetting warnSetting = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_MINING_AREA_BILL_TYPE, id, SandMiningAreaConstant.SAND_MINING_AREA_WARN_TARGET);
warningSettingService.deleteWarnSetting(warnSetting.getSettingId()); warningSettingService.deleteWarnSetting(warnSetting.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting.getSettingId());
} }
@Override @Override
......
...@@ -174,7 +174,7 @@ public class WarningServiceImpl implements WarningService{ ...@@ -174,7 +174,7 @@ public class WarningServiceImpl implements WarningService{
/** /**
* 删除预警设置 * 删除预警设置, 自动结束预警执行记录
* *
* @param warnSettingId * @param warnSettingId
*/ */
...@@ -184,26 +184,35 @@ public class WarningServiceImpl implements WarningService{ ...@@ -184,26 +184,35 @@ public class WarningServiceImpl implements WarningService{
kObject.set("del",true); kObject.set("del",true);
kObject.set("discard",true); kObject.set("discard",true);
warnSettingDao.update(kObject); warnSettingDao.update(kObject);
//结束预警执行记录
KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId);
warnSettingDao.endWarnRecordState(warnExeRecord);
} }
/** /**
* 删除预警设置 * 开启或关闭预警设置; 可重复开启或关闭
* * @param warnSettingId 预警设置ID
* @param billType * @param isOpen 开启true/关闭false
* @param billId
* @param target
*/ */
@Override public void onOffWarnSetting(UUID warnSettingId,boolean isOpen) {
public void deleteWarnSetting(String billType, UUID billId, String target) { KObject warnSetting = warnSettingDao.queryWarnSettingById(warnSettingId);
boolean isOpen2 = warnSetting.getBoolean(WarnSettingConstant.isOpen);
WarnSetting warnSetting = warnSettingDao.getWarnSetting(billType, billId, target); if(isOpen == isOpen2) return;
KObject kObject = warnSettingDao.queryWarnSettingById(warnSetting.getSettingId()); warnSetting.set(WarnSettingConstant.isOpen,isOpen);
kObject.set("del",true); warnSettingDao.update(warnSetting);
kObject.set("discard",true); if(isOpen) {
warnSettingDao.update(kObject); //再次开启,触发预警
BaseBusinessWarn baseBusinessWarn = new BaseBusinessWarn(warnSettingId);
baseBusinessWarn.warn();
}else {
//关闭预警,结束预警执行记录
KObject warnExeRecord = warnSettingDao.queryWarnExeRecordBySettingId(warnSettingId);
warnSettingDao.endWarnRecordState(warnExeRecord);
}
} }
private String UuidListToString(List<UUID> uuids) { private String UuidListToString(List<UUID> uuids) {
StringBuilder str = new StringBuilder(); StringBuilder str = new StringBuilder();
for (int i = 0; i < uuids.size(); i++) { for (int i = 0; i < uuids.size(); i++) {
......
...@@ -23,6 +23,7 @@ import org.hibernate.criterion.Restrictions; ...@@ -23,6 +23,7 @@ import org.hibernate.criterion.Restrictions;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.hibernate.transform.Transformers; import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.orm.hibernate5.HibernateCallback; import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.orm.hibernate5.HibernateOperations; import org.springframework.orm.hibernate5.HibernateOperations;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -98,6 +99,24 @@ public class WarnSettingDao { ...@@ -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) { private WarnSetting warnSettingToEntity(KObject singleResult) {
if (singleResult == null) return null; if (singleResult == null) return null;
UUID settingId = singleResult.getUuid("id"); UUID settingId = singleResult.getUuid("id");
......
...@@ -41,16 +41,18 @@ public interface WarningService { ...@@ -41,16 +41,18 @@ public interface WarningService {
void updateWarnSetting(WarnSettingReq warnSetting); void updateWarnSetting(WarnSettingReq warnSetting);
/** /**
* 删除预警设置 * 删除预警设置, 自动结束预警执行记录
* @param warnSettingId * @param warnSettingId
*/ */
void deleteWarnSetting(@NonNull UUID 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 { ...@@ -11,6 +11,8 @@ public class ContractConstant {
/** 实体名:合同子表 */ /** 实体名:合同子表 */
public static final String CONTRACT_DETAILS = "contractDetails"; public static final String CONTRACT_DETAILS = "contractDetails";
/** 合同信息表ID */
public static final String CONTRACT_ID = "contractId";
/** 项目 */ /** 项目 */
public static final String PROJECT = "project"; public static final String PROJECT = "project";
/** 项目编号 */ /** 项目编号 */
......
...@@ -77,6 +77,25 @@ public class ContractDao { ...@@ -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) { public List<KObject> queryContractByCode(String contractCode) {
return (List<KObject>)template.execute(new HibernateCallback<List<KObject>>() { return (List<KObject>)template.execute(new HibernateCallback<List<KObject>>() {
@Override @Override
......
...@@ -215,7 +215,7 @@ public class ContractServiceImpl implements ContractService { ...@@ -215,7 +215,7 @@ public class ContractServiceImpl implements ContractService {
contractInfoDao.update(contract); contractInfoDao.update(contract);
//1.合同审批通过后,自动新增砂石余量预警设置 //1.合同审批通过后,自动新增砂石余量预警设置
UUID contractId = contract.getUuid("id"); UUID contractId = contract.getUuid(ContractConstant.CONTRACT_ID);
String billType = ContractWarnConst.billType; String billType = ContractWarnConst.billType;
String contractBaseInfo = getContractBaseInfo(contract); String contractBaseInfo = getContractBaseInfo(contract);
List<KObject> detials = contract.get("contractDetails").toList(); List<KObject> detials = contract.get("contractDetails").toList();
...@@ -308,8 +308,10 @@ public class ContractServiceImpl implements ContractService { ...@@ -308,8 +308,10 @@ public class ContractServiceImpl implements ContractService {
@Override @Override
public Object queryWarnSettingById(UUID id) { public Object queryWarnSettingById(UUID id) {
KObject warnSetting = warnSettingDao.queryWarnSettingById(id); KObject warnSetting = warnSettingDao.queryWarnSettingById(id);
String billId = warnSetting.getString("billId"); String contractId = warnSetting.getString("billId");
KObject contract = contractDao.load(UUID.fromString(billId));
KObject contractInfo = contractInfoDao.load(UUID.fromString(contractId));
KObject contract = contractDao.getContractByContractInfoId(contractInfo.getUuid("id"));
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("contractName", contract.getString("contractName")); map.put("contractName", contract.getString("contractName"));
map.put("purchaseSandUnitName", contract.get("purchaseSandUnit").getString("name")); map.put("purchaseSandUnitName", contract.get("purchaseSandUnit").getString("name"));
...@@ -337,6 +339,12 @@ public class ContractServiceImpl implements ContractService { ...@@ -337,6 +339,12 @@ public class ContractServiceImpl implements ContractService {
KObject contract = contractDao.load(id); KObject contract = contractDao.load(id);
contract.set(ContractConstant.CONTRACT_STATE,ContractStateEnum.COMPLETED.name()); contract.set(ContractConstant.CONTRACT_STATE,ContractStateEnum.COMPLETED.name());
contractDao.update(contract); 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 @Transactional
......
...@@ -22,7 +22,8 @@ public class ContractPerformWarningProcessor implements DataProcessor { ...@@ -22,7 +22,8 @@ public class ContractPerformWarningProcessor implements DataProcessor {
for (RowData row : rowDatas) { for (RowData row : rowDatas) {
//合同,项目,购砂单位 //合同,项目,购砂单位
UUID contractId = UUID.fromString(row.get("billId").toString()); 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("projectName", contract.isNull("project") ? "" : contract.get("project").getString("projectName"));
row.put("contractName", contract.getString("contractName")); row.put("contractName", contract.getString("contractName"));
String purchaseSandUnitName = contract.get("purchaseSandUnit").getString("name"); String purchaseSandUnitName = contract.get("purchaseSandUnit").getString("name");
......
...@@ -35,7 +35,8 @@ public class ContractWarnSettingProcessor implements DataProcessor { ...@@ -35,7 +35,8 @@ public class ContractWarnSettingProcessor implements DataProcessor {
for (RowData row : rowDatas) { for (RowData row : rowDatas) {
//合同,项目,购砂单位 //合同,项目,购砂单位
UUID contractId = UUID.fromString(row.get("billId").toString()); 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, "找不到对应的合同!"); Assert.notNull(contract, "找不到对应的合同!");
row.put("projectName", contract.isNull("project") ? "" : contract.get("project").getString("projectName")); row.put("projectName", contract.isNull("project") ? "" : contract.get("project").getString("projectName"));
row.put("contractName", contract.getString("contractName")); row.put("contractName", contract.getString("contractName"));
......
...@@ -30,7 +30,8 @@ public class AdvanceBalanceWarningCalculator implements IWarningCalculator{ ...@@ -30,7 +30,8 @@ public class AdvanceBalanceWarningCalculator implements IWarningCalculator{
String min = warnSetting.getMin(); String min = warnSetting.getMin();
String target = warnSetting.getTarget(); String target = warnSetting.getTarget();
if(min==null || min.trim().length()==0) return false; 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); advanceBalance = contract.getDouble(ContractConstant.ADVANCE_BALANCE);
if (advanceBalance < Double.valueOf(min)) { if (advanceBalance < Double.valueOf(min)) {
String contractCode = contract.getString(ContractConstant.CONTRACT_CODE); String contractCode = contract.getString(ContractConstant.CONTRACT_CODE);
......
...@@ -34,7 +34,8 @@ public class ContractExpireWarningCalculator implements IWarningCalculator{ ...@@ -34,7 +34,8 @@ public class ContractExpireWarningCalculator implements IWarningCalculator{
String min = warnSetting.getMin(); String min = warnSetting.getMin();
if(min==null || min.trim().length()==0) return false; 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 endDate = contract.getDate(ContractConstant.endDate);
Date now = new Date(); Date now = new Date();
diffDays = (int) ((endDate.getTime() -now.getTime()) / millisOfDay); diffDays = (int) ((endDate.getTime() -now.getTime()) / millisOfDay);
......
...@@ -35,7 +35,8 @@ public class DinasCountWarningCalculator implements IWarningCalculator{ ...@@ -35,7 +35,8 @@ public class DinasCountWarningCalculator implements IWarningCalculator{
String target = warnSetting.getTarget(); String target = warnSetting.getTarget();
if(min==null || min.trim().length()==0) return false; 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(); List<KObject> details = contract.get(ContractConstant.CONTRACT_DETAILS).toList();
for (KObject detail : details) { for (KObject detail : details) {
String dinasTypeName = detail.get(ContractConstant.dinasType).getString(DinasTypeConstant.DINASTYPE_NAME); String dinasTypeName = detail.get(ContractConstant.dinasType).getString(DinasTypeConstant.DINASTYPE_NAME);
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位'> <field title='购砂单位'>
<name>purchaseSandCompany.id</name> <name>purchaseSandUnit.id</name>
<type>uuid</type> <type>uuid</type>
<ref> <ref>
<type></type> <type></type>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位name'> <field title='购砂单位name'>
<name>purchaseSandCompany.name</name> <name>purchaseSandUnit.name</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
...@@ -85,11 +85,11 @@ ...@@ -85,11 +85,11 @@
<description></description> <description></description>
</field> </field>
<field title='项目名称'> <field title='项目名称'>
<name>projectName</name> <name>project.projectName</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
<name></name> <name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref> </ref>
<description></description> <description></description>
</field> </field>
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位'> <field title='购砂单位'>
<name>purchaseSandCompany.id</name> <name>purchaseSandUnit.id</name>
<type>uuid</type> <type>uuid</type>
<ref> <ref>
<type></type> <type></type>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位name'> <field title='购砂单位name'>
<name>purchaseSandCompany.name</name> <name>purchaseSandUnit.name</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
...@@ -85,11 +85,11 @@ ...@@ -85,11 +85,11 @@
<description></description> <description></description>
</field> </field>
<field title='项目名称'> <field title='项目名称'>
<name>projectName</name> <name>project.projectName</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
<name></name> <name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref> </ref>
<description></description> <description></description>
</field> </field>
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位'> <field title='购砂单位'>
<name>purchaseSandCompany.id</name> <name>purchaseSandUnit.id</name>
<type>uuid</type> <type>uuid</type>
<ref> <ref>
<type></type> <type></type>
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<description></description> <description></description>
</field> </field>
<field title='购砂单位name'> <field title='购砂单位name'>
<name>purchaseSandCompany.name</name> <name>purchaseSandUnit.name</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
...@@ -85,11 +85,11 @@ ...@@ -85,11 +85,11 @@
<description></description> <description></description>
</field> </field>
<field title='项目名称'> <field title='项目名称'>
<name>projectName</name> <name>project.projectName</name>
<type>string</type> <type>string</type>
<ref> <ref>
<type></type> <type></type>
<name></name> <name>com.xyst.dinas.project.datamodel.ProjectFiled</name>
</ref> </ref>
<description></description> <description></description>
</field> </field>
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.id</m:name> <m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title> <m:title>购砂单位</m:title>
<m:type>uuid</m:type> <m:type>uuid</m:type>
<m:ref> <m:ref>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.name</m:name> <m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title> <m:title>购砂单位name</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
...@@ -97,11 +97,11 @@ ...@@ -97,11 +97,11 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>projectName</m:name> <m:name>project.projectName</m:name>
<m:title>项目名称</m:title> <m:title>项目名称</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
<m:name></m:name> <m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type> <m:type></m:type>
</m:ref> </m:ref>
<m:desc></m:desc> <m:desc></m:desc>
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.id</m:name> <m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title> <m:title>购砂单位</m:title>
<m:type>uuid</m:type> <m:type>uuid</m:type>
<m:ref> <m:ref>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.name</m:name> <m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title> <m:title>购砂单位name</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
...@@ -97,11 +97,11 @@ ...@@ -97,11 +97,11 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>projectName</m:name> <m:name>project.projectName</m:name>
<m:title>项目名称</m:title> <m:title>项目名称</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
<m:name></m:name> <m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type> <m:type></m:type>
</m:ref> </m:ref>
<m:desc></m:desc> <m:desc></m:desc>
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.id</m:name> <m:name>purchaseSandUnit.id</m:name>
<m:title>购砂单位</m:title> <m:title>购砂单位</m:title>
<m:type>uuid</m:type> <m:type>uuid</m:type>
<m:ref> <m:ref>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>purchaseSandCompany.name</m:name> <m:name>purchaseSandUnit.name</m:name>
<m:title>购砂单位name</m:title> <m:title>购砂单位name</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
...@@ -97,11 +97,11 @@ ...@@ -97,11 +97,11 @@
<m:desc></m:desc> <m:desc></m:desc>
</m:field> </m:field>
<m:field> <m:field>
<m:name>projectName</m:name> <m:name>project.projectName</m:name>
<m:title>项目名称</m:title> <m:title>项目名称</m:title>
<m:type>string</m:type> <m:type>string</m:type>
<m:ref> <m:ref>
<m:name></m:name> <m:name>com.xyst.dinas.project.datamodel.ProjectFiled</m:name>
<m:type></m:type> <m:type></m:type>
</m:ref> </m:ref>
<m:desc></m:desc> <m:desc></m:desc>
......
...@@ -95,17 +95,12 @@ public class SandMiningServiceImpl implements SandMiningService { ...@@ -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); WarnSetting warnSetting = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_SHIP_WARN_BILL_TYPE, id, SandMiningAreaConstant.SAND_SHIP_WARN_TARGET_ENTER_WARNING_AREA);
if(null!=warnSetting){ if(null!=warnSetting){
warningSettingService.deleteWarnSetting(warnSetting.getSettingId()); 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); WarnSetting warnSetting1 = warningSettingService.getWarnSetting(SandMiningAreaConstant.SAND_SHIP_WARN_BILL_TYPE, id, SandMiningAreaConstant.SAND_SHIP_WARN_TARGET_NO_OPERATING_HOURS);
if(null!=warnSetting1){ if(null!=warnSetting1){
warningSettingService.deleteWarnSetting(warnSetting1.getSettingId()); warningSettingService.deleteWarnSetting(warnSetting1.getSettingId());
warningSettingService.endWarnStateBySettingId(warnSetting1.getSettingId());
} }
} }
@Override @Override
......
...@@ -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": {
...@@ -205,7 +219,7 @@ ...@@ -205,7 +219,7 @@
"title" : "详情", "title" : "详情",
"action" : "openDetail", "action" : "openDetail",
"param" : { "param" : {
"modelName" : "123" "listenerName" : "project-and-company-query-detail"
}, },
"type" : "" "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