AmsContractTruckPriceServiceImpl.java 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.AmsContaactPriceMaterialMapper;
  3. import com.steerinfo.dil.mapper.AmsContractTruckPriceMapper;
  4. import com.steerinfo.dil.mapper.RmsLineNodePointMapper;
  5. import com.steerinfo.dil.mapper.RmsReceivePlaceMapper;
  6. import com.steerinfo.dil.model.AmsContaactPriceMaterial;
  7. import com.steerinfo.dil.model.AmsContractTransportPrice;
  8. import com.steerinfo.dil.model.RmsLineNodePoint;
  9. import com.steerinfo.dil.model.RmsReceivePlace;
  10. import com.steerinfo.dil.service.IAmsContractTruckPriceService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import org.apache.commons.lang.math.NumberUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.lang.reflect.Array;
  17. import java.math.BigDecimal;
  18. import java.text.ParseException;
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21. import java.util.regex.Matcher;
  22. import java.util.regex.Pattern;
  23. /**
  24. * AmsContractTransportPrice服务实现:
  25. * @author generator
  26. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  27. * 类描述
  28. * 修订历史:
  29. * 日期:2021-09-06
  30. * 作者:generator
  31. * 参考:
  32. * 描述:AmsContractTransportPrice服务实现
  33. * @see null
  34. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  35. */
  36. @Service(value = "amsContractTruckPriceService")
  37. public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceService {
  38. @Autowired
  39. private AmsContractTruckPriceMapper amsContractTruckPriceMapper;
  40. @Autowired
  41. RmsReceivePlaceMapper rmsReceivePlaceMapper;
  42. @Autowired
  43. AmsContaactPriceMaterialMapper amsContaactPriceMaterialMapper;
  44. //@Autowired
  45. //private RmsLineNodePoint rmsLineNodePoint;
  46. @Autowired
  47. private RmsLineNodePointMapper rmsLineNodePointMapper;
  48. /**
  49. * 新增汽运单价
  50. * @Author zzd
  51. * @Date 2022/1/20 11:33
  52. * @param mapValue
  53. * @return
  54. **/
  55. @Transactional
  56. @Override
  57. public int addAmsContractTransportPrice(Map<String,Object> mapValue) {
  58. BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
  59. BigDecimal carrierId = DataChange.dataToBigDecimal(mapValue.get("carrierId"));
  60. BigDecimal addressId = DataChange.dataToBigDecimal(mapValue.get("addressId"));
  61. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("lineId"));
  62. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  63. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("formulaId"));
  64. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  65. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  66. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  67. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  68. BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  69. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  70. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  71. String place = (String) mapValue.get("place");
  72. if (place != null && place.length() != 0) {
  73. BigDecimal placeId = rmsReceivePlaceMapper.getPlaceId(mapValue);
  74. if (placeId != null) {
  75. amsContractTransportPrice.setPlaceId(placeId);
  76. }
  77. else {
  78. RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
  79. rmsReceivePlace.setAddressId(addressId);
  80. rmsReceivePlace.setAddressDeliveryAddress(place);
  81. rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
  82. }
  83. }
  84. amsContractTransportPrice.setType(type);
  85. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  86. amsContractTransportPrice.setShipperId(shipperId);
  87. amsContractTransportPrice.setOilpriceChangeThreshold(oilpriceChangeThreshold);
  88. amsContractTransportPrice.setOilTypeId(oilTypeId);
  89. amsContractTransportPrice.setPriceValue(priceValue);
  90. amsContractTransportPrice.setPriceDate(priceDate);
  91. amsContractTransportPrice.setCapacityTypeId(capacityTypeId);
  92. amsContractTransportPrice.setCargonameId(formulaId);
  93. amsContractTransportPrice.setCarrierId(carrierId);
  94. //生成主键id
  95. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  96. if(lineId == null){
  97. //计算并插入吨公里
  98. BigDecimal priceTonKilometer = calculationPriceTonKilometer(lineId, priceValue);
  99. amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
  100. }
  101. amsContractTransportPrice.setType(new BigDecimal(1));
  102. amsContractTransportPrice.setInsertUsername("admin");
  103. amsContractTransportPrice.setInsertTime(new Date());
  104. amsContractTransportPrice.setUpdateUsername("admin");
  105. amsContractTransportPrice.setUpdateTime(new Date());
  106. amsContractTransportPrice.setInsertUpdateRemark("无");
  107. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  108. return amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  109. }
  110. //计算吨公里值
  111. public BigDecimal calculationPriceTonKilometer(BigDecimal lineId,BigDecimal priceValue){
  112. //查询参考运距
  113. BigDecimal linePathLength = amsContractTruckPriceMapper.getLinePathLength(lineId);
  114. //计算吨公里 吨公里(元/吨.km) = 运价(元/吨)/ 参考运距(公里),保留4位小数
  115. BigDecimal priceTonKilometer = priceValue.divide(linePathLength, 4, BigDecimal.ROUND_HALF_UP);
  116. return priceTonKilometer;
  117. }
  118. //计算吨公里值(销售钢材运价专用)
  119. public BigDecimal calculationPriceTonKilometerNew(BigDecimal haulDistance,BigDecimal priceValue){
  120. //查询参考运距
  121. //BigDecimal linePathLength = amsContractTruckPriceMapper.getLinePathLength(lineId);
  122. //计算吨公里 吨公里(元/吨.km) = 运价(元/吨)/ 参考运距(公里),保留4位小数
  123. BigDecimal priceTonKilometer = priceValue.divide(haulDistance, 4, BigDecimal.ROUND_HALF_UP);
  124. return priceTonKilometer;
  125. }
  126. @Override
  127. public List<Map<String, Object>> getAmsContractTransportPrice(Map<String, Object> map) {
  128. return amsContractTruckPriceMapper.getAmsContractTransportPrice(map);
  129. }
  130. @Override
  131. public int deleteSalePrice(Map<String, Object> map) {
  132. return amsContractTruckPriceMapper.deleteSalePrice(map);
  133. }
  134. @Override
  135. public List<Map<String, Object>> getCarrierListByPrice(Map<String,Object> map) {
  136. return amsContractTruckPriceMapper.getCarrierListByPrice(map);
  137. }
  138. @Override
  139. public List<Map<String, Object>> getCarrierListByAddress(Map<String,Object> map) {
  140. return amsContractTruckPriceMapper.getCarrierListByAddress(map);
  141. }
  142. @Override
  143. public int updateCarrierName(Map<String, Object> map) throws ParseException {
  144. String carrierIdArray = map.get("carrierIdArray").toString().replace("[","").replace("]","").replace(" ","");
  145. String[] split = carrierIdArray.split(",");
  146. //修改地址
  147. amsContractTruckPriceMapper.updateaddressDeliveryAddress(map);
  148. //修改运价
  149. amsContractTruckPriceMapper.updatePriceValue(map);
  150. //修改运输距离
  151. amsContractTruckPriceMapper.updateHaulDistance(map);
  152. //根据地址查询出单价表大部分值
  153. AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.getOnePriceMap(map);
  154. //修改的时间
  155. Date date=new Date();
  156. int result=0;
  157. //根据地址查询出承运商ID
  158. List<Map<String, Object>> carrierListByAddress = amsContractTruckPriceMapper.getCarrierListByAddress(map);
  159. //判断传过来的承运商是否有值
  160. if(carrierIdArray.equals("")){
  161. //删除所有的单价
  162. amsContractTruckPriceMapper.deleteSalePrice(map);
  163. //获取主键
  164. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  165. amsContractTransportPrice.setInsertTime(date);
  166. if (map.get("priceDate")!=null){
  167. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) map.get("priceDate")));
  168. }else {
  169. amsContractTransportPrice.setPriceDate(date);
  170. }
  171. result+=amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  172. }else if (!(carrierIdArray.equals(""))){
  173. amsContractTruckPriceMapper.deleteSalePrice(map);
  174. //判断查询出来的承运商ID是否存在于更改的承运商ID中
  175. /*for (Map<String, Object> listByAddress : carrierListByAddress) {
  176. BigDecimal carrierId = (BigDecimal) listByAddress.get("carrierId");
  177. int flag=0;
  178. for(int j=0;j<split.length;j++){
  179. if (carrierId.compareTo(DataChange.dataToBigDecimal(split[j]))==0){
  180. flag+=1;
  181. //修改时间
  182. Map<String,Object> map2=map;
  183. if (map.get("priceDate")!=null){
  184. map2.put("priceDate",map.get("priceDate"));
  185. }
  186. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  187. map2.put("insertTime",simpleDateFormat.format(date));
  188. map2.put("carrierId",split[j]);
  189. amsContractTruckPriceMapper.updateSomeOneSalePrice(map2);
  190. //删除数据
  191. carrierIdArray.split(split[j]);
  192. break;
  193. }
  194. }
  195. if (flag==0){
  196. //就把单价表中该单价删掉
  197. Map<String,Object> map1=map;
  198. map1.put("carrierId",carrierId);
  199. amsContractTruckPriceMapper.deleteSomeOneSalePrice(map1);
  200. }
  201. }*/
  202. for (int i = 0; i < split.length; i++) {
  203. //获取主键
  204. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  205. amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(split[i]));
  206. amsContractTransportPrice.setInsertTime(date);
  207. // SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
  208. // SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  209. // Date datenew = sdf1.parse((String) map.get("priceDate"));
  210. // String format = sdf2.format(datenew);
  211. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse((String) map.get("priceDate")));
  212. result+=amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  213. }
  214. }
  215. return result;
  216. }
  217. @Override
  218. public int updateaddressDeliveryAddress(Map<String,Object> map) {
  219. return amsContractTruckPriceMapper.updateaddressDeliveryAddress(map);
  220. }
  221. @Override
  222. public int updatePriceValue(Map<String,Object> map) {
  223. return amsContractTruckPriceMapper.updatePriceValue(map);
  224. }
  225. @Override
  226. public List<Map<String, Object>> getAmsContractTransportPriceForDetail(Map<String, Object> map) {
  227. //amsContractTruckPriceMapper.getAmsContractTransportPriceForDetail(map);
  228. return amsContractTruckPriceMapper.getAddressDeliveryAddressForDetails(map);
  229. }
  230. @Override
  231. public String getCarrierNameForDetail(String userId){
  232. return amsContractTruckPriceMapper.getCarrierNameForDetail(userId);
  233. }
  234. @Override
  235. public int deleteAmsContractTransportPrice(BigDecimal priceId) {
  236. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  237. amsContractTransportPrice.setId(priceId);
  238. amsContractTransportPrice.setDeleted(new BigDecimal(1));
  239. return amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  240. }
  241. @Override
  242. public List<Map<String, Object>> getCarrierName() {
  243. return amsContractTruckPriceMapper.getCarrierName();
  244. }
  245. @Override
  246. public List<Map<String, Object>> getLineNo() {
  247. return amsContractTruckPriceMapper.getLineNo();
  248. }
  249. @Override
  250. public List<Map<String, Object>> getCapacityNumber() {
  251. return amsContractTruckPriceMapper.getCapacityNumber();
  252. }
  253. @Override
  254. public List<Map<String, Object>> getAddressDeliveryAddress(Map<String,Object> map) {
  255. return amsContractTruckPriceMapper.getAddressDeliveryAddress(map);
  256. }
  257. @Override
  258. public List<Map<String, Object>> selectByPriceId(BigDecimal priceId) {
  259. return amsContractTruckPriceMapper.selectByPriceId(priceId);
  260. }
  261. @Override
  262. public int updateAmsContractTransportPrice(AmsContractTransportPrice amsContractTransportPrice) {
  263. //获取路线Id和运价
  264. BigDecimal lineId = amsContractTransportPrice.getLineId();
  265. BigDecimal priceValue = amsContractTransportPrice.getPriceValue();
  266. //如果传入路线则修改运价
  267. if(lineId != null){
  268. BigDecimal priceId = amsContractTransportPrice.getPriceId();
  269. //获取未修改前的汽运单价信息
  270. AmsContractTransportPrice amsContractTransportPrice1 = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
  271. //若运价修改了
  272. if(!amsContractTransportPrice.getPriceValue().equals(amsContractTransportPrice1.getPriceValue())){
  273. //计算并插入吨公里
  274. BigDecimal priceTonKilometer = calculationPriceTonKilometer(lineId, priceValue);
  275. amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
  276. }
  277. }
  278. amsContractTransportPrice.setUpdateTime(new Date());
  279. return amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  280. }
  281. @Override
  282. public List<Map<String, Object>> getOriginAndNowOilPrice() {
  283. return amsContractTruckPriceMapper.getOriginAndNowOilPrice();
  284. }
  285. @Override
  286. public List<Map<String, Object>> getCargoName() {
  287. return amsContractTruckPriceMapper.getCargoName();
  288. }
  289. @Override
  290. public List<Map<String, Object>> getOilTypeName() {
  291. return amsContractTruckPriceMapper.getOilTypeName();
  292. }
  293. /**
  294. * 批量修改运输单价
  295. * @return
  296. */
  297. @Override
  298. @Transactional
  299. public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){
  300. //正数的判断条件
  301. String flag= (String) map.get("flag");
  302. //运输单价变化的条数
  303. int i = 0;
  304. //获取油品名称ID
  305. BigDecimal oilTypeId = DataChange.dataToBigDecimal(map.get("oilTypeId"));
  306. //获取预执行油价
  307. BigDecimal newOilPrice = DataChange.dataToBigDecimal(map.get("newOilPrice"));
  308. BigDecimal type = new BigDecimal(1);
  309. //根据油品名称ID和非历史油价筛选出符合条件的运价合集
  310. List<Map<String, Object>> PriceValueList = amsContractTruckPriceMapper.getPriceValueList(oilTypeId);
  311. for (Map<String, Object> stringObjectMap : PriceValueList) {
  312. //有距离则是销售钢材
  313. if (stringObjectMap.get("haulDistance")!=null) {
  314. //中标价格或者收货地址(库存)则重新计算价格
  315. if (stringObjectMap.get("referenceHt")!=null || stringObjectMap.get("inventory")!=null){
  316. //跳过;
  317. continue;
  318. }else{
  319. //判断省市区(镇),拿到关联的中标数据
  320. Map<String, Object> zb = amsContractTruckPriceMapper.selectByPlaceId(DataChange.dataToBigDecimal(stringObjectMap.get("placeId")));
  321. BigDecimal zbDistance = DataChange.dataToBigDecimal(zb.get("haulDistance"));
  322. BigDecimal distance = DataChange.dataToBigDecimal(stringObjectMap.get("haulDistance"));
  323. if (zbDistance.intValue()!=0 && distance.intValue()!=0){
  324. BigDecimal subtract = zbDistance.subtract(distance);
  325. if (subtract.intValue()>10 || subtract.intValue()<-10){
  326. //大于正负10km重新计算价格
  327. //跳过
  328. continue;
  329. }else{
  330. //小于10km取中标价格
  331. Map<String,Object> updatePrice=new HashMap<>();
  332. updatePrice.put("priceId",DataChange.dataToBigDecimal(stringObjectMap.get("priceId")));
  333. updatePrice.put("priceValue",DataChange.dataToBigDecimal(zb.get("priceValue")));
  334. return amsContractTruckPriceMapper.updateByPriceId(updatePrice);
  335. }
  336. }
  337. }
  338. }
  339. stringObjectMap.put("priceDate",map.get("priceDate"));
  340. //获取该条单价的原油价基准
  341. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceBase"));
  342. //获取该条单价的油价变化率阈值
  343. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold"));
  344. //计算油价变化率,公式:n=(当前油价-基数)÷基数×100% (9.06-8.26)/8.26
  345. BigDecimal n = (oilpriceBase.subtract(newOilPrice)).divide(newOilPrice,4,4);
  346. //若油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条单价
  347. if(n.abs().doubleValue()>oilpriceChangeThreshold.doubleValue()){
  348. //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效)
  349. try{
  350. if(newOilPrice.compareTo(oilpriceBase)==-1){
  351. //直接降低油价
  352. i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
  353. }else if (newOilPrice.compareTo(oilpriceBase)==1 && "1".equals(flag)){
  354. //加上两个判断之后
  355. i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
  356. }
  357. }catch (Exception e){
  358. e.printStackTrace();
  359. }
  360. }
  361. }
  362. return i;
  363. // if(updateOilPrice>0.05||updateOilPrice<-0.05) {
  364. // //逐条修改吨公里数
  365. // for (Map<String, Object> stringObjectMap : priceValueAndPriceTonKilometer) {
  366. // //主键Id
  367. // BigDecimal priceId = (BigDecimal) stringObjectMap.get("priceId");
  368. // //原运价
  369. // BigDecimal priceValue = (BigDecimal) stringObjectMap.get("priceValue");
  370. // //吨公里数
  371. // BigDecimal priceTonKilometer = (BigDecimal) stringObjectMap.get("priceTonKilometer");
  372. // //参考距离,四舍五入,保留两位小数
  373. // BigDecimal distance;
  374. // if (priceTonKilometer.doubleValue() != 0) {
  375. // distance = priceValue.divide(priceTonKilometer, 2, BigDecimal.ROUND_HALF_UP);
  376. // //现运价
  377. // Double nowPriceValue = priceValue.doubleValue() * 0.65 + priceValue.doubleValue() * 0.35 * (1 + updateOilPrice);
  378. // BigDecimal nowPriceValue1 = new BigDecimal(nowPriceValue);
  379. // //新吨公里数
  380. // BigDecimal newPriceTonKilometer = nowPriceValue1.divide(distance, 4, BigDecimal.ROUND_HALF_UP);
  381. // //通过主键修改一条吨公里数
  382. // amsContractTruckPriceMapper.updatePriceTonKilometer(priceId, newPriceTonKilometer);
  383. // }
  384. // return amsContractTruckPriceMapper.batchUpdateTransportPriceByOilPrice(updateOilPrice);
  385. // }
  386. // }
  387. }
  388. /**
  389. * 油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条执行单价
  390. * @param stringObjectMap
  391. * @param n
  392. * @param newOilPrice
  393. * @return
  394. * @throws Exception
  395. */
  396. @Transactional
  397. public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice) throws ParseException {
  398. //定义将要改变的执行价
  399. BigDecimal nowPriceValue;
  400. //存储原运输单价实绩对象
  401. AmsContractTransportPrice oldAmsContractTransportPrice = new AmsContractTransportPrice();
  402. //查询货物名称
  403. // String cargonameValue = amsContractTruckPriceMapper.getCargonameValue(new BigDecimal(stringObjectMap.get("cargonameId").toString()));
  404. //获取原主键Id
  405. BigDecimal priceId = (BigDecimal) stringObjectMap.get("priceId");
  406. //修改原单价为历史数据
  407. oldAmsContractTransportPrice.setPriceId(priceId);
  408. oldAmsContractTransportPrice.setDeleted(new BigDecimal(1));
  409. amsContractTruckPriceMapper.updateByPrimaryKeySelective(oldAmsContractTransportPrice);
  410. //获取原单价的所有数据
  411. AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
  412. //生成主键
  413. BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
  414. amsContractTransportPrice.setPriceId(i);
  415. //生成执行日期
  416. amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate")));
  417. //常规字段
  418. amsContractTransportPrice.setInsertUsername("admin");
  419. amsContractTransportPrice.setInsertTime(new Date());
  420. amsContractTransportPrice.setUpdateUsername("admin");
  421. amsContractTransportPrice.setUpdateTime(new Date());
  422. amsContractTransportPrice.setInsertUpdateRemark("无");
  423. //修改现单价为执行数据
  424. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  425. // //若货物名称为焦炭
  426. // if(cargonameValue.equals("焦炭")){
  427. // //现执行价=((63.00+63.00*0.13*n)+(66.50+66.50*0.3*n)+40.00)
  428. // //调用焦炭运价计算公式计算现执行价
  429. // try {
  430. // nowPriceValue = UpdateCokePriceValueByOilPrice(n.toString());
  431. // //保留两位小数
  432. // nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,4);
  433. // //调整焦炭运价
  434. // amsContractTransportPrice.setPriceValue(nowPriceValue);
  435. // //修改基准油价
  436. // amsContractTransportPrice.setOilpriceBase(newOilPrice);
  437. // } catch (Exception e) {
  438. // e.printStackTrace();
  439. // }
  440. // }
  441. // if(cargonameValue.equals("纯苯")){
  442. // //现执行价=(中标价*0.7)+(中标价*0.3)*(1+n)
  443. // //调用纯苯运价计算公式计算现执行价
  444. // try {
  445. // nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue());
  446. // //保留两位小数
  447. // nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,4);
  448. // //调整纯苯运价
  449. // amsContractTransportPrice.setPriceValue(nowPriceValue);
  450. // //修改基准油价
  451. // amsContractTransportPrice.setOilpriceBase(newOilPrice);
  452. // } catch (Exception e) {
  453. // e.printStackTrace();
  454. // }
  455. // }
  456. // 得到油价联动公式id
  457. //BigDecimal formulaId = DataChange.dataToBigDecimal(stringObjectMap.get("cargonameId"));
  458. //BigDecimal formulaId= (BigDecimal) stringObjectMap.get("cargonameId");
  459. String s= (String) stringObjectMap.get("cargonameId");
  460. BigDecimal formulaId = NumberUtils.createBigDecimal(s.trim());
  461. amsContractTransportPrice.setCargonameId(formulaId);
  462. try {
  463. nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue(),formulaId);
  464. //保留两位小数
  465. nowPriceValue = nowPriceValue.divide(new BigDecimal(1),3,0);
  466. //调整纯苯运价
  467. amsContractTransportPrice.setPriceValue(nowPriceValue);
  468. //修改基准油价
  469. amsContractTransportPrice.setOilpriceBase(newOilPrice);
  470. } catch (Exception e) {
  471. e.printStackTrace();
  472. return 0;
  473. }
  474. //新增数据
  475. int insert = amsContractTruckPriceMapper.insert(amsContractTransportPrice);
  476. return insert;
  477. }
  478. /**
  479. * 替换焦炭运价公式并进行计算
  480. * @param n
  481. * @return
  482. * @throws Exception
  483. */
  484. public BigDecimal UpdateCokePriceValueByOilPrice(String n) throws Exception {
  485. // 得到运算公式
  486. String formula_string = null;
  487. // 得到焦炭运价计算公式
  488. formula_string = amsContractTruckPriceMapper.getTruckFormula(new BigDecimal(12));
  489. // 替换焦炭运价计算公式
  490. formula_string = formula_string.replace("油价变动率",n);
  491. String s = toSufExpr(formula_string);
  492. return calSufExpr(s);
  493. }
  494. /**
  495. * 替换运价公式并进行计算
  496. * @param n
  497. * @return
  498. * @throws Exception
  499. */
  500. public BigDecimal UpdatePureBenzenePriceValueByOilPrice(String n,BigDecimal priceValue,BigDecimal formulaId) throws Exception {
  501. // 得到运算公式
  502. String formula_string;
  503. // 得到运价计算公式
  504. formula_string = amsContractTruckPriceMapper.getTruckFormula(formulaId);
  505. if (formula_string.contains("中标价") && formula_string.contains("油价变动率")) {
  506. // 替换纯苯运价计算公式
  507. formula_string = formula_string.replace("中标价", priceValue.toString())
  508. .replace("油价变动率", n);
  509. }
  510. else {
  511. // 替换焦炭
  512. formula_string = formula_string.replace("油价变动率",n);
  513. }
  514. String s = toSufExpr(formula_string);
  515. return calSufExpr(s);
  516. }
  517. /**
  518. * 中缀转换后缀表达式
  519. */
  520. public String toSufExpr(String s) {
  521. StringBuffer sufExpr = new StringBuffer();
  522. Stack<String> stack = new Stack<>();
  523. //压入空方便判断
  524. stack.push(null);
  525. Pattern pattern = Pattern.compile("\\(int\\)|(?<!\\d|[)])-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%()><=|]");
  526. Matcher matcher = pattern.matcher(s);
  527. while (matcher.find()) {
  528. String group = matcher.group();
  529. if (group.matches("!=|>=|<=|==|[+\\-*/%()><=|]|\\(int\\)")) {//是运算符
  530. if (group.equals("(")) {//之间压栈
  531. stack.push(group);
  532. } else if (group.equals(")")) {//等于右括号,一直弹栈,直到遇到左括号
  533. String pop = null;
  534. while (!(pop = stack.pop()).equals("(")) {//遍历循环至左括号
  535. sufExpr.append(pop + " ");
  536. }
  537. } else {//是运算符:加减乘除强转,根据优先级压栈
  538. while (getPriority(group) <= getPriority(stack.peek())) {
  539. String pop = stack.pop();
  540. System.out.println(pop);
  541. System.out.println(sufExpr);
  542. if(pop!=null&&!pop.equals("|")){
  543. sufExpr.append(pop + " ");
  544. }
  545. }
  546. stack.push(group);
  547. }
  548. } else {//是数字
  549. sufExpr.append(group + " ");
  550. }
  551. }
  552. String pop = null;
  553. while (null != (pop = stack.pop())) {
  554. sufExpr.append(pop + " ");
  555. }
  556. return sufExpr.toString();
  557. }
  558. /**
  559. * 设置出栈优先级,(:优先级最低,表示只有遇到)才能出栈
  560. * 当栈顶遇到优先级比自己小或等于的弹栈
  561. */
  562. public Integer getPriority(String c) {
  563. if (c == null) {
  564. return 0;
  565. }
  566. switch (c) {
  567. case "(":
  568. return 1;
  569. case "+":
  570. case "-":
  571. return 2;
  572. case "*":
  573. case "/":
  574. case "%":
  575. return 3;
  576. case ">":
  577. case "<":
  578. case ">=":
  579. case "<=":
  580. case "!=":
  581. case "==":
  582. return 4;
  583. case "|":
  584. return 5;
  585. case "=":
  586. return 6;
  587. case "(int)":
  588. return 7;
  589. }
  590. return 0;
  591. }
  592. /**
  593. * 计算值
  594. */
  595. public BigDecimal cal(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
  596. switch (operator){
  597. case "+":return a1.add(a2);
  598. case "-":return a1.subtract(a2);
  599. case "*":return a1.multiply(a2);
  600. case "/":return a1.divide(a2,3,BigDecimal.ROUND_CEILING);
  601. case "%":return a1.divideAndRemainder(a2)[1];
  602. default:
  603. break;
  604. }
  605. throw new Exception("非法运算符");
  606. }
  607. public Boolean calBoolean(BigDecimal a1, BigDecimal a2, String operator) throws Exception {
  608. switch (operator){
  609. case ">":return a1.compareTo(a2) == 1;
  610. case "<":return a1.compareTo(a2) == -1;
  611. case ">=":return a1.compareTo(a2) > -1;
  612. case "<=":return a1.compareTo(a2) < 1;
  613. case "!=":return a1.compareTo(a2) != 0;
  614. case "==":return a1.compareTo(a2) == 0;
  615. default:
  616. break;
  617. }
  618. throw new Exception("非法运算符");
  619. }
  620. /**
  621. * 计算后缀表达式
  622. */
  623. public BigDecimal calSufExpr(String sufExpr) throws Exception {
  624. Stack<BigDecimal> stack = new Stack<>();
  625. Pattern pattern=Pattern.compile("\\(int\\)|-?\\d+(\\.\\d+)?|!=|>=|<=|==|[+\\-*/%><=]");//提取运算符和数字
  626. Matcher matcher = pattern.matcher(sufExpr);
  627. BigDecimal result=new BigDecimal("0.0");
  628. while (matcher.find()){
  629. String group = matcher.group();
  630. if(group.matches("[+\\-*/%]")){
  631. BigDecimal a1 =stack.pop();
  632. BigDecimal a2 =stack.pop();
  633. result = cal(a2, a1, group);
  634. stack.push(result);
  635. }
  636. else if(group.equals("(int)")){
  637. BigDecimal pop = stack.pop();
  638. BigDecimal bigDecimal = pop.setScale(0, BigDecimal.ROUND_DOWN);
  639. stack.push(bigDecimal);
  640. }
  641. else if(group.matches("!=|>=|<=|==|[><]")){
  642. BigDecimal a1 =stack.pop();
  643. BigDecimal a2 =stack.pop();
  644. stack.push(calBoolean(a2,a1,group)?new BigDecimal(1):new BigDecimal(0));
  645. }
  646. else if(group.equals("=")){
  647. BigDecimal a1 =stack.pop();
  648. BigDecimal a2 =stack.pop();
  649. if (a2.compareTo(new BigDecimal(1))==0) {
  650. stack.push(a1);
  651. }
  652. }
  653. else {//为数字直接压栈
  654. stack.push(new BigDecimal(group));
  655. }
  656. }
  657. return result;
  658. }
  659. /**
  660. * 边输边查具体地址
  661. * @param map
  662. * @return
  663. */
  664. @Override
  665. public List<Map<String, Object>> getRealAddressByLike(Map<String, Object> map) {
  666. return amsContractTruckPriceMapper.getRealAddressByLike(map);
  667. }
  668. @Override
  669. public int insertInwardPrice(Map<String, Object> mapValue) {
  670. int i = 0;
  671. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  672. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("rangeId"));
  673. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("formulaId"));
  674. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  675. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  676. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  677. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  678. BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  679. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  680. List<Map<String,Object>>mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  681. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  682. amsContractTransportPrice.setType(type);
  683. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  684. //承运起止点ID
  685. amsContractTransportPrice.setLineId(lineId);
  686. amsContractTransportPrice.setOilpriceChangeThreshold(oilpriceChangeThreshold);
  687. amsContractTransportPrice.setOilTypeId(oilTypeId);
  688. amsContractTransportPrice.setPriceValue(priceValue);
  689. amsContractTransportPrice.setPriceDate(priceDate);
  690. amsContractTransportPrice.setCapacityTypeId(capacityTypeId);
  691. amsContractTransportPrice.setCargonameId(formulaId);
  692. //生成主键id
  693. amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  694. amsContractTransportPrice.setInsertUsername("admin");
  695. amsContractTransportPrice.setInsertTime(new Date());
  696. amsContractTransportPrice.setUpdateUsername("admin");
  697. amsContractTransportPrice.setUpdateTime(new Date());
  698. amsContractTransportPrice.setInsertUpdateRemark("无");
  699. amsContractTransportPrice.setDeleted(new BigDecimal(0));
  700. i = amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  701. for (Map<String,Object>map:mapList
  702. ) {
  703. map.get("materialId");
  704. AmsContaactPriceMaterial amsContaactPriceMaterial = new AmsContaactPriceMaterial();
  705. //设置最大主键ID
  706. amsContaactPriceMaterial.setId(amsContractTruckPriceMapper.selectPriceMaterialMaxId());
  707. amsContaactPriceMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  708. amsContaactPriceMaterial.setPriceId(amsContractTransportPrice.getPriceId());
  709. amsContaactPriceMaterial.setDeleted(new BigDecimal(0));
  710. i = amsContaactPriceMaterialMapper.insertSelective(amsContaactPriceMaterial);
  711. }
  712. return i;
  713. }
  714. @Override
  715. public List<Map<String, Object>> getInwardContractPrice(Map<String, Object> mapValue) {
  716. String material="";
  717. // if (mapValue.get("materialNames")!=null && mapValue.get("materialNames").toString().contains("、")) {
  718. // material= mapValue.get("materialNames").toString();
  719. // mapValue.put("materialNames",null);
  720. // }
  721. List<Map<String,Object>>mapList = amsContractTruckPriceMapper.getInwardContractPrice(mapValue);
  722. for (Map<String,Object>map:mapList
  723. ) {
  724. List<Map<String,Object>> materialList = amsContaactPriceMaterialMapper.getMaterialName(map);
  725. String materialNames = "";
  726. int i = 1;
  727. for (Map<String,Object>materialMap:materialList
  728. ) {
  729. if(i==materialList.size()){
  730. materialNames = materialNames + materialMap.get("materialName") ;
  731. }
  732. else{
  733. materialNames = materialNames + materialMap.get("materialName") + "、";
  734. }
  735. i++;
  736. }
  737. map.put("materialNames",materialNames);
  738. if(((BigDecimal)map.get("type")).intValue() == 2){
  739. map.put("type","元/吨");
  740. }else if(((BigDecimal)map.get("type")).intValue() == 5){
  741. map.put("type","元/小时");
  742. }else if(((BigDecimal)map.get("type")).intValue() == 6){
  743. map.put("type","元/趟");
  744. }
  745. // if (material!=null &&
  746. // material.contains("、") &&
  747. // material.equals(materialNames)) {
  748. // List<Map<String, Object>> newMapList=new ArrayList<>();
  749. // newMapList.add(map);
  750. // return newMapList;
  751. // }
  752. }
  753. return mapList;
  754. }
  755. @Override
  756. public List<Map<String, Object>> selectInwardPrice(Map<String, Object> mapvalue) {
  757. return amsContractTruckPriceMapper.selectInwardPrice(mapvalue);
  758. }
  759. @Override
  760. public List<Map<String, Object>> getRangePoint(Map<String, Object> mapValue) {
  761. return amsContractTruckPriceMapper.getRangePoint(mapValue);
  762. }
  763. @Override
  764. public int insertLineNodePoint(Map<String, Object> map) {
  765. RmsLineNodePoint rmsLineNodePoint = new RmsLineNodePoint();
  766. BigDecimal rangeId = DataChange.dataToBigDecimal(map.get("rangeId"));
  767. String loadName = (String)map.get("loadPointName");
  768. String unloadName = (String)map.get("unloadPointName");
  769. rmsLineNodePoint.setId(rmsLineNodePointMapper.lineMaxId());
  770. rmsLineNodePoint.setTransRangeId(rangeId);
  771. rmsLineNodePoint.setLoadPointName(loadName);
  772. rmsLineNodePoint.setUnloadPointName(unloadName);
  773. rmsLineNodePoint.setDeleted(new BigDecimal(0));
  774. int i = rmsLineNodePointMapper.insertSelective(rmsLineNodePoint);
  775. return i;
  776. }
  777. @Override
  778. public int updatePriceById(Map<String, Object> map) {
  779. int count = 0;
  780. //获取单价ID
  781. BigDecimal priceId = DataChange.dataToBigDecimal(map.get("priceId"));
  782. //获取物资详ID
  783. List<Map<String, Object>> materialTypeList = (List<Map<String,Object>>)map.get("materialTypeList");
  784. for (Map<String,Object> materialTypeMap:materialTypeList){
  785. }
  786. return count;
  787. }
  788. @Override
  789. public int updatePriceByPriceId(Map<String, Object> mapValue){
  790. int i = 0;
  791. BigDecimal capacityTypeId = DataChange.dataToBigDecimal(mapValue.get("capacityTypeId"));
  792. BigDecimal lineId = DataChange.dataToBigDecimal(mapValue.get("rangeId"));
  793. BigDecimal formulaId = DataChange.dataToBigDecimal(mapValue.get("cargonameId"));
  794. BigDecimal priceValue = DataChange.dataToBigDecimal(mapValue.get("priceValue"));
  795. Date priceDate = new Date((Long)mapValue.get("priceDate"));
  796. BigDecimal type = DataChange.dataToBigDecimal(mapValue.get("type"));
  797. BigDecimal oilpriceBase = DataChange.dataToBigDecimal(mapValue.get("oilpriceBase"));
  798. // BigDecimal oilTypeId = DataChange.dataToBigDecimal(mapValue.get("oilTypeId"));
  799. BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(mapValue.get("oilpriceChangeThreshold"));
  800. List<Map<String,Object>>mapList = (List<Map<String, Object>>) mapValue.get("mapList");
  801. BigDecimal priceId=DataChange.dataToBigDecimal(mapValue.get("priceId"));
  802. AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  803. amsContractTransportPrice.setOilpriceBase(oilpriceBase);
  804. // amsContractTransportPrice.setOilTypeId(oilTypeId); 油品名称
  805. amsContractTransportPrice.setPriceValue(priceValue);
  806. amsContractTransportPrice.setPriceDate(priceDate);
  807. amsContractTransportPrice.setCargonameId(formulaId);
  808. amsContractTransportPrice.setPriceId(priceId);
  809. amsContractTransportPrice.setUpdateTime(new Date());
  810. i = amsContractTruckPriceMapper.updateByPrimaryKeySelective(amsContractTransportPrice);
  811. // 根据priceId先查询之前是否有物资
  812. // 如果有,但是接受的没有就删除
  813. List<Map<String, Object>> selectwz = amsContractTruckPriceMapper.selectwz(mapValue);
  814. if (!selectwz.isEmpty() && mapList.isEmpty()){
  815. i = amsContaactPriceMaterialMapper.deletePriceByPriceId(mapValue.get("priceId").toString());
  816. }
  817. //把之前的全删了,然后新增
  818. if (mapList!=null && mapList.size()>0) {
  819. i = amsContaactPriceMaterialMapper.deletePriceByPriceId(mapValue.get("priceId").toString());
  820. }
  821. for (Map<String,Object>map:mapList
  822. ) {
  823. //新增
  824. AmsContaactPriceMaterial amsContaactPriceMaterial = new AmsContaactPriceMaterial();
  825. //设置最大主键ID
  826. amsContaactPriceMaterial.setId(amsContractTruckPriceMapper.selectPriceMaterialMaxId());
  827. amsContaactPriceMaterial.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  828. amsContaactPriceMaterial.setPriceId(amsContractTransportPrice.getPriceId());
  829. amsContaactPriceMaterial.setDeleted(new BigDecimal(0));
  830. i = amsContaactPriceMaterialMapper.insertSelective(amsContaactPriceMaterial);
  831. }
  832. return i;
  833. }
  834. @Override
  835. public List<Map<String, Object>> getwz(Map<String, Object> map){
  836. List<Map<String, Object>> selectwz = amsContractTruckPriceMapper.selectwz(map);
  837. return selectwz;
  838. }
  839. @Override
  840. public Map<String, Object> getcargonameId(Map<String, Object> map) {
  841. Map<String, Object> value = amsContractTruckPriceMapper.getcargonameId(map);
  842. return value;
  843. }
  844. @Override
  845. public int updateDCodd() {
  846. return amsContractTruckPriceMapper.updateDCodd();
  847. }
  848. @Override
  849. public int updateDCnew() {
  850. return amsContractTruckPriceMapper.updateDCnew();
  851. }
  852. //@Transactional
  853. //@Override
  854. //public int insertInwardPriceExcel(Map<String,Object> mapValue){
  855. // int i=0;
  856. // try{
  857. // Object rowsList = mapValue.get("rowsList");
  858. // ArrayList arrayList = (ArrayList) rowsList;
  859. // //先查询在单价表之前是否有记录,有则禁用
  860. // for (Object map : arrayList) {
  861. // //查询收货地址
  862. // Map entity = (Map)map;
  863. // if (entity.get("addressDistrict")!=null){
  864. // if (entity.get("addressDistrict").toString().contains("区") || entity.get("addressDistrict").toString().contains("县")){
  865. // entity.put("addressDistrict","重庆");
  866. // }
  867. // }
  868. // //查询收货地址
  869. // List<String> selectshdz = amsContractTruckPriceMapper.selectshdz(entity);
  870. // //录入收货地址
  871. // if (selectshdz==null) {
  872. // entity.put("addressId",amsContractTruckPriceMapper.selectMaxIdrra()+1);
  873. // amsContractTruckPriceMapper.insertshdz(entity);
  874. // }
  875. // Map<String, Object> selectxxdz=new HashMap<>();
  876. // //查询详细地址
  877. // if (selectshdz!=null && selectshdz.size()>0) {
  878. // entity.put("addressId",selectshdz);
  879. // selectxxdz = amsContractTruckPriceMapper.selectxxdz(entity);
  880. // }
  881. // if (selectxxdz!=null && selectxxdz.get("placeId")!=null) {
  882. // i = amsContractTruckPriceMapper.updateDelectByPlaceId(selectxxdz);
  883. // }
  884. // //录入详细地址
  885. // if (selectxxdz==null){
  886. // entity.put("placeId",amsContractTruckPriceMapper.selectMaxIdrrp()+1);
  887. // entity.put("addressId",DataChange.dataToBigDecimal(entity.get("addressId").toString().replace("[","").replace("]","")));
  888. // amsContractTruckPriceMapper.insertxxdz(entity);
  889. // }
  890. // //生成主键id
  891. // AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
  892. // amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
  893. // amsContractTransportPrice.setInsertUsername("admin");
  894. // amsContractTransportPrice.setInsertTime(new Date());
  895. // amsContractTransportPrice.setUpdateUsername("admin");
  896. // amsContractTransportPrice.setUpdateTime(new Date());
  897. // amsContractTransportPrice.setInsertUpdateRemark("无");
  898. // amsContractTransportPrice.setDeleted(new BigDecimal(0));
  899. // SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
  900. // Date priceDate = dateformat.parse("2022-9-26");
  901. // amsContractTransportPrice.setPriceDate(priceDate);
  902. // if(selectxxdz!=null && selectxxdz.get("placeId")!=null){
  903. // amsContractTransportPrice.setPlaceId(DataChange.dataToBigDecimal(selectxxdz.get("placeId")));
  904. // }else if(entity!=null && entity.get("placeId")!=null){
  905. // amsContractTransportPrice.setPlaceId(DataChange.dataToBigDecimal(entity.get("placeId")));
  906. // }
  907. // amsContractTransportPrice.setHaulDistance(DataChange.dataToBigDecimal(entity.get("haulDistance")));
  908. // amsContractTransportPrice.setPriceValue(DataChange.dataToBigDecimal(entity.get("priceValue")));
  909. // amsContractTransportPrice.setPriceTonKilometer(DataChange.dataToBigDecimal(entity.get("priceTonKilometer")));
  910. // if (entity!=null && entity.get("carrierAbbreviation")!=null){
  911. // String cys= entity.get("carrierAbbreviation").toString();
  912. // if (cys!=null) {
  913. // Map<String, Object> selectcys=new HashMap<>();
  914. // if(cys.contains("/")){
  915. // String[] cyss = cys.split("/");
  916. // for (int j = 0; j < cyss.length; j++) {
  917. // selectcys = amsContractTruckPriceMapper.selectcys(cyss[j]);
  918. // if (selectcys!=null && selectcys.get("carrierId")!=null) {
  919. // amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(selectcys.get("carrierId")));//承运商id
  920. // }
  921. // }
  922. // }else{
  923. // selectcys = amsContractTruckPriceMapper.selectcys(cys);
  924. // amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(selectcys.get("carrierId")));//承运商id
  925. // }
  926. // }
  927. // }
  928. // if (entity!=null && entity.get("yes")!=null) {
  929. // if (entity.get("yes").toString().equals("1")){
  930. // //中标合同
  931. // amsContractTransportPrice.setReferenceHt(DataChange.dataToBigDecimal(1));
  932. // }else{
  933. // //库存
  934. // amsContractTransportPrice.setInventory(DataChange.dataToBigDecimal(1));
  935. // }
  936. // }
  937. // i = amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
  938. // }
  939. // }catch (Exception e){
  940. // e.printStackTrace();
  941. // }
  942. // return i;
  943. //}
  944. }