Explorar el Código

2024年10月16日08:46:15

纪新园 hace 1 año
padre
commit
adc3b6f229
Se han modificado 17 ficheros con 319 adiciones y 55 borrados
  1. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/DispatchVehicles.java
  2. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/InOutStorage.java
  3. 2 0
      blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/Parameters.java
  4. 5 1
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java
  5. 4 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  6. 21 1
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/LosBFeesTemplateServiceImpl.java
  7. 6 4
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  8. 21 19
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  9. 24 0
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  10. 55 10
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java
  11. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java
  12. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/DispatchVehiclesServiceImpl.java
  13. 22 14
      blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InOutStorageServiceImpl.java
  14. 12 3
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  15. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java
  16. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipService.java
  17. 115 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/DispatchVehicles.java

@@ -192,6 +192,11 @@ public class DispatchVehicles implements Serializable {
 	@ApiModelProperty(value = "返空场站")
 	private String returnCyName;
 	/**
+	 * 应还箱日期
+	 */
+	@ApiModelProperty(value = "应还箱日期")
+	private Date shouldBeReturnedDate;
+	/**
 	 * 是否还箱
 	 */
 	@ApiModelProperty(value = "是否还箱")

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/InOutStorage.java

@@ -265,5 +265,17 @@ public class InOutStorage implements Serializable {
 	@ApiModelProperty(value = "是否已生成入出库")
 	private String whetherInOutStorage;
 
+	/**
+	 * 仓储费单价收
+	 */
+	@TableField(exist = false)
+	private BigDecimal storageFeePriceD;
+
+	/**
+	 * 仓储费单价付
+	 */
+	@TableField(exist = false)
+	private BigDecimal storageFeePriceC;
+
 
 }

+ 2 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/Parameters.java

@@ -227,5 +227,7 @@ public class Parameters implements Serializable {
 
 	@ApiModelProperty(value = "支付授权码")
 	private String authcode;
+	@ApiModelProperty(value = "微信商户号")
+	private String merchantId;
 
 }

+ 5 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java

@@ -17,7 +17,6 @@
 package org.springblade.salesPart.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
@@ -283,6 +282,11 @@ public class PjShip implements Serializable {
 	 */
 	@ApiModelProperty(value = "利息")
 	private BigDecimal interest;
+	/**
+	 * 是否发货通知
+	 */
+	@ApiModelProperty(value = "是否发货通知")
+	private String whetherShippingNotice;
 
 
 	/**

+ 4 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -1534,7 +1534,10 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			if (!res.isSuccess()) {
 				throw new SecurityException(res.getMsg());
 			}*/
-			stockGoodsService.updateBatchById(stockGoodsList1);
+			R res = stockGoodsService.updateBatchById(stockGoodsList1);
+			if (!res.isSuccess()) {
+				throw new SecurityException(res.getMsg());
+			}
 			if ("681169".equals(AuthUtil.getTenantId())) {
 				Long corpId = select.getCorpId();
 				// ===================撤回添加益付款逻辑=========================

+ 21 - 1
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/LosBFeesTemplateServiceImpl.java

@@ -20,12 +20,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.los.Util.IDeptUtils;
+import org.springblade.los.basic.business.entity.BusinessType;
+import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.fees.entity.FeesTemplateItems;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
 import org.springblade.los.basic.fees.mapper.LosBFeesTemplateMapper;
@@ -40,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -59,19 +61,37 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 
 	private final IDeptUtils deptUtils;
 
+	private final IBusinessTypeService bBusinessTypeService;
+
 	@Override
 	public IPage<LosBFeesTemplateVO> selectLosBFeesTemplatePage(IPage<LosBFeesTemplateVO> page, LosBFeesTemplateVO losBFeesTemplate) {
 		return page.setRecords(baseMapper.selectLosBFeesTemplatePage(page, losBFeesTemplate));
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<LosBFeesTemplate>> importLosBFeesTemplate(List<LosBFeesTemplateExcel> excelList) {
 		List<LosBFeesTemplate> losBFeesTemplateList = new ArrayList<>();
+		String type = excelList.stream().map(LosBFeesTemplateExcel::getBusinessTypeCnName)
+			.filter(Objects::nonNull).collect(Collectors.joining(","));
+		List<BusinessType> businessTypeList = bBusinessTypeService.list(new LambdaQueryWrapper<BusinessType>()
+			.eq(BusinessType::getIsDeleted, 0)
+			.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(cn_name,'" + type + "')"));
 		for (LosBFeesTemplateExcel item : excelList) {
 			LosBFeesTemplate losBFeesTemplate = new LosBFeesTemplate();
 			if (ObjectUtils.isNull(item.getCnName())) {
 				throw new RuntimeException("中文名称不能为空");
 			}
+			if (!businessTypeList.isEmpty()) {
+				BusinessType businessType = businessTypeList.stream().filter(e -> e.getCnName().equals(item.getBusinessTypeCnName())).findFirst().orElse(null);
+				if (businessType != null) {
+					losBFeesTemplate.setBusinessTypeId(businessType.getId());
+					losBFeesTemplate.setBusinessTypeCode(businessType.getCode());
+				} else {
+					throw new RuntimeException("业务类型" + item.getBusinessTypeCnName() + "不存在");
+				}
+			}
 			LosBFeesTemplate detail = baseMapper.selectOne(new LambdaQueryWrapper<LosBFeesTemplate>()
 				.eq(LosBFeesTemplate::getTenantId, AuthUtil.getTenantId())
 				.eq(LosBFeesTemplate::getIsDeleted, 0)

+ 6 - 4
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -83,10 +83,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -2571,6 +2568,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 		}
 		this.updateById(bills);
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(bills.getEta());
+		calendar.add(Calendar.DAY_OF_MONTH, Integer.parseInt(bills.getIqNo()));
+		Date newDate = calendar.getTime();
 		if (ObjectUtils.isNotNull(bills.getDispatchVehiclesList())) {
 			for (DispatchVehicles item : bills.getDispatchVehiclesList()) {
 				if (!agentItemsList.isEmpty() && ObjectUtils.isNotNull(item.getDispatchVehiclesDate())) {
@@ -2585,6 +2586,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						}
 					}
 				}
+				item.setShouldBeReturnedDate(newDate);
 				item.setPid(bills.getId());
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());

+ 21 - 19
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java

@@ -48,10 +48,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -398,7 +395,27 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 				deptName = res.getData().getDeptName();
 			}
 		}
+		Bills bills = billsMapper.selectById(preContainers.getPid());
+		if (ObjectUtils.isNotNull(bills.getMconsigneeCntyName())) {
+			List<AgentItems> agentItemsList = agentItemsMapper.selectList(new LambdaQueryWrapper<AgentItems>()
+				.apply("find_in_set(id,'" + bills.getMconsigneeCntyName() + "')")
+				.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
+				.eq(AgentItems::getIsDeleted, 0));
+			for (AgentItems items : agentItemsList) {
+				items.setUpdateTime(new Date());
+				items.setUpdateUser(AuthUtil.getUserId());
+				items.setUpdateUserName(AuthUtil.getUserName());
+				items.setWhetherDispatchCar("已派车");
+				items.setDispatchDate(new Date());
+				agentItemsMapper.updateById(items);
+			}
+		}
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(bills.getEta());
+		calendar.add(Calendar.DAY_OF_MONTH, Integer.parseInt(bills.getIqNo()));
+		Date newDate = calendar.getTime();
 		DispatchVehicles dispatchVehicles = new DispatchVehicles();
+		dispatchVehicles.setShouldBeReturnedDate(newDate);
 		dispatchVehicles.setGoodsType(preContainers.getGoodsType());
 		dispatchVehicles.setPid(preContainers.getPid());
 		dispatchVehicles.setBoxItemsId(preContainers.getId());
@@ -425,21 +442,6 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			dispatchVehicles.setCreateDeptName(deptName);
 		}
 		dispatchVehiclesService.save(dispatchVehicles);
-		Bills bills = billsMapper.selectById(preContainers.getPid());
-		if (ObjectUtils.isNotNull(bills.getMconsigneeCntyName())) {
-			List<AgentItems> agentItemsList = agentItemsMapper.selectList(new LambdaQueryWrapper<AgentItems>()
-				.apply("find_in_set(id,'" + bills.getMconsigneeCntyName() + "')")
-				.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
-				.eq(AgentItems::getIsDeleted, 0));
-			for (AgentItems items : agentItemsList) {
-				items.setUpdateTime(new Date());
-				items.setUpdateUser(AuthUtil.getUserId());
-				items.setUpdateUserName(AuthUtil.getUserName());
-				items.setWhetherDispatchCar("已派车");
-				items.setDispatchDate(new Date());
-				agentItemsMapper.updateById(items);
-			}
-		}
 		preContainers.setWhetherDispatchVehicles("1");
 		preContainers.setUpdateTime(new Date());
 		preContainers.setUpdateUser(AuthUtil.getUserId());

+ 24 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -230,6 +230,30 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					message.setMessageBody("您有新的单据审核,客户名:" + corpName + "," + "业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
 						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
 					);
+				}if ("海运进口审核".equals(auditProecessDTO.getProcessType())) {
+					message.setMessageBody("您有新的单据审核,客户名:" + corpName + "," + "业务单号:" + auditProecessDTO.getBillNo() + ",请审核。"
+						+ " 提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				}else if ("贸易代理单据审核".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的贸易代理审核,业务单号:" + auditProecessDTO.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("贸易代理货款付费申请".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的贸易代理货款付费申请,业务单号:" + auditProecessDTO.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("贸易代理货款收费确认".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的贸易代理货款收费待确认,业务单号:" + auditProecessDTO.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
+				} else if ("贸易代理货款付费确认".equals(auditProecess.getProcessType())) {
+					message.setMessageBody("您有新的贸易代理货款付费待确认,业务单号:" + auditProecessDTO.getBillNo() + ","
+						+ "单据日期:" + billsDate + ",请审核。"
+						+ "提交人:" + auditProecessDTO.getSendName() + "  " + "提交时间" + simpleDateFormat.format(auditProecessDTO.getSendTime())
+					);
 				}
 
 				message.setUrl("/approveDataL/index");

+ 55 - 10
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -1510,24 +1510,58 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 			.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.eq(Bills::getBusinessType, "SE"));
+			.eq(Bills::getBusinessType, "SI"));
 		List<Long> billId = billsList.stream().map(Bills::getId).collect(Collectors.toList());
 		List<DispatchVehicles> dispatchVehiclesList = new ArrayList<>();
-		if (!billId.isEmpty()){
+		if (!billId.isEmpty()) {
 			dispatchVehiclesList = dispatchVehiclesMapper.selectList(new LambdaQueryWrapper<DispatchVehicles>()
 				.eq(DispatchVehicles::getIsDeleted, 0)
 				.eq(DispatchVehicles::getTenantId, AuthUtil.getTenantId())
+//				.le(DispatchVehicles::getShouldBeReturnedDate, new Date())
 				.eq(DispatchVehicles::getWhetherReturn, "0")
-				.in(DispatchVehicles::getPid, billId));
+				.in(DispatchVehicles::getPid, billId)
+				.orderByAsc(DispatchVehicles::getShouldBeReturnedDate));
 			if (dispatchVehiclesList.isEmpty()) {
 				return R.data(mapList);
 			}
-		}else{
+		} else {
 			return R.data(mapList);
 		}
 		Date date = new Date();
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-		for (Bills item : billsList) {
+		for (DispatchVehicles item : dispatchVehiclesList) {
+			Bills bills = billsList.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(null);
+			if (bills != null) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("id", bills.getId());
+				map.put("mblno", bills.getMblno());
+				map.put("corpName", bills.getCorpCnName());
+				map.put("eta", formatter.format(bills.getEta()));
+				map.put("boxNo", item.getBoxNo());
+				map.put("shouldBeReturnedDate", formatter.format(item.getShouldBeReturnedDate()));
+				mapList.add(map);
+			}
+			/*if (ObjectUtils.isNotNull(item.getReturnDate())) {
+				Bills bills = billsList.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(null);
+				if (bills != null) {
+					Calendar calendar = Calendar.getInstance();
+					calendar.setTime(item.getReturnDate());
+					calendar.add(Calendar.DAY_OF_MONTH, 5);
+					Date newDate = calendar.getTime();
+					if (date.compareTo(newDate) == 0) {
+						Map<String, Object> map = new HashMap<>();
+						map.put("id", bills.getId());
+						map.put("mblno", bills.getMblno());
+						map.put("corpName", bills.getCorpCnName());
+						map.put("eta", formatter.format(bills.getEta()));
+						map.put("boxNo", item.getBoxNo());
+						map.put("shouldBeReturnedDate", formatter.format(item.getShouldBeReturnedDate()));
+						mapList.add(map);
+					}
+				}
+			}*/
+		}
+	/*	for (Bills item : billsList) {
 			if (dispatchVehiclesList.stream().anyMatch(e -> e.getPid().equals(item.getId()))) {
 				if (ObjectUtils.isNotNull(item.getEta()) && ObjectUtils.isNotNull(item.getIqNo())) {
 					int count = Integer.parseInt(item.getIqNo());
@@ -1542,11 +1576,12 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 						map.put("corpName", item.getCorpCnName());
 						map.put("eta", formatter.format(item.getEta()));
 						map.put("iqNo", item.getIqNo());
+						map.put("boxNo", item.getMnotify2CntyCode());
 						mapList.add(map);
 					}
 				}
 			}
-		}
+		}*/
 		return R.data(mapList);
 	}
 
@@ -1556,7 +1591,8 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 			.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.eq(Bills::getBusinessType, "SE"));
+			.eq(Bills::getBillingStatus, 0)
+			.eq(Bills::getBusinessType, "SI"));
 		List<Long> billId = billsList.stream().map(Bills::getId).collect(Collectors.toList());
 		List<DispatchVehicles> dispatchVehiclesList = new ArrayList<>();
 		if (!billId.isEmpty()) {
@@ -1568,13 +1604,22 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			if (dispatchVehiclesList.isEmpty()) {
 				return R.data(mapList);
 			}
-		}else{
+		} else {
 			return R.data(mapList);
 		}
 		Date date = new Date();
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 		for (DispatchVehicles item : dispatchVehiclesList) {
-			if (ObjectUtils.isNotNull(item.getReturnDate())) {
+			Bills bills = billsList.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(null);
+			if (bills != null) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("id", item.getId());
+				map.put("mblno", bills.getMblno());
+				map.put("corpName", bills.getCorpCnName());
+				map.put("eta", formatter.format(item.getReturnDate()));
+				mapList.add(map);
+			}
+			/*if (ObjectUtils.isNotNull(item.getReturnDate())) {
 				Bills bills = billsList.stream().filter(e -> e.getId().equals(item.getPid())).findFirst().orElse(null);
 				if (bills != null) {
 					Calendar calendar = Calendar.getInstance();
@@ -1590,7 +1635,7 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 						mapList.add(map);
 					}
 				}
-			}
+			}*/
 		}
 		return R.data(mapList);
 	}

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -2420,6 +2420,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					preContainers.setNumber(items.getQuantity());
 					preContainers.setQuantity(1);
 					preContainers.setGrossWeight(items.getGrossWeight());
+					preContainers.setAmount(items.getAmount());
 					preContainers.setNetWeight(items.getNetWeight());
 					preContainers.setGoodsName(items.getLabelProductName());
 					preContainers.setPrice(items.getPrice());

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/DispatchVehiclesServiceImpl.java

@@ -107,7 +107,7 @@ public class DispatchVehiclesServiceImpl extends ServiceImpl<DispatchVehiclesMap
 	@Transactional(rollbackFor = Exception.class)
 	public R generateWarehouseEntry(DispatchVehicles dispatchVehicles) {
 		if (0 == dispatchVehicles.getWhetherWarehousing()) {
-			throw new RuntimeException("派车信息不予入库");
+			throw new RuntimeException("派车信息不予入库");
 		}
 		Long deptId = 0L;
 		String deptName = "";
@@ -214,7 +214,7 @@ public class DispatchVehiclesServiceImpl extends ServiceImpl<DispatchVehiclesMap
 	@Transactional(rollbackFor = Exception.class)
 	public R revokeWarehouseEntry(DispatchVehicles dispatchVehicles) {
 		if (0 == dispatchVehicles.getWhetherWarehousing()) {
-			throw new RuntimeException("派车信息不予入库");
+			throw new RuntimeException("派车信息不予入库");
 		}
 		InOutStorage inOutStorage = inOutStorageService.getOne(new LambdaQueryWrapper<InOutStorage>()
 			.eq(InOutStorage::getDispatchVehiclesId, dispatchVehicles.getId())

+ 22 - 14
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/InOutStorageServiceImpl.java

@@ -38,7 +38,6 @@ import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
 import org.springblade.los.trade.entity.AgentItems;
 import org.springblade.los.trade.entity.InOutStorage;
 import org.springblade.los.trade.entity.Storage;
-import org.springblade.los.trade.entity.StorageFeeItems;
 import org.springblade.los.trade.mapper.AgentItemsMapper;
 import org.springblade.los.trade.mapper.InOutStorageMapper;
 import org.springblade.los.trade.service.IInOutStorageService;
@@ -233,7 +232,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 						agentItemsMapper.updateById(items);
 					}
 				}
-			}else{
+			} else {
 				inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice());
 			}
 		} else {
@@ -260,7 +259,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 			baseMapper.updateById(inStorage);
 			Bills bills = billsMapper.selectById(inOutStorage.getPid());
 			if (bills != null) {
-				Storage storage = storageService.getById(inOutStorage.getWarehouseId());
+				/*Storage storage = storageService.getById(inOutStorage.getWarehouseId());
 				if (storage == null) {
 					throw new RuntimeException("未查到可用仓库,请先维护");
 				}
@@ -271,6 +270,13 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 					.eq(StorageFeeItems::getGoodsType, inOutStorage.getGoodsType()));
 				if (ObjectUtils.isNull(storageFeeItems)) {
 					throw new RuntimeException("未查到可用仓储费规则,请先维护");
+				}*/
+				BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
+					.eq(BFees::getTenantId, AuthUtil.getTenantId())
+					.eq(BFees::getIsDeleted, 0)
+					.eq(BFees::getCode, "CCF"));
+				if (fees == null) {
+					throw new RuntimeException("请先维护仓储费用基础信息");
 				}
 				long nd = 1000 * 24 * 60 * 60;
 				long diff = inOutStorage.getOutStorageDate().getTime() - inStorage.getStorageDate().getTime();
@@ -279,8 +285,10 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				StringBuilder remark = new StringBuilder("仓储费:");
 				BigDecimal outWeight = inOutStorage.getOutWeight().divide(new BigDecimal("1000"), 4, RoundingMode.HALF_UP);
 				BigDecimal dayDecimal = new BigDecimal(day);
-				BigDecimal amountSum = dayDecimal.multiply(storageFeeItems.getPrice()).multiply(outWeight);
-				remark.append(day).append("天*").append(storageFeeItems.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
+//				BigDecimal amountSum = dayDecimal.multiply(storageFeeItems.getPrice()).multiply(outWeight);
+				BigDecimal amountSum = dayDecimal.multiply(inOutStorage.getStorageFeePriceD()).multiply(outWeight);
+//				remark.append(day).append("天*").append(storageFeeItems.getPrice()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
+				remark.append(day).append("天*").append(inOutStorage.getStorageFeePriceD()).append("元*").append(outWeight).append("吨=").append(amountSum).append("元 ");
 				FeeCenter feeCenter = new FeeCenter();
 				feeCenter.setCreateTime(new Date());
 				feeCenter.setCreateUser(AuthUtil.getUserId());
@@ -308,10 +316,6 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenter.setPodCode(bills.getPodCode());
 				feeCenter.setPodCnName(bills.getPodCnName());
 				feeCenter.setPodEnName(bills.getPodEnName());
-				BFees fees = bFeesService.getById(storageFeeItems.getFeeId());
-				if (fees == null) {
-					throw new RuntimeException("请先维护" + storageFeeItems.getFeeName() + "费用信息");
-				}
 				feeCenter.setFeeId(fees.getId());
 				feeCenter.setFeeCode(fees.getCode());
 				feeCenter.setFeeCnName(fees.getCnName());
@@ -325,7 +329,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenter.setElementsEnName(fees.getElementsEnName());
 				feeCenter.setUnitNo("JOB");
 				feeCenter.setQuantity(outWeight);
-				feeCenter.setPrice(storageFeeItems.getPrice());
+//				feeCenter.setPrice(storageFeeItems.getPrice());
+				feeCenter.setPrice(inOutStorage.getStorageFeePriceD());
 				feeCenter.setAmount(amountSum);
 				feeCenter.setRemarks(remark.toString());
 				feeCenter.setDays(Integer.parseInt(day + ""));
@@ -334,8 +339,10 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenter.setSrcItemId(inOutStorage.getId());
 				feeCenterMapper.insert(feeCenter);
 				StringBuilder remarkC = new StringBuilder("仓储费:");
-				BigDecimal amountSumC = dayDecimal.multiply(storageFeeItems.getPriceC()).multiply(outWeight);
-				remarkC.append(day).append("天*").append(storageFeeItems.getPriceC()).append("元*").append(outWeight).append("吨=").append(amountSumC).append("元 ");
+//				BigDecimal amountSumC = dayDecimal.multiply(storageFeeItems.getPriceC()).multiply(outWeight);
+				BigDecimal amountSumC = dayDecimal.multiply(inOutStorage.getStorageFeePriceC()).multiply(outWeight);
+//				remarkC.append(day).append("天*").append(storageFeeItems.getPriceC()).append("元*").append(outWeight).append("吨=").append(amountSumC).append("元 ");
+				remarkC.append(day).append("天*").append(inOutStorage.getStorageFeePriceC()).append("元*").append(outWeight).append("吨=").append(amountSumC).append("元 ");
 				FeeCenter feeCenterC = new FeeCenter();
 				feeCenterC.setCreateTime(new Date());
 				feeCenterC.setCreateUser(AuthUtil.getUserId());
@@ -376,7 +383,8 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				feeCenterC.setElementsEnName(fees.getElementsEnName());
 				feeCenterC.setUnitNo("JOB");
 				feeCenterC.setQuantity(outWeight);
-				feeCenterC.setPrice(storageFeeItems.getPriceC());
+//				feeCenterC.setPrice(storageFeeItems.getPriceC());
+				feeCenterC.setPrice(inOutStorage.getStorageFeePriceC());
 				feeCenterC.setAmount(amountSumC);
 				feeCenterC.setRemarks(remarkC.toString());
 				feeCenterC.setDays(Integer.parseInt(day + ""));
@@ -601,7 +609,7 @@ public class InOutStorageServiceImpl extends ServiceImpl<InOutStorageMapper, InO
 				//仓储单价 = 单价 + 本次分摊金额
 				inOutStorage.setWarehouseUnitPrice(inOutStorage.getPrice().add(sharedAmount));
 				text = text + "仓储单价(单价 + 本次分摊金额):" + inOutStorage.getWarehouseUnitPrice() + ";";
-			}else{
+			} else {
 				text = text + "仓储单价:" + inOutStorage.getPrice() + ";";
 			}
 			return R.data(text);

+ 12 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -1367,7 +1367,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //						throw new SecurityException("锁定库存失败: " + salesOrder.getOrderNo() + "更新失败");
 						throw new SecurityException(goods.getMsg());
 					}*/
-					stockGoodsService.updateBatchById(stockGoods);
+					R res = stockGoodsService.updateBatchById(stockGoods);
+					if (!res.isSuccess()) {
+						throw new SecurityException(res.getMsg());
+					}
 					/*boolean res = stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
 					if (!res) {
 						throw new RuntimeException("提交失败");
@@ -1977,7 +1980,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //						throw new SecurityException("撤销失败: " + oneStock.getCode() + "更新库存失败");
 					throw new SecurityException(res.getMsg());
 				}*/
-				stockGoodsService.updateBatchById(stockGoodsArrayList);
+				R res = stockGoodsService.updateBatchById(stockGoodsArrayList);
+				if (!res.isSuccess()) {
+					throw new SecurityException(res.getMsg());
+				}
 //				stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
 				stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
 			}
@@ -2236,7 +2242,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //						throw new SecurityException("撤销失败:" + order.getOrderNo() + "更新库存失败");
 						throw new SecurityException(r.getMsg());
 					}*/
-					stockGoodsService.updateBatchById(stockGoods);
+					R res = stockGoodsService.updateBatchById(stockGoods);
+					if (!res.isSuccess()) {
+						throw new SecurityException(res.getMsg());
+					}
 //					stockGoodsClient.saveOrUpdateBatchListLog(stockGoodsLogList);
 					stockGoodsLogService.saveOrUpdateBatch(stockGoodsLogList);
 

+ 10 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -458,4 +458,14 @@ public class ShipController extends BladeController {
 		return R.data(pages);
 	}
 
+	/**
+	 * 微信发货通知
+	 */
+	@PostMapping("/shippingNotice")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "发货微信通知", notes = "传入ship")
+	public R shippingNotice(@Valid @RequestBody PjShip ship) {
+		return shipService.shippingNotice(ship);
+	}
+
 }

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/IShipService.java

@@ -179,4 +179,6 @@ public interface IShipService extends IService<PjShip> {
 	R revokeWorkOrderReturns(String ids);
 
 	R submitReturns(PjShip ship);
+
+	R shippingNotice(PjShip ship);
 }

+ 115 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.salesPart.ship.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,13 +30,18 @@ import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
+import okhttp3.*;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.jackson.JsonUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.pay.tonglianPayment.entity.Parameters;
+import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
+import org.springblade.salesPart.corps.service.ICorpsAttnService;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.excel.PjShipStockDetails;
@@ -73,6 +80,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.io.IOException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.MathContext;
@@ -121,6 +129,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 
 	private final IShipItemsRecordService shipItemsRecordService;
 
+	private final ITongLianPaymentClient parametersService;
+
+	private final ICorpsAttnService corpsAttnService;
+
 	/**
 	 * 获取收发货订单详情
 	 *
@@ -4918,4 +4930,107 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		return R.data(ship);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R shippingNotice(PjShip ship) {
+		PjShip shipVersion = baseMapper.selectById(ship.getId());
+		if (shipVersion != null && !shipVersion.getVersion().equals(ship.getVersion())) {
+			throw new RuntimeException("数据已被修改,请返回列表重新操作!");
+		}
+		ship.setVersion(ship.getVersion() + 1);
+		ship.setUpdateUser(AuthUtil.getUserId());
+		ship.setUpdateTime(new Date());
+		ship.setWhetherShippingNotice("1");
+		baseMapper.updateById(ship);
+		Parameters parameters = parametersService.getParametersOne();
+		if (ObjectUtils.isNull(parameters)) {
+			throw new SecurityException("未找到小程序信息");
+		}
+		if (ObjectUtils.isNull(parameters.getAppSecret())) {
+			throw new SecurityException("未找到小程序秘钥");
+		}
+		String appIds = parameters.getSubAppid();
+		String appSecrets = parameters.getAppSecret();
+		OkHttpClient client = new OkHttpClient();
+		//获得token
+
+		Request request = new Request.Builder().url("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appIds + "&secret=" + appSecrets + "").build();
+		try {
+			Response responseToken = client.newCall(request).execute();
+			//如果请求成功,解析数据
+			if (responseToken.isSuccessful()) {
+				String body = responseToken.body().string();
+				//得到一个JSON对象
+				JSONObject object = JSON.parseObject(body);
+				String accessToken = object.getString("access_token");
+				if (ObjectUtils.isNotNull(accessToken)) {
+					Map<String, Object> map1 = new HashMap<>();
+					map1.put("logistics_type", "4");
+					map1.put("delivery_mode", "UNIFIED_DELIVERY");
+					map1.put("is_all_delivered", "");
+					map1.put("upload_time", new Date());
+					PjCorpsAttn attn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
+						.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+						.eq(PjCorpsAttn::getIsDeleted, 0)
+						.eq(PjCorpsAttn::getPid, ship.getCustomerId()));
+					if (attn == null || ObjectUtils.isNull(attn.getUserId())) {
+						throw new RuntimeException("未找到客户联系人信息");
+					}
+					R<User> res = userClient.userInfoById(attn.getUserId());
+					if (!res.isSuccess()) {
+						throw new RuntimeException("未找到客户联系人对应用户信息");
+					}
+					Map<String, String> mapUser = new HashMap<>();
+					mapUser.put("openid", res.getData().getOpenId());
+					map1.put("payer", mapUser);
+					Map<String, Object> mapGoods = new HashMap<>();
+					mapGoods.put("item_desc", ship.getGoodsNames());
+					map1.put("shipping_list", mapGoods);
+					Map<String, Object> mapOrder = new HashMap<>();
+					mapOrder.put("order_number_type", 1);
+					mapOrder.put("mchid", parameters.getMerchantId());
+					map1.put("order_key", mapOrder);
+					//发送发货通知
+					Request requestShip = new Request.Builder()
+						.url("https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" + accessToken)
+						.method("post", RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JsonUtil.toJson(map1)))
+						.post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JsonUtil.toJson(map1)))
+						.build();
+					try {
+						Response responsePhone = client.newCall(requestShip).execute();
+						//如果请求成功,解析数据
+						if (responsePhone.isSuccessful()) {
+							String bodyShip = responsePhone.body().string();
+							//得到一个JSON对象
+							JSONObject objectShip = JSON.parseObject(bodyShip);
+							if (objectShip.getString("errcode").equals("0")) {
+								String status = objectShip.getString("errmsg");
+								if ("ok".equals(status)) {
+									return R.data("操作成功");
+								} else {
+									throw new RuntimeException("发送失败");
+								}
+							} else if (object.getString("errcode").equals("-1")) {
+								throw new RuntimeException("系统繁忙,此时请开发者稍候再试");
+							} else {
+								throw new RuntimeException("发送失败");
+							}
+						} else {
+							throw new RuntimeException("发送失败");
+						}
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+				} else {
+					throw new RuntimeException("access_token获取失败");
+				}
+			} else {
+				throw new RuntimeException("发送失败");
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return R.data("操作成功");
+	}
+
 }