dongke 1 год назад
Родитель
Сommit
5005f7f93d

+ 7 - 2
src/main/java/com/dk/mdm/mapper/ivt/FreezeMapper.xml

@@ -6,7 +6,7 @@
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
         freeze_id
-        , freeze_no, cus_id, org_id, staff_id, freeze_status, freeze_date, auto_unfreeze_date,
+        , freeze_no, cus_id, org_id, staff_id, freeze_status, freeze_date, unfreeze_date,auto_unfreeze_date,
         sys.f_remove_zero(sum_quantity) as sum_quantity, remarks, make_staff, make_time, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user,annex_paths
     </sql>
 
@@ -74,6 +74,10 @@
         fre
         .
         annex_paths
+        ,
+        fre
+        .
+        unfreeze_date
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -85,6 +89,7 @@
         <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
         <result column="freeze_status" property="freezeStatus"/>
         <result column="freeze_date" property="freezeDate" typeHandler="TimestampTypeHandler"/>
+        <result column="unfreeze_date" property="unfreezeDate" typeHandler="TimestampTypeHandler"/>
         <result column="auto_unfreeze_date" property="autoUnfreezeDate" typeHandler="TimestampTypeHandler"/>
         <result column="sum_quantity" property="sumQuantity"/>
         <result column="remarks" property="remarks"/>
@@ -113,7 +118,7 @@
         <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
         <result column="freeze_status" property="freezeStatus"/>
         <result column="freeze_date" property="freezeDate" typeHandler="TimestampTypeHandler"/>
-        <result column="auto_unfreeze_date" property="autoUnfreezeDate" typeHandler="TimestampTypeHandler"/>
+        <result column="unfreeze_date" property="unfreezeDate" typeHandler="TimestampTypeHandler"/>
         <result column="sum_quantity" property="sumQuantity"/>
         <result column="remarks" property="remarks"/>
         <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>

+ 11 - 0
src/main/java/com/dk/mdm/model/pojo/ivt/Freeze.java

@@ -92,6 +92,8 @@ public class Freeze extends PageInfo<Freeze> implements Serializable {
     private String freezeStatus;
 
 
+
+
     /**
      * 冻结日期
      */
@@ -101,6 +103,15 @@ public class Freeze extends PageInfo<Freeze> implements Serializable {
     @TableField(typeHandler = TimestampTypeHandler.class)
     private LocalDate freezeDate;
 
+    /**
+     * 冻结日期
+     */
+    @Excel(name = "解冻日期")
+    @ApiModelProperty(value = "解冻日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDate unfreezeDate;
+
 
     /**
      * 自动解冻日期

+ 9 - 0
src/main/java/com/dk/mdm/model/response/ivt/FreezeResponse.java

@@ -48,6 +48,7 @@ public class FreezeResponse extends PageInfo<FreezeResponse> implements Serializ
     private String freezeId;
 
 
+
     /**
      * 附件 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)
      */
@@ -109,6 +110,14 @@ public class FreezeResponse extends PageInfo<FreezeResponse> implements Serializ
 
 
     /**
+     * 冻结日期
+     */
+    @Excel(name = "解冻日期")
+    @ApiModelProperty(value = "解冻日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate unfreezeDate;
+
+    /**
      * 自动解冻日期
      */
     @Excel(name = "自动解冻日期")

+ 82 - 4
src/main/java/com/dk/mdm/service/ivt/FreezeService.java

@@ -5,6 +5,7 @@ import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.infrastructure.xxl.XxlJobUtils;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
@@ -20,6 +21,8 @@ import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.ivt.FreezeItem;
 import com.dk.mdm.model.pojo.ivt.Inventory;
+import com.dk.mdm.model.pojo.mst.CusFollow;
+import com.dk.mdm.model.pojo.mst.FollowPlan;
 import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.mdm.model.query.ivt.FreezeItemQuery;
@@ -37,17 +40,20 @@ import com.dk.mdm.model.vo.sale.OrderVO;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.ivt.inventory.InventoryService;
 import com.dk.mdm.service.sale.OrderItemService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
+import java.time.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 @Transactional
 public class FreezeService extends BaseService<Freeze> {
@@ -80,6 +86,9 @@ public class FreezeService extends BaseService<Freeze> {
 
 	@Autowired
 	private InventoryMapper inventoryMapper;
+
+	@Autowired
+	private XxlJobUtils xxlJobUtils;
 	/**
 	 * @desc   : 重写主键
 	 * @author : 宋扬
@@ -110,7 +119,7 @@ public class FreezeService extends BaseService<Freeze> {
 	public ResponseResultVO<?> insert(FreezeVO freezeVO) {
 		// 转化实体
 		Freeze freeze = freezeConvert.convertToPo(freezeVO);
-		Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.Freeze.getName(), true);
+		Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.Freeze.getName(), false);
 		// 获取冻结状态 获取冻结日期(当前日期) 插入冻结表的实体
 		freeze.setFreezeStatus(Constant.FreezeStatusType.ALLFREEZE.getName()).setFreezeDate(LocalDate.now())
 				.setCusId(freezeVO.getCusId()).setMakeStaff(freezeVO.getMakeStaff()).setOrgId(freezeVO.getOrgId())
@@ -145,10 +154,79 @@ public class FreezeService extends BaseService<Freeze> {
 				inventoryService.updateByUuid(inventoryUpdate);
 			}
 		}
+
+		// 只要有自动解冻日期
+		if (freezeVO.getAutoUnfreezeDate() != null) {
+			// 保存跟进信息
+			saveToXxlJob(freeze);
+		}
+
+
 		return ResponseResultUtil.success();
 	}
 
 	/**
+	 * @desc : 保存跟进信息到xxl job
+	 * @author : 王英杰
+	 * @date : 2022-05-27 09:53
+	 */
+	@Transactional(rollbackFor = {Exception.class})
+	public void saveToXxlJob(Freeze freeze) {
+		 xxlJobUtils.create(Math.toIntExact(
+				(LocalDateTime.of(freeze.getAutoUnfreezeDate(),LocalTime.of(23, 59, 59)).toInstant(ZoneOffset.of("+8")).toEpochMilli() - System.currentTimeMillis()) / 1000
+		), freeze.getFreezeId(), Constant.XxlJobInfo.FREEZE.getValue());
+	}
+
+	/**
+	 * @desc : 客户跟进提醒回调
+	 * @author : 姜永辉
+	 * @date : 2022-06-29 14:22
+	 */
+	@Transactional(rollbackFor = {Exception.class})
+	@XxlJob("freeze-reminder")
+	public ResponseResultVO customerReminder() {
+//		log.info("@XxlJob(\"freeze-reminder\")");
+//		log.info("followPlan id: {}", XxlJobHelper.getJobParam());
+//        String planid = "10112024-0715-0000-0000-0004a8b4d1e6";
+        String id =  XxlJobHelper.getJobParam();
+//		String id = "10112024-0808-0000-0000-0004da956d40";
+		// 赋值全部解冻
+		String freezeStatus=Constant.FreezeStatusType.ALLUNFREEZE.getName();
+		// 查询冻结单明细
+		FreezeItemQuery freezeItemQuery = new FreezeItemQuery();
+		freezeItemQuery.setFreezeId(id);
+		List<FreezeItemResponse> itemList = freezeItemMapper.selectByCond(freezeItemQuery);
+		// 解冻
+		for (FreezeItemResponse freezeItemVO : itemList) {
+
+			FreezeItem freezeItem = new FreezeItem();
+			// 赋值实体
+			freezeItem.setItemId(freezeItemVO.getItemId()).setUnfreezeQty(freezeItemVO.getSurplusQty())
+					.setSurplusQty(BigDecimal.ZERO);
+			// 修改冻结单明细解冻量
+			freezeItemService.updateByUuid(freezeItem);
+			// 查询库存信息
+			Inventory inventoryForUpdate=inventoryMapper.selectByIdForUpdate(freezeItemVO.getInvId());
+			// 库存冻结量=库存冻结量-实际解冻量
+			BigDecimal freezeqty=inventoryForUpdate.getFreezeQty().subtract(freezeItemVO.getSurplusQty());
+			// 库存可售量=库存可售量+实际解冻量
+			BigDecimal usableQt=inventoryForUpdate.getUsableQty().add(freezeItemVO.getSurplusQty());
+			// 更新修改内容信息
+			Inventory inventoryUpdate = new Inventory();
+			// 赋值库存可售量、冻结量和库存ID值
+			inventoryUpdate.setInvId(freezeItemVO.getInvId()).setFreezeQty(freezeqty).setUsableQty(usableQt);
+			// 修改库存冻结量、可售量
+			inventoryService.updateByUuid(inventoryUpdate);
+		}
+		// 赋值冻结表状态和ID
+		Freeze freeze=new Freeze();
+		freeze.setFreezeId(id).setFreezeStatus(freezeStatus).setUnfreezeDate(LocalDate.now());
+		// 更新主表冻结状态
+		return ResponseResultUtil.success(super.updateByUuid(freeze));
+
+	}
+
+	/**
 	 * @desc   : 获取冻结单信息(解冻用)
 	 * @author : 宋扬
 	 * @date   : 2024/3/19 15:29
@@ -253,7 +331,7 @@ public class FreezeService extends BaseService<Freeze> {
 		}
 		// 赋值冻结表状态和ID
 		Freeze freeze=new Freeze();
-		freeze.setFreezeId(id).setFreezeStatus(freezeStatus);
+		freeze.setFreezeId(id).setFreezeStatus(freezeStatus).setUnfreezeDate(LocalDate.now());
 		// 更新主表冻结状态
 		return ResponseResultUtil.success(super.updateByUuid(freeze));
 	}

+ 8 - 0
src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mst.MoneyAccountConvert;
@@ -132,6 +133,13 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 	public ResponseResultVO<?> insert(MoneyAccountVO moneyAccountVO) {
 		// 转化实体
 		MoneyAccount moneyAccount = moneyAccountConvert.convertToPo(moneyAccountVO);
+		// 资金账户账户名称在同一公司先应该唯一,不能重复,后台新建编辑方法要校验
+        if(moneyAccount.getMacName()!=null){
+			List<MoneyAccountResponse> itemList = moneyAccountMapper.selectByCond(new MoneyAccountQuery().setMacName(moneyAccount.getMacName()).setCpId(authUtils.getStaff().getCpId()).setFlgValid(true));
+			if(itemList.size()>0){
+				return ResponseResultUtil.error( 666, "资金账户名称已存在");
+			}
+		}
 		// 赋值期初
 		moneyAccount.setBalance(moneyAccountVO.getInitBalance());
 		// 获取编码和主键UuId