Commit 7e601607 by 高晓磊

价格增加生效状态的筛选条件

parent 5aad3c9b
......@@ -12,6 +12,7 @@ import java.util.UUID;
*/
public class PriceAdjustmentSearchEntity<T> extends Page<T> {
private Integer applyStatus;
private Integer adjustmentStatus;
private List<UUID> stationIds;
private List<UUID> regionalCompanyIds;
@DateTimeFormat(pattern = "yyyy-MM-dd")
......@@ -79,4 +80,12 @@ public class PriceAdjustmentSearchEntity<T> extends Page<T> {
public void setApplyEndDate(Date applyEndDate) {
this.applyEndDate = applyEndDate;
}
public Integer getAdjustmentStatus() {
return adjustmentStatus;
}
public void setAdjustmentStatus(Integer adjustmentStatus) {
this.adjustmentStatus = adjustmentStatus;
}
}
......@@ -14,12 +14,9 @@ import com.xyst.dinas.price.constant.PriceAdjustmentConstant;
import com.xyst.dinas.price.dao.PriceAdjustmentDao;
import com.xyst.dinas.price.entity.*;
import com.xyst.dinas.price.enumeration.PriceAdjustmentAdjustmentStatusEnum;
import org.apache.commons.lang3.time.DateUtils;
import org.hibernate.criterion.*;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.util.CollectionUtils;
......@@ -72,6 +69,10 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
detachedCriteria.add(Restrictions.in("applyStatus", priceAdjustmentSearchEntity.getApplyStatus()));
}
if (null != priceAdjustmentSearchEntity.getAdjustmentStatus()) {
detachedCriteria.add(Restrictions.in("adjustmentStatus", priceAdjustmentSearchEntity.getAdjustmentStatus()));
}
detachedCriteria.addOrder(Order.desc(BaseConstants.CREATE_TIME));
int offset = priceAdjustmentSearchEntity.getPageSize() * (priceAdjustmentSearchEntity.getPageNo() - 1);
priceAdjustmentSearchEntity.setTotal(template.findByCriteria(detachedCriteria).size());
......@@ -165,6 +166,7 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
detachedCriteria.add(Restrictions.eq("master." + BaseConstants.DEL, false))
.add(Restrictions.in("master.applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.ne("master.adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.ABOLITION.getValue()))
.add(Restrictions.ne("master.adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.NOT_STARTED.getValue()))
// .add(Restrictions.eq("master.adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.PROCESSING.getValue()))
.createAlias("master", "master")
.createAlias("master.station", "station")
......@@ -206,11 +208,12 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
public void updateToStart(Date date) {
//获取本天最后提交且审批通过的记录,修改为生效中
DetachedCriteria detachedCriteria = getDetachedCriteria(date);
List<KObject> byCriteria = (List<KObject>) template.findByCriteria(detachedCriteria, 0, 1);
List<KObject> byCriteria = (List<KObject>) template.findByCriteria(detachedCriteria, -1, -1);
if (!CollectionUtils.isEmpty(byCriteria)) {
KObject kObject = byCriteria.get(0);
kObject.set("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.PROCESSING.getValue());
template.update(kObject);
for (KObject kObject : byCriteria) {
kObject.set("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.PROCESSING.getValue());
template.update(kObject);
}
}
}
......@@ -218,17 +221,36 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
@Override
public void updateNotOverToEnd(Date date) {
//本天场站下砂石类型为X的记录不做失效处理
//获取今天最新场站提交的记录
// List<UUID> as = getStationGroupInfo(date);
List<UUID> noOverPrice = getNoOverPrice(date);
List<UUID> noOverPriceDetail = getNoOverPriceDetail(date);
if(CollectionUtils.isEmpty(noOverPriceDetail)){
return;
}
List<UUID> masterId= getMasterIdByDetailId(noOverPriceDetail);
template.execute(session -> {
Query query = session.createQuery("update " + DETAIL_ENTITY + " as a SET a.adjustmentEndDate =:adjustmentEndDate WHERE a.id IN (:ids)");
query.setParameter("adjustmentEndDate", date);
query.setParameter("ids", noOverPrice);
query.setParameter("ids", noOverPriceDetail);
return query.executeUpdate();
});
template.execute(session -> {
Query query = session.createQuery("update " + ENTITY + " as a SET a.adjustmentEndDate =:adjustmentEndDate,a.adjustmentStatus=:adjustmentStatus WHERE a.id IN (:ids) ");
query.setParameter("adjustmentEndDate", date);
query.setParameter("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.OVER.getValue());
query.setParameter("ids", masterId);
return query.executeUpdate();
});
}
private List<UUID> getMasterIdByDetailId(List<UUID> noOverPriceDetail) {
KClass bean = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.DETAIL_ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.in("id", noOverPriceDetail));
detachedCriteria.setProjection(Projections.projectionList().add(Projections.property("master.id")));
return (List<UUID> )template.findByCriteria(detachedCriteria);
}
@Override
......@@ -269,6 +291,7 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
KClass adjustment = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.ENTITY, KClass.class);
DetachedCriteria adjustmentDetachedCriteria = DetachedCriteria.forEntityName(adjustment.getName());
adjustmentDetachedCriteria.add(Restrictions.in("applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()));
adjustmentDetachedCriteria.add(Restrictions.ne("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.ABOLITION.getValue()));
adjustmentDetachedCriteria.add(Restrictions.in("station.id", stationId));
adjustmentDetachedCriteria.add(Restrictions.ge("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(adjustmentDate)));
adjustmentDetachedCriteria.add(Restrictions.le("adjustmentDate", DateTimeUtils.getEndDateTimeOfDay(adjustmentDate)));
......@@ -278,24 +301,6 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
return (List<KObject>) template.findByCriteria(adjustmentDetachedCriteria);
}
private List<UUID> getStationGroupInfo(Date date) {
KClass bean = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.DETAIL_ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.createAlias("master", "master");
detachedCriteria.createAlias("master.station", "station");
detachedCriteria.createAlias("dinasType", "dinasType");
detachedCriteria.add(Restrictions.eq("master." + BaseConstants.DEL, false))
.add(Restrictions.in("master.applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.isNull("adjustmentEndDate"))
.add(Restrictions.ge("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(date)))
.add(Restrictions.lt("adjustmentDate", DateTimeUtils.getEndDateTimeOfDay(date)));
detachedCriteria.setProjection(Projections.projectionList()
.add(Projections.alias(Projections.groupProperty("station.id"), "stationId"))
.add(Projections.sqlProjection("group_concat(hex({alias}.dinas_type_id)) as dinasTypeIds ", new String[]{"dinasTypeIds"}, new Type[]{StandardBasicTypes.NSTRING}))
);
detachedCriteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return (List<UUID>) template.findByCriteria(detachedCriteria);
}
/**
......@@ -304,14 +309,18 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
* @param date
* @return
*/
private List<UUID> getNoOverPrice(Date date) {
private List<UUID> getNoOverPriceDetail(Date date) {
List<UUID> toStartStation = getToStartStation(date);
if(CollectionUtils.isEmpty(toStartStation)){
return null;
}
KClass bean = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.DETAIL_ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.createAlias("master", "master");
detachedCriteria.createAlias("master.station", "station");
detachedCriteria.add(Restrictions.eq("master." + BaseConstants.DEL, false))
.add(Restrictions.in("master.applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.ne("master.adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.ABOLITION.getValue()))
.add(Restrictions.isNull("adjustmentEndDate"))
.add(Restrictions.lt("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(date)))
.add(Restrictions.in("station.id",toStartStation ))
......@@ -326,57 +335,20 @@ public class PriceAdjustmentDaoImpl extends AbstractBaseDao implements PriceAdju
* @return
*/
private List<UUID> getToStartStation(Date date){
KClass bean = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
//审批通过 未删除 未生效
detachedCriteria.add(Restrictions.eq( BaseConstants.DEL, false))
.add(Restrictions.in("applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.in("applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.ge("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(date)))
.add(Restrictions.le("adjustmentDate", DateTimeUtils.getEndDateTimeOfDay(date)))
.add(Restrictions.lt("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.NOT_STARTED.getValue()));
DetachedCriteria detachedCriteria = getDetachedCriteria(date);
detachedCriteria.setProjection(Projections.projectionList().add(Projections.property("id")));
return (List<UUID>)template.findByCriteria(detachedCriteria);
}
/**
* 获取今天重复审批的数据,除了最后一条提交的(不是审批) 其它的记录返回,并将该记录做失效的操作
*
* @param date
* @return
*/
private List<UUID> getLastPrice(Date date) {
DetachedCriteria adjustmentDetachedCriteria = getDetachedCriteria(date);
List<KObject> byCriteria = (List<KObject>) template.findByCriteria(adjustmentDetachedCriteria);
int i = 0;
List<UUID> objects = new ArrayList<>();
for (KObject byCriterion : byCriteria) {
if (0 == i++) {
continue;
}
KObject dinasTypeDetail = byCriterion.get("dinasTypeDetail");
if (dinasTypeDetail == null) {
continue;
}
KObject[] kObjects = dinasTypeDetail.toArray();
for (KObject kObject : kObjects) {
objects.add(kObject.getUuid("id"));
}
byCriterion.set("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.ABOLITION.getValue());
template.update(byCriterion);
}
return objects;
}
private DetachedCriteria getDetachedCriteria(Date date) {
KClass adjustment = Amino.getStaticMetadataContext().getBean(PriceAdjustmentConstant.ENTITY, KClass.class);
DetachedCriteria adjustmentDetachedCriteria = DetachedCriteria.forEntityName(adjustment.getName());
adjustmentDetachedCriteria.add(Restrictions.eq("applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()));
adjustmentDetachedCriteria.add(Restrictions.ge("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(date)));
adjustmentDetachedCriteria.add(Restrictions.le("adjustmentDate", DateTimeUtils.getEndDateTimeOfDay(date)));
adjustmentDetachedCriteria.addOrder(Order.desc("createTime"));
return adjustmentDetachedCriteria;
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(adjustment.getName());
detachedCriteria.add(Restrictions.eq("applyStatus", BizProcessState.DONE_WITH_AGREE.getValue()))
.add(Restrictions.ge("adjustmentDate", DateTimeUtils.getStartDateTimeOfDay(date)))
.add(Restrictions.le("adjustmentDate", DateTimeUtils.getEndDateTimeOfDay(date)))
.add(Restrictions.eq("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.NOT_STARTED.getValue()));
return detachedCriteria;
}
......
......@@ -8,6 +8,7 @@ import com.xyst.dinas.price.entity.PriceAdjustmentEchartReturnEntity;
import com.xyst.dinas.price.entity.PriceAdjustmentEchartSearchEntity;
import com.xyst.dinas.price.entity.PriceAdjustmentSearchEntity;
import com.xyst.dinas.price.entity.StationDinasTypePriceDetail;
import com.xyst.dinas.price.enumeration.PriceAdjustmentAdjustmentStatusEnum;
import com.xyst.dinas.price.service.PriceAdjustmentService;
import com.xyst.dinas.price.service.RegionalCompanyPriceAuthorityService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -139,8 +140,9 @@ public class PriceAdjustmentServiceImpl implements PriceAdjustmentService {
return;
}
for (KObject kObject : kObjects) {
kObject.set("applyStatus", BizProcessState.DONE_WITH_REJECT.getValue());
kObject.set("failureReason", "本条数据所属生效日已有新记录审批通过,本条系统自动驳回");
// kObject.set("applyStatus", BizProcessState.DONE_WITH_REJECT.getValue());
kObject.set("adjustmentStatus", PriceAdjustmentAdjustmentStatusEnum.ABOLITION.getValue());
// kObject.set("failureReason", "本条数据所属生效日已有新记录审批通过,本条系统自动废弃");
priceAdjustmentDao.modify(kObject);
}
......
......@@ -16,6 +16,7 @@ import com.xyst.dinas.price.entity.PriceAdjustmentSearchEntity;
import com.xyst.dinas.price.service.PriceAdjustmentService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
......@@ -215,13 +216,29 @@ public class PriceAdjustmentController {
*/
@GetMapping("getSameMessage")
public ResponseObj getSameAdjustmentDateAndLtCreateDateInfo(Date adjustmentDate, Date createTime, UUID stationId){
public ResponseObj getSameAdjustmentDateAndLtCreateDateInfo(@DateTimeFormat(pattern = "yyyy-MM-dd")@RequestParam("adjustmentDate") Date adjustmentDate, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @RequestParam("createTime") Date createTime, @DateTimeFormat(pattern = "yyyy-MM-dd")@RequestParam("stationId") UUID stationId){
List<KObject> sameAdjustmentDateAndLtCreateDateInfo = priceAdjustmentService.getSameAdjustmentDateAndLtCreateDateInfo(adjustmentDate, createTime, stationId);
if(CollectionUtils.isEmpty(sameAdjustmentDateAndLtCreateDateInfo)){
String formart1DateString = DateTimeUtils.getFormart1DateString(adjustmentDate);
String message = "检查到该场站生效日期为["+formart1DateString+"]下有"+sameAdjustmentDateAndLtCreateDateInfo.size()+"条早先创建并审批通过的记录,当该记录提交审批通过后,会将其它记录置为驳回";
return ResponseObj.success(message, sameAdjustmentDateAndLtCreateDateInfo);
String message = "检查到该场站生效日期为["+formart1DateString+"]下有"+sameAdjustmentDateAndLtCreateDateInfo.size()+"条早先创建并审批通过的记录,当该记录提交审批通过后,会将其它记录置为失效";
return ResponseObj.error(message, sameAdjustmentDateAndLtCreateDateInfo);
}
return ResponseObj.success();
}
/**
* 数据相同时候的提示
* @return
*/
@GetMapping("getSameMessageById")
public ResponseObj getSameById(@RequestParam("id") UUID id){
KObject byId = priceAdjustmentService.getById(id);
List<KObject> sameAdjustmentDateAndLtCreateDateInfo = priceAdjustmentService.getSameAdjustmentDateAndLtCreateDateInfo(byId.getDate("adjustmentDate"),byId.getDate("createTime") , byId.get("station").getUuid("Id"));
if(CollectionUtils.isEmpty(sameAdjustmentDateAndLtCreateDateInfo)){
String formart1DateString = DateTimeUtils.getFormart1DateString(byId.getDate("adjustmentDate"));
String message = "检查到该场站生效日期为["+formart1DateString+"]下有"+sameAdjustmentDateAndLtCreateDateInfo.size()+"条早先创建并审批通过的记录,当该记录提交审批通过后,会将其它记录置为失效";
return ResponseObj.error(message, sameAdjustmentDateAndLtCreateDateInfo);
}
return ResponseObj.success();
}
......
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