Commit 76f82f5d by 高晓磊

同步销售记录

parent f5988d6d
...@@ -11,6 +11,10 @@ public interface NeedPlanConstant { ...@@ -11,6 +11,10 @@ public interface NeedPlanConstant {
*/ */
String NEED_PLAN_ENTITY = "com.xyst.dinas.sales.datamodel.NeedPlan"; String NEED_PLAN_ENTITY = "com.xyst.dinas.sales.datamodel.NeedPlan";
/** /**
* 子表实体名
*/
String NEED_PLAN_DETAIL_ENTITY = "com.xyst.dinas.sales.datamodel.NeedPlanAssociatedNeedPlanDetail";
/**
* 需用计划量 * 需用计划量
*/ */
String needPlanAmount = "needPlanAmount"; String needPlanAmount = "needPlanAmount";
......
...@@ -30,5 +30,5 @@ public interface NeedPlanDao { ...@@ -30,5 +30,5 @@ public interface NeedPlanDao {
List<KObject> getByCarAndPlanningCycle(String carNum, KObject planningCycleObj); List<KObject> getByCarAndPlanningCycle(String carNum, KObject planningCycleObj);
KObject queryDetailById(UUID fromString);
} }
...@@ -44,6 +44,13 @@ public class SalesPlanDao { ...@@ -44,6 +44,13 @@ public class SalesPlanDao {
return (KObject) template.get(SalesPlanConstant.ENTITY, id); return (KObject) template.get(SalesPlanConstant.ENTITY, id);
} }
public KObject loadDetail(UUID sealDetailId) {
return (KObject) template.get(SalesPlanConstant.ENTITY_DETAIL, sealDetailId);
}
public KObject loadTempDetail(UUID sealDetailId) {
return (KObject) template.get(SalesPlanConstant.ENTITY_TEMP_DETAIL, sealDetailId);
}
public UUID create(KObject kObject) { public UUID create(KObject kObject) {
return (UUID) template.save(kObject.getType().getName(), kObject); return (UUID) template.save(kObject.getType().getName(), kObject);
} }
...@@ -356,5 +363,33 @@ public class SalesPlanDao { ...@@ -356,5 +363,33 @@ public class SalesPlanDao {
detachedCriteria.add(Restrictions.like("carNumber", "%"+carNum+"%")); detachedCriteria.add(Restrictions.like("carNumber", "%"+carNum+"%"));
return (List<KObject>) template.findByCriteria(detachedCriteria); return (List<KObject>) template.findByCriteria(detachedCriteria);
} }
public void updateSalesPlanTempAmount(String salePlanTempId, BigDecimal dealamount) {
KObject o =(KObject) template.get(SalesPlanConstant.ENTITY_TEMP_DETAIL, UUID.fromString(salePlanTempId));
if(o==null||o.isNull()||o.isEmpty()){
return;
}
BigDecimal actualSaleAmount = o.getBigDecimal("actualSaleAmount");
if(actualSaleAmount==null){
actualSaleAmount=BigDecimal.ZERO;
}
o.set("actualSaleAmount",actualSaleAmount.add(dealamount));
template.update(o);
}
public void updateSalesPlanDetailAmount(String salePlanDetailId, Double dealAmount) {
KObject o =(KObject) template.get(SalesPlanConstant.ENTITY_DETAIL, UUID.fromString(salePlanDetailId));
if(o==null||o.isNull()||o.isEmpty()){
return;
}
BigDecimal actualSaleAmount = o.getBigDecimal("actualSaleAmount");
if(actualSaleAmount==null){
actualSaleAmount=BigDecimal.ZERO;
}
o.set("actualSaleAmount",actualSaleAmount.add(BigDecimal.valueOf(dealAmount)));
template.update(o);
}
} }
...@@ -8,6 +8,7 @@ import com.beecode.amino.core.Amino; ...@@ -8,6 +8,7 @@ import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass; import com.beecode.bcp.type.KClass;
import com.xyst.dinas.biz.dao.DinasTypeDao; import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.biz.enumeration.SubmitStateEnum; import com.xyst.dinas.biz.enumeration.SubmitStateEnum;
import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.enumeration.TransportModeEnum; import com.xyst.dinas.sales.enumeration.TransportModeEnum;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.Session; import org.hibernate.Session;
...@@ -170,4 +171,9 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant { ...@@ -170,4 +171,9 @@ public class NeedPlanDaoImpl implements NeedPlanDao, NeedPlanConstant {
return (List<KObject>)template.findByCriteria(detachedCriteria); return (List<KObject>)template.findByCriteria(detachedCriteria);
} }
@Override
public KObject queryDetailById(UUID fromString) {
return (KObject) template.get(NEED_PLAN_DETAIL_ENTITY, fromString);
}
} }
...@@ -45,8 +45,6 @@ public class NeedPlanServiceImpl implements NeedPlanService { ...@@ -45,8 +45,6 @@ public class NeedPlanServiceImpl implements NeedPlanService {
if (needPlanDetailsList.size() > 0) { if (needPlanDetailsList.size() > 0) {
kObject = needPlanDetailsList.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId)).findAny().orElse(null); kObject = needPlanDetailsList.stream().filter(detail -> detail.get("dinasType").getUuid("id").equals(dinasTypeId)).findAny().orElse(null);
} }
Map<String, Object> map = new HashMap<>();
map.put("needPlanAmount", kObject);
return kObject; return kObject;
} }
......
...@@ -613,7 +613,7 @@ public class SalesPlanServiceImpl implements SalesPlanService { ...@@ -613,7 +613,7 @@ public class SalesPlanServiceImpl implements SalesPlanService {
//需用计划id //需用计划id
stringObjectHashMap.put("needPlanId", saleTempDetail.getUuid("id")); stringObjectHashMap.put("needPlanId", saleTempDetail.getUuid("id"));
//需用计划砂石id //需用计划砂石id
stringObjectHashMap.put("needDinasTypeId", saleTempDetail.getUuid("id")); stringObjectHashMap.put("needPlanDetailId", saleTempDetail.getUuid("id"));
//本周期已拉取量 //本周期已拉取量
stringObjectHashMap.put("effectiveSale", saleTempDetail.getBigDecimal("actualSaleAmount")); stringObjectHashMap.put("effectiveSale", saleTempDetail.getBigDecimal("actualSaleAmount"));
//本周期分配量 //本周期分配量
...@@ -674,7 +674,7 @@ public class SalesPlanServiceImpl implements SalesPlanService { ...@@ -674,7 +674,7 @@ public class SalesPlanServiceImpl implements SalesPlanService {
//需用计划id //需用计划id
stringObjectHashMap.put("needPlanId", plan.getUuid("id")); stringObjectHashMap.put("needPlanId", plan.getUuid("id"));
//需用计划砂石id //需用计划砂石id
stringObjectHashMap.put("needDinasTypeId", needPlanDetail.getUuid("id")); stringObjectHashMap.put("needPlanDetailId", needPlanDetail.getUuid("id"));
//本周期已拉取量 //本周期已拉取量
stringObjectHashMap.put("effectiveSale", needPlanDetail.getBigDecimal("effectiveSale")); stringObjectHashMap.put("effectiveSale", needPlanDetail.getBigDecimal("effectiveSale"));
//本周期分配量 //本周期分配量
......
...@@ -75,19 +75,13 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -75,19 +75,13 @@ public class SalesRecordServiceImpl implements SalesRecordService {
@Transactional @Transactional
@Override @Override
public String saveSalesRecordService(List<SalesRecordInfo> salesRecordInfoList, KObject station) { public String saveSalesRecordService(SalesRecordInfo salesRecordInfo, KObject station) {
String state = "success";
try { try {
Date thentime = new Date(); Date thentime = new Date();
List<UUID> salesRecordIdList = new ArrayList<>();
for (SalesRecordInfo salesRecordInfo : salesRecordInfoList) {
// 获取砂石类型 // 获取砂石类型
KObject dinasType = null; KObject dinasType = null;
dinasType = dinasTypeDao.load(UUID.fromString(salesRecordInfo.getDinasType())); dinasType = dinasTypeDao.load(UUID.fromString(salesRecordInfo.getDinasTypeId()));
KObject regionalCompany = null; KObject regionalCompany = null;
//获取区域公司 //获取区域公司
regionalCompany = station.get("regionalCompany"); regionalCompany = station.get("regionalCompany");
...@@ -105,74 +99,75 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -105,74 +99,75 @@ public class SalesRecordServiceImpl implements SalesRecordService {
salesRecord.set(SalesRecordConstant.SYNCTIME, thentime); salesRecord.set(SalesRecordConstant.SYNCTIME, thentime);
salesRecord.set(SalesRecordConstant.DEALBILLCODE, salesRecordInfo.getDealBillCode()); salesRecord.set(SalesRecordConstant.DEALBILLCODE, salesRecordInfo.getDealBillCode());
salesRecord.set(SalesRecordConstant.CARINFO, salesRecordInfo.getCarInfo()); salesRecord.set(SalesRecordConstant.CARINFO, salesRecordInfo.getCarInfo());
salesRecord.set(SalesRecordConstant.DEALAMOUNT, salesRecordInfo.getDealAmount());
salesRecord.set(SalesRecordConstant.PRICE, salesRecordInfo.getPrice()); salesRecord.set(SalesRecordConstant.PRICE, salesRecordInfo.getPrice());
salesRecord.set(SalesRecordConstant.PAYMENTSOURCE, salesRecordInfo.getPaymentSource()); salesRecord.set(SalesRecordConstant.PAYMENTSOURCE, salesRecordInfo.getPaymentSource());
salesRecord.set(SalesRecordConstant.TRANSPORT_TYPE, salesRecordInfo.getTransportType()); salesRecord.set(SalesRecordConstant.TRANSPORT_TYPE, salesRecordInfo.getTransportType());
salesRecord.set(SalesRecordConstant.SALE_TYPE, salesRecordInfo.getSaleType()); Integer saleType = salesRecordInfo.getSaleType();
salesRecord.set(SalesRecordConstant.SALE_TYPE, saleType);
salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany); salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany);
salesRecord.set(SalesRecordConstant.DINASTYPE, dinasType); salesRecord.set(SalesRecordConstant.DINASTYPE, dinasType);
salesRecord.set(SalesRecordConstant.CARINFO, salesRecordInfo.getCarInfo()); salesRecord.set(SalesRecordConstant.CARINFO, salesRecordInfo.getCarInfo());
//如果是散客则全部新增 //如果是散客则全部新增
if (2 == salesRecordInfo.getSaleType()) { if (2 == saleType) {
salesRecordInfo.setCustomerType(CustomerTypeEnum.RetailInfo.name()); salesRecord.set(SalesRecordConstant.CUSTOMERTYPE,CustomerTypeEnum.RetailInfo.name());
retailInfoService.create(station, dinasType, salesRecordInfo.getRetailName(), salesRecordInfo.getRetailIdNum(), salesRecordInfo.getCarInfo(), salesRecordInfo.getDealAmount(), salesRecordInfo.getAmount()); retailInfoService.create(station, dinasType, salesRecordInfo.getRetailName(), salesRecordInfo.getCarInfo(), salesRecordInfo.getCarInfo(), salesRecordInfo.getDealAmount(), salesRecordInfo.getAmount());
} else { } else {
//如果不为2则必定有合同 项目 购砂单位 区域公司 //如果不为2则必定有合同 项目 购砂单位 区域公司
salesRecordInfo.setCustomerType(CustomerTypeEnum.PurchaseSandCompany.name()); salesRecord.set(SalesRecordConstant.CUSTOMERTYPE,CustomerTypeEnum.PurchaseSandCompany.name());
// 获取项目KObject // 获取项目KObject
KObject project = null; KObject project;
KObject contract = null; KObject contract;
KObject purchaseSandCompany = null; KObject purchaseSandCompany;
contract = contractDao.load(UUID.fromString(salesRecordInfo.getContract())); contract = contractDao.load(UUID.fromString(salesRecordInfo.getContractId()));
// 获取合同KObject // 获取合同KObject
project = contract.get("project"); project = contract.get("project");
// 获取区域公司KObject // 获取区域公司KObject
regionalCompany = contract.get("regionalCompany"); regionalCompany = contract.get("regionalCompany");
// 获取购砂单位KObject // 获取购砂单位KObject
purchaseSandCompany = contract.get("purchaseSandUnit"); purchaseSandCompany = contract.get("purchaseSandUnit");
// 获取销售台账Kobject
salesRecord.set(SalesRecordConstant.PROJECT, project); salesRecord.set(SalesRecordConstant.PROJECT, project);
salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany); salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany);
salesRecord.set(SalesRecordConstant.CONTRACT, contract); salesRecord.set(SalesRecordConstant.CONTRACT, contract);
if (CustomerTypeEnum.PurchaseSandCompany.name().equals(salesRecordInfo.getCustomerType())) { salesRecord.set(SalesRecordConstant.PURCHASESANDCOMPANY, purchaseSandCompany);
salesRecord.set(SalesRecordConstant.PURCHASESANDCOMPANY, purchaseSandCompany);
}
salesRecord.set(SalesRecordConstant.DEALAMOUNT,salesRecordInfo.getDealAmount() == null ? BigDecimal.ZERO: BigDecimal.valueOf(salesRecordInfo.getDealAmount())); salesRecord.set(SalesRecordConstant.DEALAMOUNT,salesRecordInfo.getDealAmount() == null ? BigDecimal.ZERO: BigDecimal.valueOf(salesRecordInfo.getDealAmount()));
salesRecord.set(SalesRecordConstant.DISCARD, false); salesRecord.set(SalesRecordConstant.DISCARD, false);
salesRecord.set(SalesRecordConstant.DEL, false); salesRecord.set(SalesRecordConstant.DEL, false);
BigDecimal DEALAMOUNT = BigDecimal.ZERO
.subtract(BigDecimal.valueOf(salesRecord.getDouble(SalesRecordConstant.DEALAMOUNT))); BigDecimal dealAmount = BigDecimal.ZERO.subtract(BigDecimal.valueOf(salesRecord.getDouble(SalesRecordConstant.DEALAMOUNT)));
BigDecimal AMOUNT; BigDecimal amount;
if (PayMentSourceEnum.Advance.name().equals(salesRecordInfo.getPaymentSource())) { if (0==salesRecordInfo.getPaymentSource()) {
AMOUNT = BigDecimal.ZERO.subtract(BigDecimal.valueOf(salesRecord.getDouble(SalesRecordConstant.AMOUNT))); amount = BigDecimal.ZERO.subtract(BigDecimal.valueOf(salesRecord.getDouble(SalesRecordConstant.AMOUNT)));
} else { } else {
AMOUNT = BigDecimal.ZERO; amount = BigDecimal.ZERO;
} }
// 更新合同子表合同砂石余量(吨)-更新合同表付款余额、销售总量信息 // 更新合同子表合同砂石余量(吨)-更新合同表付款余额、销售总量信息
boolean flag = contractService.modifyInventory(UUID.fromString(salesRecordInfo.getContract()), contractService.modifyInventory(UUID.fromString(salesRecordInfo.getContractId()),
UUID.fromString(salesRecordInfo.getDinasType()), DEALAMOUNT, AMOUNT); UUID.fromString(salesRecordInfo.getDinasTypeId()), dealAmount, amount);
// 更新销售计划
UUID planningCycleId = planningCycleService
.getPlanningCycleObjBySum(regionalCompany.getString("planningCycle"), salesRecordInfo.getDealTime()); //根据销售类型判断修改需用计划还是临时销售计划
KObject salesPlan = entityExistenceCheck("销售计划", salesPlanDao.querySalesPlanByPlan( //
UUID.fromString(salesRecordInfo.getRegionalCompany()), planningCycleId), false); if(saleType==0){
BigDecimal actualSaleTotalAmount = salesPlan.get("actualSaleTotalAmount") == null ? BigDecimal.ZERO //为0时是临时销售计划,salePlanId存储的值也是临时销售计划的值
: new BigDecimal(salesPlan.getInt("actualSaleTotalAmount")); String salePlanTempId = salesRecordInfo.getSalePlanId();
salesPlan.set("actualSaleTotalAmount", actualSaleTotalAmount.subtract(DEALAMOUNT)); salesPlanDao.updateSalesPlanTempAmount(salePlanTempId,dealAmount);
salesPlanDao.update(salesPlan); }else if(saleType==1) {
boolean flag1 = salesPlanDao.updateSalesPlanAmount(salesPlan, dinasType.getUuid("id"), contract.getUuid("id"), // 为1时是需用计划和销售计划
project.getUuid("id"), purchaseSandCompany.getUuid("id"), DEALAMOUNT); KObject salesPlan = salesPlanDao.load(UUID.fromString(salesRecordInfo.getSalePlanId()));
KObject needPlanAmount = entityExistenceCheck("需用计划", BigDecimal actualSaleTotalAmount = salesPlan.get("actualSaleTotalAmount") == null ? BigDecimal.ZERO: (salesPlan.getBigDecimal("actualSaleTotalAmount"));
needPlanServiceImpl.queryNeedPlanAmountByDinasType(planningCycleId, contract.getUuid("id"), salesPlan.set("actualSaleTotalAmount", actualSaleTotalAmount.subtract(dealAmount));
dinasType.getUuid("id")), false); salesPlanDao.update(salesPlan);
if (needPlanAmount != null) { salesPlanDao.updateSalesPlanDetailAmount(salesRecordInfo.getSalePlanDetailId(),salesRecordInfo.getDealAmount());
BigDecimal effectiveSale = needPlanAmount.get("effectiveSale") == null ? BigDecimal.ZERO KObject needPlanDetail = needPlanDao.queryDetailById(UUID.fromString(salesRecordInfo.getNeedPlanDetailId()));
: new BigDecimal(needPlanAmount.getInt("needPlanAmount")); if (needPlanDetail != null) {
needPlanAmount.set("effectiveSale", effectiveSale.subtract(DEALAMOUNT)); BigDecimal effectiveSale = needPlanDetail.get("effectiveSale") == null ? BigDecimal.ZERO : needPlanDetail.getBigDecimal("effectiveSale");
needPlanDao.update(needPlanAmount); needPlanDetail.set("effectiveSale", effectiveSale.subtract(dealAmount));
needPlanDao.update(needPlanDetail);
}
} }
} }
// 此处为Jason格式,多重嵌套 // 此处为Jason格式,多重嵌套
...@@ -196,14 +191,19 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -196,14 +191,19 @@ public class SalesRecordServiceImpl implements SalesRecordService {
inventoryService.modifyInventory(params.toString(), false, true); inventoryService.modifyInventory(params.toString(), false, true);
} }
UUID salesRecordId = salesRecordDao.insert(salesRecord); UUID salesRecordId = salesRecordDao.insert(salesRecord);
//将地磅记录同时保存到运输记录,需要判断是配送还是自提,或者直接根据车牌号判断,如果非配送的车牌应该在派单中没有记录
if(salesRecordInfo.getTransportType()==1){
//修改运输单的值
// updateTransport();
//将地磅记录同时保存到运输记录
saveAstTransportRecord(salesRecord); saveAstTransportRecord(salesRecord);
salesRecordIdList.add(salesRecordId);
} }
return salesRecordId.toString();
} catch (Exception e) { } catch (Exception e) {
throw new SyncException("销售台账信息存储报出错:" + e.getMessage()); throw new SyncException("销售台账信息存储报出错:" + e.getMessage());
} }
return state;
} }
private void saveAstTransportRecord(KObject salesRecord) { private void saveAstTransportRecord(KObject salesRecord) {
...@@ -223,7 +223,7 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -223,7 +223,7 @@ public class SalesRecordServiceImpl implements SalesRecordService {
private String dataExistenceCheck(String name, String value) { private String dataExistenceCheck(String name, String value) {
String result = null; String result = null;
if (null != value && "" != value) { if (null != value && !"".equals(value)) {
result = value; result = value;
} else { } else {
throw new SyncException("[" + name + "]信息为空!请确认"); throw new SyncException("[" + name + "]信息为空!请确认");
...@@ -442,8 +442,6 @@ public class SalesRecordServiceImpl implements SalesRecordService { ...@@ -442,8 +442,6 @@ public class SalesRecordServiceImpl implements SalesRecordService {
salesRecord.set(SalesRecordConstant.CREATETIME, new Date()); salesRecord.set(SalesRecordConstant.CREATETIME, new Date());
salesRecord.set(SalesRecordConstant.MODIFYTIME, new Date()); salesRecord.set(SalesRecordConstant.MODIFYTIME, new Date());
salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany); salesRecord.set(SalesRecordConstant.REGIONALCOMPANY, regionalCompany);
// salesRecord.set(SalesRecordConstant.PROJECT, null);
// salesRecord.set(SalesRecordConstant.CONTRACT, null);
salesRecord.set(SalesRecordConstant.RETAILINFO, retailInfo); salesRecord.set(SalesRecordConstant.RETAILINFO, retailInfo);
salesRecord.set(SalesRecordConstant.STATION, station); salesRecord.set(SalesRecordConstant.STATION, station);
salesRecord.set(SalesRecordConstant.PRODUCTIONLINE, productionLine); salesRecord.set(SalesRecordConstant.PRODUCTIONLINE, productionLine);
......
...@@ -14,9 +14,9 @@ public interface SalesRecordService { ...@@ -14,9 +14,9 @@ public interface SalesRecordService {
* 主要用于外部接口调用 * 主要用于外部接口调用
* @param salesRecordList 销售台账List * @param salesRecordList 销售台账List
* @param station * @param station
* @return 返回存储状态 failure/失败 success/成功 * @return
*/ */
String saveSalesRecordService(List<SalesRecordInfo> salesRecordList, KObject station); String saveSalesRecordService(SalesRecordInfo salesRecordList, KObject station);
HashMap<String,Object> qualityReportExcelImport(MultipartFile file); HashMap<String,Object> qualityReportExcelImport(MultipartFile file);
} }
...@@ -2,49 +2,49 @@ package com.xyst.dinas.sales.web.info; ...@@ -2,49 +2,49 @@ package com.xyst.dinas.sales.web.info;
import java.util.Date; import java.util.Date;
/**
* @author asdad
* 销售记录表
*/
public class SalesRecordInfo { public class SalesRecordInfo {
/**
* 修改时间
*/
private String modifyTime;
/** /**
* 项目 * 项目
*/ */
private String project; private String projectId;
/** /**
* 区域公司 * 区域公司
*/ */
private String regionalCompany; private String regionalCompanyId;
/** /**
* 合同 * 合同
*/ */
private String contract; private String contractId;
/** /**
* 购砂单位 * 购砂单位,只有saleType为1时有值
*/ */
private String purchaseSandCompany; private String purchaseSandCompanyId;
/** /**
* 场站 * 场站
*/ */
private String station; private String stationId;
/**
* 散户名称
*/
private String retailName;
/** /**
* 散户身份证号 * 砂石种类
*/ */
private String retailIdNum; private String dinasTypeId;
/** /**
* 砂石种类 * 散户名称
*/ */
private String dinasType; private String retailName;
/** /**
* 客户类型 * 客户类型 0购砂单位 1散客
*/ */
private String customerType; private Integer customerType;
/** /**
* 销售时间 * 销售时间
*/ */
...@@ -69,7 +69,6 @@ public class SalesRecordInfo { ...@@ -69,7 +69,6 @@ public class SalesRecordInfo {
* 皮重 * 皮重
*/ */
private String tareWeight; private String tareWeight;
/** /**
* 毛重 * 毛重
*/ */
...@@ -84,25 +83,28 @@ public class SalesRecordInfo { ...@@ -84,25 +83,28 @@ public class SalesRecordInfo {
*/ */
private String tareWeightPerson; private String tareWeightPerson;
/** /**
* 计划周期 * 周期id
*/ */
private String planningCycle; private String planningCycleId;
/** /**
* 需用计划id * saleType为1是需用计划id,saleType不为1时无用
*/ */
private String needPlan; private String needPlanId;
/** /**
* 销售计划id * saleType为1是需用计划子表id,saleType不为1时无用
*/ */
private String salePlan; private String needPlanDetailId;
/** /**
* 临时销售计划id * saleType为1是销售计划id,saleType为0是临时销售计划id
*/ */
private String salePlanTemp; private String salePlanId;
/**
* saleType为1是销售计划id,saleType为0是临时销售计划id
*/
private String salePlanDetailId;
/** /**
* 销售数量 * 销售数量
...@@ -117,9 +119,9 @@ public class SalesRecordInfo { ...@@ -117,9 +119,9 @@ public class SalesRecordInfo {
*/ */
private Double amount; private Double amount;
/** /**
* 付款来源 * 付款来源,0为预付款,1为非预付款
*/ */
private String paymentSource; private Integer paymentSource;
/** /**
* 销售单号 * 销售单号
*/ */
...@@ -136,60 +138,52 @@ public class SalesRecordInfo { ...@@ -136,60 +138,52 @@ public class SalesRecordInfo {
private Integer saleType; private Integer saleType;
public String getGrossWeight() { public String getProjectId() {
return grossWeight; return projectId;
}
public void setGrossWeight(String grossWeight) {
this.grossWeight = grossWeight;
}
public String getModifyTime() {
return modifyTime;
} }
public void setModifyTime(String modifyTime) { public void setProjectId(String projectId) {
this.modifyTime = modifyTime; this.projectId = projectId;
} }
public String getProject() { public String getRegionalCompanyId() {
return project; return regionalCompanyId;
} }
public void setProject(String project) { public void setRegionalCompanyId(String regionalCompanyId) {
this.project = project; this.regionalCompanyId = regionalCompanyId;
} }
public String getRegionalCompany() { public String getContractId() {
return regionalCompany; return contractId;
} }
public void setRegionalCompany(String regionalCompany) { public void setContractId(String contractId) {
this.regionalCompany = regionalCompany; this.contractId = contractId;
} }
public String getContract() { public String getPurchaseSandCompanyId() {
return contract; return purchaseSandCompanyId;
} }
public void setContract(String contract) { public void setPurchaseSandCompanyId(String purchaseSandCompanyId) {
this.contract = contract; this.purchaseSandCompanyId = purchaseSandCompanyId;
} }
public String getPurchaseSandCompany() { public String getStationId() {
return purchaseSandCompany; return stationId;
} }
public void setPurchaseSandCompany(String purchaseSandCompany) { public void setStationId(String stationId) {
this.purchaseSandCompany = purchaseSandCompany; this.stationId = stationId;
} }
public String getStation() { public String getDinasTypeId() {
return station; return dinasTypeId;
} }
public void setStation(String station) { public void setDinasTypeId(String dinasTypeId) {
this.station = station; this.dinasTypeId = dinasTypeId;
} }
public String getRetailName() { public String getRetailName() {
...@@ -200,31 +194,22 @@ public class SalesRecordInfo { ...@@ -200,31 +194,22 @@ public class SalesRecordInfo {
this.retailName = retailName; this.retailName = retailName;
} }
public String getRetailIdNum() { public Integer getCustomerType() {
return retailIdNum; return customerType;
}
public void setRetailIdNum(String retailIdNum) {
this.retailIdNum = retailIdNum;
}
public String getDinasType() {
return dinasType;
} }
public void setDinasType(String dinasType) { public void setCustomerType(Integer customerType) {
this.dinasType = dinasType; this.customerType = customerType;
} }
public String getCustomerType() { public Date getDealTime() {
return customerType; return dealTime;
} }
public void setCustomerType(String customerType) { public void setDealTime(Date dealTime) {
this.customerType = customerType; this.dealTime = dealTime;
} }
public String getCarInfo() { public String getCarInfo() {
return carInfo; return carInfo;
} }
...@@ -233,140 +218,147 @@ public class SalesRecordInfo { ...@@ -233,140 +218,147 @@ public class SalesRecordInfo {
this.carInfo = carInfo; this.carInfo = carInfo;
} }
public Double getDealAmount() { public Date getGrossWeightTime() {
return dealAmount; return grossWeightTime;
} }
public void setDealAmount(Double dealAmount) { public void setGrossWeightTime(Date grossWeightTime) {
this.dealAmount = dealAmount; this.grossWeightTime = grossWeightTime;
} }
public Double getPrice() { public Date getTareWeightTime() {
return price; return tareWeightTime;
} }
public void setPrice(Double price) { public void setTareWeightTime(Date tareWeightTime) {
this.price = price; this.tareWeightTime = tareWeightTime;
} }
public Double getAmount() { public String getTareWeight() {
return amount; return tareWeight;
} }
public void setAmount(Double amount) { public void setTareWeight(String tareWeight) {
this.amount = amount; this.tareWeight = tareWeight;
} }
public String getPaymentSource() { public String getGrossWeight() {
return paymentSource; return grossWeight;
} }
public void setPaymentSource(String paymentSource) { public void setGrossWeight(String grossWeight) {
this.paymentSource = paymentSource; this.grossWeight = grossWeight;
} }
public String getDealBillCode() { public String getGrossWeightPerson() {
return dealBillCode; return grossWeightPerson;
} }
public void setDealBillCode(String dealBillCode) { public void setGrossWeightPerson(String grossWeightPerson) {
this.dealBillCode = dealBillCode; this.grossWeightPerson = grossWeightPerson;
} }
public String getTareWeightPerson() {
return tareWeightPerson;
}
public String getTareWeight() { public void setTareWeightPerson(String tareWeightPerson) {
return tareWeight; this.tareWeightPerson = tareWeightPerson;
} }
public void setTareWeight(String tareWeight) { public String getPlanningCycleId() {
this.tareWeight = tareWeight; return planningCycleId;
} }
public String getGrossWeightPerson() { public void setPlanningCycleId(String planningCycleId) {
return grossWeightPerson; this.planningCycleId = planningCycleId;
} }
public void setGrossWeightPerson(String grossWeightPerson) { public String getNeedPlanId() {
this.grossWeightPerson = grossWeightPerson; return needPlanId;
} }
public String getTareWeightPerson() { public void setNeedPlanId(String needPlanId) {
return tareWeightPerson; this.needPlanId = needPlanId;
} }
public void setTareWeightPerson(String tareWeightPerson) { public String getNeedPlanDetailId() {
this.tareWeightPerson = tareWeightPerson; return needPlanDetailId;
} }
public String getPlanningCycle() { public void setNeedPlanDetailId(String needPlanDetailId) {
return planningCycle; this.needPlanDetailId = needPlanDetailId;
} }
public void setPlanningCycle(String planningCycle) { public String getSalePlanId() {
this.planningCycle = planningCycle; return salePlanId;
} }
public String getNeedPlan() { public void setSalePlanId(String salePlanId) {
return needPlan; this.salePlanId = salePlanId;
} }
public void setNeedPlan(String needPlan) { public String getSalePlanDetailId() {
this.needPlan = needPlan; return salePlanDetailId;
} }
public String getSalePlan() { public void setSalePlanDetailId(String salePlanDetailId) {
return salePlan; this.salePlanDetailId = salePlanDetailId;
} }
public void setSalePlan(String salePlan) { public Double getDealAmount() {
this.salePlan = salePlan; return dealAmount;
} }
public String getSalePlanTemp() { public void setDealAmount(Double dealAmount) {
return salePlanTemp; this.dealAmount = dealAmount;
} }
public void setSalePlanTemp(String salePlanTemp) { public Double getPrice() {
this.salePlanTemp = salePlanTemp; return price;
} }
public Integer getTransportType() { public void setPrice(Double price) {
return transportType; this.price = price;
} }
public void setTransportType(Integer transportType) { public Double getAmount() {
this.transportType = transportType; return amount;
} }
public Integer getSaleType() { public void setAmount(Double amount) {
return saleType; this.amount = amount;
} }
public void setSaleType(Integer saleType) { public Integer getPaymentSource() {
this.saleType = saleType; return paymentSource;
} }
public Date getDealTime() { public void setPaymentSource(Integer paymentSource) {
return dealTime; this.paymentSource = paymentSource;
} }
public void setDealTime(Date dealTime) { public String getDealBillCode() {
this.dealTime = dealTime; return dealBillCode;
} }
public Date getGrossWeightTime() { public void setDealBillCode(String dealBillCode) {
return grossWeightTime; this.dealBillCode = dealBillCode;
} }
public void setGrossWeightTime(Date grossWeightTime) { public Integer getTransportType() {
this.grossWeightTime = grossWeightTime; return transportType;
} }
public Date getTareWeightTime() { public void setTransportType(Integer transportType) {
return tareWeightTime; this.transportType = transportType;
} }
public void setTareWeightTime(Date tareWeightTime) { public Integer getSaleType() {
this.tareWeightTime = tareWeightTime; return saleType;
}
public void setSaleType(Integer saleType) {
this.saleType = saleType;
} }
} }
...@@ -87,6 +87,44 @@ ...@@ -87,6 +87,44 @@
<m:attribute> <m:attribute>
<m:annotations> <m:annotations>
<m:annotation> <m:annotation>
<m:type>javax.persistence.Column</m:type>
<m:properties>
<m:property>
<m:key>name</m:key>
<m:value>gross_weight_time</m:value>
</m:property>
</m:properties>
</m:annotation>
</m:annotations>
<m:id>ca273c9d-0981-4f6d-94b4-4a3b76742a1e</m:id>
<m:name>grossWeightTime</m:name>
<m:title>毛重时间</m:title>
<m:type>datetime</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>javax.persistence.Column</m:type>
<m:properties>
<m:property>
<m:key>name</m:key>
<m:value>tare_weight_time</m:value>
</m:property>
</m:properties>
</m:annotation>
</m:annotations>
<m:id>ca273c9d-0981-4f6d-94b4-4a3b76742a1e</m:id>
<m:name>tareWeightTime</m:name>
<m:title>皮重时间</m:title>
<m:type>datetime</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>javax.persistence.ManyToOne</m:type> <m:type>javax.persistence.ManyToOne</m:type>
</m:annotation> </m:annotation>
<m:annotation> <m:annotation>
...@@ -379,6 +417,52 @@ ...@@ -379,6 +417,52 @@
<m:attribute> <m:attribute>
<m:annotations> <m:annotations>
<m:annotation> <m:annotation>
<m:type>bcp.type.constraint.StringLength</m:type>
<m:value>20</m:value>
</m:annotation>
<m:annotation>
<m:type>javax.persistence.Column</m:type>
<m:properties>
<m:property>
<m:key>name</m:key>
<m:value>gross_weight_person</m:value>
</m:property>
</m:properties>
</m:annotation>
</m:annotations>
<m:id>9ed97388-563a-4634-a555-b56bb1664dd0</m:id>
<m:name>grossWeightPerson</m:name>
<m:title>毛重司磅员</m:title>
<m:type>string</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>bcp.type.constraint.StringLength</m:type>
<m:value>20</m:value>
</m:annotation>
<m:annotation>
<m:type>javax.persistence.Column</m:type>
<m:properties>
<m:property>
<m:key>name</m:key>
<m:value>tare_weight_person</m:value>
</m:property>
</m:properties>
</m:annotation>
</m:annotations>
<m:id>9ed97388-563a-4634-a555-b56bb1664dd0</m:id>
<m:name>tareWeightPerson</m:name>
<m:title>皮重司磅员</m:title>
<m:type>string</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>bcp.type.constraint.Numeric</m:type> <m:type>bcp.type.constraint.Numeric</m:type>
<m:properties> <m:properties>
<m:property> <m:property>
......
...@@ -9,6 +9,8 @@ import com.xyst.dinas.price.enumeration.PriceAdjustmentAdjustmentStatusEnum; ...@@ -9,6 +9,8 @@ import com.xyst.dinas.price.enumeration.PriceAdjustmentAdjustmentStatusEnum;
import com.xyst.dinas.sales.constant.SalesPlanConstant; import com.xyst.dinas.sales.constant.SalesPlanConstant;
import com.xyst.dinas.sales.constant.SalesRecordConstant; import com.xyst.dinas.sales.constant.SalesRecordConstant;
import com.xyst.dinas.sales.dao.InventoryDao; import com.xyst.dinas.sales.dao.InventoryDao;
import com.xyst.dinas.sales.dao.NeedPlanDao;
import com.xyst.dinas.sales.dao.SalesPlanDao;
import com.xyst.dinas.transport.constant.VehicleDriverUserConstant; import com.xyst.dinas.transport.constant.VehicleDriverUserConstant;
import com.xyst.dinas.transport.constant.VehicleDispatchConstant; import com.xyst.dinas.transport.constant.VehicleDispatchConstant;
import com.xyst.dinas.transport.dao.VehicleDispatchDao; import com.xyst.dinas.transport.dao.VehicleDispatchDao;
...@@ -35,13 +37,16 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService { ...@@ -35,13 +37,16 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService {
private VehicleDispatchDao vehicleDispatchDao; private VehicleDispatchDao vehicleDispatchDao;
@Autowired @Autowired
private DinasTypeDao dinasTypeDao; private DinasTypeDao dinasTypeDao;
@Autowired @Autowired
private DriverUserDao driverUserDao; private DriverUserDao driverUserDao;
@Autowired @Autowired
private VehicleDriverUserDao vehicleDriverUserDao; private VehicleDriverUserDao vehicleDriverUserDao;
@Autowired @Autowired
private InventoryDao inventoryDao; private InventoryDao inventoryDao;
@Autowired
private SalesPlanDao salesPlanDao;
@Autowired
private NeedPlanDao needPlanDao;
@Override @Override
public UUID create(KObject kobject) { public UUID create(KObject kobject) {
...@@ -178,7 +183,8 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService { ...@@ -178,7 +183,8 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService {
KObject project = dispatch.get("project"); KObject project = dispatch.get("project");
KObject dinasType = dispatch.get("dinasType"); KObject dinasType = dispatch.get("dinasType");
KObject contract = dispatch.get("contract"); KObject contract = dispatch.get("contract");
UUID sealDetailId = dispatch.getUuid("sealDetailId");
int dispatchType = dispatch.getInt("dispatchType");
Map<String, Object> stringObjectHashMap = new HashMap<String, Object>(); Map<String, Object> stringObjectHashMap = new HashMap<String, Object>();
//车牌号 //车牌号
stringObjectHashMap.put("carNum", carNum); stringObjectHashMap.put("carNum", carNum);
...@@ -192,7 +198,7 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService { ...@@ -192,7 +198,7 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService {
stringObjectHashMap.put("projectCode", project.getString("projectNum")); stringObjectHashMap.put("projectCode", project.getString("projectNum"));
//项目id //项目id
stringObjectHashMap.put("projectId", project.getUuid("id")); stringObjectHashMap.put("projectId", project.getUuid("id"));
//项目id //合同id
stringObjectHashMap.put("contractId", contract.getUuid("id")); stringObjectHashMap.put("contractId", contract.getUuid("id"));
//砂石类型名称 //砂石类型名称
stringObjectHashMap.put("dinasTypeName", dinasType.getString("dinasTypeName")); stringObjectHashMap.put("dinasTypeName", dinasType.getString("dinasTypeName"));
...@@ -200,14 +206,37 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService { ...@@ -200,14 +206,37 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService {
stringObjectHashMap.put("dinasTypeId", dinasType.getUuid("id")); stringObjectHashMap.put("dinasTypeId", dinasType.getUuid("id"));
//本次需用量 //本次需用量
stringObjectHashMap.put("needPlanAmount", dispatch.getBigDecimal("planAmount")); stringObjectHashMap.put("needPlanAmount", dispatch.getBigDecimal("planAmount"));
//需用计划id
stringObjectHashMap.put("needPlanId", dispatch.getUuid("id"));
//需用计划砂石id
stringObjectHashMap.put("needDinasTypeId", dispatch.getUuid("id"));
//本周期已拉取量 //本周期已拉取量
stringObjectHashMap.put("effectiveSale", dispatch.getBigDecimal("actualTransportation")); stringObjectHashMap.put("effectiveSale", dispatch.getBigDecimal("actualTransportation"));
//本周期分配量 //本周期分配量
stringObjectHashMap.put("planAmount", dispatch.getBigDecimal("planAmount")); stringObjectHashMap.put("planAmount", dispatch.getBigDecimal("planAmount"));
if(dispatchType==DispatchTypeEnum.SALE_TEMP_PLAN.getValue()){
KObject salePlanTemp = salesPlanDao.loadTempDetail(sealDetailId);
//临时销售计划没有需用计划,这里值仅做填充
//需用计划id
stringObjectHashMap.put("needPlanId", salePlanTemp.get("master").getUuid("id"));
//需用计划砂石id
stringObjectHashMap.put("needPlanDetailId", salePlanTemp.getUuid("id"));
//销售计划id
stringObjectHashMap.put("salePlanId", salePlanTemp.get("master").getUuid("id"));
//销售计划砂石id
stringObjectHashMap.put("salePlanDetailId", salePlanTemp.getUuid("id"));
}else {
KObject kObject = needPlanDao.queryNeedPlanAmountByCycleId(project.getUuid("id"), planningCycle.getUuid("id"));
List<KObject> needPlanDetail = kObject.get("NeedPlanDetail").toList();
Optional<KObject> first = needPlanDetail.stream().filter(a -> a.get("dinasType").getUuid("id").toString().equals(dinasType.getUuid("id").toString())).findFirst();
stringObjectHashMap.put("needPlanId", kObject.getUuid("id"));
first.ifPresent(a->{
//需用计划砂石id
stringObjectHashMap.put("needPlanDetailId", a.getUuid("id"));
});
KObject salePlanDetail = salesPlanDao.loadDetail(sealDetailId);
//需用计划id
stringObjectHashMap.put("salePlanId", salePlanDetail.get("master").getUuid("id"));
//需用计划砂石id
stringObjectHashMap.put("salePlanDetailId", salePlanDetail.getUuid("id"));
}
//获取砂石今日库存 //获取砂石今日库存
//库存id //库存id
KObject inventory = inventoryDao.getItemByStationIdAndDinasTypeId(station.getUuid("id"), dinasType.getUuid("id")); KObject inventory = inventoryDao.getItemByStationIdAndDinasTypeId(station.getUuid("id"), dinasType.getUuid("id"));
...@@ -221,13 +250,20 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService { ...@@ -221,13 +250,20 @@ public class VehicleDispatchServiceImpl implements VehicleDispatchService {
stringObjectHashMap.put("price", price); stringObjectHashMap.put("price", price);
//销售类型 //销售类型
stringObjectHashMap.put("planAmount", dispatch.getBigDecimal("planAmount")); stringObjectHashMap.put("planAmount", dispatch.getBigDecimal("planAmount"));
stringObjectHashMap.put("saleType", dispatch.getInt("dispatchType")); stringObjectHashMap.put("saleType", dispatchType);
//运输类型 //运输类型
stringObjectHashMap.put("transportType", 1); stringObjectHashMap.put("transportType", 1);
if(amount.compareTo(new BigDecimal("0"))<1){ if(amount.compareTo(BigDecimal.ZERO)<1){
stringObjectHashMap.put("canSale", false); stringObjectHashMap.put("canSale",false);
stringObjectHashMap.put("canSaleTitle", "今日已售罄"); stringObjectHashMap.put("canSaleTitle","今日已售罄");
}else if(price.compareTo(BigDecimal.ZERO)<1){
stringObjectHashMap.put("canSale",false);
stringObjectHashMap.put("canSaleTitle","砂石价格未维护,请联系场站人员维护");
}else{
stringObjectHashMap.put("canSale",true);
} }
maps.add(stringObjectHashMap); maps.add(stringObjectHashMap);
} }
return maps; return maps;
......
...@@ -52,7 +52,7 @@ public class WeighbridgeSyncController { ...@@ -52,7 +52,7 @@ public class WeighbridgeSyncController {
* @return * @return
*/ */
@PostMapping(value = "/weighbridgeSync/saveSalesRecord", consumes = "application/json") @PostMapping(value = "/weighbridgeSync/saveSalesRecord", consumes = "application/json")
public Object saveSalesRecord(@RequestParam String weighbridgeCode,@RequestBody List<SalesRecordInfo> salesRecordList) { public Object saveSalesRecord(@RequestParam String weighbridgeCode,@RequestBody SalesRecordInfo salesRecordList) {
//根据地磅id查询场站 //根据地磅id查询场站
if(StringUtils.isBlank(weighbridgeCode)){ if(StringUtils.isBlank(weighbridgeCode)){
return ResponseObj.error(500,"地磅唯一编码不能为空"); return ResponseObj.error(500,"地磅唯一编码不能为空");
...@@ -61,10 +61,10 @@ public class WeighbridgeSyncController { ...@@ -61,10 +61,10 @@ public class WeighbridgeSyncController {
if(station==null){ if(station==null){
return ResponseObj.error(500,"没有查询到地磅匹配的场站"); return ResponseObj.error(500,"没有查询到地磅匹配的场站");
} }
if (salesRecordList.isEmpty()) { if (salesRecordList==null) {
return ResponseObj.error("传递的销售台账数据条数为0!请确认!"); return ResponseObj.error("传递的销售台账数据条数为0!请确认!");
} else { } else {
return salesRecordService.saveSalesRecordService(salesRecordList,station); return ResponseObj.success("新增成功",salesRecordService.saveSalesRecordService(salesRecordList,station));
} }
} }
...@@ -124,7 +124,7 @@ public class WeighbridgeSyncController { ...@@ -124,7 +124,7 @@ public class WeighbridgeSyncController {
} }
/** /**
* 根据车牌号和地磅唯一编码获取本场站下本车辆今日销售计划和临时销售计划 * 查询全部售卖的砂石类型和价格
* @param * @param
* @return * @return
*/ */
......
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