Commit ff8722e4 by 高晓磊

销售记录同步地磅信息时,同时同步到运输记录

parent d91edc45
......@@ -3,7 +3,13 @@ package com.xyst.dinas.sales.constant;
public interface SalesRecordConstant {
public static String ENTITY = "com.xyst.dinas.sales.datamodel.SalesRecord";
//派单表实体
public static String VEHICLE_DISPATCH_ENTITY = "com.xyst.dinas.transport.datamodel.VehicleDispatch";
//运输记录实体
public static String TRANSPORT_RECORD_ENTITY = "com.xyst.dinas.transport.datamodel.TransportRecord";
//运输车辆实体
public static String TRANSPORT_VEHICLE_ENTITY = "com.xyst.dinas.transport.datamodel.TransportVehicle";
//销售台账ID
public static final String ID = "id";
//创建时间
......
......@@ -9,9 +9,11 @@ import java.util.UUID;
import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass;
import com.beecode.inz.common.BaseConstants;
import com.beecode.inz.common.util.DateTimeUtils;
import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.sales.enumeration.TransportModeEnum;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
......@@ -240,8 +242,9 @@ public class SalesPlanDao {
dinasTypeDao.addRegionalCompanyFilter(detachedCriteria);
detachedCriteria.createAlias("planningCycle", "planningCycle");
detachedCriteria.createAlias("contract", "contract");
detachedCriteria.add(Restrictions.le("planningCycle.startTime", date));
detachedCriteria.add(Restrictions.gt("planningCycle.endTime", date));
//获取本周和下周时间段内的临时销售计划
detachedCriteria.add(Restrictions.le("planningCycle.startTime", DateTimeUtils.getWeekStart(date,0)));
detachedCriteria.add(Restrictions.gt("planningCycle.endTime", DateTimeUtils.getWeekEnd(date,1)));
detachedCriteria.add(Restrictions.eq(SalesPlanConstant.APPROVE_STATE, 1));
detachedCriteria.add(Restrictions.eq("transportMode", TransportModeEnum.DELIVERY.name()));
detachedCriteria.setProjection(Projections.distinct(Projections.property("contract.purchaseSandUnit")));
......
......@@ -12,4 +12,8 @@ public interface SalesRecordDao {
UUID insert(KObject entity);
List<Map<String, Object>> getAllSalesRecordByDate(String dateNow,String dateBefore);
void saveAstTransportRecord(KObject salesRecord, KObject cardInfo);
KObject findCardByPlateNumber(String string, KObject kObject);
}
package com.xyst.dinas.sales.internal.dao;
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.*;
import javax.persistence.Tuple;
import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass;
import com.beecode.inz.common.BaseConstants;
import org.apache.commons.collections.CollectionUtils;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.hibernate.query.Query;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.orm.hibernate5.HibernateOperations;
......@@ -67,4 +67,31 @@ public class SalesRecordDaoImpl implements SalesRecordDao, SalesRecordConstant {
}
});
}
}
@Override
public void saveAstTransportRecord(KObject salesRecord, KObject cardInfo) {
KClass bean = Amino.getStaticMetadataContext().getBean(TRANSPORT_RECORD_ENTITY, KClass.class);
KObject kObject = bean.newInstance();
kObject.set(BaseConstants.ID,UUID.randomUUID());
kObject.set(BaseConstants.DEL,false);
kObject.set(BaseConstants.DISCARD,false);
kObject.set(BaseConstants.CREATE_TIME,new Date());
kObject.set(REGIONALCOMPANY,salesRecord.get(REGIONALCOMPANY));
kObject.set("saleRecord",salesRecord);
kObject.set("transportVehicle",cardInfo);
kObject.set("confirmStatus",0);
}
@Override
public KObject findCardByPlateNumber(String string, KObject kObject) {
KClass bean = Amino.getStaticMetadataContext().getBean(TRANSPORT_VEHICLE_ENTITY, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
detachedCriteria.add(Restrictions.eq("plateNumber", string));
detachedCriteria.add(Restrictions.eq(REGIONALCOMPANY+"."+BaseConstants.ID, kObject.getUuid(BaseConstants.ID)));
List<?> byCriteria = template.findByCriteria(detachedCriteria);
if(CollectionUtils.isNotEmpty(byCriteria)&&byCriteria.size()>0){
return (KObject) byCriteria.get(0);
}
return null;
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import java.util.UUID;
import javax.transaction.Transactional;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
......@@ -218,8 +219,11 @@ public class SalesRecordServiceImpl implements SalesRecordService {
inventoryService.modifyInventory(params.toString(), false, true);
}
UUID salesRecordId = salesRecordDao.insert(salesRecord);
salesRecordIdList.add(salesRecordId);
//将地磅记录同时保存到运输记录,需要判断是配送还是自提,或者直接根据车牌号判断,如果非配送的车牌应该在派单中没有记录
saveAstTransportRecord(salesRecord);
salesRecordIdList.add(salesRecordId);
}
} catch (SyncException e) {
state = "failure";
throw new SyncException("销售台账信息存储报出错:" + e.getMessage());
......@@ -227,7 +231,22 @@ public class SalesRecordServiceImpl implements SalesRecordService {
return state;
}
private String dataExistenceCheck(String name, String value) {
private void saveAstTransportRecord(KObject salesRecord) {
String salesRecordCard = salesRecord.getString(SalesRecordConstant.CARINFO);
if(StringUtils.isEmpty(salesRecordCard)){
return;
}
//根据车牌查询是否有对应的派单信息, 如果没有是否还需要同步?
//就算没有查到派单也可以同步,只是脏数据
//查询运输车辆是否维护过该车牌,如果还没有那就不要这条记录了,可能是散户的
KObject kObject = salesRecordDao.findCardByPlateNumber(salesRecordCard,salesRecord.get(SalesRecordConstant.REGIONALCOMPANY));
if(kObject==null){
return;
}
salesRecordDao.saveAstTransportRecord(salesRecord,kObject);
}
private String dataExistenceCheck(String name, String value) {
String result = null;
if (null != value && "" != value) {
result = value;
......
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