Browse Source

2024年4月16日17:37:19

纪新园 1 year ago
parent
commit
d35f6ffc2f

+ 3 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java

@@ -263,6 +263,9 @@ public class PjOrderItems implements Serializable {
 	 */
 	@ApiModelProperty(value = "盈亏金额")
 	private BigDecimal profitLossAmount;
+
+	@ApiModelProperty(value = "业务类型")
+	private String bsType;
 	/**
 	 * 附件
 	 */

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/Util/StringTools.java

@@ -250,7 +250,7 @@ public class StringTools {
 			return bVessels;
 		}
 		else if ("BCntrTypes".equals(type)) {
-			Class<?> inttraSoDtoClass = BCorps.class;
+			Class<?> inttraSoDtoClass = BCntrTypes.class;
 			Field[] fileds = inttraSoDtoClass.getDeclaredFields();
 			BCntrTypes bVessels = JSONObject.parseObject(JSONObject.toJSONString(data), BCntrTypes.class);
 			for (Field field : fileds) {

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -402,3 +402,4 @@ public class BillsController extends BladeController {
 	}
 
 }
+

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/external/Luhaitong/ApiController.java

@@ -7,6 +7,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -41,7 +42,7 @@ public class ApiController {
 	@ApiOperation(value = "详情", notes = "传入reports")
 	public R detail(@RequestParam("billNo") String billNo, @RequestParam("station") String station) throws IOException {
 		String geturl = "https://www.sdland-sea.com/station/billSearch?billNo=" + billNo + "&type=" + station;
-		String auth = sysClient.getParamService("secret_key");
+		String auth = sysClient.getParamServiceByDept("secret_key", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 		if (ObjectUtils.isNull(auth)) {
 			throw new RemoteException("陆海通秘钥为空,请先维护");
 		}

+ 3 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -210,8 +210,8 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			corpsDesc.setEnableOrNot(1);
 			baseMapper.insert(corpsDesc);
 		} else {
-			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
-			if (pjCorpsDesc.size() > 1 && ids.contains(corpsDesc.getId())) {
+			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).collect(Collectors.toList());
+			if (!pjCorpsDesc.isEmpty() && !ids.contains(corpsDesc.getId())) {
 				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
 			}
 			corpsDesc.setTenantId(SecureUtil.getTenantId());
@@ -934,7 +934,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			this.saveOrUpdateTypeDesc(corpsDesc, userId, pId, date, tenantId);
 		} else {
 			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
-			if (pjCorpsDesc.size() > 1 && ids.contains(corpsDesc.getId())) {
+			if (!pjCorpsDesc.isEmpty() && !ids.contains(corpsDesc.getId())) {
 				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
 			}
 			corpsDesc.setUpdateTime(new Date());

+ 0 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -386,9 +386,6 @@
         <if test="order.dot!=null and order.dot!=''">
             and psi.dot = #{order.dot}
         </if>
-        <if test="order.dot == null or order.dot ==''">
-            and psi.dot is null
-        </if>
         <if test="order.stockId!=null">
             and ps.storage_id = #{order.stockId}
         </if>

+ 6 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -851,13 +851,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
-			List<Long> goodsIds = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			/*List<Long> goodsIds = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			if (order.getOrderItemsList().size() != goodsIds.size()) {
 				throw new RuntimeException("商品重复,请修改");
-			}
+			}*/
 			order.getOrderItemsList().forEach(item -> {
 				item.setBizType(order.getBsType());
 				item.setBillNo(order.getOrdNo());
+				item.setBsType(order.getBsType());
 				BigDecimal totalAmount = item.getInventory().multiply(item.getCostprie());
 				if (ObjectUtils.isNotNull(item.getSendNum())) {
 					BigDecimal profitLossNum = item.getSendNum().subtract(item.getInventory());
@@ -936,10 +937,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					.eq(PjProductLaunch::getSalesCompanyId, pjOrder.getSalesCompanyId())
 					.in(PjProductLaunch::getGoodsId, goodsIds));
 			}
+			order.setStatus("已确认");
 			List<PjGoodsDesc> finalPjGoodsDescList = pjGoodsDescList;
 			List<PjStockDesc> finalPjStockDescList = pjStockDescList;
 			List<PjProductLaunch> finalPjProductLaunchList = pjProductLaunchList;
 			order.getOrderItemsList().forEach(item -> {
+				item.setStatus(order.getStatus());
 				//获得商品
 				PjGoodsDesc goodsDesc = finalPjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId()))
 					.findFirst().orElse(null);
@@ -981,8 +984,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			if (!productLaunches.isEmpty()) {
 				productLaunchService.saveOrUpdateBatch(productLaunches);
 			}
+			orderItemsService.updateBatchById(order.getOrderItemsList());
 		}
-		order.setStatus("已确认");
 		baseMapper.updateById(order);
 		return R.data(order);
 	}

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

@@ -559,6 +559,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.in(PjOrderItems::getId, srcItemIds));
 			BigDecimal number = new BigDecimal("0.00");
 			String msg = "";
+			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrderItems::getIsDeleted, 0)
+				.eq(PjOrderItems::getBsType, "PD")
+				.ne(PjOrderItems::getStatus, "已确认")
+				.in(PjOrderItems::getGoodsId, goodIds)
+			);
+			StringBuilder msg1 = new StringBuilder();
 			for (PjShipItems item : ship.getShipItemsList()) {
 				number = number.add(item.getSendNum());
 				if (item.getId() == null) {
@@ -574,6 +582,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 				shipItemsList.add(item);
 				//获得商品
+				List<PjOrderItems> pjOrderItemsList1 = orderItemsList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+				if (!pjOrderItemsList1.isEmpty()) {
+					msg1.append(item.getGoodsName()).append(",");
+				}
 				PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
 				if (ObjectUtil.isEmpty(goodsDesc)) {
 					throw new RuntimeException("商品数据异常");
@@ -606,8 +618,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 				if (stockOne != null) {
 					if (stockOne.getBalanceQuantity().compareTo(item.getSendNum()) < 0) {
-						System.err.println("商品:"+goodsDesc.getCname());
-						msg += goodsDesc.getCname()+",";
+						System.err.println("商品:" + goodsDesc.getCname());
+						msg += goodsDesc.getCname() + ",";
 					}
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
@@ -622,8 +634,11 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					throw new RuntimeException("未查到库存账");
 				}
 			}
-			if (!msg.isEmpty()){
-				throw new RuntimeException("商品:"+msg+"库存不足,出库失败");
+			if (!msg.isEmpty()) {
+				throw new RuntimeException("商品:" + msg + "库存不足,出库失败");
+			}
+			if (msg1.length() > 0) {
+				throw new RuntimeException("商品:" + msg1 + "正在盘点中,操作失败");
 			}
 			R res = iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
 			if (!res.isSuccess()) {
@@ -718,6 +733,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getId, srcItemIds));
+			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrderItems::getIsDeleted, 0)
+				.eq(PjOrderItems::getBsType, "PD")
+				.ne(PjOrderItems::getStatus, "已确认")
+				.in(PjOrderItems::getGoodsId, goodIds)
+			);
+			StringBuilder msg1 = new StringBuilder();
 			BigDecimal number = new BigDecimal("0.00");
 			for (PjShipItems item : ship.getShipItemsList()) {
 				number = number.add(item.getSendNum());
@@ -728,7 +751,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				} else {
 					throw new RuntimeException("数据异常请联系管理员");
 				}
-
+				List<PjOrderItems> pjOrderItemsList1 = orderItemsList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+				if (!pjOrderItemsList1.isEmpty()) {
+					msg1.append(item.getGoodsName()).append(",");
+				}
 				//获得商品
 				PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
 				if (ObjectUtil.isEmpty(goodsDesc)) {
@@ -760,6 +786,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 				itemsList.add(item);
 			}
+			if (msg1.length() > 0) {
+				throw new RuntimeException("商品:" + msg1 + "正在盘点中,操作失败");
+			}
 			R res = iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
 			if (!res.isSuccess()) {
 				throw new RuntimeException(res.getMsg());
@@ -1008,6 +1037,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getId, srcItemIds));
+			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrderItems::getIsDeleted, 0)
+				.eq(PjOrderItems::getBsType, "PD")
+				.ne(PjOrderItems::getStatus, "已确认")
+				.in(PjOrderItems::getGoodsId, goodIds)
+			);
+			StringBuilder msg1 = new StringBuilder();
 			//获得仓库
 			PjStorageDesc storageDesc = storageDescMapper.selectById(ship.getStorageId());
 			for (PjShipItems item : ship.getShipItemsList()) {
@@ -1023,7 +1060,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					item.setPid(ship.getId());
 				}
 				shipItemsList.add(item);
-
+				List<PjOrderItems> pjOrderItemsList1 = orderItemsList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+				if (!pjOrderItemsList1.isEmpty()) {
+					msg1.append(item.getGoodsName()).append(",");
+				}
 				//获得商品
 				PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
 				if (ObjectUtil.isEmpty(goodsDesc)) {
@@ -1112,6 +1152,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					throw new RuntimeException(stockOne.getCname() + "该产品库存正在操作,请稍后刷新在进行操作!");
 				}*/
 			}
+			if (msg1.length() > 0) {
+				throw new RuntimeException("商品:" + msg1 + "正在盘点中,操作失败");
+			}
 			shipItemsService.saveOrUpdateBatch(shipItemsList);
 			if (!pjStockDescArrayListSave.isEmpty()) {
 				iStockDescService.saveBatch(pjStockDescArrayListSave);
@@ -1437,6 +1480,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getId, srcItemIds));
 			List<PjStockDesc> pjStockDescArrayList = new ArrayList<>();
+			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrderItems::getIsDeleted, 0)
+				.eq(PjOrderItems::getBsType, "PD")
+				.ne(PjOrderItems::getStatus, "已确认")
+				.in(PjOrderItems::getGoodsId, goodIds)
+			);
+			StringBuilder msg1 = new StringBuilder();
 			for (PjShipItems item : ship.getShipItemsList()) {
 				number = number.add(item.getSendNum());
 				//获得商品
@@ -1444,6 +1495,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				if (ObjectUtil.isEmpty(goodsDesc)) {
 					throw new RuntimeException("商品数据异常");
 				}
+				List<PjOrderItems> pjOrderItemsList1 = orderItemsList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+				if (!pjOrderItemsList1.isEmpty()) {
+					msg1.append(item.getGoodsName()).append(",");
+				}
 				//管理批次号
 				PjStockDesc stockOne;
 				if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && "1".equals(goodsDesc.getWhether())) {
@@ -1481,6 +1536,9 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					throw new RuntimeException("未查到库存数据");
 				}
 			}
+			if (msg1.length() > 0) {
+				throw new RuntimeException("商品:" + msg1 + "正在盘点中,操作失败");
+			}
 			iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
 			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();

+ 36 - 36
blade-service/blade-sales-part/src/main/resources/log/logback-dev.xml

@@ -58,56 +58,56 @@
     </if>
 
     <!-- 日志输出级别 -->
-    <root level="ERROR">
+    <root level="info">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="${STDOUT_APPENDER}"/>
     </root>
 
-    <logger name="net.sf.ehcache" level="ERROR"/>
-    <logger name="druid.sql" level="ERROR"/>
+    <logger name="net.sf.ehcache" level="info"/>
+    <logger name="druid.sql" level="info"/>
 
 
     <!-- MyBatis log configure -->
-    <logger name="com.apache.ibatis" level="ERROR"/>
-    <logger name="org.mybatis.spring" level="ERROR"/>
-    <logger name="java.sql.Connection" level="ERROR"/>
-    <logger name="java.sql.Statement" level="ERROR"/>
-    <logger name="java.sql.PreparedStatement" level="ERROR"/>
+    <logger name="com.apache.ibatis" level="info"/>
+    <logger name="org.mybatis.spring" level="info"/>
+    <logger name="java.sql.Connection" level="info"/>
+    <logger name="java.sql.Statement" level="info"/>
+    <logger name="java.sql.PreparedStatement" level="info"/>
 
     <!-- 减少部分debug日志 -->
-    <logger name="druid.sql" level="ERROR"/>
-    <logger name="org.apache.shiro" level="ERROR"/>
-    <logger name="org.mybatis.spring" level="ERROR"/>
-    <logger name="org.springframework" level="ERROR"/>
-    <logger name="org.springframework.context" level="ERROR"/>
-    <logger name="org.springframework.beans" level="ERROR"/>
-    <logger name="com.baomidou.mybatisplus" level="ERROR"/>
-    <logger name="org.apache.ibatis.io" level="ERROR"/>
-    <logger name="org.apache.velocity" level="ERROR"/>
-    <logger name="org.eclipse.jetty" level="ERROR"/>
-    <logger name="io.undertow" level="ERROR"/>
-    <logger name="org.xnio.nio" level="ERROR"/>
-    <logger name="org.thymeleaf" level="ERROR"/>
-    <logger name="springfox.documentation" level="ERROR"/>
-    <logger name="org.hibernate.validator" level="ERROR"/>
-    <logger name="com.netflix.loadbalancer" level="ERROR"/>
-    <logger name="com.netflix.hystrix" level="ERROR"/>
-    <logger name="com.netflix.zuul" level="ERROR"/>
-    <logger name="de.codecentric" level="ERROR"/>
+    <logger name="druid.sql" level="info"/>
+    <logger name="org.apache.shiro" level="info"/>
+    <logger name="org.mybatis.spring" level="info"/>
+    <logger name="org.springframework" level="info"/>
+    <logger name="org.springframework.context" level="info"/>
+    <logger name="org.springframework.beans" level="info"/>
+    <logger name="com.baomidou.mybatisplus" level="info"/>
+    <logger name="org.apache.ibatis.io" level="info"/>
+    <logger name="org.apache.velocity" level="info"/>
+    <logger name="org.eclipse.jetty" level="info"/>
+    <logger name="io.undertow" level="info"/>
+    <logger name="org.xnio.nio" level="info"/>
+    <logger name="org.thymeleaf" level="info"/>
+    <logger name="springfox.documentation" level="info"/>
+    <logger name="org.hibernate.validator" level="info"/>
+    <logger name="com.netflix.loadbalancer" level="info"/>
+    <logger name="com.netflix.hystrix" level="info"/>
+    <logger name="com.netflix.zuul" level="info"/>
+    <logger name="de.codecentric" level="info"/>
     <!-- cache INFO -->
-    <logger name="net.sf.ehcache" level="ERROR"/>
-    <logger name="org.springframework.cache" level="ERROR"/>
+    <logger name="net.sf.ehcache" level="info"/>
+    <logger name="org.springframework.cache" level="info"/>
     <!-- cloud -->
-    <logger name="org.apache.http" level="ERROR"/>
-    <logger name="com.netflix.discovery" level="ERROR"/>
-    <logger name="com.netflix.eureka" level="ERROR"/>
+    <logger name="org.apache.http" level="info"/>
+    <logger name="com.netflix.discovery" level="info"/>
+    <logger name="com.netflix.eureka" level="info"/>
     <!-- 业务日志 -->
-    <Logger name="org.springblade" level="ERROR"/>
-    <Logger name="org.springblade.core.tenant" level="ERROR"/>
-    <Logger name="org.springblade.core.version" level="ERROR"/>
+    <Logger name="org.springblade" level="info"/>
+    <Logger name="org.springblade.core.tenant" level="info"/>
+    <Logger name="org.springblade.core.version" level="info"/>
 
     <!-- 减少nacos日志 -->
-    <logger name="com.alibaba.nacos" level="ERROR"/>
+    <logger name="com.alibaba.nacos" level="info"/>
 
 
 </configuration>