纪新园 2 лет назад
Родитель
Сommit
c93e5ff7ce
12 измененных файлов с 475 добавлено и 91 удалено
  1. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsDesc.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  3. 32 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjOrderExportExcelXS.java
  4. 137 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java
  5. 87 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  6. 5 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java
  7. 144 36
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  8. 44 44
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  9. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayServiceImpl.java
  10. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  11. 8 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java
  12. 4 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

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

@@ -254,4 +254,10 @@ public class PjCorpsDesc implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal creditLimitBalance;
 
+	/**
+	 * 首字母
+	 */
+	@ApiModelProperty(value = "首字母")
+	private String initials;
+
 }

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

@@ -431,4 +431,10 @@ public class PjOrder implements Serializable {
 	 */
 	@TableField(exist = false)
 	private Integer year;
+
+	/**
+	 * 收付款结算  d收  c付
+	 */
+	@TableField(exist = false)
+	private String settlementType;
 }

+ 32 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/PjOrderExportExcelXS.java

@@ -16,11 +16,13 @@
  */
 package org.springblade.salesPart.excel;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 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 com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.pay.tonglianPayment.entity.WechatMark;
@@ -105,6 +107,27 @@ public class PjOrderExportExcelXS implements Serializable {
 	 */
 	@ExcelProperty(value = "金额")
 	private BigDecimal totalMoney;
+	/**
+	 * 总利润
+	 */
+	@ExcelProperty(value = "总利润")
+	private BigDecimal totalProfit;
+	/**
+	 * 运费
+	 */
+	@ExcelProperty(value = "运费")
+	private BigDecimal freight;
+
+	/**
+	 * 成本
+	 */
+	@ExcelProperty(value = "成本")
+	private BigDecimal cost;
+	/**
+	 * 毛利
+	 */
+	@ExcelProperty(value = "毛利")
+	private BigDecimal grossProfit;
 
 	/**
 	 * 订单状态
@@ -113,6 +136,15 @@ public class PjOrderExportExcelXS implements Serializable {
 	private String status;
 
 	/**
+	 * 实际支付状态
+	 */
+	@ApiModelProperty(value = "支付状态")
+	private String paymentStatus;
+
+	@ExcelIgnore
+	private Integer actualPaymentStatus;
+
+	/**
 	 * 应结日期
 	 */
 	@ExcelProperty(value = "应结日期")

+ 137 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java

@@ -36,10 +36,7 @@ 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.BeanUtil;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.salesPart.corps.service.ICorpsAttnService;
 import org.springblade.salesPart.corps.service.ICorpsDescService;
@@ -372,4 +369,140 @@ public class CorpsDescController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 按照首字母获得客户并分组
+	 */
+	@GetMapping("/initialsAllList")
+	@ApiOperation(value = "按照首字母获得客户并分组", notes = "传入corpsDesc")
+	public R<List<List<PjCorpsDesc>>> initialsAllList(PjCorpsDesc corpsDesc) {
+		// 默认查有效的
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(PjCorpsDesc::getIsDeleted, 0);
+		lambdaQueryWrapper.like(StringUtil.isNotBlank(corpsDesc.getCname()), PjCorpsDesc::getCname, corpsDesc.getCname());
+			lambdaQueryWrapper.like(StringUtil.isNotBlank(corpsDesc.getCorpType()), PjCorpsDesc::getCorpType, corpsDesc.getCorpType());
+		//获得客户信息
+		List<PjCorpsDesc> corpsDescList = corpsDescService.list(lambdaQueryWrapper);
+		List<PjCorpsDesc> voList = BeanUtil.copy(corpsDescList, PjCorpsDesc.class);
+
+		List<List<PjCorpsDesc>> listAll = new ArrayList<>();
+		List<PjCorpsDesc> listA = new ArrayList<>();
+		List<PjCorpsDesc> listB = new ArrayList<>();
+		List<PjCorpsDesc> listC = new ArrayList<>();
+		List<PjCorpsDesc> listD = new ArrayList<>();
+		List<PjCorpsDesc> listE = new ArrayList<>();
+		List<PjCorpsDesc> listF = new ArrayList<>();
+		List<PjCorpsDesc> listG = new ArrayList<>();
+		List<PjCorpsDesc> listH = new ArrayList<>();
+		List<PjCorpsDesc> listI = new ArrayList<>();
+		List<PjCorpsDesc> listJ = new ArrayList<>();
+		List<PjCorpsDesc> listK = new ArrayList<>();
+		List<PjCorpsDesc> listL = new ArrayList<>();
+		List<PjCorpsDesc> listM = new ArrayList<>();
+		List<PjCorpsDesc> listN = new ArrayList<>();
+		List<PjCorpsDesc> listO = new ArrayList<>();
+		List<PjCorpsDesc> listP = new ArrayList<>();
+		List<PjCorpsDesc> listQ = new ArrayList<>();
+		List<PjCorpsDesc> listR = new ArrayList<>();
+		List<PjCorpsDesc> listS = new ArrayList<>();
+		List<PjCorpsDesc> listT = new ArrayList<>();
+		List<PjCorpsDesc> listU = new ArrayList<>();
+		List<PjCorpsDesc> listV = new ArrayList<>();
+		List<PjCorpsDesc> listW = new ArrayList<>();
+		List<PjCorpsDesc> listX = new ArrayList<>();
+		List<PjCorpsDesc> listY = new ArrayList<>();
+		List<PjCorpsDesc> listZ = new ArrayList<>();
+		List<PjCorpsDesc> listRest = new ArrayList<>();
+
+		voList.forEach(desc -> {
+			if (StringUtils.isNotBlank(desc.getInitials())) {
+				if (desc.getInitials().equals("A") || desc.getInitials().equals("a")) {
+					listA.add(desc);
+				} else if (desc.getInitials().equals("B") || desc.getInitials().equals("b")) {
+					listB.add(desc);
+				} else if (desc.getInitials().equals("C") || desc.getInitials().equals("c")) {
+					listC.add(desc);
+				} else if (desc.getInitials().equals("D") || desc.getInitials().equals("d")) {
+					listD.add(desc);
+				} else if (desc.getInitials().equals("E") || desc.getInitials().equals("e")) {
+					listE.add(desc);
+				} else if (desc.getInitials().equals("F") || desc.getInitials().equals("f")) {
+					listF.add(desc);
+				} else if (desc.getInitials().equals("G") || desc.getInitials().equals("g")) {
+					listG.add(desc);
+				} else if (desc.getInitials().equals("H") || desc.getInitials().equals("h")) {
+					listH.add(desc);
+				} else if (desc.getInitials().equals("I") || desc.getInitials().equals("i")) {
+					listI.add(desc);
+				} else if (desc.getInitials().equals("J") || desc.getInitials().equals("j")) {
+					listJ.add(desc);
+				} else if (desc.getInitials().equals("K") || desc.getInitials().equals("k")) {
+					listK.add(desc);
+				} else if (desc.getInitials().equals("L") || desc.getInitials().equals("l")) {
+					listL.add(desc);
+				} else if (desc.getInitials().equals("M") || desc.getInitials().equals("m")) {
+					listM.add(desc);
+				} else if (desc.getInitials().equals("N") || desc.getInitials().equals("n")) {
+					listN.add(desc);
+				} else if (desc.getInitials().equals("O") || desc.getInitials().equals("o")) {
+					listO.add(desc);
+				} else if (desc.getInitials().equals("P") || desc.getInitials().equals("p")) {
+					listP.add(desc);
+				} else if (desc.getInitials().equals("Q") || desc.getInitials().equals("q")) {
+					listQ.add(desc);
+				} else if (desc.getInitials().equals("R") || desc.getInitials().equals("r")) {
+					listR.add(desc);
+				} else if (desc.getInitials().equals("S") || desc.getInitials().equals("s")) {
+					listS.add(desc);
+				} else if (desc.getInitials().equals("T") || desc.getInitials().equals("t")) {
+					listT.add(desc);
+				} else if (desc.getInitials().equals("U") || desc.getInitials().equals("u")) {
+					listU.add(desc);
+				} else if (desc.getInitials().equals("V") || desc.getInitials().equals("v")) {
+					listV.add(desc);
+				} else if (desc.getInitials().equals("W") || desc.getInitials().equals("w")) {
+					listW.add(desc);
+				} else if (desc.getInitials().equals("X") || desc.getInitials().equals("x")) {
+					listX.add(desc);
+				} else if (desc.getInitials().equals("Y") || desc.getInitials().equals("y")) {
+					listY.add(desc);
+				} else if (desc.getInitials().equals("Z") || desc.getInitials().equals("z")) {
+					listZ.add(desc);
+				} else {
+					listRest.add(desc);
+				}
+			} else {
+				listRest.add(desc);
+			}
+		});
+		listAll.add(listA);
+		listAll.add(listB);
+		listAll.add(listC);
+		listAll.add(listD);
+		listAll.add(listE);
+		listAll.add(listF);
+		listAll.add(listG);
+		listAll.add(listH);
+		listAll.add(listI);
+		listAll.add(listJ);
+		listAll.add(listK);
+		listAll.add(listL);
+		listAll.add(listM);
+		listAll.add(listN);
+		listAll.add(listO);
+		listAll.add(listP);
+		listAll.add(listQ);
+		listAll.add(listR);
+		listAll.add(listS);
+		listAll.add(listT);
+		listAll.add(listU);
+		listAll.add(listV);
+		listAll.add(listW);
+		listAll.add(listX);
+		listAll.add(listY);
+		listAll.add(listZ);
+		listAll.add(listRest);
+		return R.data(listAll);
+	}
+
 }

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

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.CorpsTypeDesc;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -75,6 +76,15 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	private final IUserClient userClient;
 	private final ISysClient sysClient;
 
+
+	static final int GB_SP_DIFF = 160;
+	// 存放国标一级汉字不同读音的起始区位码
+	static final int[] secPosValueList = {1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635,
+		3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 5600};
+	// 存放国标一级汉字不同读音的起始区位码对应读音
+	static final char[] firstLetter = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
+		'R', 'S', 'T', 'W', 'X', 'Y', 'Z'};
+
 	/**
 	 * 获取客户详情
 	 *
@@ -158,6 +168,11 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	public R submit(PjCorpsDesc corpsDesc) {
 		Long userId = SecureUtil.getUserId();
 		Date date = new Date();
+		if (null == corpsDesc.getInitials() || "" == corpsDesc.getInitials()) {//首字母为空
+			//获得名称首字母
+			String initials = getSpells(corpsDesc.getCname());
+			corpsDesc.setInitials(initials.substring(0, 1));
+		}
 
 		//保存客户信息
 		if (corpsDesc.getId() == null) {
@@ -646,6 +661,11 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		Long deptId = Long.valueOf(AuthUtil.getDeptId());
 		String deptName = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId())).getData().getFullName();
 		Date date = new Date();
+		if (null == corpsDesc.getInitials() || "" == corpsDesc.getInitials()) {//首字母为空
+			//获得名称首字母
+			String initials = getSpells(corpsDesc.getCname());
+			corpsDesc.setInitials(initials.substring(0, 1));
+		}
 
 		//保存客户信息
 		corpsDesc.setCorpType("KH");
@@ -877,7 +897,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	}
 
 	/**
-	 * 保客户与类别对应信息
+	 * 保客户与类别对应信息
 	 *
 	 * @param corpsDesc 客户信息
 	 * @param userId    登录人id
@@ -910,4 +930,70 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			});
 		}
 	}
+
+	/**
+	 * 提取汉字字符串的首字母
+	 *
+	 * @param characters 汉字字符串
+	 * @return
+	 */
+	public static String getSpells(String characters) {
+		StringBuffer buffer = new StringBuffer();
+		for (int i = 0; i < characters.length(); i++) {
+
+			char ch = characters.charAt(i);
+			if ((ch >> 7) == 0) {
+				// 判断是否为汉字,如果左移7为为0就不是汉字,否则是汉字
+				buffer.append('#');
+			} else {
+				char spell = getFirstLetter(ch);
+				buffer.append(String.valueOf(spell));
+			}
+		}
+		return buffer.toString();
+	}
+
+	/**
+	 * 获取一个汉字的首字母
+	 *
+	 * @param ch 汉字
+	 * @return
+	 */
+	public static Character getFirstLetter(char ch) {
+
+		byte[] uniCode = null;
+		try {
+			uniCode = String.valueOf(ch).getBytes("GBK");
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
+			return null;
+		} else {
+			return convert(uniCode);
+		}
+	}
+
+	/**
+	 * 获取一个汉字的拼音首字母。 GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码
+	 * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43
+	 * 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’
+	 */
+	private static char convert(byte[] bytes) {
+		char result = '#';
+		int secPosValue = 0;
+		int i;
+		for (i = 0; i < bytes.length; i++) {
+			bytes[i] -= GB_SP_DIFF;
+		}
+		secPosValue = bytes[0] * 100 + bytes[1];
+		for (i = 0; i < 23; i++) {
+			if (secPosValue >= secPosValueList[i] && secPosValue < secPosValueList[i + 1]) {
+				result = firstLetter[i];
+				break;
+			}
+		}
+		return result;
+	}
 }

+ 5 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsDescServiceImpl.java

@@ -343,7 +343,11 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, PjGoodsDe
 				}
 
 				goodsDesc.setGoodsDescription(e.getGoodsDescription());
-				goodsDesc.setWhether(e.getWhether());
+				if(ObjectUtils.isNotNull(e.getWhether()) && ("1".equals(e.getWhether()) || "0".equals(e.getWhether()))){
+					goodsDesc.setWhether(e.getWhether());
+				}else{
+					goodsDesc.setWhether("0");
+				}
 				goodsDesc.setInventoryAlert(e.getInventoryAlert());
 				goodsDesc.setExplosionProof(e.getExplosionProof());
 				goodsDesc.setOriginalFactory(e.getOriginalFactory());

+ 144 - 36
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -17,19 +17,16 @@
 package org.springblade.salesPart.order.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import org.springblade.client.entity.CorpsAttn;
+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;
@@ -39,20 +36,24 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.salesPart.corps.service.ICorpsAttnService;
-import org.springblade.salesPart.entity.*;
+import org.springblade.salesPart.entity.PjCorpsAttn;
+import org.springblade.salesPart.entity.PjOrder;
+import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.excel.PjOrderExportExcelCG;
 import org.springblade.salesPart.excel.PjOrderExportExcelXS;
 import org.springblade.salesPart.order.service.IOrderItemsService;
+import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.salesPart.order.service.IOrderService;
-import org.springblade.core.boot.ctrl.BladeController;
 
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.math.MathContext;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -73,7 +74,8 @@ public class OrderController extends BladeController {
 
 	private final IOrderService orderService;
 	private final IOrderItemsService orderItemsService;
-	private IUserClient iUserClient;//获取用户信息
+	//获取用户信息
+	private final IUserClient iUserClient;
 	private final ICorpsAttnService corpsAttnService;
 
 	/**
@@ -124,7 +126,7 @@ public class OrderController extends BladeController {
 		} else {
 			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
 		}
-//		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND actual_payment_status = 2 ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
+		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 
 		if (AuthUtil.getUserRole().contains("业务员")) {
@@ -134,34 +136,34 @@ public class OrderController extends BladeController {
 		}
 		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 
-		String updateUserIds = "";//修改人id拼接
-		String createUserIds = "";//创建人id拼接
+		StringBuilder updateUserIds = new StringBuilder();//修改人id拼接
+		StringBuilder createUserIds = new StringBuilder();//创建人id拼接
 		for (PjOrder items : pages.getRecords()) {
 			if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
-				updateUserIds = updateUserIds + items.getUpdateUser() + ",";
+				updateUserIds.append(items.getUpdateUser()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
-				createUserIds = createUserIds + items.getCreateUser() + ",";
+				createUserIds.append(items.getCreateUser()).append(",");
 			}
 		}
 
 		//获得修改人信息
-		List<User> updateUserList = iUserClient.selectUserIds(updateUserIds);
+		List<User> updateUserList = iUserClient.selectUserIds(updateUserIds.toString());
 		//获得创建人信息
-		List<User> createUserList = iUserClient.selectUserIds(createUserIds);
+		List<User> createUserList = iUserClient.selectUserIds(createUserIds.toString());
 
 		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
 			pages.getRecords().forEach(item -> {
 				if (ObjectUtil.isNotEmpty(updateUserList)) {
 					User user = updateUserList.stream().anyMatch(e -> e.getId().equals(item.getUpdateUser())) ? updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
+					if (user != null) {
 						item.setUpdateUserName(user.getName());
 					}
 				}
 
 				if (ObjectUtil.isNotEmpty(createUserList)) {
 					User user = createUserList.stream().anyMatch(e -> e.getId().equals(item.getCreateUser())) ? createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
+					if (user != null) {
 						item.setCreateUserName(user.getName());
 					}
 				}
@@ -218,34 +220,34 @@ public class OrderController extends BladeController {
 		}
 		List<PjOrder> pages = orderService.list(lambdaQueryWrapper);
 
-		String updateUserIds = "";//修改人id拼接
-		String createUserIds = "";//创建人id拼接
+		StringBuilder updateUserIds = new StringBuilder();//修改人id拼接
+		StringBuilder createUserIds = new StringBuilder();//创建人id拼接
 		for (PjOrder items : pages) {
 			if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
-				updateUserIds = updateUserIds + items.getUpdateUser() + ",";
+				updateUserIds.append(items.getUpdateUser()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
-				createUserIds = createUserIds + items.getCreateUser() + ",";
+				createUserIds.append(items.getCreateUser()).append(",");
 			}
 		}
 
 		//获得修改人信息
-		List<User> updateUserList = iUserClient.selectUserIds(updateUserIds);
+		List<User> updateUserList = iUserClient.selectUserIds(updateUserIds.toString());
 		//获得创建人信息
-		List<User> createUserList = iUserClient.selectUserIds(createUserIds);
+		List<User> createUserList = iUserClient.selectUserIds(createUserIds.toString());
 
 		if (CollectionUtils.isNotEmpty(pages)) {
 			pages.forEach(item -> {
 				if (ObjectUtil.isNotEmpty(updateUserList)) {
 					User user = updateUserList.stream().anyMatch(e -> e.getId().equals(item.getUpdateUser())) ? updateUserList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
+					if (user != null) {
 						item.setUpdateUserName(user.getName());
 					}
 				}
 
 				if (ObjectUtil.isNotEmpty(createUserList)) {
 					User user = createUserList.stream().anyMatch(e -> e.getId().equals(item.getCreateUser())) ? createUserList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
+					if (user != null) {
 						item.setCreateUserName(user.getName());
 					}
 				}
@@ -253,8 +255,22 @@ public class OrderController extends BladeController {
 					.eq(PjOrderItems::getPid, item.getId())) + "");
 			});
 		}
+		List<PjOrderExportExcelXS> list = BeanUtil.copy(pages, PjOrderExportExcelXS.class);
+		for (PjOrderExportExcelXS item : list) {
+			if (1 == item.getActualPaymentStatus()) {
+				item.setPaymentStatus("待付款");
+			} else if (2 == item.getActualPaymentStatus()) {
+				item.setPaymentStatus("已付款");
+			} else if (3 == item.getActualPaymentStatus()) {
+				item.setPaymentStatus("尾款");
+			} else if (4 == item.getActualPaymentStatus()) {
+				item.setPaymentStatus("已退款");
+			} else {
+				item.setPaymentStatus("-");
+			}
+		}
 		if ("XS".equals(order.getBsType())) {
-			ExcelUtil.export(response, "销售订单", "订单数据", BeanUtil.copy(pages, PjOrderExportExcelXS.class), PjOrderExportExcelXS.class);
+			ExcelUtil.export(response, "销售订单", "订单数据", list, PjOrderExportExcelXS.class);
 		} else {
 			ExcelUtil.export(response, "采购订单", "订单数据", BeanUtil.copy(pages, PjOrderExportExcelCG.class), PjOrderExportExcelCG.class);
 		}
@@ -523,10 +539,10 @@ public class OrderController extends BladeController {
 	@ApiOperation(value = "购物车列表不分页查询", notes = "传入shoppingCart")
 	public R<List<Map<String, Object>>> listAll(PjOrder order) {
 		PjCorpsAttn pjCorpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
-			.eq(PjCorpsAttn::getTenantId,AuthUtil.getTenantId())
-			.eq(PjCorpsAttn::getIsDeleted,0)
-			.eq(PjCorpsAttn::getUserId,AuthUtil.getUserId()));
-		if (ObjectUtils.isNull(pjCorpsAttn)){
+			.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsAttn::getIsDeleted, 0)
+			.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId()));
+		if (ObjectUtils.isNull(pjCorpsAttn)) {
 			throw new RuntimeException("未找到用户信息");
 		}
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -539,7 +555,7 @@ public class OrderController extends BladeController {
 			.orderByDesc(PjOrder::getCreateTime);
 		List<PjOrder> list = orderService.list(lambdaQueryWrapper);
 		for (PjOrder item : list) {
-			if ("内部销售".equals(item.getBusinessSource())){
+			if ("内部销售".equals(item.getBusinessSource())) {
 				item.setSrcOrdNo(item.getOrdNo());
 			}
 		}
@@ -570,7 +586,7 @@ public class OrderController extends BladeController {
 	@PostMapping("/checkOrderCG")
 	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "请核", notes = "传入order")
-	public R checkOrderCG(@RequestBody PjOrder order) {
+	public R checkOrderCg(@RequestBody PjOrder order) {
 		PjOrder declare = orderService.checkOrderCG(order);
 		return R.data(declare);
 	}
@@ -581,7 +597,7 @@ public class OrderController extends BladeController {
 	@PostMapping("/revokeCheckOrderCG")
 	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "撤销请核", notes = "传入order")
-	public R revokeCheckOrderCG(@RequestBody PjOrder order) {
+	public R revokeCheckOrderCg(@RequestBody PjOrder order) {
 		PjOrder declare = orderService.revokeCheckOrderCG(order);
 		return R.data(declare);
 	}
@@ -612,4 +628,96 @@ public class OrderController extends BladeController {
 
 	}
 
+	/**
+	 * 分页 配件销售
+	 */
+	@GetMapping("/listBySettlement")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<PjOrder>> listBySettlement(PjOrder order, Query query) {
+		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrder::getIsDeleted, 0)
+			.eq(PjOrder::getBsType, order.getBsType())
+			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.eq(ObjectUtils.isNotEmpty(order.getStorageId()), PjOrder::getStorageId, order.getStorageId())//仓库
+			.like(ObjectUtils.isNotEmpty(order.getStorageName()), PjOrder::getStorageName, order.getStorageName())
+			.eq(ObjectUtils.isNotEmpty(order.getCustomerId()), PjOrder::getCustomerId, order.getCustomerId())//客户
+			.eq(ObjectUtils.isNotEmpty(order.getGenerateTask()), PjOrder::getGenerateTask, order.getGenerateTask())//客户
+			.eq(ObjectUtils.isNotEmpty(order.getSalerId()), PjOrder::getSalerId, order.getSalerId())//业务员
+			.like(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())
+			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());
+		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//创建日期
+			lambdaQueryWrapper.ge(PjOrder::getDueDate, order.getDueDateList().get(0));
+			lambdaQueryWrapper.le(PjOrder::getDueDate, order.getDueDateList().get(1));
+		}
+		if (order.getBusinesDateList() != null && order.getBusinesDateList().size() > 1) {//创建日期
+			lambdaQueryWrapper.ge(PjOrder::getBusinesDate, order.getBusinesDateList().get(0));
+			lambdaQueryWrapper.le(PjOrder::getBusinesDate, order.getBusinesDateList().get(1));
+		}
+		if ("d".equals(order.getSettlementType())) {
+			lambdaQueryWrapper.eq(PjOrder::getGenerateTask, "已生成")
+				.apply("find_in_set(actual_payment_status,'1,3')");
+		} else if ("c".equals(order.getSettlementType())) {
+			lambdaQueryWrapper.eq(PjOrder::getStatus, "审核完成")
+				.apply("find_in_set(actual_payment_status,'1,3')");
+		}
+		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
+		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * app营业分析
+	 */
+	@GetMapping("/turnoverAnalysis")
+	@ApiOperation(value = "app营业分析", notes = "传入参数")
+	public R<Map<String, Object>> turnoverAnalysis(@RequestParam(value = "statusDate", required = false) String statusDate,
+												   @RequestParam(value = "endDate", required = false) String endDate) {
+		Map<String, Object> map = new HashMap<>();
+		LambdaQueryWrapper<PjOrder> lambdaQueryWrapperXS = new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getIsDeleted, 0)
+			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+			.gt(ObjectUtils.isNotNull(statusDate), PjOrder::getBusinesDate, statusDate)
+			.lt(ObjectUtils.isNotNull(endDate), PjOrder::getBusinesDate, endDate)
+			.eq(PjOrder::getBsType, "XS");
+		 if (AuthUtil.getUserRole().contains("业务员")) {
+			lambdaQueryWrapperXS.gt(PjOrder::getSalerId,AuthUtil.getTenantId());
+		}
+		List<PjOrder> pjOrderListXS = orderService.list(lambdaQueryWrapperXS);
+		List<PjOrder> pjOrderListCG = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getIsDeleted, 0)
+			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+			.gt(ObjectUtils.isNotNull(statusDate), PjOrder::getBusinesDate, statusDate)
+			.lt(ObjectUtils.isNotNull(endDate), PjOrder::getBusinesDate, endDate)
+			.eq(PjOrder::getBsType, "CG"));
+		//销售
+		BigDecimal income = new BigDecimal("0.00");
+		//支出
+		BigDecimal expenditure = new BigDecimal("0.00");
+		//利润
+		BigDecimal profit = new BigDecimal("0.00");
+		//成本
+		BigDecimal cost = new BigDecimal("0.00");
+		//平均客单价
+		BigDecimal averageAmount = new BigDecimal("0.00");
+
+		if (pjOrderListXS.size() > 0) {
+			income = pjOrderListXS.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			cost = pjOrderListXS.stream().map(PjOrder::getCost).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			profit = income.subtract(cost);
+			averageAmount = averageAmount.add(income.divide(new BigDecimal(pjOrderListXS.size()), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+
+		}
+		if (pjOrderListCG.size() > 0 && AuthUtil.getUserRole().contains("admin")) {
+			expenditure = pjOrderListCG.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		}
+		map.put("income", income);
+		map.put("expenditure", expenditure);
+		map.put("profit", profit);
+		map.put("cost", cost);
+		map.put("averageAmount", averageAmount);
+		return R.data(map);
+	}
+
 }

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

@@ -88,8 +88,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	/**
 	 * 生成系统编号
 	 */
-	private ISerialClient serialClient;
-	private ICheckClient checkClient;
+	private final ISerialClient serialClient;
+	private final ICheckClient checkClient;
 
 	private final OrderItemsMapper orderItemsMapper;
 	private final ShipMapper shipMapper;
@@ -110,7 +110,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	/**
 	 * 获取用户信息
 	 */
-	private IUserClient userClient;
+	private final IUserClient userClient;
 
 	/**
 	 * 获取销售订单详情
@@ -216,7 +216,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 	@Override
 	public Map<String, List<BigDecimal>> columnar(PjOrder order) {
-		Map<String, List<BigDecimal>> map = new HashMap<>();
+		Map<String, List<BigDecimal>> map = new HashMap<>(16);
 		List<BigDecimal> number = new ArrayList<>();
 		List<BigDecimal> amount = new ArrayList<>();
 		// 获取当前年份
@@ -235,7 +235,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			// 获取该月份的第一天和最后一天
 			LocalDate firstDay = yearMonth.atDay(1);
 			LocalDate lastDay = yearMonth.atEndOfMonth();
-			Map<String, BigDecimal> sum = baseMapper.columnar(firstDay, lastDay,AuthUtil.getTenantId());
+			Map<String, BigDecimal> sum = baseMapper.columnar(firstDay, lastDay, AuthUtil.getTenantId());
 			number.add(sum.get("goodsTotalNum"));
 			amount.add(sum.get("totalMoney"));
 		}
@@ -359,7 +359,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							.eq(PjStockDesc::getIsDeleted, 0)
 							.eq(PjStockDesc::getGoodsId, item.getGoodsId());
 						lambdaQueryWrapper.eq(PjStockDesc::getStorageId, order.getStorageId());
-						if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && goodsDesc.getWhether().equals("1")) {//是否管理批次号
+						//是否管理批次号
+						if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && "1".equals(goodsDesc.getWhether())) {
 							lambdaQueryWrapper.eq(PjStockDesc::getDot, item.getDot());
 						} else {
 							lambdaQueryWrapper.and(i -> i.eq(PjStockDesc::getDot, "").or().isNull(PjStockDesc::getDot));
@@ -709,7 +710,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					sendMessage.setUrl("/tirePartsMall/salesManagement/outboundTask/index");
 					sendMessage.setPageLabel("出库任务");
 					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
-					sendMessage.setMessageBody("单号:" + pjShip.getBillno() +"的出库任务已撤销!"+ "时间:" + formatted);
+					sendMessage.setMessageBody("单号:" + pjShip.getBillno() + "的出库任务已撤销!" + "时间:" + formatted);
 					R save = messageClient.save(sendMessage);
 					System.out.println("发送结果:" + save);
 					if (!save.isSuccess()) {
@@ -831,6 +832,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public PjOrder checkOrder(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
+		if (ObjectUtils.isNull(declare.getOldTrxId())) {
+			throw new RuntimeException("线下支付按钮无效");
+		}
 
 		//审批数据
 		AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
@@ -874,6 +878,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			auditProecessDTO.setBillTime(declare.getCreateTime());//业务日期
 			auditProecessDTO.setTenantId(AuthUtil.getTenantId());//租户id
 			auditProecessDTO.setCorpId(declare.getCustomerId());
+			auditProecessDTO.setGrossProfit(declare.getGrossProfit());
 			R financeProcess = checkClient.createFinanceProcess(auditProecessDTO);
 			if (!financeProcess.isSuccess()) {
 				throw new SecurityException("操作失败,请联系管理员");
@@ -901,17 +906,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}
 		if ("XS".equals(order.getBsType())) {
 			if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus()) || OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())) {//已发货
-				if ("退款中".equals(order.getStatus())) {
+				if ("已取消".equals(order.getStatus())) {
 					throw new SecurityException("订单已审批通过请勿重复审批");
 				}
-
-				if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
-					order.setStatus("退款中");
-				} else {
-					order.setStatus("退款中");
-					order.setXcxStatus("退款中");
-				}
-
+				order.setStatus("已取消");
+				order.setXcxStatus("已取消");
 				List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()).eq(PjShip::getStatusName, "待出库"));
 				if (shipList.size() > 0) {
 					List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
@@ -1051,35 +1050,34 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 				//生成历史记录
 				saveHistory(order.getId(), "已退款");
+			}
+			/** ----------------------调用退款接口---------------------- */
 
-				/** ----------------------调用退款接口---------------------- */
-
-				/** ----------------------调用退款接口---------------------- */
+			/** ----------------------调用退款接口---------------------- */
 
-				if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
-					order.setStatus("已取消");
-				} else {
-					order.setStatus("已退款");
-					order.setXcxStatus("已退款");
-					R<Map<String, String>> r = payService.refund(order.getId(), order.getPaymentAmountTl(), order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
-					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-						Map<String, String> map = r.getData();
-						String returnCode = map.get("retcode");
-						String returnMsg = map.get("retmsg");
-						if ("FAIL".equalsIgnoreCase(returnCode)) {
-							if ("3008".equals(map.get("trxstatus"))) {
-								throw new RuntimeException("退款失败!原因:账户余额不足");
-							} else if ("3999".equals(map.get("trxstatus"))) {
-								throw new RuntimeException("退款失败!原因:金额错误,当前可退货金额为:0.00");
-							} else {
-								throw new RuntimeException("退款失败!原因:" + returnMsg);
-							}
+			if (ObjectUtils.isNull(order.getOldTrxId())) {
+				order.setStatus("已取消");
+			} else {
+				order.setStatus("已取消");
+				order.setXcxStatus("已取消");
+				R<Map<String, String>> r = payService.refund(order.getId(), order.getPaymentAmountTl(), order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
+				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+					Map<String, String> map = r.getData();
+					String returnCode = map.get("retcode");
+					String returnMsg = map.get("retmsg");
+					if ("FAIL".equalsIgnoreCase(returnCode)) {
+						if ("3008".equals(map.get("trxstatus"))) {
+							throw new RuntimeException("退款失败!原因:账户余额不足");
+						} else if ("3999".equals(map.get("trxstatus"))) {
+							throw new RuntimeException("退款失败!原因:金额错误,当前可退货金额为:0.00");
+						} else {
+							throw new RuntimeException("退款失败!原因:" + returnMsg);
 						}
-						order.setPaymentAmountTl(new BigDecimal("0.00"));
-
-					} else {
-						throw new RuntimeException("退款失败!服务器错误");
 					}
+					order.setPaymentAmountTl(new BigDecimal("0.00"));
+
+				} else {
+					throw new RuntimeException("退款失败!服务器错误");
 				}
 			}
 			order.setActualPaymentStatus(4);
@@ -1133,6 +1131,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R getWeChatPayment(String srcOrderNo) {
 		List<PjOrder> orderList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 			.eq(PjOrder::getSrcOrdNo, srcOrderNo)
@@ -1143,7 +1143,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		for (Long id : ids) {
 			orderId.append(id).append(",");
 		}
-		BigDecimal amount = orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amount = orderList.stream().map(PjOrder::getTotalMoney).filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 		List<PjOrderItems> pjOrderItems = orderItemsMapper.selectList(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, ids));
 		String goodsNames = pjOrderItems.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining());
 		return payService.payPrepay(orderId.substring(0, orderId.length() - 1), amount, srcOrderNo, 1, goodsNames);
@@ -1160,7 +1160,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			throw new RuntimeException("确认退款失败,数据异常");
 		}
 
-		if (OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
+		if (ObjectUtils.isNull(order.getOldTrxId())) {
 			order.setStatus("已取消");
 			baseMapper.updateById(order);
 			return R.data("退款成功");
@@ -1333,7 +1333,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					sendMessage.setUrl("/tirePartsMall/salesManagement/inboundTask/index");
 					sendMessage.setPageLabel("入库任务");
 					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
-					sendMessage.setMessageBody("单号:" + pjShip.getBillno() +"的入库任务已撤销!"+ "时间:" + formatted);
+					sendMessage.setMessageBody("单号:" + pjShip.getBillno() + "的入库任务已撤销!" + "时间:" + formatted);
 					R save = messageClient.save(sendMessage);
 					System.out.println("发送结果:" + save);
 					if (!save.isSuccess()) {

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/payMethod/PayServiceImpl.java

@@ -137,6 +137,7 @@ public class PayServiceImpl implements PayService {
 					// 付款
 					order.setId(Long.parseLong(orderId));
 					order.setActualPaymentStatus(1);
+					order.setPaymentAmountTl(amount);
 					order.setOldTrxId(res.getData().get("trxid").toString());
 					//更新订单表
 					orderMapper.updateById(order);

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -128,6 +128,7 @@ public class ProductLaunchController extends BladeController {
 					.map(Dept::getFullName).collect(Collectors.joining(" | "));
 				item.setSharedCompany(deptName);
 			}
+			item.setFilesList(productLaunchFilesService.list(new QueryWrapper<PjProductLaunchFiles>().eq("pid", item.getId()).eq("is_deleted", 0).eq("main_image",0)));
 		}
 		return R.data(pages);
 	}

+ 8 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java

@@ -153,13 +153,13 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			List<PjOrder> orderArrayList = new ArrayList<>();
 			BigDecimal thisAmount = new BigDecimal("0.00");
 			for (PjSettlementItems item : settlement.getSettlementItemsList()) {
-				if (item.getAccountsAmount().compareTo(item.getThisAmount()) < 0){
+				if (item.getAccountsAmount().compareTo(item.getThisAmount()) < 0) {
 					throw new RuntimeException("结算金额大于合同金额,结算失败");
 				}
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setSettlmentAmount(item.getThisAmount());
-				PjOrder pjOrder = pjOrderList.stream().findFirst().orElse(null);
+				PjOrder pjOrder = pjOrderList.stream().filter(e -> e.getId().equals(item.getSrcParentId())).findFirst().orElse(null);
 				if (pjOrder == null) {
 					continue;
 				}
@@ -175,8 +175,14 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 					corpsDescService.updateById(pjCorpsDesc);
 				}
 				if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
+					if (pjOrder.getPaymentAmountTl().add(item.getThisAmount()).compareTo(pjOrder.getTotalMoney()) > 0) {
+						throw new RuntimeException("当前结算金额大于订单金额");
+					}
 					pjOrder.setPaymentAmountTl(pjOrder.getPaymentAmountTl().add(item.getThisAmount()));
 				} else {
+					if (item.getThisAmount().compareTo(pjOrder.getTotalMoney()) > 0) {
+						throw new RuntimeException("当前结算金额大于订单金额");
+					}
 					pjOrder.setPaymentAmountTl(item.getThisAmount());
 				}
 				if (pjOrder.getPaymentAmountTl().equals(pjOrder.getTotalMoney())) {

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

@@ -109,7 +109,7 @@ public class ShipController extends BladeController {
 			.eq(ObjectUtil.isNotEmpty(ship.getBsType()), PjShip::getBsType, ship.getBsType())//库管
 			.like(ObjectUtil.isNotEmpty(ship.getCustomerName()), PjShip::getCustomerName, ship.getCustomerName())
 			//单据类型
-			.apply(ObjectUtil.isNotEmpty(ship.getBizTypeName()),"find_in_set(biz_type_name,'" + ship.getBizTypeName() + "')");
+			.apply(ObjectUtil.isNotEmpty(ship.getBizTypeName()), "find_in_set(biz_type_name,'" + ship.getBizTypeName() + "')");
 
 		if (ship.getBusinesDateList() != null && ship.getBusinesDateList().size() > 1) {//业务日期
 			lambdaQueryWrapper.ge(PjShip::getBusinesDate, ship.getBusinesDateList().get(0));
@@ -119,7 +119,8 @@ public class ShipController extends BladeController {
 
 		if (AuthUtil.getUserRole().contains("库管")) {
 			lambdaQueryWrapper.eq(PjShip::getStockClerkId, AuthUtil.getUserId());
-		}else if (AuthUtil.getUserRole().contains("客户")){
+			lambdaQueryWrapper.and(i -> i.eq(PjShip::getStockClerkId, AuthUtil.getUserId()).or().isNull(PjShip::getStockClerkId));
+		} else if (AuthUtil.getUserRole().contains("客户")) {
 			lambdaQueryWrapper.eq(PjShip::getCustomerId, AuthUtil.getUserId());
 		}
 		IPage<PjShip> pages = shipService.page(Condition.getPage(query), lambdaQueryWrapper);
@@ -155,7 +156,7 @@ public class ShipController extends BladeController {
 						item.setCreateUserName(user.getName());
 					}
 				}
-				item.setItem(shipItemsService.count(new LambdaQueryWrapper<PjShipItems>().eq(PjShipItems::getIsDeleted,0).eq(PjShipItems::getPid,item.getId()))+"");
+				item.setItem(shipItemsService.count(new LambdaQueryWrapper<PjShipItems>().eq(PjShipItems::getIsDeleted, 0).eq(PjShipItems::getPid, item.getId())) + "");
 			});
 		}