纪新园 2 лет назад
Родитель
Сommit
6e0a2fa9a7
18 измененных файлов с 554 добавлено и 202 удалено
  1. 19 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  2. 98 95
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderParts.java
  3. 61 4
      blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java
  4. 29 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpsYCPExcel.java
  5. 2 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java
  6. 7 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java
  7. 109 37
      blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java
  8. 2 1
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsTypeController.java
  9. 3 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java
  10. 14 6
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java
  11. 2 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java
  12. 22 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  13. 3 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  14. 4 3
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java
  15. 1 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  16. 123 39
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  17. 12 10
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java
  18. 43 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java

+ 19 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -1339,6 +1339,25 @@ public class Order implements Serializable {
 
 
 	/**
+	 * 定金到账(福达)
+	 */
+	@ApiModelProperty(value = "定金到账")
+	private String depositReceived;
+
+	/**
+	 * 尾款(福达)
+	 */
+	@ApiModelProperty(value = "尾款")
+	private String balancePayment;
+
+	/**
+	 * 通联支付金额(福达)
+	 */
+	@ApiModelProperty(value = "通联支付金额")
+	private BigDecimal paymentAmountTl;
+
+
+	/**
 	 * 采购状态类型
 	 */
 	@TableField(exist = false)

+ 98 - 95
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderParts.java

@@ -16,17 +16,15 @@
  */
 package org.springblade.purchase.sales.entity;
 
-import java.math.BigDecimal;
-
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.util.Date;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 订单配件表 订单明细的子表实体类
@@ -42,122 +40,127 @@ public class OrderParts implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	/**
-	* 主键
-	*/
-		@ApiModelProperty(value = "主键")
-		private Long id;
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
 	/**
-	* 主表id
-	*/
-		@ApiModelProperty(value = "主表id")
-		private Long pid;
+	 * 主表id
+	 */
+	@ApiModelProperty(value = "主表id")
+	private Long pid;
 	/**
 	 * 主订单表id
 	 */
-		@ApiModelProperty(value = "主订单表id")
-		private Long srcPid;
+	@ApiModelProperty(value = "主订单表id")
+	private Long srcPid;
 	/**
-	* 商品id
-	*/
-		@ApiModelProperty(value = "商品id")
-		private Long goodId;
+	 * 商品id
+	 */
+	@ApiModelProperty(value = "商品id")
+	private Long goodId;
 	/**
-	* 商品名称
-	*/
-		@ApiModelProperty(value = "商品名称")
-		private String goodName;
+	 * 商品名称
+	 */
+	@ApiModelProperty(value = "商品名称")
+	private String goodName;
 	/**
 	 * 英文名称
 	 */
-		@ApiModelProperty(value = "商品英文名称")
-		private String ename;
+	@ApiModelProperty(value = "商品英文名称")
+	private String ename;
 	/**
-	* 单价
-	*/
-		@ApiModelProperty(value = "单价")
-		private BigDecimal price;
+	 * 单价
+	 */
+	@ApiModelProperty(value = "单价")
+	private BigDecimal price;
 	/**
-	* 数量
-	*/
-		@ApiModelProperty(value = "数量")
-		private BigDecimal goodNumber;
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal goodNumber;
 	/**
-	* 金额
-	*/
-		@ApiModelProperty(value = "金额")
-		private BigDecimal amout;
+	 * 金额
+	 */
+	@ApiModelProperty(value = "金额")
+	private BigDecimal amout;
 	/**
 	 * 商品类型名称
 	 */
-		@ApiModelProperty(value = "商品类型名称")
-		private String goodTypeName;
+	@ApiModelProperty(value = "商品类型名称")
+	private String goodTypeName;
 	/**
 	 * 商品类型id
 	 */
-		@ApiModelProperty(value = "商品类型id")
-		private Long goodTypeId;
-	/**
-	* 备注
-	*/
-		@ApiModelProperty(value = "备注")
-		private String remarks;
-	/**
-	* 版本
-	*/
-		@ApiModelProperty(value = "版本")
-		private String version;
-	/**
-	* 创建人
-	*/
-		@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;
+	@ApiModelProperty(value = "商品类型id")
+	private Long goodTypeId;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 创建人
+	 */
+	@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;
 	/**
 	 * 租户id
 	 */
-		@ApiModelProperty(value = "租户id")
-		private String tenantId;
+	@ApiModelProperty(value = "租户id")
+	private String tenantId;
 	/**
 	 * 供应商
 	 */
-		@ApiModelProperty(value = "供应商")
-		private Long corpId;
+	@ApiModelProperty(value = "供应商")
+	private Long corpId;
 	/**
 	 * 供应商名称
 	 */
-		@ApiModelProperty(value = "供应商名称")
-		private String corpName;
+	@ApiModelProperty(value = "供应商名称")
+	private String corpName;
 	@ApiModelProperty(value = "配件成本")
 	private BigDecimal partsCost;
 
+	@ApiModelProperty(value = "配件成本")
+	private String type;
+	@ApiModelProperty(value = "供应商编码")
+	private String corpCode;
+
 }

+ 61 - 4
blade-service/blade-client/src/main/java/org/springblade/client/corps/controller/CorpsDescPartsController.java

@@ -10,17 +10,18 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.client.corps.excel.CorpsYCPExcel;
 import org.springblade.client.corps.service.ICorpsDescService;
 import org.springblade.client.corps.service.ICorpsTypeDescService;
 import org.springblade.client.corps.service.ICorpsTypeService;
 import org.springblade.client.corps.service.impl.CorpsAddrServiceImpl;
 import org.springblade.client.dto.CorpsDescDto;
-import org.springblade.client.entity.CorpsAddr;
-import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.CorpsType;
-import org.springblade.client.entity.CorpsTypeDesc;
+import org.springblade.client.entity.*;
+import org.springblade.client.goods.excel.GoodsExcels;
+import org.springblade.client.goods.excel.GoodsOutExcel;
 import org.springblade.client.vo.CorpsDescVO;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -30,10 +31,14 @@ import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
+import org.springblade.stock.entity.StockGoods;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.math.MathContext;
@@ -351,4 +356,56 @@ public class CorpsDescPartsController extends BladeController {
 		return corpsDescService.getDetails();
 	}
 
+	/**
+	 * 导入客户
+	 */
+	@PostMapping("/import-desc")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "导入客户资料", notes = "传入excel")
+	public R importUser(MultipartFile file) {
+		List<CorpsYCPExcel> excelList = ExcelUtil.read(file, CorpsYCPExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new RuntimeException("数据不能为空");
+		}
+		return corpsDescService.importCorpsNew(excelList);
+	}
+
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("/export-template")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportPrice(HttpServletResponse response) {
+		List<CorpsYCPExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导出模板-客户信息", "导入数据表", list, CorpsYCPExcel.class);
+	}
+
+	/**
+	 * 导出客户
+	 */
+	@GetMapping("/export-desc")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "导入客户资料", notes = "传入excel")
+	public void exportUser(HttpServletResponse response) {
+		List<CorpsYCPExcel> list = new ArrayList<>();
+		LambdaQueryWrapper<CorpsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		goodsDescLambdaQueryWrapper
+			.eq(CorpsDesc::getCorpType, "KH")
+			.eq(CorpsDesc::getIsDeleted, 0)
+			.eq(CorpsDesc::getTenantId, AuthUtil.getTenantId());
+		List<CorpsDesc> goodsDescs = corpsDescService.list(goodsDescLambdaQueryWrapper);
+		if (CollectionUtils.isNotEmpty(goodsDescs)) {
+			goodsDescs.forEach(e -> {
+				CorpsYCPExcel corpsYCPExcel = new CorpsYCPExcel();
+				corpsYCPExcel.setTel(e.getTel());
+				corpsYCPExcel.setUserName(e.getAttn());
+				corpsYCPExcel.setCname(e.getCname());
+				corpsYCPExcel.setAddress(e.getDetails());
+				list.add(corpsYCPExcel);
+			});
+		}
+		ExcelUtil.export(response, "导出客户信息", "导出数据表", list, CorpsYCPExcel.class);
+	}
+
 }

+ 29 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/excel/CorpsYCPExcel.java

@@ -0,0 +1,29 @@
+package org.springblade.client.corps.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class CorpsYCPExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@ExcelProperty("用户名(必填)")
+	private String userName;
+
+	@ExcelProperty("客户名称(必填)")
+	private String cname;
+
+	@ExcelProperty("电话(必填)")
+	private String tel;
+
+	@ExcelProperty("收货地址(必填)")
+	private String address;
+}

+ 2 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/ICorpsDescService.java

@@ -217,4 +217,6 @@ public interface ICorpsDescService extends IService<CorpsDesc> {
 	R saveCorpsDesc(CorpsDesc corpsDesc);
 
 	R getDetails();
+
+	R importCorpsNew(List<CorpsYCPExcel> excelList);
 }

+ 7 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsAddrServiceImpl.java

@@ -17,6 +17,7 @@
 package org.springblade.client.corps.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.client.corps.mapper.CorpsAddrMapper;
 import org.springblade.client.corps.service.ICorpsAddrService;
@@ -66,6 +67,12 @@ public class CorpsAddrServiceImpl extends ServiceImpl<CorpsAddrMapper, CorpsAddr
 				} else if (corpsAttn != null && !corpsAttn.getId().equals(corpsAddr.getId())) {
 					throw new RuntimeException("地址不能重复:"+corpsAddr.getAddr()+"已存在");
 				}
+				if (ObjectUtils.isNull(corpsAddr.getAbbreviation())){
+					corpsAddr.setAttn(corpsDesc.getAttn());
+					corpsAddr.setTel(corpsDesc.getTel());
+					corpsAddr.setAbbreviation("送货地址");
+					corpsAddr.setAlias("默认地址-" + corpsDesc.getAttn());
+				}
 				if (corpsAddr.getId() == null){
 					corpsAddr.setCreateUser(userId);
 					corpsAddr.setCreateTime(date);

+ 109 - 37
blade-service/blade-client/src/main/java/org/springblade/client/corps/service/impl/CorpsDescServiceImpl.java

@@ -772,6 +772,10 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 		}
 		CorpsDesc corpsDesc1 = baseMapper.selectCorpsDescCname(corpsDesc.getCname(), AuthUtil.getTenantId());
 		if (ObjectUtils.isNotNull(corpsDesc1)) {
+			corpsDesc1.setAttn(corpsDesc.getAttn());
+			corpsDesc1.setAddr(corpsDesc.getAddr());
+			corpsDesc1.setDetails(corpsDesc.getDetails());
+			baseMapper.updateById(corpsDesc1);
 			CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
 				.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
 				.eq(CorpsAttn::getPid, corpsDesc1.getId())
@@ -826,10 +830,112 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 				corpsAddrService.save(corpsAddr1);
 			}
 		} else {
+			if (null == corpsDesc.getId()) {
+				corpsDesc.setTenantId(SecureUtil.getTenantId());
+				corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+				corpsDesc.setCreateTime(date);
+				corpsDesc.setCreateUser(userId);
+				baseMapper.insert(corpsDesc);
+				Long pId = corpsDesc.getId();
+				String tenantId = corpsDesc.getTenantId();
+				//保护客户联系人信息
+				CorpsAttn corpsAttn = new CorpsAttn();
+				User user = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId());
+				if (ObjectUtils.isNotNull(user)) {
+					corpsAttn.setUserId(user.getId());
+				}
+				corpsAttn.setCode(corpsDesc.getCname());
+				corpsAttn.setCname(corpsDesc.getCname());
+				corpsAttn.setAttn(corpsDesc.getAttn());
+				corpsAttn.setTel(corpsDesc.getTel());
+				corpsAttn.setTenantId(AuthUtil.getTenantId());
+				corpsAttn.setPid(corpsDesc.getId());
+				corpsAttn.setCreateTime(new Date());
+				corpsAttn.setTenantId(AuthUtil.getTenantId());
+				corpsAttn.setCreateUser(AuthUtil.getUserId());
+				corpsAttnService.save(corpsAttn);
+				//保存客户地址信息
+				CorpsAddr corpsAddr = new CorpsAddr();
+				corpsAddr.setAddr(corpsDesc.getAddr());
+				corpsAddr.setDetailedAddress(corpsDesc.getDetails());
+				corpsAddr.setAttn(corpsDesc.getAttn());
+				corpsAddr.setTel(corpsDesc.getTel());
+				corpsAddr.setAbbreviation("送货地址");
+				corpsAddr.setAlias("默认地址-" + corpsDesc.getAttn());
+				corpsAddr.setTenantId(AuthUtil.getTenantId());
+				corpsAddr.setPid(corpsDesc.getId());
+				corpsAddr.setCreateTime(new Date());
+				corpsAddr.setTenantId(AuthUtil.getTenantId());
+				corpsAddr.setCreateUser(AuthUtil.getUserId());
+				corpsAddrService.save(corpsAddr);
+				//保存客户与类别对应关系
+				this.saveOrUpdateTypeDesc(corpsDesc, userId, pId, date, tenantId);
+			} else {
+				corpsDesc.setUpdateTime(new Date());
+				corpsDesc.setUpdateUser(AuthUtil.getUserId());
+				baseMapper.updateById(corpsDesc);
+			}
+
+		}
+		return R.data(corpsDesc);
+	}
+
+	@Override
+	public R getDetails() {
+		CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
+			.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtils.isNotNull(corpsAttn)) {
+			CorpsDesc corpsDesc = baseMapper.getCorpId(corpsAttn.getPid());
+			if (ObjectUtils.isNotNull(corpsDesc)) {
+				if (AuthUtil.getUserRole().equals("操作员")) {
+					corpsDesc.setAttn(corpsAttn.getAttn());
+					corpsDesc.setAddr(corpsAttn.getAddr());
+					corpsDesc.setTel(corpsAttn.getTel());
+					return R.data(corpsDesc);
+				} else {
+					return R.data(corpsDesc);
+				}
+			} else {
+				CorpsDesc corpsDesc1 = new CorpsDesc();
+				R<User> res = userClient.userInfoById(AuthUtil.getUserId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					corpsDesc1.setTel(res.getData().getPhone());
+				}
+				return R.data(corpsDesc1);
+			}
+		} else {
+			CorpsDesc corpsDesc1 = new CorpsDesc();
+			R<User> res = userClient.userInfoById(AuthUtil.getUserId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				corpsDesc1.setTel(res.getData().getPhone());
+			}
+			return R.data(corpsDesc1);
+		}
+	}
+
+	@Override
+	public R importCorpsNew(List<CorpsYCPExcel> excelList) {
+		Date date = new Date();
+		for (CorpsYCPExcel corpsYCPExcel : excelList) {
+			CorpsDesc corpsDesc = new CorpsDesc();
+			//获得名称首字母
+			String initials = getSpells(corpsYCPExcel.getCname());
+			corpsDesc.setInitials(initials.substring(0, 1));
+			//保存客户信息
+			corpsDesc.setCode(corpsYCPExcel.getCname());
+			corpsDesc.setCname(corpsYCPExcel.getCname());
+			corpsDesc.setCorpType("KH");
+			if (StringUtils.isBlank(corpsYCPExcel.getCname())) {
+				throw new RuntimeException("客户名称不能为空");
+			}
+			corpsDesc.setTel(corpsYCPExcel.getTel());
+			corpsDesc.setDetails(corpsYCPExcel.getAddress());
+			corpsDesc.setAttn(corpsYCPExcel.getUserName());
 			corpsDesc.setTenantId(SecureUtil.getTenantId());
 			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
 			corpsDesc.setCreateTime(date);
-			corpsDesc.setCreateUser(userId);
+			corpsDesc.setCreateUser(AuthUtil.getUserId());
 			baseMapper.insert(corpsDesc);
 			Long pId = corpsDesc.getId();
 			String tenantId = corpsDesc.getTenantId();
@@ -864,43 +970,9 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, CorpsDesc
 			corpsAddr.setCreateUser(AuthUtil.getUserId());
 			corpsAddrService.save(corpsAddr);
 			//保存客户与类别对应关系
-			this.saveOrUpdateTypeDesc(corpsDesc, userId, pId, date, tenantId);
-		}
-		return R.data(corpsDesc);
-	}
-
-	@Override
-	public R getDetails() {
-		CorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<CorpsAttn>().eq(CorpsAttn::getIsDeleted, 0)
-			.eq(CorpsAttn::getTenantId, AuthUtil.getTenantId())
-			.eq(CorpsAttn::getUserId, AuthUtil.getUserId()));
-		if (ObjectUtils.isNotNull(corpsAttn)) {
-			CorpsDesc corpsDesc = baseMapper.getCorpId(corpsAttn.getPid());
-			if (ObjectUtils.isNotNull(corpsDesc)) {
-				if (AuthUtil.getUserRole().equals("操作员")) {
-					corpsDesc.setAttn(corpsAttn.getAttn());
-					corpsDesc.setAddr(corpsAttn.getAddr());
-					corpsDesc.setTel(corpsAttn.getTel());
-					return R.data(corpsDesc);
-				} else {
-					return R.data(corpsDesc);
-				}
-			} else {
-				CorpsDesc corpsDesc1 = new CorpsDesc();
-				R<User> res = userClient.userInfoById(AuthUtil.getUserId());
-				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-					corpsDesc1.setTel(res.getData().getPhone());
-				}
-				return R.data(corpsDesc1);
-			}
-		} else {
-			CorpsDesc corpsDesc1 = new CorpsDesc();
-			R<User> res = userClient.userInfoById(AuthUtil.getUserId());
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				corpsDesc1.setTel(res.getData().getPhone());
-			}
-			return R.data(corpsDesc1);
+			this.saveOrUpdateTypeDesc(corpsDesc, AuthUtil.getUserId(), pId, date, tenantId);
 		}
+		return R.data("操作成功");
 	}
 
 	@Override

+ 2 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsTypeController.java

@@ -225,6 +225,7 @@ public class GoodsTypeController extends BladeController {
 		goodsType.setType(GoodsTypeEnum.GOODS.getType());
 		goodsType.setParentId(0l);
 		goodsType.setIsDeleted(0);
+		goodsType.setStatus(0);
 		List<GoodsType> list = goodsTypeService.list(Condition.getQueryWrapper(goodsType));
 		return R.data(list);
 	}
@@ -240,7 +241,7 @@ public class GoodsTypeController extends BladeController {
 		goodsTypeLambdaQueryWrapper.eq(GoodsType::getTenantId,AuthUtil.getTenantId());
 		goodsTypeLambdaQueryWrapper.eq(GoodsType::getIsDeleted,0);
 		goodsTypeLambdaQueryWrapper.eq(GoodsType::getType,GoodsTypeEnum.GOODS.getType());
-
+		goodsTypeLambdaQueryWrapper.eq(GoodsType::getStatus,0);
 		if (ObjectUtils.isNotNull(id)){
 			goodsTypeLambdaQueryWrapper.eq(GoodsType::getParentId,id);
 		}else{

+ 3 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -738,6 +738,9 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 		}
 		// 主表修改,子表看情况
 		else {
+			if ("1".equals(goodsDesc.getUpperFrame())){
+				throw new RuntimeException("产品已上架,请先下架产品在进行修改!");
+			}
 			if (StringUtil.isBlank(goodsDesc.getCnameInt())) {
 				goodsDesc.setCnameInt(getCnameInt(goodsDesc.getCname()));
 			}

+ 14 - 6
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -143,6 +143,14 @@ public class TongLianPaymentController extends BladeController {
 						selectOrder.setStatus(3);
 						selectOrder.setConfirmStatus(2);
 						selectOrder.setActualPaymentStatus(2);
+						selectOrder.setPaymentAmountTl(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+						if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount())){
+							selectOrder.setSettlmentAmount(selectOrder.getSettlmentAmount().add(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
+							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(selectOrder.getSettlmentAmount()));
+						}else{
+							selectOrder.setSettlmentAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+							selectOrder.setBalanceAmount(selectOrder.getDebitAmount().subtract(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP)));
+						}
 						if (ObjectUtils.isNotNull(selectOrder) && ObjectUtils.isNotNull(selectOrder.getDebitAmount())) {
 							System.out.println("第二步");
 							List<Settlement> settlementList = new ArrayList<>();
@@ -165,8 +173,8 @@ public class TongLianPaymentController extends BladeController {
 								BigDecimal costAmount = new BigDecimal("0.00");
 								BigDecimal grossProfit = new BigDecimal("0.00");
 								if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-									for (OrderItems orderItems : order.getOrderItemsList()) {
-										if ("XS".equals(order.getBillType())) {
+									for (OrderItems orderItems : res.getData()) {
+										if ("XS".equals(selectOrder.getBillType())) {
 											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
 										} else {
 											orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
@@ -179,7 +187,7 @@ public class TongLianPaymentController extends BladeController {
 										//获取本商品库存
 										R<StockGoodsVO> r = stockGoodsClient.selectStockParts(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
 										if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-											if ("XS".equals(order.getBillType())) {
+											if ("XS".equals(selectOrder.getBillType())) {
 												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
 
@@ -216,7 +224,7 @@ public class TongLianPaymentController extends BladeController {
 											stockGoodsClient.updateStock(r.getData());
 										} else {
 											StockGoods stockGoods = new StockGoods();
-											if ("CG".equals(order.getBillType())) {
+											if ("CG".equals(selectOrder.getBillType())) {
 												stockGoods.setGoodsId(orderItems.getItemId());
 												stockGoods.setStorageId(orderItems.getStorageId());
 												stockGoods.setPurchasePrice(orderItems.getPrice());
@@ -237,8 +245,8 @@ public class TongLianPaymentController extends BladeController {
 											}
 										}
 									}
-									order.setCostAmount(costAmount);
-									order.setGrossProfit(grossProfit);
+									selectOrder.setCostAmount(costAmount);
+									selectOrder.setGrossProfit(grossProfit);
 								} else {
 									wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
 									wechatMark.setStatus(2);

+ 2 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/feign/PaymentClient.java

@@ -13,6 +13,7 @@ import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
 import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
 import org.springblade.pay.tonglianPayment.utils.SybPayService;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -28,6 +29,7 @@ import java.util.TreeMap;
 public class PaymentClient implements IPaymentClient {
 	private final IPaymentService paymentService;//支付
 	private final IWechatMarkService wechatMarkService;//支付
+	private final IOrderDescClient orderDescClient;
 
 	@Override
 	public R getWeChatPayment(Order order) {

+ 22 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -1281,6 +1281,23 @@ public class ExportOrderController extends BladeController {
 	}
 
 	/**
+	 * 出口销售或采购订单表
+	 */
+	@GetMapping("/listBYStatus")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<List<Order>> listBYStatus(Order order) {
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0)
+			.eq(Order::getTenantId, AuthUtil.getTenantId())
+			.eq(Order::getBillType, OrderTypeEnum.SALES.getType())
+			.eq(Order::getTradeType, OrderTypeEnum.EXPORT.getType())
+			.eq(Order::getFudaPurchaseStatus, "待采购");
+		List<Order> orderList = orderService.list(lambdaQueryWrapper);
+		return R.data(orderList);
+	}
+
+	/**
 	 * 销售列表
 	 */
 	@GetMapping("/listXS")
@@ -1291,6 +1308,7 @@ public class ExportOrderController extends BladeController {
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, SecureUtil.getTenantId());//租户id
 		lambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0);//订单是否有效
 		lambdaQueryWrapper.eq(OrderItems::getBillType, OrderTypeEnum.SALES.getType());//订单类型
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getPid()), OrderItems::getPid, orderItems.getPid());//订单类型
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(orderItems.getBillNo()), OrderItems::getBillNo, orderItems.getBillNo());//销售单号
 		if (ObjectUtils.isNotNull(orderItems.getBusinesDateList()) && orderItems.getBusinesDateList().size() > 0) {
 			lambdaQueryWrapper.ge(OrderItems::getBusinesDate, orderItems.getBusinesDateList().get(0));
@@ -1320,15 +1338,15 @@ public class ExportOrderController extends BladeController {
 				}
 			}
 
-			if (ObjectUtils.isNotNull(orderItems_.getPurchaseQuantity())){
+			if (ObjectUtils.isNotNull(orderItems_.getPurchaseQuantity())) {
 				orderItems_.setActualQuantity(orderItems_.getOrderQuantity().subtract(orderItems_.getPurchaseQuantity()));
-			}else{
+			} else {
 				orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
 			}
-			if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())){
+			if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
 				orderItems_.setPrice(orderItems_.getPurchasePrice());
 				orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
-			}else{
+			} else {
 				orderItems_.setPrice(orderItems_.getPrice());
 				orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
 			}

+ 3 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -310,9 +310,11 @@ public class OrderDescClient implements IOrderDescClient {
 			}
 		}
 		order.setStatus(7);
+		order.setSettlmentAmount(order.getSettlmentAmount().subtract(order.getPaymentAmountTl()));
 		iOrderService.updateById(order);
 
 		selectOrder.setStatus(7);
+		order.setSettlmentAmount(order.getSettlmentAmount().subtract(order.getPaymentAmountTl()));
 		iOrderService.updateById(selectOrder);
 
 		//获取账单信息
@@ -404,7 +406,7 @@ public class OrderDescClient implements IOrderDescClient {
 		} else {
 			//微信退款
 			PaymentDTO paymentDTO = new PaymentDTO();
-			paymentDTO.setTrxamt(order.getDebitAmount().intValue());
+			paymentDTO.setTrxamt(order.getPaymentAmountTl().multiply(new BigDecimal(100)).intValue());
 			paymentDTO.setReqsn(selectOrder.getSysNo());
 			paymentDTO.setOldreqsn(order.getSysNo());
 			paymentDTO.setOldtrxid(order.getOldTrxId());

+ 4 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -170,7 +170,7 @@ public class AppPartsController extends BladeController {
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByAsc(Order::getConfirmStatus);
 			}else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
+				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			}
 		} else if ("1".equals(order.getSort())) {
 			if ("1".equals(order.getTypeSort())) {
@@ -184,13 +184,13 @@ public class AppPartsController extends BladeController {
 			} else if ("5".equals(order.getTypeSort())) {
 				lambdaQueryWrapper.orderByDesc(Order::getConfirmStatus);
 			}else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
+				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			}
 		} else {
 			if ("234557".equals(AuthUtil.getTenantId())) {
 				lambdaQueryWrapper.orderByAsc(Order::getStatus);
 			} else {
-				lambdaQueryWrapper.orderByAsc(Order::getBusinesDate);
+				lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 			}
 		}
 		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
@@ -344,6 +344,7 @@ public class AppPartsController extends BladeController {
 				CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
 				if (ObjectUtils.isNotNull(corpsDesc)) {
 					lambdaQueryWrapper.eq( Order::getCorpId, corpsDesc.getId());//客户id
+					order.setCorpId(corpsDesc.getId());
 				}
 			}
 		}else{

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -511,7 +511,7 @@ public interface IOrderService extends IService<Order> {
 
 	R salesList(Order order);
 
-    List<Map<String,Object>> statusStatisticsApi();
+    List<Map<String,Object>> statusStatisticsApi(String type);
 
 	R delivery(Order order);
 

+ 123 - 39
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.purchase.sales.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -88,7 +89,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.springblade.common.constant.TenantConstant.*;
+import static org.springblade.common.constant.TenantConstant.OFFSET_RATIO;
 
 /**
  * 销售或采购订单表 服务实现类
@@ -447,24 +448,47 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					item.setBillType(order.getBillType());
 					orderItemsMapper.updateById(item);
 				}
-				//保存配件明细信息
-				if (CollectionUtils.isNotEmpty(item.getPartsList())) {
-					item.getPartsList().forEach(parts -> {
-						if (parts.getId() == null) {
-							parts.setTenantId(SecureUtil.getTenantId());
-							parts.setCreateTime(new Date());
-							parts.setCreateUser(SecureUtil.getUserId());
-							parts.setPid(item.getId());
-							parts.setSrcPid(item.getPid());
-							orderPartsMapper.insert(parts);
-						} else {
-							parts.setUpdateTime(new Date());
-							parts.setUpdateUser(SecureUtil.getUserId());
-							parts.setPid(item.getId());
-							parts.setSrcPid(item.getPid());
-							orderPartsMapper.updateById(parts);
-						}
-					});
+				//特殊颜色
+				if (ObjectUtils.isNotNull(item.getPartsColourValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsColourValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "1", order.getId());
+				}
+				//特殊处理
+				if (ObjectUtils.isNotNull(item.getParts_handleValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getParts_handleValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "2", order.getId());
+				}
+				//瓶帽配件
+				if (ObjectUtils.isNotNull(item.getPartsCapValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsCapValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "3", order.getId());
+				}
+				//阀门配件
+				if (ObjectUtils.isNotNull(item.getPartsValveValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsValveValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "4", order.getId());
+				}
+				//包装方式
+				if (ObjectUtils.isNotNull(item.getPartsModeValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsModeValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "5", order.getId());
+				}
+				//认证
+				if (ObjectUtils.isNotNull(item.getPartsAuthenticationValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsAuthenticationValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "6", order.getId());
+				}
+				//其他
+				if (ObjectUtils.isNotNull(item.getPartsOtherValue())) {
+					JSONArray objects = JSONArray.parseArray(item.getPartsOtherValue());
+					List<OrderParts> categoryConstantInfos = objects.toJavaList(OrderParts.class);
+					saveOrderParts(categoryConstantInfos, item.getId(), "7", order.getId());
 				}
 			});
 //			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
@@ -562,6 +586,29 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return R.data(order);
 	}
 
+	public void saveOrderParts(List<OrderParts> orderPartsList, Long itemId, String type, Long orderId) {
+		//保存配件明细信息
+		if (CollectionUtils.isNotEmpty(orderPartsList)) {
+			orderPartsList.forEach(parts -> {
+				if (parts.getId() == null) {
+					parts.setType(type);
+					parts.setTenantId(SecureUtil.getTenantId());
+					parts.setCreateTime(new Date());
+					parts.setCreateUser(SecureUtil.getUserId());
+					parts.setPid(itemId);
+					parts.setSrcPid(orderId);
+					orderPartsMapper.insert(parts);
+				} else {
+					parts.setUpdateTime(new Date());
+					parts.setUpdateUser(SecureUtil.getUserId());
+					parts.setPid(itemId);
+					parts.setSrcPid(orderId);
+					orderPartsMapper.updateById(parts);
+				}
+			});
+		}
+	}
+
 	@Override
 	@Transactional
 	public R saveOrderMessageApp(Order order) {
@@ -2723,7 +2770,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	public R collectPayment(Order order) {
 		if ("线上".equals(order.getOrderSource())) {
 			Order selectOrder = baseMapper.selectById(order.getId());
-			selectOrder.setStatus(2);
+			selectOrder.setStatus(3);
+			selectOrder.setActualPaymentStatus(2);
 			if (null == selectOrder) {
 				throw new RuntimeException("未找到订单信息,订单已取消");
 			}
@@ -4332,7 +4380,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(OrderItems::getTenantId, AuthUtil.getTenantId()).eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, selectOrder.getId());
 		List<OrderItems> orderItemsList1 = orderItemsMapper.selectList(lambdaQueryWrapper);
-		orderItemsService.saveOrderItemsMessage(orderItemsList1, date, newOrder.getId());
+		orderItemsList1.forEach(item -> {
+			OrderItems orderItems = new OrderItems();
+			BeanUtil.copyProperties(item, orderItems);
+			orderItems.setId(null);
+			orderItems.setTenantId(SecureUtil.getTenantId());
+			orderItems.setCreateUser(SecureUtil.getUserId());
+			orderItems.setCreateTime(date);
+			orderItems.setPid(newOrder.getId());
+			orderItemsService.save(orderItems);
+		});
 		newOrder.setStatus(9);
 		newOrder.setConfirmStatus(1);
 		newOrder.setReturnGoods(newOrder.getStorageQuantity());
@@ -5645,7 +5702,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * 状态统计接口
 	 */
 	@Override
-	public List<Map<String, Object>> statusStatisticsApi() {
+	public List<Map<String, Object>> statusStatisticsApi(String type) {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		//查询字典所有状态
 		R<List<DictBiz>> res = dictBizClient.getList("order_status_pjjl");
@@ -5667,14 +5724,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				map.put("dictionaryStatus", dictBiz.getDictValue());
 				map.put("status", dictBiz.getDictKey());
 				map.put("colour", dictBiz.getColour());
-				if ("13".equals(dictBiz.getDictKey())) {
-					int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
-						.eq(Order::getTenantId, AuthUtil.getTenantId())
-						.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
-						.in(Order::getStatus, list.stream().map(DictBiz::getDictKey).collect(Collectors.toList())));
-					map.put("count", count);
+				if (ObjectUtils.isNotNull(type)) {
+					if ("8".equals(dictBiz.getDictKey()) || "9".equals(dictBiz.getDictKey()) || "10".equals(dictBiz.getDictKey()) || "11".equals(dictBiz.getDictKey())) {
+						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
+							.eq(Order::getTenantId, AuthUtil.getTenantId())
+							.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
+							.apply("find_in_set(bill_type,'XSTH')")
+							.in(Order::getStatus, dictBiz.getDictKey()));
+						map.put("count", count);
+					} else {
+						map.put("count", count(Integer.parseInt(dictBiz.getDictKey()), corpId));
+					}
 				} else {
-					map.put("count", count(Integer.parseInt(dictBiz.getDictKey()), corpId));
+					if ("13".equals(dictBiz.getDictKey())) {
+						int count = baseMapper.selectCount(new LambdaQueryWrapper<Order>().eq(Order::getIsDeleted, 0)
+							.eq(Order::getTenantId, AuthUtil.getTenantId())
+							.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
+							.in(Order::getStatus, list.stream().map(DictBiz::getDictKey).collect(Collectors.toList())));
+						map.put("count", count);
+					} else {
+						map.put("count", count(Integer.parseInt(dictBiz.getDictKey()), corpId));
+					}
 				}
 				mapList.add(map);
 			}
@@ -5715,6 +5785,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			selectOrder.setStatus(5);
 			selectOrder.setShippingAddress(selectOrder.getArrivalAddress());//发货地址
 			selectOrder.setDeliverTime(new Date());//发货时间
+			selectOrder.setRequiredDeliveryDate(new Date());//发货时间
 			selectOrder.setDeliverQuantity(selectOrder.getOrderQuantity());//发货数量
 			selectOrder.setUpdateTime(new Date());
 			selectOrder.setUpdateUser(AuthUtil.getUserId());
@@ -6071,10 +6142,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//入库出库数量
 			order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			//商品名称集合
-			//商品名称集合
-			List<GoodsDesc> goodsDescList = goodsDescClient.selectItemsIdGoods(order.getOrderItemsList().stream().map(OrderItems::getGoodsName).distinct().collect(Collectors.joining()));
-			if (ObjectUtils.isNotNull(goodsDescList) && goodsDescList.size() > 0) {
-				order.setGoodsList(goodsDescList.stream().map(GoodsDesc::getCname).distinct().collect(Collectors.joining()));
+			List<Long> itemIds = order.getOrderItemsList().stream().map(OrderItems::getItemId).distinct().collect(Collectors.toList());
+			StringBuilder goodsId = new StringBuilder();
+			for (Long itemId : itemIds) {
+				goodsId.append(itemId).append(",");
+			}
+			if (ObjectUtils.isNotNull(goodsId)) {
+				List<GoodsDesc> goodsDescList = goodsDescClient.selectItemsIdGoods(goodsId.substring(0, goodsId.length() - 1));
+				if (ObjectUtils.isNotNull(goodsDescList) && goodsDescList.size() > 0) {
+					order.setGoodsList(goodsDescList.stream().map(GoodsDesc::getCname).distinct().collect(Collectors.joining()));
+				}
 			}
 		}
 		if (ObjectUtils.isNull(order.getThisUsedProfit())) {
@@ -6262,10 +6339,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			order.setStorageAmount(order.getOrderItemsList().stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			//入库出库数量
 			order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-			//商品名称集合
-			List<GoodsDesc> goodsDescList = goodsDescClient.selectItemsIdGoods(order.getOrderItemsList().stream().map(OrderItems::getGoodsName).distinct().collect(Collectors.joining()));
-			if (ObjectUtils.isNotNull(goodsDescList) && goodsDescList.size() > 0) {
-				order.setGoodsList(goodsDescList.stream().map(GoodsDesc::getCname).distinct().collect(Collectors.joining()));
+			List<Long> itemIds = order.getOrderItemsList().stream().map(OrderItems::getItemId).distinct().collect(Collectors.toList());
+			StringBuilder goodsId = new StringBuilder();
+			for (Long itemId : itemIds) {
+				goodsId.append(itemId).append(",");
+			}
+			if (ObjectUtils.isNotNull(goodsId)) {
+				List<GoodsDesc> goodsDescList = goodsDescClient.selectItemsIdGoods(goodsId.substring(0, goodsId.length() - 1));
+				if (ObjectUtils.isNotNull(goodsDescList) && goodsDescList.size() > 0) {
+					order.setGoodsList(goodsDescList.stream().map(GoodsDesc::getCname).distinct().collect(Collectors.joining()));
+				}
 			}
 		} else {
 			throw new RuntimeException("请选择商品信息");
@@ -6279,11 +6362,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		order.setCostAmount(costAmount);
 		order.setGrossProfit(grossProfit);
 		order.setConfirmStatus(1);
+		order.setAccount("微信支付");
 		this.paymentApply(order, order.getBillType(), order.getTradeType());
 		order.setDebitAmount(order.getOrderAmount());
 		order.setBalanceAmount(order.getOrderAmount());
 		order.setPurchaseAmount(order.getOrderAmount());
-		order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
+//		order.setSettlmentAmount(order.getOrderAmount().subtract(order.getOrderAmount()));
 		baseMapper.updateById(order);
 
 		// 保存订单文件信息
@@ -6354,7 +6438,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			.eq(Order::getIsDeleted, 0)
 			.eq(Order::getTenantId, AuthUtil.getTenantId())
 			.eq(ObjectUtils.isNotNull(corpId), Order::getCorpId, corpId)
-			.eq(Order::getStatus, status));
+			.eq(Order::getStatus, status).eq(Order::getBillType, "XS"));
 	}
 
 	@Override

+ 12 - 10
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/wing/accessories/WebpageController.java

@@ -24,7 +24,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 翼车配-网页  controller
@@ -65,14 +64,16 @@ public class WebpageController {
 				lambdaQueryWrapper.eq(Order::getStatus, 3);//微信实际支付状态
 			} else if (ObjectUtils.isNotNull(order.getStatus()) && 13 == order.getStatus()) {
 				lambdaQueryWrapper.in(Order::getStatus, 7, 8, 9, 10, 11, 12);
+				lambdaQueryWrapper.apply("find_in_set(bill_type,'XS,XSTH')");
 			} else {
+				lambdaQueryWrapper.apply(Func.isNotEmpty(order.getBillType()), "find_in_set(bill_type,'" + order.getBillType() + "')");
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//订单状态
 			}
 			CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId());
 			if (ObjectUtils.isNotNull(corpsAttn)) {
 				CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpsAttn.getPid());
 				if (ObjectUtils.isNotNull(corpsDesc)) {
-						lambdaQueryWrapper.eq( Order::getCorpId, corpsDesc.getId());//客户id
+					lambdaQueryWrapper.eq(Order::getCorpId, corpsDesc.getId());//客户id
 				} else {
 					lambdaQueryWrapper.eq(Order::getCorpId, 0);//客户id
 				}
@@ -82,9 +83,11 @@ public class WebpageController {
 		} else {
 			if (ObjectUtils.isNotNull(order.getStatus()) && (1 == order.getStatus() || 2 == order.getStatus())) {
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getActualPaymentStatus()), Order::getActualPaymentStatus, order.getStatus());//微信实际支付状态
-			} else if (ObjectUtils.isNotNull(order.getStatus()) && 13 == order.getStatus()) {
-				lambdaQueryWrapper.in(Order::getStatus, 7, 8, 9, 10, 11, 12);
+			} else if (ObjectUtils.isNotNull(order.getStatus()) && (8 == order.getStatus() || 9 == order.getStatus() || 10 == order.getStatus() || 11 == order.getStatus())) {
+				lambdaQueryWrapper.in(Order::getStatus, order.getStatus());
+				lambdaQueryWrapper.apply("find_in_set(bill_type,'XSTH')");
 			} else {
+				lambdaQueryWrapper.apply(Func.isNotEmpty(order.getBillType()), "find_in_set(bill_type,'" + order.getBillType() + "')");
 				lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStatus()), Order::getStatus, order.getStatus());//订单状态
 			}
 			if (ObjectUtils.isNotNull(order.getCorpsName())) {
@@ -92,9 +95,9 @@ public class WebpageController {
 				List<Long> ids = corpsDescClient.listCorpIdByName(corpsName);
 				if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
 					lambdaQueryWrapper.in(Order::getCorpId, ids);//客户id
-				} else {
+				}/* else {
 					lambdaQueryWrapper.isNull(Order::getCorpId);
-				}
+				}*/
 			} else {
 				lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
 			}
@@ -108,7 +111,6 @@ public class WebpageController {
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCreateUser()), Order::getCreateUser, order.getCreateUser());//制单人
 		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()), Order::getBusinesDate, order.getOrderStartDate());//订单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()), Order::getBusinesDate, order.getOrderEndDate());//订单日期结束
-		lambdaQueryWrapper.apply(Func.isNotEmpty(order.getBillType()), "find_in_set(bill_type,'" + order.getBillType() + "')");
 		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getTradeType()), Order::getTradeType, order.getTradeType());
 		if ("1".equals(order.getModular())) {
 			lambdaQueryWrapper.apply("balance_amount > 0");
@@ -147,7 +149,7 @@ public class WebpageController {
 		} else {
 			lambdaQueryWrapper.orderByDesc(Order::getBusinesDate);
 		}
-		return R.data(orderService.selectList(query, lambdaQueryWrapper,order.getSource()));
+		return R.data(orderService.selectList(query, lambdaQueryWrapper, order.getSource()));
 	}
 
 	/**
@@ -177,8 +179,8 @@ public class WebpageController {
 	 */
 	@GetMapping("/statusStatisticsApi")
 	@ApiOperation(value = "状态统计接口", notes = "无")
-	public R revenueExpenditure() {
-		return R.data(orderService.statusStatisticsApi());
+	public R revenueExpenditure(@RequestParam(value = "type",required = false) String type) {
+		return R.data(orderService.statusStatisticsApi(type));
 	}
 
 	/**

+ 43 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/RegionController.java

@@ -16,9 +16,11 @@
  */
 package org.springblade.system.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -114,7 +116,7 @@ public class RegionController extends BladeController {
 	public R<List<RegionVO>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
 		List<RegionVO> list = regionService.lazyList(parentCode, menu);
 		list.stream().findFirst().map(vo -> {
-			if (vo.getCode().equals("00")){
+			if (vo.getCode().equals("00")) {
 				list.remove(vo);
 			}
 			return vo;
@@ -309,4 +311,44 @@ public class RegionController extends BladeController {
 		return R.data(AddressUtil.getLnglat(address));
 	}
 
+
+	/**
+	 * 行政区划查询
+	 */
+	@GetMapping("/selectList")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "懒加载列表", notes = "传入menu")
+	public R<List<List<Region>>> selectList(String parentCode) {
+		List<List<Region>> list = new ArrayList<>();
+		LambdaQueryWrapper<Region> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(parentCode), Region::getParentCode, parentCode);
+		lambdaQueryWrapper.eq(ObjectUtils.isNull(parentCode), Region::getRegionLevel, 1);
+		lambdaQueryWrapper.orderByAsc(Region::getCode);
+		List<Region> regionList = regionService.list(lambdaQueryWrapper);
+		list.add(regionList);
+		if (ObjectUtils.isNull(parentCode) && ObjectUtils.isNotNull(regionList) && regionList.size() > 0) {
+			LambdaQueryWrapper<Region> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper1.eq(Region::getParentCode, regionList.get(0).getCode());
+			lambdaQueryWrapper1.orderByAsc(Region::getCode);
+			List<Region> regionList1 = regionService.list(lambdaQueryWrapper1);
+			list.add(regionList1);
+			if (ObjectUtils.isNotNull(regionList1) && regionList1.size() > 0) {
+				LambdaQueryWrapper<Region> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper2.eq(Region::getParentCode, regionList1.get(0).getCode());
+				lambdaQueryWrapper2.orderByAsc(Region::getCode);
+				List<Region> regionList2 = regionService.list(lambdaQueryWrapper2);
+				list.add(null == regionList2 ? new ArrayList<>() : regionList2);
+			}
+		}else{
+			if (ObjectUtils.isNotNull(regionList) && regionList.size() > 0 && 2 == regionList.get(0).getRegionLevel()){
+				LambdaQueryWrapper<Region> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper1.eq(Region::getParentCode, regionList.get(0).getCode());
+				lambdaQueryWrapper1.orderByAsc(Region::getCode);
+				List<Region> regionList1 = regionService.list(lambdaQueryWrapper1);
+				list.add(regionList1);
+			}
+		}
+		return R.data(list);
+	}
+
 }