Przeglądaj źródła

2024年6月21日17:25:22

纪新园 1 rok temu
rodzic
commit
41c05c8eaa
26 zmienionych plików z 1067 dodań i 14 usunięć
  1. 6 0
      blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java
  2. 4 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/entity/Accounts.java
  3. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/dto/LosLockConfigDTO.java
  4. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/dto/LosLockDTO.java
  5. 123 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/entity/LosLock.java
  6. 65 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/entity/LosLockConfig.java
  7. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/vo/LosLockConfigVO.java
  8. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/vo/LosLockVO.java
  9. 3 3
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/BoxNumberProfitQ.java
  10. 6 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderVO.java
  11. 8 5
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ExportDeliveryController.java
  12. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/service/impl/BCurrencyServiceImpl.java
  13. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxNumberProfitExcel.java
  14. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java
  15. 17 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java
  16. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockConfigController.java
  17. 267 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockController.java
  18. 43 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockConfigMapper.java
  19. 19 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockConfigMapper.xml
  20. 43 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockMapper.java
  21. 21 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockMapper.xml
  22. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/service/ILosLockConfigService.java
  23. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/service/ILosLockService.java
  24. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/service/impl/LosLockConfigServiceImpl.java
  25. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/lock/service/impl/LosLockServiceImpl.java
  26. 5 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/enquiry/ShippingEnquiry.java

+ 6 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/Delivery.java

@@ -749,4 +749,10 @@ public class Delivery implements Serializable {
 	@ApiModelProperty(value = "工号")
 	private String jobNumber;
 
+	/**
+	 * tab类型
+	 */
+	@TableField(exist = false)
+	private String tabType;
+
 }

+ 4 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/entity/Accounts.java

@@ -375,4 +375,8 @@ public class Accounts implements Serializable {
 
 	@TableField(exist = false)
 	private Integer type;
+
+
+	@TableField(exist = false)
+	private String plAccNo;
 }

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/dto/LosLockConfigDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.los.lock.entity.LosLockConfig;
+
+/**
+ * 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LosLockConfigDTO extends LosLockConfig {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/dto/LosLockDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.los.lock.entity.LosLock;
+
+/**
+ * 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LosLockDTO extends LosLock {
+	private static final long serialVersionUID = 1L;
+
+}

+ 123 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/entity/LosLock.java

@@ -0,0 +1,123 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@TableName("activity_lock")
+@ApiModel(value = "Lock对象", description = "Lock对象")
+public class LosLock implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+
+	private Long userId;
+
+
+
+	/**
+	* 编辑人
+	*/
+		@ApiModelProperty(value = "编辑人")
+		private String realName;
+	/**
+	* 锁定时间
+	*/
+		@ApiModelProperty(value = "锁定时间")
+		private Date lockTime;
+	/**
+	* 锁号:电脑序列号+用户名
+	*/
+		@ApiModelProperty(value = "锁号:电脑序列号+用户名")
+		private String lockNo;
+	/**
+	* 模块名称
+	*/
+		@ApiModelProperty(value = "模块名称")
+		private String moudleName;
+	/**
+	* 表名
+	*/
+		@ApiModelProperty(value = "表名")
+		private String tableName;
+	/**
+	* 单据id
+	*/
+		@ApiModelProperty(value = "单据id")
+		private Long billId;
+
+		private String billNo;
+
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
+
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private Long createUser;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private Long createDept;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private Long updateUser;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@TableLogic
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+
+
+
+}

+ 65 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/entity/LosLockConfig.java

@@ -0,0 +1,65 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@TableName("activity_lock_config")
+@ApiModel(value = "LockConfig对象", description = "LockConfig对象")
+public class LosLockConfig implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	* 模块名称
+	*/
+		@ApiModelProperty(value = "模块名称")
+		private String moduleName;
+	/**
+	* 数据表名称
+	*/
+		@ApiModelProperty(value = "数据表名称")
+		private String tableName;
+	/**
+	* 0 不启动 1启动
+	*/
+		@ApiModelProperty(value = "0 不启动 1启动")
+		private Integer isEnable;
+	/**
+	* 备注
+	*/
+		@ApiModelProperty(value = "备注")
+		private String remark;
+
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/vo/LosLockConfigVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.los.lock.entity.LosLockConfig;
+
+/**
+ * 视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "LockConfigVO对象", description = "LockConfigVO对象")
+public class LosLockConfigVO extends LosLockConfig {
+	private static final long serialVersionUID = 1L;
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/lock/vo/LosLockVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.los.lock.entity.LosLock;
+
+/**
+ * 视图实体类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "LockVO对象", description = "LockVO对象")
+public class LosLockVO extends LosLock {
+	private static final long serialVersionUID = 1L;
+
+}

+ 3 - 3
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/BoxNumberProfitQ.java

@@ -18,7 +18,7 @@ public class BoxNumberProfitQ {
 	 */
 	private String branchId;
 	/**
-	 * 业务类型
+	 * 业务类型  海运出口=SE 海运进口=SI 海运出口amends=ASE 海运进口amends=ASI
 	 */
 	private String businessType;
 	/**
@@ -26,7 +26,7 @@ public class BoxNumberProfitQ {
 	 */
 	private String srcType;
 	/**
-	 * 来源人
+	 * 业务员
 	 */
 	private String srcCnName;
 	/**
@@ -55,7 +55,7 @@ public class BoxNumberProfitQ {
 	private String dateEnd;
 
 	/**
-	 * 统计类型
+	 * 统计类型  1=船公司 2=客户 3=业务员
 	 */
 	private String type;
 

+ 6 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/vo/OrderVO.java

@@ -205,5 +205,11 @@ public class OrderVO extends Order {
 	private String pageStatus;
 	private String pageLabel;
 
+	/**
+	 * tab类型
+	 */
+	@TableField(exist = false)
+	private String tabType;
+
 
 }

+ 8 - 5
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ExportDeliveryController.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.feign.IFinancingClient;
 import com.trade.purchase.order.feign.IOrderDescClient;
@@ -50,7 +51,6 @@ import org.springblade.deliver.goods.service.IDeliveryFilesService;
 import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import org.springblade.deliver.goods.service.IDeliveryService;
 import org.springblade.deliver.goods.vo.DeliveryVO;
-import org.springblade.purchase.sales.entity.Order;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -119,10 +119,13 @@ public class ExportDeliveryController extends BladeController {
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()),Delivery::getStorageId,delivery.getStorageId());//仓库
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getPortOfLoad()),Delivery::getPortOfLoad,delivery.getPortOfLoad());//起运港
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getPortOfDestination()),Delivery::getPortOfDestination,delivery.getPortOfDestination());//目的港
-		/*if (ObjectUtils.isNotNull(delivery.getBusinesDateList()) && delivery.getBusinesDateList().size()>0){//订单日期
-			lambdaQueryWrapper.ge(Delivery::getBusinesDate,delivery.getBusinesDateList().get(0));
-			lambdaQueryWrapper.le(Delivery::getBusinesDate,delivery.getBusinesDateList().get(1));
-		}*/
+		if ("1".equals(delivery.getTabType())) {
+			lambdaQueryWrapper.apply("(customs_status is null or customs_status = '')");
+		} else if ("2".equals(delivery.getTabType())) {
+			lambdaQueryWrapper.apply("(shipping_status is null or shipping_status = '')");
+		}else if ("3".equals(delivery.getTabType())) {
+			lambdaQueryWrapper.apply("(documentary_status is null or documentary_status = '')");
+		}
 		lambdaQueryWrapper.orderByDesc(Delivery::getId);
 		IPage<Delivery> pages = deliveryService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(pages.getRecords())){

+ 3 - 2
blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/service/impl/BCurrencyServiceImpl.java

@@ -108,8 +108,9 @@ public class BCurrencyServiceImpl extends ServiceImpl<CurrencyMapper, BCurrency>
 				item.setCode(bCurrency.getCode());
 				BCurExrate bCurExrate = bCurExrateService.getOne(new LambdaQueryWrapper<BCurExrate>()
 					.eq(BCurExrate::getExrateYear, item.getExrateYear())
-					.eq(BCurExrate::getExrateMonth, item.getExrateMonth())
-					.eq(BCurExrate::getExrateDay, item.getExrateDay())
+					.eq(ObjectUtils.isNotNull(item.getExrateMonth()),BCurExrate::getExrateMonth, item.getExrateMonth())
+					.eq(ObjectUtils.isNotNull(item.getExrateDay()),BCurExrate::getExrateDay, item.getExrateDay())
+					.eq(BCurExrate::getType, bCurrency.getParitiesType())
 					.eq(BCurExrate::getCode, item.getCode())
 				);
 				if (bCurExrate != null) {

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/excel/BoxNumberProfitExcel.java

@@ -188,7 +188,7 @@ public class BoxNumberProfitExcel {
 	/**
 	 * 来源人员
 	 */
-	@ExcelProperty(value = "来源人员")
+	@ExcelProperty(value = "业务员")
 	private String srcCnName;
 	/**
 	 * 团队

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java

@@ -1122,7 +1122,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 								finVouchersItemsList.add(finVouchersItems);
 							}
 						} else {
-							if ("550304".equals(item.getCode())) {
+							if (periodVouchersTemplate.getPlAccNo().equals(item.getCode())) {
 								finVouchersItems.setExrate(new BigDecimal("1"));
 								if ("C".equals(item.getDc())) {
 									if (new BigDecimal("0.00").compareTo(calc.getAmountCr()) != 0) {

+ 17 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.finance.vouchers.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -37,6 +38,7 @@ import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.entity.FinAccBills;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
+import org.springblade.los.finance.genleg.dto.PeriodVouchersTemplate;
 import org.springblade.los.finance.genleg.entity.FinGenleg;
 import org.springblade.los.finance.genleg.entity.FinGenlegCalc;
 import org.springblade.los.finance.genleg.entity.FinPeriod;
@@ -1096,7 +1098,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
 		//本期外币余额
 		BigDecimal amountUsdBlc;
-		if ("550303".equals(accounts.getCode())) {
+		if (ObjectUtils.isNotNull(accounts.getPlAccNo()) && accounts.getPlAccNo().equals(accounts.getCode())) {
 			//本期本币借方金额(CNY)
 			amountDr = amountDr.add(item.getAmountCr());
 			//本年本币借方金额(CNY)
@@ -1356,7 +1358,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
 		//本期外币余额
 		BigDecimal amountUsdBlc;
-		if ("550303".equals(accounts.getCode())) {
+		if (ObjectUtils.isNotNull(accounts.getPlAccNo()) && accounts.getPlAccNo().equals(accounts.getCode())) {
 			//本期本币借方金额(CNY)
 			amountDr = amountDr.subtract(item.getAmountCr());
 			//本年本币借方金额(CNY)
@@ -1773,6 +1775,18 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		finVouchers.setPostTime(new Date());
 		this.saveOrUpdate(finVouchers);
 		if (ObjectUtils.isNotNull(finVouchers.getFinVouchersItemsList())) {
+
+			FinPeriod detail = finPeriodMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
+				.eq(FinPeriod::getTenantId,AuthUtil.getTenantId())
+				.eq(FinPeriod::getIsDeleted,0)
+				.eq(FinPeriod::getPeriodYear,finVouchers.getAccountYear())
+				.eq(FinPeriod::getPeriodMonth,finVouchers.getAccountMonth())
+			);
+			if (detail == null) {
+				throw new RuntimeException("未找到"+finVouchers.getAccountYear()+"年"+finVouchers.getAccountMonth()+"月期间管理信息");
+			}
+			PeriodVouchersTemplate exchange = JSONObject.parseObject(detail.getExchange(), PeriodVouchersTemplate.class);
+			detail.setPeriodVouchersTemplate(exchange);
 			List<Accounts> accountsList = new ArrayList<>();
 			List<FinGenleg> finGenlegList = new ArrayList<>();
 			List<FinGenlegCalc> finGenlegCalcList = new ArrayList<>();
@@ -1796,6 +1810,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 				item.setBillNo(finVouchers.getBillNo());
 				Accounts accounts = accountsList.stream().filter(e -> e.getId().equals(item.getAccountId())).findFirst().orElse(null);
 				if (accounts != null) {
+					accounts.setPlAccNo(exchange.getPlAccNo());
 					item.setAccountFullName(accounts.getFullName());
 					FinGenleg finGenleg = finGenlegList.stream().filter(e -> e.getAccId().equals(item.getAccountId()) &&
 						e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);

+ 126 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockConfigController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.los.lock.entity.LosLockConfig;
+import org.springblade.los.lock.service.ILosLockConfigService;
+import org.springblade.los.lock.vo.LosLockConfigVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 控制器
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/lockconfig")
+@Api(value = "", tags = "接口")
+public class LockConfigController extends BladeController {
+
+	private final ILosLockConfigService lockConfigService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入lockConfig")
+	public R<LosLockConfig> detail(LosLockConfig lockConfig) {
+		LosLockConfig detail = lockConfigService.getOne(Condition.getQueryWrapper(lockConfig));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入lockConfig")
+	public R<IPage<LosLockConfig>> list(LosLockConfig lockConfig, Query query) {
+		IPage<LosLockConfig> pages = lockConfigService.page(Condition.getPage(query), Condition.getQueryWrapper(lockConfig));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入lockConfig")
+	public R<IPage<LosLockConfigVO>> page(LosLockConfigVO lockConfig, Query query) {
+		IPage<LosLockConfigVO> pages = lockConfigService.selectLockConfigPage(Condition.getPage(query), lockConfig);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入lockConfig")
+	public R save(@Valid @RequestBody LosLockConfig lockConfig) {
+		return R.status(lockConfigService.save(lockConfig));
+	}
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入lockConfig")
+	public R update(@Valid @RequestBody LosLockConfig lockConfig) {
+		return R.status(lockConfigService.updateById(lockConfig));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入lockConfig")
+	public R submit(@Valid @RequestBody LosLockConfig lockConfig) {
+		return R.status(lockConfigService.saveOrUpdate(lockConfig));
+	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(lockConfigService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}

+ 267 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/controller/LockController.java

@@ -0,0 +1,267 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.los.lock.entity.LosLock;
+import org.springblade.los.lock.entity.LosLockConfig;
+import org.springblade.los.lock.service.ILosLockConfigService;
+import org.springblade.los.lock.service.ILosLockService;
+import org.springblade.los.lock.vo.LosLockVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 控制器
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/losLock")
+@Api(value = "", tags = "接口")
+public class LockController extends BladeController {
+
+	private final ILosLockService lockService;
+
+	private final ILosLockConfigService lockConfigService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入lock")
+	public R<LosLock> detail(LosLock lock) {
+		lock.setTenantId(SecureUtil.getTenantId());
+		LosLock detail = lockService.getOne(Condition.getQueryWrapper(lock));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入lock")
+	public R<IPage<LosLock>> list(LosLock lock, Query query) {
+		lock.setTenantId(SecureUtil.getTenantId());
+		IPage<LosLock> pages = lockService.page(Condition.getPage(query), Condition.getQueryWrapper(lock));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入lock")
+	public R<IPage<LosLockVO>> page(LosLockVO lock, Query query) {
+		lock.setTenantId(SecureUtil.getTenantId());
+		IPage<LosLockVO> pages = lockService.selectLockPage(Condition.getPage(query), lock);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入lock")
+	public R save(@Valid @RequestBody LosLock lock) {
+		return R.status(lockService.save(lock));
+	}
+
+	/**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入lock")
+	public R update(@Valid @RequestBody LosLock lock) {
+		return R.status(lockService.updateById(lock));
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入lock")
+	public R submit(@Valid @RequestBody LosLock lock) {
+		return R.status(lockService.saveOrUpdate(lock));
+	}
+
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(lockService.removeByIds(Func.toLongList(ids)));
+	}
+
+	//检查当前表单是否可以编辑
+	@GetMapping("checkLock")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "检查当前表单是否可以编辑", notes = "")
+	public R<?> checkLock(@ApiParam(value = "模块名称", required = true) @RequestParam String moduleName,
+						  @ApiParam(value = "数据表名称", required = true) @RequestParam String tableName,
+						  @ApiParam(value = "电脑序列号", required = true) @RequestParam String no,
+						  @ApiParam(value = "单据id", required = true) @RequestParam Long billId) {
+		//先查看当前租户是在此模块否配置锁,如果没有锁或者没开启,直接返回true
+		LambdaQueryWrapper<LosLockConfig> lockConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lockConfigLambdaQueryWrapper
+			.eq(LosLockConfig::getModuleName, moduleName)
+			.eq(LosLockConfig::getTableName, tableName)
+			.eq(LosLockConfig::getTenantId, AuthUtil.getTenantId());
+		LosLockConfig lockConfig = lockConfigService.getOne(lockConfigLambdaQueryWrapper, false);
+		if (lockConfig == null || lockConfig.getIsEnable() != 1) {
+			return R.success("目前订单可以编辑");
+		}
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		//如果存在配置,则查看是否需要已经上锁,如果上锁,且上锁人不是自己,直接返回false。如果是自己直接返回true
+		LambdaQueryWrapper<LosLock> lockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lockLambdaQueryWrapper
+			.eq(LosLock::getBillId, billId)
+			.eq(LosLock::getMoudleName, moduleName)
+			.eq(LosLock::getTableName, tableName)
+			.eq(LosLock::getTenantId, AuthUtil.getTenantId());
+		LosLock lock = lockService.getOne(lockLambdaQueryWrapper, false);
+		Long userId = AuthUtil.getUserId();
+		//没有锁
+		if (lock == null) {
+			return R.success("目前订单可以编辑");
+		}
+		//有锁 不是自己
+		else if (lock.getUserId().longValue() != userId.longValue()) {
+			return R.fail("账号:" + lock.getRealName() + "于" + simpleDateFormat.format(lock.getLockTime()) + "正在编辑请稍后再试!");
+		}
+		//有锁 是自己 是自己的机器
+		else if (lock.getUserId().longValue() == userId.longValue() && lock.getLockNo().equals(no + AuthUtil.getUserName())) {
+			return R.success("目前订单可以编辑");
+		}
+		//有锁 是自己 不是当前机器
+		else if (lock.getUserId().longValue() == userId.longValue() && !lock.getLockNo().equals(no + AuthUtil.getUserName())) {
+			return R.fail("账号:" + lock.getRealName() + "于" + simpleDateFormat.format(lock.getLockTime()) + "正在编辑请稍后再试!");
+		}
+		//其他情况 视为 不可编辑
+		else {
+			return R.fail("账号:" + lock.getRealName() + "于" + simpleDateFormat.format(lock.getLockTime()) + "正在编辑请稍后再试!");
+		}
+	}
+
+	//上锁
+	@PostMapping("onLock")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "上锁", notes = "")
+	public R onLock(@ApiParam(value = "模块名称", required = true) @RequestParam String moduleName,
+					@ApiParam(value = "数据表名称", required = true) @RequestParam String tableName,
+					@ApiParam(value = "电脑序列号", required = true) @RequestParam String no,
+					@RequestParam(value = "billNo", required = false) String billNo,
+					@ApiParam(value = "单据id", required = true) @RequestParam Long billId) {
+		//校验防止上锁多次
+		LambdaQueryWrapper<LosLock> lockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lockLambdaQueryWrapper
+			.eq(LosLock::getBillId, billId)
+			.eq(LosLock::getMoudleName, moduleName)
+			.eq(LosLock::getTableName, tableName)
+			.eq(LosLock::getTenantId, AuthUtil.getTenantId());
+		int count = lockService.count(lockLambdaQueryWrapper);
+		//存在锁,不再新增锁
+		if (count > 0) {
+			LosLock lock = lockService.getOne(lockLambdaQueryWrapper, false);
+			//存在自己的锁
+			if (lock.getUserId().longValue() == AuthUtil.getUserId().longValue()) {
+				//并且是自己的上锁序列号
+				if ((no + AuthUtil.getUserName()).equals(lock.getLockNo())) {
+					return R.success("OK");
+				} else {
+					return R.fail("上锁失败:当前用户在其他设备上已上锁");
+				}
+
+			}
+			//存在别人的锁, 直接报错
+			else if (lock.getUserId().longValue() != AuthUtil.getUserId().longValue()) {
+				return R.fail("上锁失败:存在其他用户的锁");
+			}
+		}
+		//不存在锁,新增锁
+		else {
+			LosLock lock = new LosLock();
+			lock.setUserId(AuthUtil.getUserId());
+			lock.setRealName(AuthUtil.getUserName());
+			lock.setLockTime(new Date());
+			lock.setMoudleName(moduleName);
+			lock.setTableName(tableName);
+			lock.setBillId(billId);
+			lock.setBillNo(billNo);
+			//生成16位 code
+			/*int code = (no + AuthUtil.getUserName()).hashCode();*/
+			lock.setLockNo(no + AuthUtil.getUserName());
+			lock.setCreateTime(new Date());
+			lock.setCreateUser(AuthUtil.getUserId());
+			lockService.save(lock);
+			return R.success("OK");
+		}
+		return null;
+	}
+
+
+	//释放锁
+	@DeleteMapping("unLock")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "释放锁", notes = "")
+	public R unLock(@ApiParam(value = "模块名称", required = true) @RequestParam String moduleName,
+					@ApiParam(value = "数据表名称", required = true) @RequestParam String tableName,
+					@ApiParam(value = "单据id", required = true) @RequestParam Long billId) {
+		LambdaQueryWrapper<LosLock> lockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lockLambdaQueryWrapper.eq(LosLock::getMoudleName, moduleName);
+		lockLambdaQueryWrapper.eq(LosLock::getTableName, tableName);
+		lockLambdaQueryWrapper.eq(LosLock::getBillId, billId);
+		lockLambdaQueryWrapper.eq(LosLock::getTenantId, AuthUtil.getTenantId());
+		LosLock lock = lockService.getOne(lockLambdaQueryWrapper);
+		if (lock != null) {
+			lockService.removeById(lock.getId());
+			return R.success("释放锁成功");
+		} else {
+			return R.success("释放锁成功");
+		}
+
+	}
+
+
+}

+ 43 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockConfigMapper.java

@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.lock.entity.LosLockConfig;
+import org.springblade.los.lock.vo.LosLockConfigVO;
+
+import java.util.List;
+
+/**
+ * Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+public interface LosLockConfigMapper extends BaseMapper<LosLockConfig> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param lockConfig
+	 * @return
+	 */
+	List<LosLockConfigVO> selectLockConfigPage(IPage page, LosLockConfigVO lockConfig);
+
+}

+ 19 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockConfigMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.lock.mapper.LosLockConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="lockConfigResultMap" type="org.springblade.los.lock.entity.LosLockConfig">
+        <id column="id" property="id"/>
+        <result column="module_name" property="moduleName"/>
+        <result column="table_name" property="tableName"/>
+        <result column="is_enable" property="isEnable"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+
+    <select id="selectLockConfigPage" resultMap="lockConfigResultMap">
+        select * from activity_lock_config where is_deleted = 0
+    </select>
+
+</mapper>

+ 43 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockMapper.java

@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.lock.entity.LosLock;
+import org.springblade.los.lock.vo.LosLockVO;
+
+import java.util.List;
+
+/**
+ *  Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+public interface LosLockMapper extends BaseMapper<LosLock> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param lock
+	 * @return
+	 */
+	List<LosLockVO> selectLockPage(IPage page, LosLockVO lock);
+
+}

+ 21 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/mapper/LosLockMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.lock.mapper.LosLockMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="lockResultMap" type="org.springblade.los.lock.entity.LosLock">
+        <id column="id" property="id"/>
+        <result column="real_name" property="realName"/>
+        <result column="lock_time" property="lockTime"/>
+        <result column="lock_no" property="lockNo"/>
+        <result column="moudle_name" property="moudleName"/>
+        <result column="table_name" property="tableName"/>
+        <result column="bill_id" property="billId"/>
+    </resultMap>
+
+
+    <select id="selectLockPage" resultMap="lockResultMap">
+        select * from activity_lock where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/service/ILosLockConfigService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.los.lock.entity.LosLockConfig;
+import org.springblade.los.lock.vo.LosLockConfigVO;
+
+/**
+ * 服务类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+public interface ILosLockConfigService extends IService<LosLockConfig> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param lockConfig
+	 * @return
+	 */
+	IPage<LosLockConfigVO> selectLockConfigPage(IPage<LosLockConfigVO> page, LosLockConfigVO lockConfig);
+
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/service/ILosLockService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.los.lock.entity.LosLock;
+import org.springblade.los.lock.vo.LosLockVO;
+
+/**
+ * 服务类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+public interface ILosLockService extends IService<LosLock> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param lock
+	 * @return
+	 */
+	IPage<LosLockVO> selectLockPage(IPage<LosLockVO> page, LosLockVO lock);
+
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/service/impl/LosLockConfigServiceImpl.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.entity.LockConfig;
+import org.springblade.los.lock.entity.LosLockConfig;
+import org.springblade.los.lock.mapper.LosLockConfigMapper;
+import org.springblade.los.lock.service.ILosLockConfigService;
+import org.springblade.los.lock.vo.LosLockConfigVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Service
+public class LosLockConfigServiceImpl extends ServiceImpl<LosLockConfigMapper, LosLockConfig> implements ILosLockConfigService {
+
+	@Override
+	public IPage<LosLockConfigVO> selectLockConfigPage(IPage<LosLockConfigVO> page, LosLockConfigVO lockConfig) {
+		return page.setRecords(baseMapper.selectLockConfigPage(page, lockConfig));
+	}
+
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/lock/service/impl/LosLockServiceImpl.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.lock.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.client.entity.Lock;
+import org.springblade.los.lock.entity.LosLock;
+import org.springblade.los.lock.mapper.LosLockMapper;
+import org.springblade.los.lock.service.ILosLockService;
+import org.springblade.los.lock.vo.LosLockVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-01-22
+ */
+@Service
+public class LosLockServiceImpl extends ServiceImpl<LosLockMapper, LosLock> implements ILosLockService {
+
+	@Override
+	public IPage<LosLockVO> selectLockPage(IPage<LosLockVO> page, LosLockVO lock) {
+		return page.setRecords(baseMapper.selectLockPage(page, lock));
+	}
+
+}

+ 5 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/enquiry/ShippingEnquiry.java

@@ -129,6 +129,11 @@ public class ShippingEnquiry extends BladeController {
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryStart()),Order::getPlannedDeliveryDate,order.getPlannedDeliveryStart());//计划交货开始
 		lambdaQueryWrapper.like(Func.isNotEmpty(order.getPlannedDeliveryEnd()),Order::getPlannedDeliveryDate,order.getPlannedDeliveryEnd());//计划交货结束
 		lambdaQueryWrapper.orderByDesc(Order::getId);
+		if ("1".equals(order.getTabType())) {
+			lambdaQueryWrapper.eq(Order::getIfShipping, "已提交");
+		} else if ("2".equals(order.getTabType())) {
+			lambdaQueryWrapper.eq(Order::getIfShipping, "船务确认");
+		}
 		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(page.getRecords())) {
 			page.getRecords().stream().forEach(item -> {