Kaynağa Gözat

2022年8月15日18点20分

纪新园 3 yıl önce
ebeveyn
işleme
0c7d6347a7

+ 7 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java

@@ -26,6 +26,7 @@ public interface IOrderDescClient {
 	String GET_BY_CONDITIONS = API_PREFIX + "/getByConditions";
 	String GET_BY_CG_LIST = API_PREFIX + "/getByCgList";
 	String RELEASE_STOCK = API_PREFIX + "/releaseStock";
+	String GET_BY_BILLNO = API_PREFIX + "/getByBillNo";
 
 	/**
 	 * 修改采购订单状态
@@ -57,4 +58,10 @@ public interface IOrderDescClient {
 	@PostMapping(RELEASE_STOCK)
 	R releaseStock(@RequestBody Order order);
 
+	/**
+	 * 通过
+	 * @return
+	 */
+	@PostMapping(GET_BY_BILLNO)
+	List<Order> getByBillNo(@RequestBody Order order);
 }

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

@@ -1458,7 +1458,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			// 不通过
 			else if (operate == 2) {
 				auditProecess.setAuditStatus("B");
-				if (auditProecess.getLevelId() == 1) {
+//				if (auditProecess.getLevelId() == 1) {
 					R submit;
 					if ("fybx".equals(proecessTemp.getCheckType())) {
 						submit = claimClient.passCancel(auditProecess.getSrcBillId());
@@ -1473,7 +1473,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					if (!submit.isSuccess()) {
 						throw new SecurityException("修改原数据失败");
 					}
-				}
+//				}
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
@@ -1510,7 +1510,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			// 不通过
 			else if (operate == 2) {
 				auditProecess.setAuditStatus("B");
-				if (auditProecess.getLevelId() == 1) {
+//				if (auditProecess.getLevelId() == 2) {
 					R submit;
 					if ("fybx".equals(proecessTemp.getCheckType())) {
 						submit = claimClient.passCancel(auditProecess.getSrcBillId());
@@ -1525,7 +1525,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					if (!submit.isSuccess()) {
 						throw new SecurityException("修改原数据失败");
 					}
-				}
+//				}
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");

+ 12 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ImportDeliveryController.java

@@ -19,6 +19,7 @@ package org.springblade.deliver.goods.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 com.trade.purchase.order.entity.Order;
@@ -34,10 +35,12 @@ import org.springblade.client.feign.IStorageClient;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.enums.DeliveryEnum;
 import org.springblade.deliver.goods.enums.DeliveryStatusEnum;
 import org.springblade.deliver.goods.service.IDeliveryFeesService;
@@ -52,6 +55,7 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 进口发货通知单 控制器
@@ -170,6 +174,14 @@ public class ImportDeliveryController extends BladeController {
 		if (StringUtils.isNotBlank(deliveryMessage.getDeliveryStatus()) && deliveryMessage.getDeliveryStatus().equals(DeliveryStatusEnum.DELIVER.getType())){
 			throw  new SecurityException("已发货不能删除");
 		}
+		LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(DeliveryItems::getPid, delivery.getId());
+		lambdaQueryWrapper.eq(DeliveryItems::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted, 0);
+		List<DeliveryItems> deliveryItems = deliveryItemsService.list(lambdaQueryWrapper);
+		if (ObjectUtils.isNotNull(deliveryItems)) {
+			return R.fail(500, "该发货单存在明细不允许删除");
+		}
 		delivery.setIsDeleted(1);
 		deliveryService.updateById(delivery);
 		deliveryFeesService.updateByPid(delivery.getId());

+ 1 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/feign/DeliveryClient.java

@@ -80,7 +80,7 @@ public class DeliveryClient implements IDeliveryClient{
 	 */
 	@Override
 	public List<Delivery> getOrderData(String orderNo, String billType, String tradeType) {
-		return deliveryService.list(new QueryWrapper<Delivery>().eq("order_no",orderNo).eq("is_deleted",0).eq("tenant_id", SecureUtil.getTenantId()).eq("trade_type",tradeType).eq("bill_type",billType));
+		return deliveryService.list(new QueryWrapper<Delivery>().like("bill_no",orderNo).eq("is_deleted",0).eq("tenant_id", SecureUtil.getTenantId()).eq("trade_type",tradeType).eq("bill_type",billType));
 
 	}
 }

+ 56 - 32
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/receiving/ImportReCeVingController.java

@@ -19,7 +19,9 @@ package org.springblade.deliver.goods.receiving;
 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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import org.springblade.purchase.sales.entity.Order;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,13 +34,16 @@ import org.springblade.client.feign.IStorageClient;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.deliver.goods.entity.Delivery;
+import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import org.springblade.deliver.goods.service.IDeliveryService;
 import org.springblade.deliver.goods.vo.DeliveryVO;
+import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -67,6 +72,8 @@ public class ImportReCeVingController extends BladeController {
 	private IStorageClient iStorageClient;//库存信息
 	private IUserClient iUserClient;//获取用户信息
 
+	private IOrderDescClient orderDescClient;
+
 	/**
 	 * 详情
 	 */
@@ -86,53 +93,48 @@ public class ImportReCeVingController extends BladeController {
 	@ApiOperation(value = "分页", notes = "传入delivery")
 	public R<IPage<Delivery>> list(Delivery delivery, Query query) {
 		LambdaQueryWrapper<Delivery> lambdaQueryWrapper = new LambdaQueryWrapper();
-		lambdaQueryWrapper.eq(Delivery::getIsDeleted,0);
-		lambdaQueryWrapper.eq(Delivery::getTenantId,SecureUtil.getTenantId());
-		lambdaQueryWrapper.eq(Delivery::getBillType,OrderTypeEnum.RECEIPT.getType());
-		lambdaQueryWrapper.eq(Delivery::getTradeType,OrderTypeEnum.IMPORT.getType());
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getBillNo()),Delivery::getBillNo,delivery.getBillNo());//提单号
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getOrderNo()),Delivery::getOrderNo,delivery.getOrderNo());//合同号
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getDeliveryRemarks()),Delivery::getDeliveryRemarks,delivery.getDeliveryRemarks());//备注
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCorpId()),Delivery::getCorpId,delivery.getCorpId());//客户
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalAddress()),Delivery::getArrivalAddress,delivery.getArrivalAddress());//收货地址
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalContact()),Delivery::getArrivalContact,delivery.getArrivalContact());//收货人
-		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalTel()),Delivery::getArrivalTel,delivery.getArrivalTel());//收货电话
-		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()),Delivery::getCreateTime,delivery.getCreateStartTime());//制单日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()),Delivery::getCreateTime,delivery.getCreateEndTime());//制单日期结束
-		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinessDate,delivery.getBusinessStartDate());//收货日期开始
-		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()),Delivery::getBusinessDate,delivery.getBusinessEndDate());//收货日期结束
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()),Delivery::getCreateUser,delivery.getCreateUser());//制单人
-		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()),Delivery::getStorageId,delivery.getStorageId());//仓库
+		lambdaQueryWrapper.eq(Delivery::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(Delivery::getTenantId, SecureUtil.getTenantId());
+		lambdaQueryWrapper.eq(Delivery::getBillType, OrderTypeEnum.RECEIPT.getType());
+		lambdaQueryWrapper.eq(Delivery::getTradeType, OrderTypeEnum.IMPORT.getType());
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getBillNo()), Delivery::getBillNo, delivery.getBillNo());//提单号
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getOrderNo()), Delivery::getOrderNo, delivery.getOrderNo());//合同号
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getDeliveryRemarks()), Delivery::getDeliveryRemarks, delivery.getDeliveryRemarks());//备注
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCorpId()), Delivery::getCorpId, delivery.getCorpId());//客户
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalAddress()), Delivery::getArrivalAddress, delivery.getArrivalAddress());//收货地址
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalContact()), Delivery::getArrivalContact, delivery.getArrivalContact());//收货人
+		lambdaQueryWrapper.like(Func.isNotEmpty(delivery.getArrivalTel()), Delivery::getArrivalTel, delivery.getArrivalTel());//收货电话
+		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()), Delivery::getCreateTime, delivery.getCreateStartTime());//制单日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()), Delivery::getCreateTime, delivery.getCreateEndTime());//制单日期结束
+		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()), Delivery::getBusinessDate, delivery.getBusinessStartDate());//收货日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getBusinessEndDate()), Delivery::getBusinessDate, delivery.getBusinessEndDate());//收货日期结束
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()), Delivery::getCreateUser, delivery.getCreateUser());//制单人
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()), Delivery::getStorageId, delivery.getStorageId());//仓库
 		lambdaQueryWrapper.orderByDesc(Delivery::getCreateTime);
 		IPage<Delivery> pages = deliveryService.page(Condition.getPage(query), lambdaQueryWrapper);
 		//解决回显字段问题
 		List<Delivery> records = pages.getRecords();
-		if(CollectionUtils.isNotEmpty(records))
-		{
-			records.forEach(e->{
+		if (CollectionUtils.isNotEmpty(records)) {
+			records.forEach(e -> {
 				//供应商信息
 				R<CorpsDesc> corps = corpsDescClient.getCorpMessage(e.getCorpId());
-				if(corps.getData()!=null)
-				{
+				if (corps.getData() != null) {
 					e.setCorpsName(corps.getData().getCname());
 				}
 				//所属公司信息
-				if(e.getSalesCompany()!=null)
-				{
+				if (e.getSalesCompany() != null) {
 					R<CorpsDesc> company = corpsDescClient.getCorpMessage(e.getSalesCompany());
-					if(company.getData()!=null)
-					{
+					if (company.getData() != null) {
 						e.setSalesCompanyName(company.getData().getCname());
 					}
 				}
 				//仓库信息
 				StorageDesc storageDesc = iStorageClient.findById(e.getStorageId());
-				if(storageDesc!=null)
-				{
+				if (storageDesc != null) {
 					e.setStorageName(storageDesc.getCname());
 				}
 				R<User> user = iUserClient.userInfoById(e.getCreateUser());
-				if (user.isSuccess() && user.getData() != null){
+				if (user.isSuccess() && user.getData() != null) {
 					e.setCreateUserName(user.getData().getRealName());
 				}
 
@@ -141,6 +143,7 @@ public class ImportReCeVingController extends BladeController {
 		pages.setRecords(records);
 		return R.data(pages);
 	}
+
 	/**
 	 * 自定义分页 进口收货通知单
 	 */
@@ -173,8 +176,28 @@ public class ImportReCeVingController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入delivery")
 	public R update(@Valid @RequestBody Delivery delivery) {
-		if (delivery.getId() == null){
-			return R.fail(500,"请选择要删除的数据");
+		if (delivery.getId() == null) {
+			return R.fail(500, "请选择要删除的数据");
+		}
+		//查看是否存在明细
+		LambdaQueryWrapper<DeliveryItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(DeliveryItems::getPid, delivery.getId());
+		lambdaQueryWrapper.eq(DeliveryItems::getTenantId, AuthUtil.getTenantId());
+		lambdaQueryWrapper.eq(DeliveryItems::getIsDeleted, 0);
+		List<DeliveryItems> deliveryItems = deliveryItemsService.list(lambdaQueryWrapper);
+		if (ObjectUtils.isNotNull(deliveryItems)) {
+			for (DeliveryItems ls : deliveryItems) {
+				Order order = new Order();
+				order.setBillNo(ls.getBillNo());
+				order.setBillType("XS");
+				order.setTradeType("JK");
+				//查看是否已生成销售订单
+				List<Order> orderList = orderDescClient.getByBillNo(order);
+				if (ObjectUtils.isNotNull(orderList)) {
+					return R.fail(500, "该收货单已有销售订单不允许删除");
+				}
+			}
+			return R.fail(500, "该收货单存在明细不允许删除");
 		}
 		delivery.setIsDeleted(1);
 		deliveryItemsService.updateByPid(delivery.getId());
@@ -193,6 +216,7 @@ public class ImportReCeVingController extends BladeController {
 		delivery.setTradeType(OrderTypeEnum.IMPORT.getType());
 		return deliveryService.submitDelivery(delivery);
 	}
+
 	/**
 	 * 删除 进口收货通知单
 	 */
@@ -213,7 +237,7 @@ public class ImportReCeVingController extends BladeController {
 	@ApiOperation(value = "确认收货", notes = "传入Delivery及其子项")
 	public R comfire(@RequestBody Delivery delivery) {
 		deliveryService.comfire(delivery);
-	    return R.data(delivery);
+		return R.data(delivery);
 	}
 
 }

+ 160 - 30
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -3,6 +3,7 @@ package org.springblade.project.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.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
@@ -12,6 +13,7 @@ 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.CollectionUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.project.entity.ServiceProject;
 import org.springblade.project.entity.ServiceProjectFiles;
 import org.springblade.project.entity.ServiceProjectItem;
@@ -27,7 +29,6 @@ import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
-import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -230,7 +231,7 @@ public class ProjectController {
 		ServiceProject serviceProject = serviceProjectService.getById(id);
 		List<String> status = Arrays.asList(itemStatus.split(","));
 		LambdaQueryWrapper<ServiceProjectItem> itemServiceLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		itemServiceLambdaQueryWrapper.in(ServiceProjectItem::getStatus, status).eq(ServiceProjectItem::getPId, id).eq(ServiceProjectItem::getIsDeleted, 0).eq(ServiceProjectItem::getBranch,"N");
+		itemServiceLambdaQueryWrapper.in(ServiceProjectItem::getStatus, status).eq(ServiceProjectItem::getPId, id).eq(ServiceProjectItem::getIsDeleted, 0).eq(ServiceProjectItem::getBranch, "N");
 		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemService.list(itemServiceLambdaQueryWrapper);
 		if (serviceProject.getCorpId() != null) {
 			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(serviceProject.getCorpId().toString());
@@ -342,16 +343,16 @@ public class ProjectController {
 		return R.data(Collections.EMPTY_LIST);
 		}*/
 		// 承做人
-		if(StringUtils.isNotBlank(corpName)) {
-			List<User> userList = userClient.userInfoByName(corpName,AuthUtil.getTenantId());
+		if (StringUtils.isNotBlank(corpName)) {
+			List<User> userList = userClient.userInfoByName(corpName, AuthUtil.getTenantId());
 			List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
-			itemLambdaQueryWrapper.in(ServiceProjectItem::getUserid,userIds);
+			itemLambdaQueryWrapper.in(ServiceProjectItem::getUserid, userIds);
 		}
 		itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getCreateTime)
 			.eq(deptid != null, ServiceProjectItem::getDeptid, deptid)
-			 .eq(ServiceProjectItem::getIsDeleted,0)
+			.eq(ServiceProjectItem::getIsDeleted, 0)
 			.in(ServiceProjectItem::getStatus, listStatus)
-		.eq(ServiceProjectItem::getBranch,branch);
+			.eq(ServiceProjectItem::getBranch, branch);
 		Page<ServiceProjectItem> page = new Page<>(current, size);
 		IPage<ServiceProjectItem> iPage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
 		if (!CollectionUtils.isEmpty(iPage.getRecords())) {
@@ -372,10 +373,9 @@ public class ProjectController {
 				}
 				//承做人
 
-				 R<User> userR = userClient.userInfoById(e.getUserid());
-				if(userR.isSuccess())
-				{
-				  e.setUserName(userR.getData().getRealName());
+				R<User> userR = userClient.userInfoById(e.getUserid());
+				if (userR.isSuccess()) {
+					e.setUserName(userR.getData().getRealName());
 				}
 				//毛收入
 				e.setGrossIncome((e.getServiceCharge().add(e.getMatMoney())).subtract(e.getCostReturn()));
@@ -743,6 +743,7 @@ public class ProjectController {
 
 	/**
 	 * 派工
+	 *
 	 * @param serviceProject
 	 * @return
 	 */
@@ -765,35 +766,165 @@ public class ProjectController {
 
 	}
 
+	/**
+	 * 新任务列表
+	 *
+	 * @param current
+	 * @param size
+	 * @param pName
+	 * @param cornId
+	 * @param corpName
+	 * @param userName
+	 * @param deptid
+	 * @param status
+	 * @param actualDateStart
+	 * @param actualDateEnd
+	 * @param beginStartTime
+	 * @param beginEndTime
+	 * @param projectType
+	 * @param branch
+	 * @return
+	 */
+	@GetMapping("itemTask/list")
+	public R<?> itemTaskList(@RequestParam(name = "current", defaultValue = "1") Integer current,
+							 @RequestParam(name = "size", defaultValue = "10") Integer size,
+							 @RequestParam(name = "pname", required = false) String pName,
+							 @RequestParam(name = "cornId", required = false) Long cornId,
+							 @RequestParam(name = "corpName", required = false) String corpName,
+							 @RequestParam(name = "userName", required = false) String userName,
+							 @RequestParam(name = "deptid", required = false) Long deptid,
+							 @RequestParam(name = "status", required = true) String status,
+							 @RequestParam(name = "actualDateStart", required = false) String actualDateStart,
+							 @RequestParam(name = "actualDateEnd", required = false) String actualDateEnd,
+							 @RequestParam(name = "beginStartTime", required = false) String beginStartTime,
+							 @RequestParam(name = "beginEndTime", required = false) String beginEndTime,
+							 @RequestParam(name = "projectType", required = false) Integer projectType,
+							 @RequestParam(name = "branch", required = false) String branch
+	) {
+		List<String> listStatus = Arrays.asList(status.split(","));
+
+		LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemLambdaQueryWrapper
+			.eq(projectType != null, ServiceProjectItem::getProjectType, projectType)
+			.eq(StringUtils.isNotBlank(userName), ServiceProjectItem::getUserName, userName)
+			.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
+			.like(StringUtils.isNotBlank(pName), ServiceProjectItem::getPName, pName)
+			.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
+			.ge(StringUtils.isNotBlank(beginStartTime), ServiceProjectItem::getBeginTime, beginStartTime)
+			.le(StringUtils.isNotBlank(beginEndTime), ServiceProjectItem::getBeginTime, beginEndTime)
+			.ge(StringUtils.isNotBlank(actualDateStart), ServiceProjectItem::getActualDate, actualDateStart)
+			.le(StringUtils.isNotBlank(actualDateEnd), ServiceProjectItem::getActualDate, actualDateEnd);
+
+
+		LambdaQueryWrapper<ServiceProject> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		//客户名称
+		if (cornId != null) {
+			lambdaQueryWrapper.eq(ServiceProject::getCorpId, cornId);
+			List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
+		}
+		if (StringUtils.isNotBlank(corpName)) {
+			List<Long> corpIdList = corpsDescClient.listCorpIdByName(corpName);
+			lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(corpIdList), ServiceProject::getCorpId, corpIdList);
+
+		}
+		if (cornId != null || StringUtils.isNotBlank(corpName)) {
+			List<ServiceProject> list = serviceProjectService.list(lambdaQueryWrapper);
+			if (!CollectionUtils.isEmpty(list)) {
+				itemLambdaQueryWrapper.in(ServiceProjectItem::getPId, list.stream().map(ServiceProject::getId).collect(Collectors.toList()));
+			} else {
+				return R.data(Collections.EMPTY_LIST);
+			}
+		}
+
+		// 承做人
+		if (StringUtils.isNotBlank(corpName)) {
+			List<User> userList = userClient.userInfoByName(corpName, AuthUtil.getTenantId());
+			List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+			itemLambdaQueryWrapper.in(ServiceProjectItem::getUserid, userIds);
+		}
+		itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getCreateTime)
+			.eq(deptid != null, ServiceProjectItem::getDeptid, deptid)
+			.eq(ServiceProjectItem::getIsDeleted, 0)
+			.in(ServiceProjectItem::getStatus, listStatus)
+			.eq(ServiceProjectItem::getBranch, branch);
+		Page<ServiceProjectItem> page = new Page<>(current, size);
+		IPage<ServiceProjectItem> iPage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
+		if (!CollectionUtils.isEmpty(iPage.getRecords())) {
+			String[] str = new String[]{"录入", "已请核", "审核中", "审核通过", "正在结算", "结算完成", "", "追加", "退费"};
+			iPage.getRecords().forEach(e -> {
+				e.setStrStatus(str[e.getStatus()]);
+				Long corpId = serviceProjectService.getOne(new LambdaQueryWrapper<ServiceProject>()
+					.eq(ServiceProject::getId, e.getPId())).getCorpId();
+				e.setCornId(corpId);
+				R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
+				if (corpMessage.isSuccess() && corpMessage.getData() != null) {
+					e.setCornName(corpMessage.getData().getCname());
+				}
+				//任务部门
+				R<Dept> dept = iSysClient.getDept(e.getDeptid());
+				if (dept.isSuccess() && dept.getData() != null) {
+					e.setDeptName(dept.getData().getDeptName());
+				}
+				//承做人
+
+				R<User> userR = userClient.userInfoById(e.getUserid());
+				if (userR.isSuccess()) {
+					e.setUserName(userR.getData().getRealName());
+				}
+				//毛收入
+				e.setGrossIncome((e.getServiceCharge().add(e.getMatMoney())).subtract(e.getCostReturn()));
+			});
+
+		}
+		return R.data(iPage);
+	}
+
 
+	/**
+	 * 统计主营业务-任务、提成统计
+	 *
+	 * @param current
+	 * @param size
+	 * @param beginTimeStart
+	 * @param beginTimeEnd
+	 * @param actualDateStart
+	 * @param actualDateEnd
+	 * @param corpName
+	 * @param status
+	 * @param branch
+	 * @return
+	 */
 	@GetMapping("statistics/list")
 	public R<?> statistics(@RequestParam(name = "current", defaultValue = "1") Integer current,
-						 @RequestParam(name = "size", defaultValue = "10") Integer size,
-						 @RequestParam(name = "beginTime", required = false) String beginTime,
-						   @RequestParam(name = "actualDate", required = false) String actualDate,
-						 @RequestParam(name = "corpName", required = false) String corpName,
-						 @RequestParam(name = "status", required = true) String status,
-						 @RequestParam(name = "branch", required = false) String branch
+						   @RequestParam(name = "size", defaultValue = "10") Integer size,
+						   @RequestParam(name = "beginTimeStart", required = false) String beginTimeStart,
+						   @RequestParam(name = "beginTimeEnd", required = false) String beginTimeEnd,
+						   @RequestParam(name = "actualDateStart", required = false) String actualDateStart,
+						   @RequestParam(name = "actualDateEnd", required = false) String actualDateEnd,
+						   @RequestParam(name = "userName", required = false) String userName,
+						   @RequestParam(name = "status", required = false) String status,
+						   @RequestParam(name = "branch") String branch
 	) {
-		List<String> listStatus = Arrays.asList(status.split(","));
-
 		LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		itemLambdaQueryWrapper
 			.eq(ServiceProjectItem::getTenantId, AuthUtil.getTenantId())
-			.apply(StringUtils.isNotBlank(beginTime), "date_format(begin_time,'%Y-%m-%d') >= '" + beginTime + "'")
-			.apply(StringUtils.isNotBlank(actualDate), "date_format(actual_date,'%Y-%m-%d') <= '" + actualDate + "'");
+			.ge(StringUtils.isNotBlank(beginTimeStart), ServiceProjectItem::getBeginTime, beginTimeStart)
+			.le(StringUtils.isNotBlank(beginTimeEnd), ServiceProjectItem::getBeginTime, beginTimeEnd)
+			.ge(StringUtils.isNotBlank(actualDateStart), ServiceProjectItem::getActualDate, actualDateStart)
+			.le(StringUtils.isNotBlank(actualDateEnd), ServiceProjectItem::getActualDate, actualDateEnd);
 
 		// 承做人
-		if(StringUtils.isNotBlank(corpName)) {
-			List<User> userList = userClient.userInfoByName(corpName,AuthUtil.getTenantId());
-		  	List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
-		  	itemLambdaQueryWrapper.in(ServiceProjectItem::getUserid,userIds);
+		if (StringUtils.isNotBlank(userName)) {
+			List<User> userList = userClient.userInfoByName(userName, AuthUtil.getTenantId());
+			if (ObjectUtils.isNotNull(userList)){
+				itemLambdaQueryWrapper.eq(ObjectUtils.isNotNull(userList),ServiceProjectItem::getUserid, userList.get(0).getId());
+			}
 		}
 
 		itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getUserid)
-			.eq(ServiceProjectItem::getIsDeleted,0)
-			.in(ServiceProjectItem::getStatus, listStatus)
-			.eq(ServiceProjectItem::getBranch,branch);
+			.eq(ServiceProjectItem::getIsDeleted, 0)
+			.eq(StringUtils.isNotBlank(status), ServiceProjectItem::getStatus, status)
+			.eq(ServiceProjectItem::getBranch, branch);
 		Page<ServiceProjectItem> page = new Page<>(current, size);
 		IPage<ServiceProjectItem> iPage = serviceProjectItemService.page(page, itemLambdaQueryWrapper);
 		if (!CollectionUtils.isEmpty(iPage.getRecords())) {
@@ -815,8 +946,7 @@ public class ProjectController {
 				//承做人
 
 				R<User> userR = userClient.userInfoById(e.getUserid());
-				if(userR.isSuccess())
-				{
+				if (userR.isSuccess()) {
 					e.setUserName(userR.getData().getRealName());
 				}
 				//毛收入

+ 5 - 1
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -578,7 +578,11 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 				ls.setCreateTime(new Date());
 				ls.setCreateUser(SecureUtil.getUserId());
 				ls.setCreateUserName(SecureUtil.getUser().getUserName());
-				ls.setStatus(ls.getStatus());
+				if (ls.getStatus() == 0){
+					ls.setStatus(4);
+				}else{
+					ls.setStatus(ls.getStatus());
+				}
 				ls.setBranch("Y");
 				ls.setItemPid(up.getId());
 				ls.setId(null);

+ 24 - 6
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderItemsController.java

@@ -41,6 +41,7 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.service.IOrderItemsService;
+import org.springblade.purchase.sales.service.IOrderService;
 import org.springblade.purchase.sales.vo.DatasetVO;
 import org.springblade.purchase.sales.vo.OrderItemsVO;
 import org.springblade.purchase.sales.vo.OrderVO;
@@ -78,6 +79,8 @@ public class OrderItemsController extends BladeController {
 
 	private final IDeliveryClient deliveryClient;
 
+	private final IOrderService orderService;
+
 	/**
 	 * 详情
 	 */
@@ -161,13 +164,28 @@ public class OrderItemsController extends BladeController {
 		if (orderItems.getId() == null) {
 			return R.fail(500, "请选择要删除的数据");
 		}
-		/*OrderItems orderItems1 = orderItemsService.getById(orderItems.getId());
-		if (ObjectUtils.isNotNull(orderItems1)){
-			List<Delivery> deliveryList = deliveryClient.getOrderData(orderItems1.getBillNo(),"SH","JK");
-			if (ObjectUtils.isNotNull(deliveryList)){
-				return R.fail(500, "请选择要删除的数据");
+		OrderItems orderItems1 = orderItemsService.getById(orderItems.getId());
+		if (ObjectUtils.isNotNull(orderItems1)) {
+			Order order = orderService.getById(orderItems1.getPid());
+			if (ObjectUtils.isNotNull(order)) {
+				//采购删除判断
+				if ("CG".equals(order.getBillType())) {
+					//查看是否已生成收货单
+					List<Delivery> deliveryList = deliveryClient.getOrderData(orderItems1.getBillNo(), "SH", "JK");
+					if (ObjectUtils.isNotNull(deliveryList)) {
+						return R.fail(500, "该订单已生成收货单不允许删除");
+					}
+				} else if ("XS".equals(order.getBillType())) {//销售删除判断
+					//查看是否已生成发货单
+					List<Delivery> deliveryList1 = deliveryClient.getOrderData(orderItems1.getBillNo(), "FH", "JK");
+					if (ObjectUtils.isNotNull(deliveryList1)) {
+						return R.fail(500, "该订单已生成发货单不允许删除");
+					}
+				}else{
+					return R.fail(500, "未知异常");
+				}
 			}
-		}*/
+		}
 
 		orderItems.setIsDeleted(1);
 		return R.status(orderItemsService.updateById(orderItems));

+ 12 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java

@@ -18,6 +18,7 @@ import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
@@ -195,10 +196,21 @@ public class EntranceOrderController extends BladeController {
 		lambdaQueryWrapper.eq(Order::getTradeType,OrderTypeEnum.IMPORT.getType());
 		lambdaQueryWrapper.eq(Order::getBillType,OrderTypeEnum.PURCHASE.getType());
 		lambdaQueryWrapper.eq(Order::getIsDeleted,0);
+		lambdaQueryWrapper.eq(Order::getTenantId,AuthUtil.getTenantId());
 		List<Order> orderList = orderService.list(lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(orderList)){
 			throw  new SecurityException("销售单已生成采购单不能删除");
 		}
+
+		LambdaQueryWrapper<OrderItems> lambdaQueryWrapperItem = new LambdaQueryWrapper<>();
+		lambdaQueryWrapperItem.eq(OrderItems::getPid,order.getId());
+		lambdaQueryWrapperItem.eq(OrderItems::getIsDeleted,0);
+		lambdaQueryWrapperItem.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
+		List<OrderItems> orderItemsList = orderItemsService.list(lambdaQueryWrapperItem);
+		if (CollectionUtils.isNotEmpty(orderItemsList)){
+			throw  new SecurityException("销售单存在明细不允许删除");
+		}
+
 		//是否生成发货单
 		List<Delivery> list = deliveryClient.getOrderMessage(orderMessage.getSysNo(),OrderTypeEnum.IMPORT.getType());
 		if (CollectionUtils.isNotEmpty(list)){

+ 16 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -14,6 +14,7 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.service.IOrderService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
@@ -135,5 +136,20 @@ public class OrderDescClient implements IOrderDescClient {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * @return
+	 */
+	@Override
+	@PostMapping(GET_BY_BILLNO)
+	public List<Order> getByBillNo(@RequestBody Order order) {
+		LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		orderLambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId());
+		orderLambdaQueryWrapper.eq(Order::getIsDeleted, 0);
+		orderLambdaQueryWrapper.like(Order::getBillNo, order.getBillNo());
+		orderLambdaQueryWrapper.eq(Order::getBillType, order.getBillType());
+		orderLambdaQueryWrapper.eq(Order::getTradeType, order.getTradeType());
+		return iOrderService.list(orderLambdaQueryWrapper);
+	}
+
 
 }