Browse Source

2022年9月26日18:08:47

纪新园 3 years ago
parent
commit
7fc4520643
14 changed files with 431 additions and 262 deletions
  1. 15 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java
  2. 3 3
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/feign/IOrderDescClient.java
  3. 6 5
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  4. 2 1
      blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml
  5. 22 16
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/AccServiceImpl.java
  6. 31 6
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java
  7. 6 6
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/feign/OrderDescClient.java
  8. 11 2
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.java
  9. 3 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.xml
  10. 6 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml
  11. 7 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderItemsService.java
  12. 3 3
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java
  13. 10 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderItemsServiceImpl.java
  14. 306 219
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

+ 15 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java

@@ -20,9 +20,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -239,6 +241,12 @@ public class Acc implements Serializable {
 	 * 创建时间
 	 */
 	@ApiModelProperty(value = "创建时间")
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM"
+	)
 	private Date createTime;
 	/**
 	 * 修改人
@@ -349,6 +357,13 @@ public class Acc implements Serializable {
 	private BigDecimal lastAmount;
 
 	/**
+	 * 上期未付金额
+	 */
+	@ApiModelProperty(value = "上期未付金额")
+	@TableField(exist = false)
+	private BigDecimal lastOutstandingAmount;
+
+	/**
 	 * 业务类型
 	 */
 	@TableField(exist = false)

+ 3 - 3
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/feign/IOrderDescClient.java

@@ -34,12 +34,12 @@ public interface  IOrderDescClient {
 	Order getByOrder(String orderNo);
 
 	@PostMapping(PASS_CHECK)
-	R passCheck(@RequestParam("id") Long id);
+	R passCheck(@RequestParam("id") Long id,@RequestParam("times") int times);
 
 	@PostMapping(PASS_CANCEL)
-	R passCancel(@RequestParam("id") Long id);
+	R passCancel(@RequestParam("id") Long id,@RequestParam("times") int times);
 
 	@PostMapping(UNDER_REVIEW)
-	R underReview(@RequestParam("id") Long id);
+	R underReview(@RequestParam("id") Long id,@RequestParam("times") int times);
 
 }

+ 6 - 5
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -178,6 +178,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			auditProecess.setAmount(auditProecessDTO.getAmount());
 			auditProecess.setReceivableAmount(auditProecessDTO.getReceivableAmount());
 			auditProecess.setPayAmount(auditProecessDTO.getPayAmount());
+			auditProecess.setTimes(auditProecessDTO.getTimes());
 			//除了第一级是待审,其他都N
 			if (e.getLevelId() == 1) {
 				SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
@@ -2131,7 +2132,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		baseMapper.updateById(auditProecess);
 	}
 	/**
-	 * 采木云入出库审批
+	 * 嘉通入出库审批
 	 * @param auditProecess
 	 */
 	@Override
@@ -2178,7 +2179,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			if (operate == 1) {
 				//如果是第一级, 则修改状态为审批中
 				if (auditProecess.getLevelId() == 1) {
-					R submit = iorderDescClient.underReview(auditProecess.getSrcBillId());
+					R submit = iorderDescClient.underReview(auditProecess.getSrcBillId(),auditProecess.getTimes());
 					if (!submit.isSuccess()) {
 						throw new SecurityException("审批开始修改审核状态失败");
 					}
@@ -2253,7 +2254,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			else if (operate == 2) {
 				auditProecess.setAuditStatus("B");
 				//todo 调用feign取消
-				R r = iorderDescClient.passCancel(auditProecess.getSrcBillId());
+				R r = iorderDescClient.passCancel(auditProecess.getSrcBillId(),auditProecess.getTimes());
 				if (!r.isSuccess()) {
 					throw new SecurityException("修改审核状态失败");
 				}
@@ -2277,7 +2278,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			if (operate == 1) {
 				//todo 调用feign直接通过
 				auditProecess.setAuditStatus("A");
-				R r = iorderDescClient.passCheck(auditProecess.getSrcBillId());
+				R r = iorderDescClient.passCheck(auditProecess.getSrcBillId(),auditProecess.getTimes());
 				if (!r.isSuccess()) {
 					throw new SecurityException(r.getMsg());
 				}
@@ -2297,7 +2298,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			else if (operate == 2) {
 				//todo 调用feign取消
 				auditProecess.setAuditStatus("B");
-				R r = iorderDescClient.passCancel(auditProecess.getSrcBillId());
+				R r = iorderDescClient.passCancel(auditProecess.getSrcBillId(),auditProecess.getTimes());
 
 				if (!r.isSuccess()) {
 					throw new SecurityException("修改审核状态失败");

+ 2 - 1
blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml

@@ -243,6 +243,7 @@ FROM
     </select>
 
     <select id="selectlastIssueAmount" resultType="java.util.Map">
+        select
         sum( IF ( DC = 'd', Settlement_Amount, 0 ) ) AS lastSettlementAmountD,
         sum( IF ( DC = 'd', Amount, 0 ) ) AS lastAmountD,
         sum( IF ( DC = 'c', Settlement_Amount, 0 ) ) AS lastSettlementAmountC,
@@ -251,7 +252,7 @@ FROM
         WHERE
         is_deleted = 0
         and status = 0
-        and corp_id = #{corpId}
+        and Corpid = #{corpId}
         <if test="createTime == null">
             and date_format(create_time,'%Y-%m') &lt; date_format(now(),'%Y-%m')
         </if>

+ 22 - 16
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/AccServiceImpl.java

@@ -223,18 +223,24 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 	public IPage<Acc> selectAccBillList(Acc acc) {
 		//判断是否选择客户
 		if (ObjectUtils.isNotNull(acc.getCorpId())) {
+
+			Acc acc1 = new Acc();
+
 			QueryWrapper<Acc> queryWrapper = new QueryWrapper<>();
 			queryWrapper.eq("is_deleted", 0);
 			queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
 			queryWrapper.eq("status", 0);
-			queryWrapper.eq("Corpid", acc.getCorpId());
-			queryWrapper.eq("DC", acc.getDc());
+			queryWrapper.eq(ObjectUtils.isNotNull(acc.getCorpId()),"Corpid", acc.getCorpId());
+			queryWrapper.eq(ObjectUtils.isNotNull(acc.getDc()),"DC", acc.getDc());
 			if (ObjectUtils.isNull(acc.getCreateTime())) {
 				queryWrapper.apply("date_format(create_time,'%Y-%m') = date_format(now(),'%Y-%m')");
+				acc1.setCreateTime(new Date());
 			} else {
 				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
 				String format = sdf.format(acc.getCreateTime());
 				queryWrapper.eq("date_format(create_time,'%Y-%m')", format);
+
+				acc1.setCreateTime(acc.getCreateTime());
 			}
 			//查询该客户本月数据
 			List<Acc> accList = baseMapper.selectList(queryWrapper);
@@ -278,7 +284,6 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 					settlementAmount = settlementAmount.add(accs.getSettlementAmount());
 				}
 			}
-			Acc acc1 = new Acc();
 			acc1.setCorpId(acc.getCorpId());
 			//客户
 			if (ObjectUtils.isNotNull(acc.getCorpId())) {
@@ -287,18 +292,17 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 					acc1.setCorpName(corpsDesc.getData().getCname());
 				}
 			}
-
+			acc1.setAmount(amount);
+			acc1.setSettlementAmount(settlementAmount);
+			acc1.setOutstandingAmount(amount.subtract(settlementAmount));
 			if ("d".equals(acc.getDc())){
-				acc1.setAmount(amount);
-				acc1.setSettlementAmount(settlementAmount);
 				acc1.setLastAmount(lastAmountD);
 				acc1.setLastSettlementAmount(lastSettlementAmountD);
 			}else{
-				acc1.setAmount(amount);
-				acc1.setSettlementAmount(settlementAmount);
 				acc1.setLastAmount(lastAmountC);
 				acc1.setLastSettlementAmount(lastSettlementAmountC);
 			}
+			acc1.setLastOutstandingAmount(acc1.getLastAmount().subtract(acc1.getLastSettlementAmount()));
 			newAccList.add(acc1);
 
 			//返回数据
@@ -327,20 +331,22 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 				}
 				QueryWrapper<Acc> queryWrapper = new QueryWrapper<>();
 				queryWrapper.eq("is_deleted", 0);
-				queryWrapper.eq("status", 3);
+				queryWrapper.eq("status", 0);
 				queryWrapper.eq("tenant_id", AuthUtil.getTenantId());
-				queryWrapper.eq("Corpid", acc1.getCorpId());
-				queryWrapper.eq("DC", acc.getDc());
+				queryWrapper.eq("Corpid", corp);
+				queryWrapper.eq(ObjectUtils.isNotNull(acc.getDc()),"DC", acc.getDc());
 				if (ObjectUtils.isNull(acc.getCreateTime())) {
 					queryWrapper.apply("date_format(create_time,'%Y-%m') = date_format(now(),'%Y-%m')");
+					acc1.setCreateTime(new Date());
 				} else {
 					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
 					String format = sdf.format(acc.getCreateTime());
 					queryWrapper.eq("date_format(create_time,'%Y-%m')", format);
+					acc1.setCreateTime(acc.getCreateTime());
 				}
 				List<Acc> financingsList = baseMapper.selectList(queryWrapper);
 
-				acc.setCorpId(acc1.getCorpId());
+				acc.setCorpId(corp);
 				acc.setIsDeleted(0);
 				acc.setTenantId(AuthUtil.getTenantId());
 				//上期应收结算金额
@@ -374,17 +380,17 @@ public class AccServiceImpl extends ServiceImpl<AccMapper, Acc> implements IAccS
 						settlementAmount = settlementAmount.add(acc2.getSettlementAmount());
 					}
 				}
+				acc1.setAmount(amount);
+				acc1.setSettlementAmount(settlementAmount);
+				acc1.setOutstandingAmount(amount.subtract(settlementAmount));
 				if ("d".equals(acc.getDc())){
-					acc1.setAmount(amount);
-					acc1.setSettlementAmount(settlementAmount);
 					acc1.setLastAmount(lastAmountD);
 					acc1.setLastSettlementAmount(lastSettlementAmountD);
 				}else{
-					acc1.setAmount(amount);
-					acc1.setSettlementAmount(settlementAmount);
 					acc1.setLastAmount(lastAmountC);
 					acc1.setLastSettlementAmount(lastSettlementAmountC);
 				}
+				acc1.setLastOutstandingAmount(acc1.getLastAmount().subtract(acc1.getLastSettlementAmount()));
 				accList.add(acc1);
 			}
 			//返回数据

+ 31 - 6
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/WoodHarvestingCloudController.java

@@ -266,6 +266,31 @@ public class WoodHarvestingCloudController {
 	}
 
 	/**
+	 * 状态修改
+	 */
+	@GetMapping("/pcSubmit")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "电脑端提交", notes = "传入id")
+	public R pcSubmit( @RequestParam(value = "id") Long id,
+					   @RequestParam(value = "type") String type,
+					   @RequestParam(value = "status") int status,
+					   @RequestParam(value = "isIssue") String isIssue) {
+		if (id == null) {
+			return R.fail("缺少必要参数");
+
+		}
+		//修改明细状态
+		orderItemsService.updateByPId(id,isIssue);
+		Order order = new Order();
+		order.setId(id);
+		order.setStatus(status);
+		order.setUpdateUser(AuthUtil.getUserId());
+		order.setUpdateTime(new Date());
+		order.setUpdateUserName(AuthUtil.getUserName());
+		return R.data(orderService.updateById(order));
+	}
+
+	/**
 	 * 入出库盘点提交请核
 	 *
 	 * @param submitDto
@@ -344,8 +369,8 @@ public class WoodHarvestingCloudController {
 	@PostMapping("/passCheck")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "Feign-审核通过", notes = "传入财务id")
-	public R passCheck(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id) {
-		orderService.passCheck(id);
+	public R passCheck(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id,@RequestParam("times") int times) {
+		orderService.passCheck(id,times);
 		return R.success("操作成功");
 	}
 
@@ -353,8 +378,8 @@ public class WoodHarvestingCloudController {
 	 * 审核中
 	 */
 	@PostMapping("/underReview")
-	public R underReview(@ApiParam(value = "主表id", required = true) @RequestParam Long id) {
-		orderService.underReview(id);
+	public R underReview(@ApiParam(value = "主表id", required = true) @RequestParam Long id,@RequestParam("times") int times) {
+		orderService.underReview(id,times);
 		return R.success("操作成功");
 	}
 
@@ -364,8 +389,8 @@ public class WoodHarvestingCloudController {
 	@PostMapping("/passCancel")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "Feign-审核不通过", notes = "传入财务id")
-	public R passCancel(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id) {
-		orderService.passCancel(id);
+	public R passCancel(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id,@RequestParam("times") int times) {
+		orderService.passCancel(id,times);
 		return R.success("操作成功");
 	}
 

+ 6 - 6
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/feign/OrderDescClient.java

@@ -40,18 +40,18 @@ public class OrderDescClient implements IOrderDescClient {
 	}
 
 	@Override
-	public R passCheck(Long id) {
-		return iOrderService.passCheck(id);
+	public R passCheck(Long id,int times) {
+		return iOrderService.passCheck(id,times);
 	}
 
 	@Override
-	public R passCancel(Long id) {
-		return iOrderService.passCancel(id);
+	public R passCancel(Long id,int times) {
+		return iOrderService.passCancel(id,times);
 	}
 
 	@Override
-	public R underReview(Long id) {
-		return iOrderService.underReview(id);
+	public R underReview(Long id,int times) {
+		return iOrderService.underReview(id,times);
 	}
 
 

+ 11 - 2
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.java

@@ -28,16 +28,17 @@ public interface OrderItemsMapper extends BaseMapper<OrderItems> {
 	 */
 	List<OrderItemsVO> selectOrderItemsPage(IPage page, OrderItemsVO orderItems);
 
-	IPage<OrderDTO>  listOrderItem(IPage<OrderDTO> iPage, @Param("tradeType") String tradeType,@Param("orderNo") String orderNo,@Param("corpId")  Long corpId,@Param("startDate")  String startDate, @Param("endDate") String endDate);
+	IPage<OrderDTO> listOrderItem(IPage<OrderDTO> iPage, @Param("tradeType") String tradeType, @Param("orderNo") String orderNo, @Param("corpId") Long corpId, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
 	/**
 	 * 经销商获取近60天销售数据
+	 *
 	 * @param tradeType 贸易类型
 	 * @param tenantId  租户id
 	 * @param billType  订单类型
 	 * @return
 	 */
-	BigDecimal orderNumber(@Param("tradeType") String tradeType,@Param("tenantId") String tenantId,@Param("billType") String billType);
+	BigDecimal orderNumber(@Param("tradeType") String tradeType, @Param("tenantId") String tenantId, @Param("billType") String billType);
 
 	/**
 	 * 更新生成货款状态
@@ -45,4 +46,12 @@ public interface OrderItemsMapper extends BaseMapper<OrderItems> {
 	 * @param id 订单主表id
 	 */
 	Integer submitPay(@Param("id") Long id);
+
+	/**
+	 * 通过pid修改状态
+	 *
+	 * @param id
+	 * @return
+	 */
+	int updateByPId(@Param("id") Long id, @Param("status") String status);
 }

+ 3 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderItemsMapper.xml

@@ -67,6 +67,9 @@
     <update id="submitPay" parameterType="long">
         UPDATE business_order_items SET submit_pay = '1' WHERE pid = #{id}
     </update>
+    <update id="updateByPId">
+        UPDATE business_order_items SET is_Issue = #{status} WHERE pid = #{id}
+    </update>
 
 
     <select id="selectOrderItemsPage" resultMap="orderItemsResultMap">

+ 6 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

@@ -469,9 +469,14 @@
                sum(boi.balance_number) AS balanceNumber,
                sum(boi.slice_number)   AS sliceNumber
         FROM business_order_items boi
+        JOIN business_order bo ON boi.pid = bo.id
         where boi.is_deleted = 0
+          AND bo.is_deleted = 0
+          AND bo.STATUS = 3
+          AND bo.bill_type = 'RK'
+          AND bo.trade_type = 'CMY'
+          and boi.is_Issue = '1'
           and boi.tenant_id = #{tenantId}
-          and is_Issue = '1'
         GROUP BY boi.item_id
     </select>
 </mapper>

+ 7 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderItemsService.java

@@ -28,4 +28,11 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	 * @return
 	 */
     int removeByItemId(String itemId);
+
+	/**
+	 * 通过pid修改状态
+	 * @param id
+	 * @return
+	 */
+	int updateByPId(Long id,String status);
 }

+ 3 - 3
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java

@@ -174,11 +174,11 @@ public interface IOrderService extends IService<Order> {
 	 */
 	void checkWarehousing(OrderSubmitDto order);
 
-	R passCheck(Long id);
+	R passCheck(Long id,int times);
 
-	R underReview(Long id);
+	R underReview(Long id,int times);
 
-	R passCancel(Long id);
+	R passCancel(Long id,int times);
 
 	/**
 	 * 库存总账

+ 10 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderItemsServiceImpl.java

@@ -88,6 +88,16 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 	}
 
 	/**
+	 * 通过pid修改状态
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public int updateByPId(Long id, String status) {
+		return baseMapper.updateByPId(id,status);
+	}
+
+	/**
 	 * 保存订单明细信息
 	 *
 	 * @param list 订单明细

+ 306 - 219
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -26,7 +26,6 @@ import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.*;
 import com.trade.purchase.order.enums.OrderStatusEnum;
 import com.trade.purchase.order.enums.OrderTypeEnum;
-import com.trade.purchase.order.mapper.OrderFeesMapper;
 import com.trade.purchase.order.mapper.OrderItemsMapper;
 import com.trade.purchase.order.mapper.OrderMapper;
 import com.trade.purchase.order.service.IOrderFreightService;
@@ -1036,7 +1035,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setTenantId(AuthUtil.getTenantId());
 		submitDto.setBusinesDate(submitDto.getStockTime());
 		baseMapper.insert(submitDto);
-
 		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		RKOrderLambdaQueryWrapper
 			.eq(Order::getIsDeleted, 0)
@@ -1054,9 +1052,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(OrderItems::getPid, RKOrder.getId())
 			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-
 		BigDecimal balanceNumber = new BigDecimal(0);
 		BigDecimal balanceMoney = new BigDecimal(0);
+		List<String> goodsName = new ArrayList<>();
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
 				if (OrderTypeEnum.WAREHOUSING.getType().equals(submitDto.getBillType())) {
@@ -1090,8 +1088,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				orderItemsMapper.insert(orderItems);
 				balanceNumber = balanceNumber.add(orderItems.getStorageInQuantity());
 				balanceMoney = balanceMoney.add(orderItems.getStorageAmount());
+				goodsName.add(orderItems.getCname());
 			}
 		}
+		//明细品名去重
+		goodsName = goodsName.stream().distinct().collect(Collectors.toList());
 		// 保存费用信息
 		saveFees(submitDto.getOrderFeesList(), submitDto.getDelFeesIds(), submitDto.getId());
 		// 保存文件信息
@@ -1100,6 +1101,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setUpdateTime(new Date());
 		submitDto.setStorageQuantity(balanceNumber);//入库量
 		submitDto.setStorageAmount(balanceMoney);//入库金额
+		submitDto.setSpecialRemarks(goodsName.toString());//明细品名
 		baseMapper.updateById(submitDto);
 		return R.data(submitDto);
 	}
@@ -1117,6 +1119,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setTradeType(OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType());//类型
 		BigDecimal balanceNumber = new BigDecimal(0);
 		BigDecimal balanceMoney = new BigDecimal(0);
+		List<String> goodsName = new ArrayList<>();
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
 				List<OrderItems> orderItemsBillNo = new ArrayList<>();
@@ -1153,8 +1156,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				balanceNumber = balanceNumber.add(orderItems.getStorageInQuantity());
 				balanceMoney = balanceMoney.add(orderItems.getStorageAmount());
+				goodsName.add(orderItems.getCname());
 			}
 		}
+		//明细品名去重
+		goodsName = goodsName.stream().distinct().collect(Collectors.toList());
 		// 保存费用信息
 		saveFees(submitDto.getOrderFeesList(), submitDto.getDelFeesIds(), submitDto.getId());
 		// 保存文件信息
@@ -1163,6 +1169,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setUpdateTime(new Date());
 		submitDto.setStorageQuantity(balanceNumber);//入库量
 		submitDto.setStorageAmount(balanceMoney);//入库金额
+		submitDto.setSpecialRemarks(goodsName.toString());//明细品名
 		baseMapper.updateById(submitDto);
 		return R.data(submitDto);
 	}
@@ -1201,7 +1208,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			submitDto.setCreateTime(new Date());
 			baseMapper.insert(submitDto);
 		}
-
 		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		RKOrderLambdaQueryWrapper
 			.eq(Order::getIsDeleted, 0)
@@ -1219,9 +1225,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(OrderItems::getPid, RKOrder.getId())
 			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-
 		BigDecimal balanceNumber = new BigDecimal(0);
 		BigDecimal balanceMoney = new BigDecimal(0);
+		List<String> goodsName = new ArrayList<>();
 		if (ObjectUtils.isNotNull(orderItemsList)) {
 			for (OrderItems orderItems : orderItemsList) {
 				List<OrderItems> orderItemsBillNo = new ArrayList<>();
@@ -1268,10 +1274,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					orderItems.setCreateUserName(AuthUtil.getUserName());
 					orderItemsMapper.insert(orderItems);
 				}
-				balanceNumber = balanceNumber.add(orderItems.getStorageInQuantity());
-				balanceMoney = balanceMoney.add(orderItems.getStorageAmount());
+				goodsName.add(orderItems.getCname());
 			}
 		}
+		//明细品名去重
+		goodsName = goodsName.stream().distinct().collect(Collectors.toList());
 		// 保存费用信息
 		saveFees(submitDto.getOrderFeesList(), submitDto.getDelFeesIds(), submitDto.getId());
 		// 保存文件信息
@@ -1280,6 +1287,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		submitDto.setUpdateTime(new Date());
 		submitDto.setStorageQuantity(balanceNumber);//入库量
 		submitDto.setStorageAmount(balanceMoney);//入库金额
+		submitDto.setSpecialRemarks(goodsName.toString());//明细品名
 		baseMapper.updateById(submitDto);
 		return R.data(submitDto);
 	}
@@ -1294,22 +1302,93 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void checkWarehousing(OrderSubmitDto order) {
 		Order salesOrder = baseMapper.selectById(order.getId());
-		if (order.getCheckFlag() != 3 && salesOrder.getStatus() != 0) {
-			throw new SecurityException("订单已开启审核,请勿重复提交");
-		}
+		//审批数据
+		AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
+		//获取审批级次
+		List<AuditPathsLevels> auditPathsLevels;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 		Integer checkFlag = order.getCheckFlag();
 		AuditPathsActs pathsActs;
 		if (checkFlag == null) {
 			throw new SecurityException("请核失败:未配置请核标识");
 		}
-		// 判断是入库审批 还是 出库审批
-		if (checkFlag == 1) {
-			pathsActs = iCheckClient.getActsByActId(101, "status");
-		} else if (checkFlag == 2) {
-			pathsActs = iCheckClient.getActsByActId(102, "status");
-		} else if (checkFlag == 3) {
+		//生成账单数据
+		order.setOrderNo(salesOrder.getOrderNo());
+		order.setBusinesDate(salesOrder.getBusinesDate());
+		order.setCorpId(salesOrder.getCorpId());
+		order.setBelongToCorpId(salesOrder.getBelongToCorpId());
+		order.setTradeType(salesOrder.getTradeType());
+		order.setThisUsedProfit(salesOrder.getThisUsedProfit());
+		order.setPurchaserId(salesOrder.getPurchaserId());
+		order.setStorageId(salesOrder.getStorageId());
+		order.setOrgOrderNo(salesOrder.getOrgOrderNo());
+		order.setStorageQuantity(salesOrder.getStorageQuantity());
+		order.setBillNo(salesOrder.getBillNo());
+		order.setId(salesOrder.getId());
+
+		//盘点审批流程
+		if (OrderTypeEnum.INVENTORY.getType().equals(salesOrder.getBillType()) && checkFlag == 3) {
+			if (order.getCheckFlag() == 3 && salesOrder.getStatus() != 0) {
+				throw new SecurityException("订单已开启审核,请勿重复提交");
+			}
+			//是否开启流程
 			pathsActs = iCheckClient.getActsByActId(103, "status");
+			//获取审批信息
+			auditPathsLevels = iCheckClient.listLevelsByActId(103, "status");
+
+			auditProecessDTO.setProcessType("盘点审批");
+
+			salesOrder.setStatus(1);
+
+			/* 出库 第一次 审批流程  */
+		} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(salesOrder.getBillType()) && checkFlag == 2 && order.getStatus() == 0) {
+			if (order.getCheckFlag() == 2 && salesOrder.getStatus() != 0) {
+				throw new SecurityException("订单已开启审核,请勿重复提交");
+			}
+			//是否开启流程
+			pathsActs = iCheckClient.getActsByActId(102, "status");
+			//获取审批信息
+			auditPathsLevels = iCheckClient.listLevelsByActId(102, "status");
+
+			auditProecessDTO.setProcessType("出库单据审批");
+
+			salesOrder.setStatus(6);
+
+			/* 出库 第二次 审批流程  */
+		} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(salesOrder.getBillType()) && checkFlag == 2 && order.getStatus() == 2) {
+			if (order.getCheckFlag() == 2 && salesOrder.getStatus() > 2) {
+				throw new SecurityException("订单已开启审核,请勿重复提交");
+			}
+			//是否开启流程
+			pathsActs = iCheckClient.getActsByActId(102, "status");
+			//获取审批信息
+			auditPathsLevels = iCheckClient.listLevelsByActId(102, "status");
+
+			auditProecessDTO.setProcessType("出库财务审批");
+			auditProecessDTO.setTimes(1);
+
+			salesOrder.setStatus(3);
+
+			//出库生成账单
+			this.paymentApply(order, "收费", "出库");
+			//出库生成仓储费
+			this.paymentApply(order, "收费", OrderTypeEnum.STORAGE_FEE.getType());
+			/* 入库审批流程  */
+		} else if (OrderTypeEnum.WAREHOUSING.getType().equals(salesOrder.getBillType()) && checkFlag == 1) {
+			if (order.getCheckFlag() == 1 && salesOrder.getStatus() != 0) {
+				throw new SecurityException("订单已开启审核,请勿重复提交");
+			}
+			//是否开启流程
+			pathsActs = iCheckClient.getActsByActId(101, "status");
+			//获取审批信息
+			auditPathsLevels = iCheckClient.listLevelsByActId(101, "status");
+
+			auditProecessDTO.setProcessType("入库审批");
+
+			salesOrder.setStatus(3);
+
+			//入库生成账单
+			this.paymentApply(order, "申请", "入库");
 		} else {
 			throw new SecurityException("请核失败:请核标识设置不正确");
 		}
@@ -1318,26 +1397,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
 			throw new SecurityException("当前租户未查询到审批流配置");
 		} else {
-			salesOrder.setStatus(1);
+
 			salesOrder.setOrderStatus(OrderStatusEnum.SUBMIT.getStatus() + "");
 			salesOrder.setCheckDate(new Date());
 			baseMapper.updateById(salesOrder);
 
-			//获取审批级次
-			List<AuditPathsLevels> auditPathsLevels;
-			if (checkFlag == 1) {
-				auditPathsLevels = iCheckClient.listLevelsByActId(101, "status");
-			} else if (checkFlag == 3) {
-				auditPathsLevels = iCheckClient.listLevelsByActId(103, "status");
-			} else {
-				auditPathsLevels = iCheckClient.listLevelsByActId(102, "status");
-			}
 			if (CollectionUtils.isEmpty(auditPathsLevels)) {
 				throw new SecurityException("开启审批失败:未查询到审批信息");
 			}
 
-			AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
-
 			// 绑定审核类型
 			auditProecessDTO.setCheckType(order.getCheckType());
 			// 追加跳转路由url
@@ -1346,13 +1414,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			auditProecessDTO.setPageLabel(order.getPageLabel());
 			//增加审批类型
 
-			if (checkFlag == 1) {
-				auditProecessDTO.setProcessType("入库审批");
-			} else if (checkFlag == 2) {
-				auditProecessDTO.setProcessType("出库审批");
-			} else {
-				auditProecessDTO.setProcessType("盘点审批");
-			}
 			LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			orderItemsLambdaQueryWrapper
 				.eq(OrderItems::getGoodType, 0)
@@ -1374,59 +1435,66 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				order.setOrderItemsList(orderItems);
 				auditProecessDTO.setOrderQuantity(orderItems.stream().map(OrderItems::getOrderQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				auditProecessDTO.setAmount(orderItems.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				//生成一维码图片
-				for (OrderItems item : orderItems) {
-					try {
-						File packageFile = new File("/home/minio/file/673511-bladex/upload");
-
-						if (!packageFile.getParentFile().exists()) {
-							boolean a = packageFile.mkdirs();
-							if (a) {
-								System.out.println("文件夹创建成功");
-							} else {
-								System.out.println("文件夹创建失败");
+				//判断是否是入库,入库需要生成条形码,二维码
+				if (OrderTypeEnum.WAREHOUSING.getType().equals(salesOrder.getBillType())) {
+					//生成条形码,二维码图片
+					for (OrderItems item : orderItems) {
+						try {
+							//创建文件夹
+							File packageFile = new File("/home/minio/file/673511-bladex/upload");
+							//文件夹是否创建成功
+							if (!packageFile.getParentFile().exists()) {
+								boolean a = packageFile.mkdirs();
+								if (a) {
+									System.out.println("文件夹创建成功");
+								} else {
+									System.out.println("文件夹创建失败");
+								}
 							}
+							//创建条形码图片
+							File oneFile = new File(packageFile, item.getBillNo() + "捆包号.png");
+							oneFile.createNewFile();
+							//创建二维码图片
+							File qRCodeFile = new File(packageFile, item.getBillNo() + "货物明细.png");
+							qRCodeFile.createNewFile();
+							//生成条形码
+							String oneCode = BarCodeTest.generateCode(oneFile, item.getBillNo(), 500, 250);
+							//替换地址
+							oneCode = oneCode.replace("/home/minio", "http://121.37.83.47");
+							item.setOneCode(oneCode);
+							//获取品名
+							R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(item.getItemId());
+							//二维码数据
+							Map<String, Object> map = new HashMap<>();
+							map.put("purchaser", salesOrder.getPurchaser());
+							map.put("billNo", item.getBillNo());
+							map.put("stockTime", salesOrder.getStockTime());
+							map.put("storageName", salesOrder.getStorageName());
+							if (goodsMessage.isSuccess() && goodsMessage.getData() != null) {
+								map.put("goodsName", goodsMessage.getData().getCname());
+							}
+							map.put("balanceNumber", item.getBalanceNumber());
+							map.put("length", item.getLength());
+							map.put("thickness", item.getThickness());
+							map.put("remarks", item.getRemarks());
+							map.put("itemId", item.getId());
+							map.put("orderId", item.getPid());
+							//生成二维码
+							String qRCode = QRCodeTest.generateQRCode(qRCodeFile, JSONObject.toJSONString(map));
+							//替换地址
+							qRCode = qRCode.replace("/home/minio", "http://121.37.83.47");
+							item.setQrCode(qRCode);
+							orderItemsMapper.updateById(item);
+						} catch (IOException e) {
+							throw new SecurityException("生成码失败");
 						}
-
-						File oneFile = new File(packageFile, item.getBillNo() + "捆包号.png");
-						oneFile.createNewFile();
-
-						File qRCodeFile = new File(packageFile, item.getBillNo() + "货物明细.png");
-						qRCodeFile.createNewFile();
-
-						String oneCode = BarCodeTest.generateCode(oneFile, item.getBillNo(), 500, 250);
-						oneCode = oneCode.replace("/home/minio", "http://121.37.83.47");
-						System.out.println(oneCode);
-						item.setOneCode(oneCode);
-						R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(item.getItemId());
-						Map<String, Object> map = new HashMap<>();
-						map.put("purchaser", salesOrder.getPurchaser());
-						map.put("billNo", item.getBillNo());
-						map.put("stockTime", salesOrder.getStockTime());
-						map.put("storageName", salesOrder.getStorageName());
-						if (goodsMessage.isSuccess() && goodsMessage.getData() != null) {
-							map.put("goodsName", goodsMessage.getData().getCname());
-						}
-						map.put("balanceNumber", item.getBalanceNumber());
-						map.put("length", item.getLength());
-						map.put("thickness", item.getThickness());
-						map.put("remarks", item.getRemarks());
-						map.put("itemId", item.getId());
-						map.put("orderId", item.getPid());
-						String qRCode = QRCodeTest.generateQRCode(qRCodeFile, JSONObject.toJSONString(map));
-						qRCode = qRCode.replace("/home/minio", "http://121.37.83.47");
-						System.out.println(qRCode);
-						item.setQrCode(qRCode);
-						orderItemsMapper.updateById(item);
-					} catch (IOException e) {
-						throw new SecurityException("生成码失败");
 					}
-
 				}
 			} else {
 				auditProecessDTO.setOrderQuantity(BigDecimal.ZERO);
 				auditProecessDTO.setAmount(BigDecimal.ZERO);
 			}
+			//入库,出库审批数据应收应付金额
 			if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getCheckType()) || OrderTypeEnum.OUT_WAREHOUSING.getType().equals(order.getCheckType())) {
 				//获取订单收款信息
 				//应付
@@ -1446,7 +1514,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				List<OrderFees> payOrderFeesList = orderFeesService.list(payLambdaQueryWrapper);
 				auditProecessDTO.setReceivableAmount(payOrderFeesList.stream().map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			}
-
+			//审批数据
 			auditProecessDTO.setOrderQuantity(salesOrder.getStorageQuantity());
 			auditProecessDTO.setAmount(salesOrder.getStorageAmount());
 			auditProecessDTO.setOrderRemark(salesOrder.getOrderRemark());
@@ -1466,146 +1534,125 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			if (!financeProcess.isSuccess()) {
 				throw new SecurityException("操作失败,请联系管理员");
 			}
-			order.setOrderNo(salesOrder.getOrderNo());
-			order.setBusinesDate(salesOrder.getBusinesDate());
-			order.setCorpId(salesOrder.getCorpId());
-			order.setBelongToCorpId(salesOrder.getBelongToCorpId());
-			order.setTradeType(salesOrder.getTradeType());
-			order.setThisUsedProfit(salesOrder.getThisUsedProfit());
-			order.setPurchaserId(salesOrder.getPurchaserId());
-			order.setStorageId(salesOrder.getStorageId());
-			order.setOrgOrderNo(salesOrder.getOrgOrderNo());
-			order.setStorageQuantity(salesOrder.getStorageQuantity());
-			order.setBillNo(salesOrder.getBillNo());
-			order.setId(salesOrder.getId());
-			//出库生成仓储费
-			if ("CK".equals(salesOrder.getBillType())) {
-				this.paymentApply(order, "收费", "出库");
-				this.paymentApply(order, "收费", OrderTypeEnum.STORAGE_FEE.getType());
-			} else if ("RK".equals(salesOrder.getBillType())) {
-				this.paymentApply(order, "申请", "入库");
-			}
-
 		}
 	}
 
 	@Override
-	public R passCheck(Long id) {
-		// ===========================start 审核通过修改入出库单信息==========================
-		LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderLambdaQueryWrapper
-			.eq(Order::getId, id)
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Order order = baseMapper.selectOne(orderLambdaQueryWrapper);
+	public R passCheck(Long id, int times) {
+		// ===========================start 审核通过修改入出库,盘点单信息==========================
+		Order order = baseMapper.selectById(id);
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
-		if (order.getStatus() == 3) {
-			throw new SecurityException("订单已审批通过请勿重复审批");
+		//获取入库数据
+		LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		RKOrderLambdaQueryWrapper
+			.eq(Order::getIsDeleted, 0)
+			.eq(Order::getOrderNo, order.getOrderNo())
+			.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
+			.eq(Order::getTenantId, AuthUtil.getTenantId());
+		Order RKOrder = baseMapper.selectOne(RKOrderLambdaQueryWrapper);
+		if (RKOrder == null) {
+			throw new SecurityException("更新入库数据失败");
 		}
-		order.setStatus(3);
-		order.setConfirmStatus("1");
-		order.setOrderStatus("审批通过");
+		//入库明细
+		LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		RKOrderItemsLambdaQueryWrapper
+			.eq(OrderItems::getIsDeleted, 0)
+			.eq(OrderItems::getPid, RKOrder.getId())
+			.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
+			.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+		List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
 
-		// ===========================end 审核通过修改入出库订单信息==========================
-		/**===========================End 审核通过生成账单 发送消息=============================*/
-		if (OrderTypeEnum.WOOD_HARVESTING_CLOUD.getType().equals(order.getTradeType())) {
-			LambdaQueryWrapper<Order> RKOrderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			RKOrderLambdaQueryWrapper
-				.eq(Order::getIsDeleted, 0)
-				.eq(Order::getOrderNo, order.getOrderNo())
-				.eq(Order::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-				.eq(Order::getTenantId, AuthUtil.getTenantId());
-			Order RKOrder = baseMapper.selectOne(RKOrderLambdaQueryWrapper);
-			if (RKOrder == null) {
-				throw new SecurityException("更新入库数据失败");
+		//入库审批通过
+		if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {
+			if (order.getStatus() == 5) {
+				throw new SecurityException("订单已审批通过请勿重复审批");
 			}
-			//出库时修改是否出库
-			if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(order.getBillType())) {
-				LambdaQueryWrapper<OrderItems> PDOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				PDOrderItemsLambdaQueryWrapper
-					.eq(OrderItems::getIsDeleted, 0)
-					.eq(OrderItems::getPid, order.getId())
-					.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-				//出库明细
-				List<OrderItems> CkOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
-				//入库明细
-				LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				RKOrderItemsLambdaQueryWrapper
-					.eq(OrderItems::getIsDeleted, 0)
-					.eq(OrderItems::getPid, RKOrder.getId())
-					.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-					.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-				List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-				int count = 0;
-				for (OrderItems orderItems : CkOrderItemsList) {
-					for (OrderItems RKOrderItems : RKOrderItemsList) {
-						//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
-						if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-							if (RKOrderItems.getIsIssue().equals("4")) {
-								throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
-							} else {
-								RKOrderItems.setIsIssue("3");
-								orderItems.setIsIssue("3");
+			//修改明细状态
+			orderItemsMapper.updateByPId(id, "3");
+			order.setStatus(5);
+			order.setConfirmStatus("1");
+			order.setOrderStatus("审批通过");
+			//出库审批通过
+		} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(order.getBillType())) {
+			LambdaQueryWrapper<OrderItems> PDOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			PDOrderItemsLambdaQueryWrapper
+				.eq(OrderItems::getIsDeleted, 0)
+				.eq(OrderItems::getPid, order.getId())
+				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+			//出库明细
+			List<OrderItems> CkOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
+			int count = 0;
+			for (OrderItems orderItems : CkOrderItemsList) {
+				for (OrderItems RKOrderItems : RKOrderItemsList) {
+					//判断出库与入库明细捆包号是否相等
+					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
+						//判断该捆包号是否已出库
+						if (RKOrderItems.getIsIssue().equals("6")) {
+							throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
+						} else {
+							//判断第几次出库审核
+							if (0 == times) {//第一次审批
+								RKOrderItems.setIsIssue("4");
+								orderItems.setIsIssue("4");
+							} else {//第二次审批
+								RKOrderItems.setIsIssue("6");
+								orderItems.setIsIssue("6");
 							}
-							orderItemsMapper.updateById(RKOrderItems);
-							orderItemsMapper.updateById(orderItems);
-						}
-						if (RKOrderItems.getIsIssue().equals("3")) {
-							count++;
 						}
+						//修改入库明细
+						orderItemsMapper.updateById(RKOrderItems);
+						//修改出库明细
+						orderItemsMapper.updateById(orderItems);
+					}
+					//判断是否全部出库
+					if (RKOrderItems.getIsIssue().equals("6")) {
+						count++;
 					}
 				}
-				if (count == RKOrderItemsList.size()) {
-					order.setSpecialCheckStatus(1);
-					RKOrder.setSpecialCheckStatus(1);
-				}
+			}
+			if (count == RKOrderItemsList.size()) {
+				order.setSpecialCheckStatus(1);
+				RKOrder.setSpecialCheckStatus(1);
+				//修改入库状态
 				baseMapper.updateById(RKOrder);
-			} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
-				LambdaQueryWrapper<OrderItems> PDOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				PDOrderItemsLambdaQueryWrapper
-					.eq(OrderItems::getIsDeleted, 0)
-					.eq(OrderItems::getPid, order.getId())
-					.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-				//盘点明细
-				List<OrderItems> PDOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
-				//入库明细
-				LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				RKOrderItemsLambdaQueryWrapper
-					.eq(OrderItems::getIsDeleted, 0)
-					.eq(OrderItems::getPid, RKOrder.getId())
-					.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-					.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-				List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-				for (OrderItems orderItems : PDOrderItemsList) {
-					for (OrderItems RKOrderItems : RKOrderItemsList) {
-						//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
-						if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
-							RKOrderItems.setInventory(orderItems.getInventory());
-							RKOrderItems.setBalanceNumber(orderItems.getInventory());
-							RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
-							RKOrderItems.setSurplusLoss(orderItems.getSurplusLoss());
-							if (RKOrderItems.getIsIssue().equals("4")) {
-								throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
-							}
-							orderItemsMapper.updateById(RKOrderItems);
+			}
+			//判断第几次出库审核
+			if (0 == times) {//第一次审批
+				order.setStatus(8);
+				order.setOrderStatus("单据审批通过");
+			} else {//第二次次审批
+				order.setStatus(5);
+				order.setConfirmStatus("1");
+				order.setOrderStatus("财务审批通过");
+			}
+			//盘点审批通过
+		} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
+			LambdaQueryWrapper<OrderItems> PDOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+			PDOrderItemsLambdaQueryWrapper
+				.eq(OrderItems::getIsDeleted, 0)
+				.eq(OrderItems::getPid, order.getId())
+				.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+			//盘点明细
+			List<OrderItems> PDOrderItemsList = orderItemsMapper.selectList(PDOrderItemsLambdaQueryWrapper);
+			for (OrderItems orderItems : PDOrderItemsList) {
+				for (OrderItems RKOrderItems : RKOrderItemsList) {
+					//判断盘点与入库明细捆包号是否相等 true修改入库盘点量,结余量,结余金额
+					if (orderItems.getBillNo().equals(RKOrderItems.getBillNo())) {
+						RKOrderItems.setInventory(orderItems.getInventory());
+						RKOrderItems.setBalanceNumber(orderItems.getInventory());
+						RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
+						RKOrderItems.setSurplusLoss(orderItems.getSurplusLoss());
+						if (RKOrderItems.getIsIssue().equals("6")) {
+							throw new SecurityException("捆包号:" + RKOrderItems.getBillNo() + "已出库");
 						}
+						orderItemsMapper.updateById(RKOrderItems);
 					}
 				}
-			} else if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {
-				//入库明细
-				LambdaQueryWrapper<OrderItems> RKOrderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				RKOrderItemsLambdaQueryWrapper
-					.eq(OrderItems::getIsDeleted, 0)
-					.eq(OrderItems::getPid, order.getId())
-					.eq(OrderItems::getBillType, OrderTypeEnum.WAREHOUSING.getType())
-					.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
-				List<OrderItems> RKOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-				for (OrderItems RKOrderItems : RKOrderItemsList) {
-					RKOrderItems.setIsIssue("1");
-					orderItemsMapper.updateById(RKOrderItems);
-				}
 			}
+			order.setStatus(3);
+			order.setOrderStatus("审批通过");
 		}
 		financeClient.updateByOrderId(order.getId());
 		baseMapper.updateById(order);
@@ -1613,30 +1660,73 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
-	public R underReview(Long id) {
+	public R underReview(Long id, int times) {
 		Order order = baseMapper.selectById(id);
 		if (order == null) {
 			throw new SecurityException("审批失败");
 		}
-		order.setStatus(2);
+		//入库审批中
+		if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {
+			order.setStatus(4);
+			//出库审批中
+		} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(order.getBillType())) {
+			//判断第几次出库审核
+			if (0 == times) {
+				order.setStatus(7);
+			} else {
+				order.setStatus(4);
+			}
+			//盘点审批中
+		} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
+			order.setStatus(2);
+		}else{
+			throw new SecurityException("审批失败");
+		}
 		order.setOrderStatus("审批中");
 		baseMapper.updateById(order);
 		return R.success("操作成功");
 	}
 
 	@Override
-	public R passCancel(Long id) {
-		LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		orderLambdaQueryWrapper
-			.eq(Order::getId, id)
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Order order = baseMapper.selectOne(orderLambdaQueryWrapper);
+	public R passCancel(Long id, int times) {
+		Order order = baseMapper.selectById(id);
 		if (order == null) {
 			throw new SecurityException("未找到单据");
 		}
-		if (order.getStatus() == 0) {
-			throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+		//入库审批中
+		if (OrderTypeEnum.WAREHOUSING.getType().equals(order.getBillType())) {
+			if (order.getStatus() == 2) {
+				throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+			}
+			order.setStatus(2);
+			order.setOrderStatus("已确认");
+			//出库审批中
+		} else if (OrderTypeEnum.OUT_WAREHOUSING.getType().equals(order.getBillType())) {
+			//判断第几次出库审核
+			if (0 == times) {
+				if (order.getStatus() == 0) {
+					throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+				}
+				order.setStatus(0);
+				order.setOrderStatus("录入");
+			} else {
+				if (order.getStatus() == 2) {
+					throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+				}
+				order.setStatus(2);
+				order.setOrderStatus("已确认");
+			}
+			//盘点审批中
+		} else if (OrderTypeEnum.INVENTORY.getType().equals(order.getBillType())) {
+			if (order.getStatus() == 0) {
+				throw new SecurityException("订单已驳回或未提交审批,请勿重复操作");
+			}
+			order.setStatus(0);
+			order.setOrderStatus("录入");
+		}else{
+			throw new SecurityException("审批失败");
 		}
+
 		//删除账单单据
 		LambdaQueryWrapper<OrderFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(OrderFees::getTenantId, AuthUtil.getTenantId())
@@ -1653,9 +1743,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			financeClient.deleteBySrcFeesId(orderFees.getId());
 			orderFeesService.updateById(orderFees);
 		}
-
-		order.setStatus(0);
-		order.setOrderStatus("录入");
 		baseMapper.updateById(order);
 		return R.success("操作成功");
 	}
@@ -1738,7 +1825,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				queryWrapper.eq("is_deleted", 0);
 				List<OrderItems> orderItemsList = orderItemsMapper.selectList(queryWrapper);
 				for (OrderItems orderItems : orderItemsList) {
-					orderItems.setIsIssue("1");
+					orderItems.setIsIssue("2");
 					orderItems.setUpdateTime(new Date());
 					orderItems.setUpdateUser(AuthUtil.getUserId());
 					orderItemsMapper.updateById(orderItems);
@@ -1932,9 +2019,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//获取订单收款信息
 			QueryWrapper<OrderFees> orderFeesQueryWrapper = new QueryWrapper<>();
 			orderFeesQueryWrapper.eq("is_deleted", 0)
-			.eq("pid", pid)
-			.eq("is_check", 0)
-			.eq("submit_pay", 0);
+				.eq("pid", pid)
+				.eq("is_check", 0)
+				.eq("submit_pay", 0);
 			/*if ("入库".equals(itemType)) {
 				orderFeesLambdaQueryWrapper.eq(OrderFees::getFeesType, 2);
 			} else {