123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- package com.steerinfo.dil.service.impl;
- import com.steerinfo.dil.feign.JoinApiFeign;
- import com.steerinfo.dil.mapper.BmstruckCheckMapper;
- import com.steerinfo.dil.mapper.BmstruckDetailsOrderMapper;
- import com.steerinfo.dil.mapper.BmstruckDetailsStatementMapper;
- import com.steerinfo.dil.model.BmstruckCheck;
- import com.steerinfo.dil.model.BmstruckDetailsOrder;
- import com.steerinfo.dil.model.BmstruckDetailsStatement;
- import com.steerinfo.dil.util.DataChange;
- import com.steerinfo.dil.util.EASUtil;
- import com.steerinfo.dil.util.NoUtil;
- import com.steerinfo.dil.model.BmstruckStatement;
- import com.steerinfo.dil.mapper.BmstruckStatementMapper;
- import com.steerinfo.dil.service.IBmstruckStatementService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.text.DecimalFormat;
- import java.util.*;
- import java.math.BigDecimal;
- /**
- * BmstruckStatement服务实现:
- *
- * @author generator
- * @version 1.0-SNAPSHORT 2021-10-15 06:20
- * 类描述
- * 修订历史:
- * 日期:2021-10-15
- * 作者:generator
- * 参考:
- * 描述:BmstruckStatement服务实现
- * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
- * @see null
- */
- @Service(value = "bmstruckStatementService")
- public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
- @Autowired
- BmstruckStatementMapper bmstruckStatementMapper;
- @Autowired
- BmstruckDetailsStatementMapper bmstruckDetailsStatementMapper;
- @Autowired
- BmstruckDetailsOrderMapper bmstruckDetailsOrderMapper;
- @Autowired
- BmstruckCheckMapper bmstruckCheckMapper;
- @Autowired
- NoUtil noUtil;
- @Autowired
- JoinApiFeign joinApiFeign;
- @Autowired
- EASUtil easUtil;
- /**
- * 展示计费账单
- *
- * @param mapValue
- * @return
- */
- @Override
- public List<Map<String, Object>> getTruckStatementList(Map<String, Object> mapValue) {
- List<Map<String, Object>> mapList = bmstruckStatementMapper.getTruckStatementList(mapValue);
- return mapList;
- }
- /**
- * 生成汽运账单
- *
- * @param map
- * @return
- */
- @Transactional
- @Override
- public int addTruckStatement(Map<String, Object> map) throws Exception {
- BigDecimal excludeTax = DataChange.dataToBigDecimal( map.get("excludeTax"));
- String url = map.get("url").toString();
- //查询统计信息
- Map<String,Object> count = bmstruckStatementMapper.getDetails(map);
- //查询单位
- List<Map<String, Object>> companys = bmstruckStatementMapper.getDetailIds(map);
- if(companys.size()>1){
- throw new Exception("存在多个承运商和收货客户!请检查所勾选的订单!");
- }else if(companys.size() == 0){
- throw new Exception("没有查询到承运商和收货客户!");
- }
- //校验是否已经绑定账单
- List<BigDecimal> oldStatementIds= bmstruckStatementMapper.getStatementIds(map);
- if(oldStatementIds.size()>0){
- //删除所有订单
- bmstruckStatementMapper.batchDelete(oldStatementIds);
- //取消所有绑定
- bmstruckStatementMapper.updateAllBind(oldStatementIds);
- }
- BmstruckStatement bmstruckStatement = new BmstruckStatement();
- bmstruckStatement.setCarNum(DataChange.dataToBigDecimal(count.get("carNum")).setScale(2,BigDecimal.ROUND_HALF_UP));
- bmstruckStatement.setSumAmount(DataChange.dataToBigDecimal(count.get("sumAmount")).setScale(2,BigDecimal.ROUND_HALF_UP));
- bmstruckStatement.setConsigneeId(DataChange.dataToBigDecimal(companys.get(0).get("consigneeId")));
- bmstruckStatement.setCarrierId(DataChange.dataToBigDecimal(companys.get(0).get("carrierId")));
- bmstruckStatement.setStatementExcludTax(excludeTax.setScale(2,BigDecimal.ROUND_HALF_UP));
- bmstruckStatement.setPhoto(url);
- // 汽运账单主键
- BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
- bmstruckStatement.setStatementId(statementId);
- // 汽运账单编号
- String statementNumber = noUtil.setResultNo("QYZD", statementId);
- bmstruckStatement.setStatementNumber(statementNumber);
- // 支付单位
- bmstruckStatement.setStatementPaymentUnit("四川达州钢铁集团有限责任公司");
- // 备注
- bmstruckStatement.setStatementRemark("汽运费账单");
- // 常规字段
- bmstruckStatement.setInsertTime(new Date());
- bmstruckStatement.setInsertUsername(map.get("userId").toString());
- bmstruckStatement.setUpdateTime(new Date());
- bmstruckStatement.setUpdateUsername("admin");
- bmstruckStatement.setInsertUpdateRemark("无");
- int code = bmstruckStatementMapper.insertSelective(bmstruckStatement);
- //详单绑定账单ID
- map.put("statementId",statementId);
- bmstruckStatementMapper.batchUpdateDetails(map);
- // // 调用金蝶接口
- // List<Map<String, Object>> entries = joinApiFeign.getSaleDetailsOrder(statementId.intValue());
- // Map<String,Object> head = joinApiFeign.getStatement(statementId.intValue());
- // Map<String,Object> input = new HashMap<>();
- // input.put("entries",entries);
- // input.put("head",head);
- // Map<String, Object> totalMap = easUtil.getTotalMap();
- // totalMap.put("input",input);
- // joinApiFeign.WSFaceWay(totalMap);
- return code;
- }
- /**
- * 展示账单下的详单
- *
- * @param mapVal
- * @return
- */
- @Override
- public List<Map<String, Object>> getSaleTruckStatementDetailsOrderList(Map<String, Object> mapVal) {
- return bmstruckStatementMapper.getSaleTruckStatementDetailsOrderList(mapVal);
- }
- /**
- * 新增内转汽运账单
- *
- * @param mapList
- * @param orderType
- * @return
- */
- @Override
- public int addConvertedTruckStatement(List<Map<String, Object>> mapList, Integer orderType) {
- //orderType:1:计时,2:计数,3:计重,4:包月
- // 生成汽运账单主键
- BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
- // 创建账单实体
- BmstruckStatement bmstruckStatement = new BmstruckStatement();
- // 常规字段
- bmstruckStatement.setInsertTime(new Date());
- bmstruckStatement.setInsertUsername("admin");
- bmstruckStatement.setInsertUpdateRemark("无");
- // 计算账单总金额
- Double doubleTotalAmount = new Double(0);
- //将详单id与账单id绑定至中间表
- for (Map<String, Object> map : mapList) {
- // 中间表主键
- BigDecimal detailsStatementId = bmstruckDetailsStatementMapper.selectDetailsStatementId();
- // 详单id
- BigDecimal detailsId = new BigDecimal((Integer) map.get("detailsId"));
- // 获取详单信息
- BmstruckDetailsOrder bmstruckDetailsOrder = bmstruckDetailsOrderMapper.selectByPrimaryKey(detailsId);
- // 将该详单状态变为已生成账单
- bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(1));
- bmstruckDetailsOrder.setUpdateTime(new Date());
- bmstruckDetailsOrder.setUpdateUsername("admin");
- // 修改详单信息
- bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
- // 新增中间表实体
- BmstruckDetailsStatement bmstruckDetailsStatement = new BmstruckDetailsStatement();
- //设置主键
- bmstruckDetailsStatement.setDetailsStatementId(detailsStatementId);
- bmstruckDetailsStatement.setStatementId(statementId);
- bmstruckDetailsStatement.setDetailsId(detailsId);
- // 设置常规字段
- bmstruckDetailsStatement.setInsertTime(new Date());
- bmstruckDetailsStatement.setInsertUsername("admin");
- bmstruckDetailsStatement.setInsertUpdateRemark("无");
- BigDecimal detailsAmount = new BigDecimal((Double) map.get("detailsAmount"));
- Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
- doubleTotalAmount += detailsAmountDouble;
- bmstruckDetailsStatementMapper.insertSelective(bmstruckDetailsStatement);
- }
- if (orderType == 1) {
- // 备注
- bmstruckStatement.setStatementRemark("计时汽运费账单");
- } else if (orderType == 2) {
- // 备注
- bmstruckStatement.setStatementRemark("计数汽运费账单");
- } else if (orderType == 3) {
- // 备注
- bmstruckStatement.setStatementRemark("计重汽运费账单");
- } else if (orderType == 4) {
- // 备注
- bmstruckStatement.setStatementRemark("包月汽运费账单");
- }
- bmstruckStatement.setStatementExcludTax(new BigDecimal(doubleTotalAmount));
- return bmstruckStatementMapper.insertSelective(bmstruckStatement);
- }
- @Override
- public int delete(BigDecimal statementId) {
- //取消所有绑定
- List<BigDecimal> oldStatementIds=new ArrayList<>();
- oldStatementIds.add(statementId);
- bmstruckStatementMapper.updateAllBind(oldStatementIds);
- //删除账单
- return bmstruckStatementMapper.deleteByPrimaryKey(statementId);
- }
- @Override
- public int update(BigDecimal statementId) {
- BmstruckStatement bmstruckStatement = new BmstruckStatement();
- bmstruckStatement.setStatementType(new BigDecimal(1));
- bmstruckStatement.setUpdateTime(new Date());
- bmstruckStatement.setUpdateUsername("admin");
- return bmstruckStatementMapper.updateByPrimaryKeySelective(bmstruckStatement);
- }
- @Override
- public List<Map<String, Object>> findDetailsForStatement(Map<String, Object> map) {
- return bmstruckStatementMapper.findDetailsForStatement(map);
- }
- @Override
- public String getStatementPhoto(BigDecimal statementId) {
- return bmstruckStatementMapper.selectByPrimaryKey(statementId).getPhoto();
- }
- }
|