|
@@ -1,9 +1,12 @@
|
|
|
package com.iotechn.unimall.admin.api.sys;
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.iotechn.unimall.core.exception.AdminServiceException;
|
|
|
import com.iotechn.unimall.core.exception.ExceptionDefinition;
|
|
|
import com.iotechn.unimall.core.exception.ServiceException;
|
|
|
+import com.iotechn.unimall.data.domain.CollectionPaymentDO;
|
|
|
import com.iotechn.unimall.data.domain.CustomerBillingDetailDO;
|
|
|
import com.iotechn.unimall.data.dto.CollectionPaymentDTO;
|
|
|
import com.iotechn.unimall.data.dto.CollectionPaymentTiDTO;
|
|
@@ -27,8 +30,10 @@ import org.springframework.util.StringUtils;
|
|
|
import tk.mybatis.mapper.util.StringUtil;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -180,4 +185,73 @@ public class CustomerBillingServiceImpl implements CustomerBillingService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void createAll(List<CustomerBillingInfoDTO> customerBillingInfoDTOList) throws ServiceException {
|
|
|
+ Date now = new Date();
|
|
|
+ customerBillingInfoDTOList = JSON.parseArray(JSONObject.toJSONString(customerBillingInfoDTOList), CustomerBillingInfoDTO.class);
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(customerBillingInfoDTOList)) {
|
|
|
+ Map<String, List<CustomerBillingInfoDTO>> groupByCustomer = customerBillingInfoDTOList.stream().collect(Collectors.groupingBy(CustomerBillingInfoDTO::getCustomer));
|
|
|
+ for(String key :groupByCustomer.keySet()){
|
|
|
+ CustomerBillingInfoDO customerBillingInfoDO = new CustomerBillingInfoDO();
|
|
|
+ customerBillingInfoDO.setCustomer(key);
|
|
|
+ customerBillingInfoDO.setBusinessType("1");
|
|
|
+ customerBillingInfoDO.setStatus(1);
|
|
|
+ customerBillingInfoDO.setPayNo(getlinkNo());
|
|
|
+ customerBillingInfoDO.setGmtUpdate(now);
|
|
|
+ customerBillingInfoDO.setGmtCreate(now);
|
|
|
+ List<CustomerBillingInfoDTO> customerBillingInfoDTOS = groupByCustomer.get(key);
|
|
|
+ customerBillingInfoDO.setClosingDate(customerBillingInfoDTOS.get(0).getClosingDate());
|
|
|
+ Double amount = 0d;
|
|
|
+ if (customerBillingInfoMapper.insert(customerBillingInfoDO) > 0) {
|
|
|
+// Double cost = 0d;
|
|
|
+ for (int i = 0; i < customerBillingInfoDTOS.size(); i++) {
|
|
|
+ CustomerBillingInfoDTO customerBillingInfoDTO = customerBillingInfoDTOS.get(i);
|
|
|
+ CustomerBillingDetailDO customerBillingDetailDO = new CustomerBillingDetailDO();
|
|
|
+ customerBillingDetailDO.setInfoId(customerBillingInfoDO.getId());
|
|
|
+ customerBillingDetailDO.setCabinetNo(customerBillingInfoDTO.getCabinetNo());
|
|
|
+ customerBillingDetailDO.setArrivalDate(customerBillingInfoDTO.getArrivalDate());
|
|
|
+ customerBillingDetailDO.setSendComp(customerBillingInfoDTO.getSendComp());
|
|
|
+ customerBillingDetailDO.setCarTeam(customerBillingInfoDTO.getCarTeam());
|
|
|
+ customerBillingDetailDO.setProduct(customerBillingInfoDTO.getProduct());
|
|
|
+ customerBillingDetailDO.setDeliveryPlace(customerBillingInfoDTO.getDeliveryPlace());
|
|
|
+ customerBillingDetailDO.setClearanceFee(customerBillingInfoDTO.getClearanceFee());
|
|
|
+ customerBillingDetailDO.setClearanceCost(customerBillingInfoDTO.getClearanceCost());
|
|
|
+ customerBillingDetailDO.setTruck(customerBillingInfoDTO.getTruck());
|
|
|
+ customerBillingDetailDO.setTruckCost(customerBillingInfoDTO.getTruckCost());
|
|
|
+ customerBillingDetailDO.setOtherExpenses(customerBillingInfoDTO.getOtherExpenses());
|
|
|
+ customerBillingDetailDO.setOtherCost(customerBillingInfoDTO.getOtherCost());
|
|
|
+ customerBillingDetailDO.setPricePayable(customerBillingInfoDTO.getClearanceFee() + customerBillingInfoDTO.getTruck() + customerBillingInfoDTO.getOtherExpenses());
|
|
|
+ amount = amount + customerBillingDetailDO.getPricePayable();
|
|
|
+ customerBillingDetailDO.setCost(customerBillingInfoDTO.getClearanceCost() + customerBillingInfoDTO.getTruckCost() + customerBillingInfoDTO.getOtherCost());
|
|
|
+// cost =cost+customerBillingDetailDO.getCost();
|
|
|
+ customerBillingDetailDO.setGmtUpdate(now);
|
|
|
+ customerBillingDetailDO.setGmtCreate(now);
|
|
|
+ customerBillingDetailMapper.insert(customerBillingDetailDO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ customerBillingInfoDO.setAmountIng(amount);
|
|
|
+ customerBillingInfoMapper.updateById(customerBillingInfoDO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public String getlinkNo() {
|
|
|
+ String linkNo = "";
|
|
|
+ // 用字符数组的方式随机
|
|
|
+ String model = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
|
+ char[] m = model.toCharArray();
|
|
|
+ for (int j = 0; j < 6; j++) {
|
|
|
+ char c = m[(int) (Math.random() * 36)];
|
|
|
+ // 保证六位随机数之间没有重复的
|
|
|
+ if (linkNo.contains(String.valueOf(c))) {
|
|
|
+ j--;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ linkNo = linkNo + c;
|
|
|
+ }
|
|
|
+ return linkNo;
|
|
|
+ }
|
|
|
}
|