纪新园 3 лет назад
Родитель
Сommit
30cdeeeed5

+ 27 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/ProjectItemDate.java

@@ -0,0 +1,27 @@
+package org.springblade.project.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class ProjectItemDate {
+
+	/**
+	 *开始时间
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@TableField(exist = false)
+	private Date beginTime;
+
+	/**
+	 *提醒日期
+	 */
+	@TableField(exist = false)
+	private Date reminderDay;
+
+}

+ 13 - 1
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/ServiceProjectItem.java

@@ -13,7 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -189,5 +189,17 @@ public class ServiceProjectItem extends TenantEntity implements Serializable {
 	 */
 	private BigDecimal commission;
 
+	/**
+	 * 明细父id
+	 */
+	private Long itemPid;
+
+	/**
+	 *时间数组
+	 */
+	@TableField(exist = false)
+	private List<ProjectItemDate> projectItemDateList;
+
+
 
 }

+ 13 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java

@@ -61,4 +61,17 @@ public interface IFinanceClient {
 	@PostMapping("settlement/paymentApply")
 	R paymentApply(@Valid @RequestBody ApplyDTO dto);
 
+
+	/**
+	 * 根据订单号获取账单信息
+	 *
+	 * @param srcParentId
+	 * @param tradeType
+	 * @return
+	 */
+	@GetMapping("/settlement/selectFinanceAcc")
+	List<Acc> selectFinanceAcc(@RequestParam(value = "srcParentId") Long srcParentId,
+							   @RequestParam(value = "billType") String billType,
+							   @RequestParam(value = "tradeType") String tradeType);
+
 }

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

@@ -53,4 +53,6 @@ public class OrderDTO extends OrderItems {
 
 	private Long id;
 
+	private BigDecimal grossWeight;
+
 }

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

@@ -342,7 +342,7 @@ public class ProjectController {
 		}*/
 		itemLambdaQueryWrapper.orderByDesc(ServiceProjectItem::getUpdateTime)
 			.eq(deptid != null, ServiceProjectItem::getDeptid, deptid)
-			/* .eq(ServiceProjectItem::getIsDeleted,0) */
+			 .eq(ServiceProjectItem::getIsDeleted,0)
 			.in(ServiceProjectItem::getStatus, listStatus)
 		.eq(ServiceProjectItem::getBranch,"Y");
 		Page<ServiceProjectItem> page = new Page<>(current, size);

+ 2 - 0
blade-service/blade-project/src/main/java/org/springblade/project/mapper/ServiceProjectItemMapper.java

@@ -28,4 +28,6 @@ public interface ServiceProjectItemMapper extends BaseMapper<ServiceProjectItem>
 	int getCorpIdList(@Param("tenantId") String tenantId, @Param("beginTime") String beginTime, @Param("endTime") String endTime);
 
 	List<ServiceProject> inactiveCorpList(@Param("tenantId") String tenantId, @Param("beginTime") String beginTime, @Param("endTime") String endTime);
+
+	int updateByItemPid(ServiceProjectItem serviceProjectItem1);
 }

+ 10 - 0
blade-service/blade-project/src/main/java/org/springblade/project/mapper/ServiceProjectItemMapper.xml

@@ -1,6 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.project.mapper.ServiceProjectItemMapper">
+    <update id="updateByItemPid" parameterType="org.springblade.project.entity.ServiceProjectItem">
+        update service_project_item
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="status != null">status = #{status},</if>
+            <if test="updateUser != null">update_user = #{updateUser},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateUserName != null and updateUserName !=''">update_user_name = #{updateUserName},</if>
+        </trim>
+        where item_pid = #{itemPid}
+    </update>
 
     <select id="statisticalAnalysis" resultType="org.springblade.project.entity.ServiceProjectItem">
     select

+ 58 - 85
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -287,6 +287,9 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			serviceProjectItem.setStatus(5);
 			serviceProjectItem.setPayTime(payTime);
 
+			serviceProjectItem.setEndTime(new Date());
+			serviceProjectItem.setTaskStatus(30);
+
 			ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
 			//主表已收款项增加
 			targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().add(serviceProjectItem.getAmount()));
@@ -297,6 +300,35 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
 			serviceProjectMapper.updateById(targetServiceProject);
 
+			//查询任务数量
+			LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper();
+			lambdaQueryWrapper.eq(ServiceProjectItem::getItemPid, serviceProjectItem.getItemPid())
+				.eq(ServiceProjectItem::getBranch, "Y")
+				.eq(ServiceProjectItem::getIsDeleted, 0);
+			List<ServiceProjectItem> serviceProjectItemList = serviceProjectItemMapper.selectList(lambdaQueryWrapper);
+			int count = 0;
+			//遍历任务,判断完成数量
+			for (ServiceProjectItem s : serviceProjectItemList) {
+				if (!serviceProjectItem.getId().equals(s.getId())) {
+					if (s.getTaskStatus().equals(30)) {
+						count++;
+					}
+				} else {
+					count++;
+				}
+			}
+			//判断总数量和已完成数量是否一致,如果一致则本条任务为最后一条完成任务需修改主营业务明细单据状态为完成  否则继续执行
+			if (serviceProjectItemList.size() == count) {
+				ServiceProjectItem serviceProjectItem1 = new ServiceProjectItem();
+				serviceProjectItem1.setUpdateTime(new Date());
+				serviceProjectItem1.setUpdateUser(SecureUtil.getUserId());
+				serviceProjectItem1.setId(serviceProjectItem.getItemPid());
+				serviceProjectItem.setPayTime(new Date());
+				serviceProjectItem.setEndTime(new Date());
+				serviceProjectItem1.setTaskStatus(30);
+				serviceProjectItemMapper.updateById(serviceProjectItem1);
+			}
+
 		}
 		//撤回
 		else if (status == 6) {
@@ -430,6 +462,10 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			targetServiceProject.setUpdateTime(new Date());
 			targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
 			serviceProjectMapper.updateById(targetServiceProject);
+			ServiceProjectItem serviceProjectItem1 = new ServiceProjectItem();
+			serviceProjectItem1.setItemPid(serviceProjectItem.getId());
+			serviceProjectItem1.setStatus(5);
+			serviceProjectItemMapper.updateByItemPid(serviceProjectItem1);
 		} else if (status == 6) {
 			if (serviceProjectItem.getStatus() != 5) {
 				throw new SecurityException("操作失败:此明细暂未结算,禁止撤回");
@@ -482,8 +518,8 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 	@Transactional
 	public int dispatch(ServiceProject serviceProject) {
 		List<ServiceProjectItem> itemList = serviceProject.getItemList();
-		AtomicInteger status = new AtomicInteger(1);
 		itemList.forEach(ls -> {
+			AtomicInteger count = new AtomicInteger(0);
 			//修改任务明细单据状态
 			ServiceProjectItem up = new ServiceProjectItem();
 			up.setId(ls.getId());
@@ -498,8 +534,6 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			if (ObjectUtils.isNull(ls.getSecond())) {
 				ls.setSecond(1);
 			}
-			//获取当前时间
-			Date date = new Date();
 			//服务费
 			BigDecimal serviceCharge = ls.getServiceCharge().divide(new BigDecimal(ls.getSecond()));
 			//合计金额
@@ -514,93 +548,28 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			}
 			//通过频率次数循环生成任务
 			for (int i = 0; i < ls.getSecond(); i++) {
-				//获取需求开始日期
-				Calendar calendar = Calendar.getInstance();
-				calendar.setTime(ls.getBeginTime());
-
-				//获取提醒日期
-				Calendar reminderCalendar = Calendar.getInstance();
-				Date reminderDate;
-
-				//判断开始,提醒日期
-				switch (ls.getFrequency()) {
-					case "1"://年
-						if (i > 0) {
-							//开始日期
-							calendar.add(Calendar.MONTH, i + 12);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i + 12);//设置月分
-						} else {
-							//开始日期
-							calendar.add(Calendar.MONTH, i);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i);//设置月分
-						}
-					case "2"://半年
-						if (i > 0) {
-							//开始日期
-							calendar.add(Calendar.MONTH, i + 6);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i + 6);//设置月分
-						} else {
-							//开始日期
-							calendar.add(Calendar.MONTH, i);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i);//设置月分
-						}
-					case "3"://季度
-						if (i > 0) {
-							//开始日期
-							calendar.add(Calendar.MONTH, i + 3);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i + 3);//设置月分
-						} else {
-							//开始日期
-							calendar.add(Calendar.MONTH, i);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i);//设置月分
-						}
-					case "4"://月
-						if (i > 0) {
-							//开始日期
-							calendar.add(Calendar.MONTH, i + 1);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i + 1);//设置月分
-						} else {
-							//开始日期
-							calendar.add(Calendar.MONTH, i);//设置月分
-							//提醒日期
-							reminderCalendar.add(Calendar.MONTH, i);//设置月分
-						}
-					case "5"://次
-						//开始日期
-						calendar.add(Calendar.MONTH, i);//设置月分
-						//提醒日期
-						reminderCalendar.add(Calendar.MONTH, i);//设置月分
-					default:
-						status.set(0);
-						break;
-				}
-
-				calendar.add(Calendar.MONTH, i);//设置月分
-				calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
-				Date date1 = calendar.getTime();
 
-				//判断提醒日期是否为空  空默认每月一日为提醒日期  否则 每月提醒日期为当前日
-				if (ObjectUtils.isNotNull(ls.getReminderDay())) {
-					reminderCalendar.setTime(ls.getReminderDay());
-					reminderDate = reminderCalendar.getTime();
-				} else {
-					reminderCalendar.setTime(date);
-					reminderCalendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
-					reminderDate = reminderCalendar.getTime();
+				if (ObjectUtils.isNotNull(ls.getProjectItemDateList())){
+
+					ls.setBeginTime(ls.getProjectItemDateList().get(i).getBeginTime());
+					//获取提醒日期
+					Calendar reminderCalendar = Calendar.getInstance();
+					Date reminderDate;
+					//判断提醒日期是否为空  空默认每月一日为提醒日期  否则 每月提醒日期为当前日
+					if (ObjectUtils.isNotNull(ls.getProjectItemDateList().get(i).getReminderDay())) {
+						reminderCalendar.setTime(ls.getProjectItemDateList().get(i).getReminderDay());
+						reminderDate = reminderCalendar.getTime();
+					} else {
+						reminderCalendar.setTime(ls.getProjectItemDateList().get(i).getBeginTime());
+						reminderCalendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
+						reminderDate = reminderCalendar.getTime();
+					}
+					ls.setReminderDay(reminderDate);
 				}
 
 				ls.setServiceCharge(serviceCharge);
 				ls.setAmount(amount);
 				ls.setMatMoney(matMoney);
-				ls.setBeginTime(date1);
-				ls.setReminderDay(reminderDate);
 				ls.setTenantId(AuthUtil.getTenantId());
 				ls.setPId(ls.getPId());
 				ls.setCreateTime(new Date());
@@ -608,11 +577,15 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 				ls.setCreateUserName(SecureUtil.getUser().getUserName());
 				ls.setStatus(4);
 				ls.setBranch("Y");
+				ls.setItemPid(up.getId());
 				ls.setId(null);
+
 				serviceProjectItemMapper.insert(ls);
+
+				count.getAndIncrement();
 			}
 		});
-		return status.get();
+		return 1;
 	}
 
 	public void checkMoney(Long serviceId, List<ServiceProjectItem> items) {

+ 17 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java

@@ -4,6 +4,7 @@ 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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import com.trade.purchase.order.vo.OrderDTO;
@@ -337,8 +338,22 @@ public class EntranceOrderController extends BladeController {
 	@GetMapping("/removeOrderFees")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入id")
-	public R removeOrderFees(@ApiParam(value = "主键id", required = true) @RequestParam String id) {
-		return R.status(orderFeesService.removeById(Long.parseLong(id)));
+	public R removeOrderFees(@RequestParam(value = "srcParentId") Long srcParentId,
+							 @RequestParam(value = "billType") String billType,
+							 @RequestParam(value = "tradeType") String tradeType) {
+
+		List<Acc> accList = financeClient.selectFinanceAcc(srcParentId,billType,tradeType);
+		if (ObjectUtils.isNull(accList)){
+			if (billType.equals("收费")){
+				return R.fail("销售订单已生成账单不能删除");
+			}else if (billType.equals("申请")){
+				return R.fail("采购订单已申请付费不能删除");
+			}else{
+				return R.fail("系统错误!请联系管理员");
+			}
+
+		}
+		return R.status(orderFeesService.removeById(srcParentId));
 	}
 
 }

+ 16 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -475,4 +475,20 @@ public class SettlementController extends BladeController {
 		return R.data(allAmount);
 	}
 
+
+	//查询订单信息
+	@GetMapping("/selectFinanceAcc")
+	public List<Acc> selectFinanceAcc(@RequestParam(value = "srcParentId") Long srcParentId,
+									   @RequestParam(value = "billType") String billType,
+									   @RequestParam(value = "tradeType") String tradeType) {
+		LambdaQueryWrapper<Acc> accLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		accLambdaQueryWrapper
+			.eq(Acc::getSrcParentId, srcParentId)
+			.eq(Acc::getBillType, billType)
+			.eq(Acc::getTradeType, tradeType)
+			.eq(Acc::getTenantId, AuthUtil.getTenantId())
+			.eq(Acc::getIsDeleted, 0);
+		return accService.list(accLambdaQueryWrapper);
+	}
+
 }

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

@@ -85,7 +85,8 @@
         b.price as price,
         b.amount as amount,
         b.item_id as itemId,
-        b.id as id
+        b.id as id,
+        b.gross_weight as grossWeight
         FROM
         business_order a,
         business_order_items b