feat(contract):装修申请、场地预约前后端代码提交;

master
jiyufei 3 months ago
parent ad63e25c04
commit 404adc93ea

@ -2,7 +2,9 @@ package jnpf.service;
import jnpf.model.park.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -16,7 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
public interface ParkService extends IService<ParkEntity> {
List<ParkEntity> getList(ParkPagination parkPagination);
List<ParkEntity> getTypeList(ParkPagination parkPagination,String dataType);
List<ParkEntity> getTypeList(ParkPagination parkPagination, String dataType);
ParkEntity getInfo(String id);
@ -28,8 +30,31 @@ public interface ParkService extends IService<ParkEntity> {
//子表方法
//副表数据方法
String checkForm(ParkForm form,int i);
void saveOrUpdate(ParkForm parkForm,String id, boolean isSave) throws Exception;
String checkForm(ParkForm form, int i);
void saveOrUpdate(ParkForm parkForm, String id, boolean isSave) throws Exception;
/**
* id
*
* @param id id
* @return name
*/
String findNameById(String id);
/**
* id false
*
* @param spaceIds ids
* @return boolean
*/
boolean queryStatus(List<String> spaceIds);
/**
* id
*
* @param parkId id
* @param status
*/
void updateStatus(String parkId, String status);
}

@ -2,7 +2,9 @@ package jnpf.service;
import jnpf.model.contract.*;
import jnpf.entity.*;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -14,5 +16,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
* 2024-07-16
*/
public interface SpacecontractService extends IService<SpacecontractEntity> {
QueryWrapper<SpacecontractEntity> getChild(ContractPagination pagination,QueryWrapper<SpacecontractEntity> spacecontractQueryWrapper);
/**
* id
*
* @param contractNumber
* @return list
*/
List<String> findByNums(String contractNumber);
QueryWrapper<SpacecontractEntity> getChild(ContractPagination pagination, QueryWrapper<SpacecontractEntity> spacecontractQueryWrapper);
}

@ -18,6 +18,7 @@ import jnpf.model.contract.*;
import jnpf.permission.entity.UserEntity;
import jnpf.service.ContractService;
import jnpf.service.EnterpriseMerchantsService;
import jnpf.service.ParkService;
import jnpf.service.SpacecontractService;
import jnpf.util.*;
import lombok.extern.slf4j.Slf4j;
@ -57,6 +58,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
@Resource
private EnterpriseMerchantsService enterpriseMerchantsService;
@Resource
private ParkService parkService;
@Override
public List<ContractEntity> getList(ContractPagination contractPagination) {
@ -507,8 +511,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
contractForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(ContractConstant.getFormData(), contractForm), ContractForm.class);
ContractEntity entity = JsonUtil.getJsonToBean(contractForm, ContractEntity.class);
//todo 设置园区名称
//园区名称
String parkName = parkService.findNameById(contractForm.getParkId().toString());
//商户名称
String merchantName = enterpriseMerchantsService.findNameById(contractForm.getMerchantName().toString());
if (isSave) {
@ -522,6 +526,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
} else {
entity.setCreationTime(DateUtil.getNowDate());
}
entity.setParkName(parkName);
//字段设置错误 由于代码已经修改极大部分 所以将商户id以及name反过来使用
entity.setMerchantId(merchantName);
this.saveOrUpdate(entity);
@ -554,10 +559,15 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
LambdaQueryWrapper<ContractEntity> eq = new LambdaQueryWrapper<>(ContractEntity.class)
.eq(ContractEntity::getId, request.getId());
ContractEntity contract = this.getOne(eq);
if (ObjectUtil.isNull(contract)) {
return "合同不存在";
}
if ("10".equals(contract.getContractStatus()) || "21".equals(contract.getContractStatus())) {
//todo 查询空间判断 如果空间状态存在不是待租状态 就提示
//查询绑定了哪些空间
List<String> spaceIds = spacecontractService.findByNums(contract.getContractNumber());
if (!parkService.queryStatus(spaceIds)){
return "该合同空间状态存在不是待租状态,请确认!";
}
contract.setContractStatus(request.getContractStatus());
contract.setApproveDate(DateUtil.getNowDate());
contract.setApprovedBy(userProvider.get().getUserId());
@ -572,8 +582,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
contract.setApproveRemarks(remarks);
boolean result = this.updateById(contract);
if (result) {
//todo 需要处理空间逻辑
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(contract.getParkId(), "20"));
//异步处理商户信息
CompletableFuture.runAsync(() -> enterpriseMerchantsService.updateStatus(request.getContractStatus(), contract.getContractName(), contract.getParkId()));
}
@ -588,6 +598,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
LambdaQueryWrapper<ContractEntity> eq = new LambdaQueryWrapper<>(ContractEntity.class)
.eq(ContractEntity::getId, request.getId());
ContractEntity contract = this.getOne(eq);
if (ObjectUtil.isNull(contract)) {
return "合同不存在";
}
if (!"20".equals(contract.getContractStatus())) {
return "该合同没有确认,不允许结束!";
} else if ("30".equals(contract.getContractStatus())) {
@ -597,8 +610,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
contract.setRemarks(StringUtils.isNoneBlank(request.getApproveRemarks()) ? request.getApproveRemarks() : "同意");
boolean result = this.updateById(contract);
if (result) {
//todo 需要处理空间逻辑
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(contract.getParkId(), "10"));
//异步处理商户信息
CompletableFuture.runAsync(() -> enterpriseMerchantsService.updateStatus(request.getContractStatus(), contract.getContractName(), null));
}

@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
@ -68,6 +69,9 @@ public class DecorationApplicationFormServiceImpl extends ServiceImpl<Decoration
@Resource
private ContractService contractService;
@Resource
private ParkService parkService;
@Override
public List<DecorationApplicationFormEntity> getList(DecorationApplicationFormPagination decorationApplicationFormPagination) {
return getTypeList(decorationApplicationFormPagination, decorationApplicationFormPagination.getDataType());
@ -309,7 +313,11 @@ public class DecorationApplicationFormServiceImpl extends ServiceImpl<Decoration
@Override
public void delete(DecorationApplicationFormEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
boolean result = this.removeById(entity.getId());
if (result) {
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(entity.getSpaceId(), "20"));
}
}
}
@ -362,7 +370,8 @@ public class DecorationApplicationFormServiceImpl extends ServiceImpl<Decoration
decorationApplicationFormForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(DecorationApplicationFormConstant.getFormData(), decorationApplicationFormForm), DecorationApplicationFormForm.class);
DecorationApplicationFormEntity entity = JsonUtil.getJsonToBean(decorationApplicationFormForm, DecorationApplicationFormEntity.class);
//todo 需要更新空间信息
//园区名称
String spaceName = parkService.findNameById(decorationApplicationFormForm.getSpaceId());
//商户名称
String merchantName = enterpriseMerchantsService.findNameById(decorationApplicationFormForm.getMerchantId());
//合同名称
@ -379,9 +388,21 @@ public class DecorationApplicationFormServiceImpl extends ServiceImpl<Decoration
} else {
entity.setCreationTime(DateUtil.getNowDate());
}
entity.setSpaceName(spaceName);
entity.setMerchantName(merchantName);
entity.setContractName(contractName);
this.saveOrUpdate(entity);
boolean result = this.saveOrUpdate(entity);
if (result) {
String status;
if ("1".equals(decorationApplicationFormForm.getDecorationProgress())) {
status = "30";
} else if ("3".equals(decorationApplicationFormForm.getDecorationProgress())) {
status = "20";
} else {
status = "30";
}
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(entity.getSpaceId(), status));
}
}
}

@ -1,23 +1,33 @@
package jnpf.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jnpf.entity.*;
import jnpf.mapper.ParkMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.park.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jnpf.database.model.superQuery.SuperJsonModel;
@ -25,13 +35,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
* park
* V3.5
* https://www.jnpfsoft.com
@ -39,7 +53,8 @@ import jnpf.permission.entity.UserEntity;
* 2024-07-17
*/
@Service
public class ParkServiceImpl extends ServiceImpl<ParkMapper, ParkEntity> implements ParkService{
@Slf4j
public class ParkServiceImpl extends ServiceImpl<ParkMapper, ParkEntity> implements ParkService {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@ -47,243 +62,286 @@ public class ParkServiceImpl extends ServiceImpl<ParkMapper, ParkEntity> impleme
private UserProvider userProvider;
@Override
public List<ParkEntity> getList(ParkPagination parkPagination){
return getTypeList(parkPagination,parkPagination.getDataType());
public List<ParkEntity> getList(ParkPagination parkPagination) {
return getTypeList(parkPagination, parkPagination.getDataType());
}
/** 列表查询 */
/**
*
*/
@Override
public List<ParkEntity> getTypeList(ParkPagination parkPagination,String dataType){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
List<List<String>> intersectionList =new ArrayList<>();
public List<ParkEntity> getTypeList(ParkPagination parkPagination, String dataType) {
String userId = userProvider.get().getUserId();
List<String> AllIdList = new ArrayList();
List<List<String>> intersectionList = new ArrayList<>();
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String columnData = !isPc ? ParkConstant.getAppColumnData() : ParkConstant.getColumnData();
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData, ColumnDataModel.class);
String ruleJson = !isPc ? JsonUtil.getObjectToString(columnDataModel.getRuleListApp()) : JsonUtil.getObjectToString(columnDataModel.getRuleList());
int total=0;
int parkNum =0;
QueryWrapper<ParkEntity> parkQueryWrapper=new QueryWrapper<>();
int total = 0;
int parkNum = 0;
QueryWrapper<ParkEntity> parkQueryWrapper = new QueryWrapper<>();
List<String> allSuperIDlist = new ArrayList<>();
String superOp ="";
if (ObjectUtil.isNotEmpty(parkPagination.getSuperQueryJson())){
String superOp = "";
if (ObjectUtil.isNotEmpty(parkPagination.getSuperQueryJson())) {
List<String> allSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
List<List<String>> intersectionSuperList = new ArrayList<>();
String queryJson = parkPagination.getSuperQueryJson();
SuperJsonModel superJsonModel = JsonUtil.getJsonToBean(queryJson, SuperJsonModel.class);
int superNum = 0;
QueryWrapper<ParkEntity> parkSuperWrapper = new QueryWrapper<>();
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper,ParkEntity.class,queryJson,"0"));
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper, ParkEntity.class, queryJson, "0"));
int parkNum1 = parkSuperWrapper.getExpression().getNormal().size();
if (parkNum1>0){
List<String> parkList =this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
if (parkNum1 > 0) {
List<String> parkList = this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
allSuperList.addAll(parkList);
intersectionSuperList.add(parkList);
superNum++;
}
superOp = superNum > 0 ? superJsonModel.getMatchLogic() : "";
//and or
if(superOp.equalsIgnoreCase("and")){
if (superOp.equalsIgnoreCase("and")) {
allSuperIDlist = generaterSwapUtil.getIntersection(intersectionSuperList);
}else{
} else {
allSuperIDlist = allSuperList;
}
}
List<String> allRuleIDlist = new ArrayList<>();
String ruleOp ="";
if (ObjectUtil.isNotEmpty(ruleJson)){
String ruleOp = "";
if (ObjectUtil.isNotEmpty(ruleJson)) {
List<String> allRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
List<List<String>> intersectionRuleList = new ArrayList<>();
SuperJsonModel ruleJsonModel = JsonUtil.getJsonToBean(ruleJson, SuperJsonModel.class);
int ruleNum = 0;
QueryWrapper<ParkEntity> parkSuperWrapper = new QueryWrapper<>();
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper,ParkEntity.class,ruleJson,"0"));
parkSuperWrapper = generaterSwapUtil.getCondition(new QueryModel(parkSuperWrapper, ParkEntity.class, ruleJson, "0"));
int parkNum1 = parkSuperWrapper.getExpression().getNormal().size();
if (parkNum1>0){
List<String> parkList =this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
if (parkNum1 > 0) {
List<String> parkList = this.list(parkSuperWrapper).stream().map(ParkEntity::getId).collect(Collectors.toList());
allRuleList.addAll(parkList);
intersectionRuleList.add(parkList);
ruleNum++;
}
ruleOp = ruleNum > 0 ? ruleJsonModel.getMatchLogic() : "";
//and or
if(ruleOp.equalsIgnoreCase("and")){
if (ruleOp.equalsIgnoreCase("and")) {
allRuleIDlist = generaterSwapUtil.getIntersection(intersectionRuleList);
}else{
} else {
allRuleIDlist = allRuleList;
}
}
boolean pcPermission = false;
boolean appPermission = false;
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object parkObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper,ParkEntity.class,parkPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(parkObj)){
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>)parkObj;
if( parkQueryWrapper.getExpression().getNormal().size()>0){
parkNum++;
}
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object parkObj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper,ParkEntity.class,parkPagination.getMenuId(),"0"));
if (ObjectUtil.isEmpty(parkObj)){
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>)parkObj;
if( parkQueryWrapper.getExpression().getNormal().size()>0){
parkNum++;
}
boolean pcPermission = false;
boolean appPermission = false;
if (isPc && pcPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object parkObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper, ParkEntity.class, parkPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(parkObj)) {
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>) parkObj;
if (parkQueryWrapper.getExpression().getNormal().size() > 0) {
parkNum++;
}
}
}
}
if (!isPc && appPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object parkObj = generaterSwapUtil.getAuthorizeCondition(new QueryModel(parkQueryWrapper, ParkEntity.class, parkPagination.getMenuId(), "0"));
if (ObjectUtil.isEmpty(parkObj)) {
return new ArrayList<>();
} else {
parkQueryWrapper = (QueryWrapper<ParkEntity>) parkObj;
if (parkQueryWrapper.getExpression().getNormal().size() > 0) {
parkNum++;
}
}
}
}
if(isPc){
if(ObjectUtil.isNotEmpty(parkPagination.getName())){
parkNum++;
}
}
if (isPc) {
if (ObjectUtil.isNotEmpty(parkPagination.getName())) {
parkNum++;
String value = parkPagination.getName() instanceof List ?
JsonUtil.getObjectToString(parkPagination.getName()) :
String.valueOf(parkPagination.getName());
parkQueryWrapper.lambda().like(ParkEntity::getName,value);
JsonUtil.getObjectToString(parkPagination.getName()) :
String.valueOf(parkPagination.getName());
parkQueryWrapper.lambda().like(ParkEntity::getName, value);
}
}
List<String> intersection = generaterSwapUtil.getIntersection(intersectionList);
if (total>0){
if (intersection.size()==0){
if (total > 0) {
if (intersection.size() == 0) {
intersection.add("jnpfNullList");
}
parkQueryWrapper.lambda().in(ParkEntity::getId, intersection);
}
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)){
if (allSuperIDlist.size()==0){
//是否有高级查询
if (StringUtil.isNotEmpty(superOp)) {
if (allSuperIDlist.size() == 0) {
allSuperIDlist.add("jnpfNullList");
}
List<String> finalAllSuperIDlist = allSuperIDlist;
parkQueryWrapper.lambda().and(t->t.in(ParkEntity::getId, finalAllSuperIDlist));
parkQueryWrapper.lambda().and(t -> t.in(ParkEntity::getId, finalAllSuperIDlist));
}
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)){
if (allRuleIDlist.size()==0){
//是否有数据过滤查询
if (StringUtil.isNotEmpty(ruleOp)) {
if (allRuleIDlist.size() == 0) {
allRuleIDlist.add("jnpfNullList");
}
List<String> finalAllRuleIDlist = allRuleIDlist;
parkQueryWrapper.lambda().and(t->t.in(ParkEntity::getId, finalAllRuleIDlist));
parkQueryWrapper.lambda().and(t -> t.in(ParkEntity::getId, finalAllRuleIDlist));
}
//假删除标志
parkQueryWrapper.lambda().isNull(ParkEntity::getDeleteMark);
//排序
if(StringUtil.isEmpty(parkPagination.getSidx())){
if (StringUtil.isEmpty(parkPagination.getSidx())) {
parkQueryWrapper.lambda().orderByDesc(ParkEntity::getId);
}else{
} else {
try {
String sidx = parkPagination.getSidx();
String[] strs= sidx.split("_name");
String[] strs = sidx.split("_name");
ParkEntity parkEntity = new ParkEntity();
Field declaredField = parkEntity.getClass().getDeclaredField(strs[0]);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
parkQueryWrapper="asc".equals(parkPagination.getSort().toLowerCase())?parkQueryWrapper.orderByAsc(value):parkQueryWrapper.orderByDesc(value);
parkQueryWrapper = "asc".equals(parkPagination.getSort().toLowerCase()) ? parkQueryWrapper.orderByAsc(value) : parkQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if("0".equals(dataType)){
if((total>0 && AllIdList.size()>0) || total==0){
Page<ParkEntity> page=new Page<>(parkPagination.getCurrentPage(), parkPagination.getPageSize());
IPage<ParkEntity> userIPage=this.page(page, parkQueryWrapper);
return parkPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
if ("0".equals(dataType)) {
if ((total > 0 && AllIdList.size() > 0) || total == 0) {
Page<ParkEntity> page = new Page<>(parkPagination.getCurrentPage(), parkPagination.getPageSize());
IPage<ParkEntity> userIPage = this.page(page, parkQueryWrapper);
return parkPagination.setData(userIPage.getRecords(), userIPage.getTotal());
} else {
List<ParkEntity> list = new ArrayList();
return parkPagination.setData(list, list.size());
}
}else{
} else {
return this.list(parkQueryWrapper);
}
}
@Override
public ParkEntity getInfo(String id){
QueryWrapper<ParkEntity> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(ParkEntity::getId,id);
public ParkEntity getInfo(String id) {
QueryWrapper<ParkEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ParkEntity::getId, id);
return this.getOne(queryWrapper);
}
@Override
public void create(ParkEntity entity){
public void create(ParkEntity entity) {
this.save(entity);
}
@Override
public boolean update(String id, ParkEntity entity){
public boolean update(String id, ParkEntity entity) {
return this.updateById(entity);
}
@Override
public void delete(ParkEntity entity){
if(entity!=null){
public void delete(ParkEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
}
}
/** 验证表单唯一字段,正则,非空 i-0新增-1修改*/
/**
* i-0-1
*/
@Override
public String checkForm(ParkForm form,int i) {
boolean isUp =StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id="";
public String checkForm(ParkForm form, int i) {
boolean isUp = StringUtil.isNotEmpty(form.getId()) && !form.getId().equals("0");
String id = "";
String countRecover = "";
if (isUp){
if (isUp) {
id = form.getId();
}
//主表字段验证
if(StringUtil.isEmpty(form.getCode())){
return "园区编码不能为空";
}
if(StringUtil.isNotEmpty(form.getCode())){
form.setCode(form.getCode().trim());
QueryWrapper<ParkEntity> codeWrapper=new QueryWrapper<>();
codeWrapper.lambda().eq(ParkEntity::getCode,form.getCode());
//假删除标志
codeWrapper.lambda().isNull(ParkEntity::getDeleteMark);
if (isUp){
codeWrapper.lambda().ne(ParkEntity::getId, id);
}
if((int) this.count(codeWrapper)>0){
countRecover = "园区编码"+form.getCode()+"不能重复";
}
}
if(StringUtil.isEmpty(form.getName())){
return "园区名称不能为空";
}
if (StringUtil.isEmpty(form.getCode())) {
return "园区编码不能为空";
}
if (StringUtil.isNotEmpty(form.getCode())) {
form.setCode(form.getCode().trim());
QueryWrapper<ParkEntity> codeWrapper = new QueryWrapper<>();
codeWrapper.lambda().eq(ParkEntity::getCode, form.getCode());
//假删除标志
codeWrapper.lambda().isNull(ParkEntity::getDeleteMark);
if (isUp) {
codeWrapper.lambda().ne(ParkEntity::getId, id);
}
if ((int) this.count(codeWrapper) > 0) {
countRecover = "园区编码" + form.getCode() + "不能重复";
}
}
if (StringUtil.isEmpty(form.getName())) {
return "园区名称不能为空";
}
return countRecover;
}
/**
* ()
* @param id
* @param parkForm
* @return
*/
* ()
*
* @param id
* @param parkForm
* @return
*/
@Override
@Transactional
public void saveOrUpdate(ParkForm parkForm,String id, boolean isSave) throws Exception{
UserInfo userInfo=userProvider.get();
public void saveOrUpdate(ParkForm parkForm, String id, boolean isSave) throws Exception {
UserInfo userInfo = userProvider.get();
UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId());
parkForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(ParkConstant.getFormData(),parkForm),ParkForm.class);
generaterSwapUtil.swapDatetime(ParkConstant.getFormData(), parkForm), ParkForm.class);
ParkEntity entity = JsonUtil.getJsonToBean(parkForm, ParkEntity.class);
if(isSave){
String mainId = RandomUtil.uuId() ;
if (isSave) {
String mainId = RandomUtil.uuId();
entity.setId(mainId);
entity.setVersion(0);
}else{
} else {
}
this.saveOrUpdate(entity);
}
@Override
public String findNameById(String id) {
ParkEntity park = this.getById(id);
if (ObjectUtil.isNull(park)) {
return "";
}
return park.getName();
}
@Override
public boolean queryStatus(List<String> spaceIds) {
LambdaQueryWrapper<ParkEntity> wrapper = new LambdaQueryWrapper<>(ParkEntity.class)
.in(ParkEntity::getId, spaceIds)
.isNull(ParkEntity::getDeleteMark);
List<ParkEntity> list = this.list(wrapper);
return list.stream().allMatch(obj -> "10".equals(obj.getState()));
}
@Override
public void updateStatus(String parkId, String status) {
log.info("根据主键id修改状态id{},目标状态:{}", parkId, status);
ParkEntity entity = this.getById(parkId);
if (ObjectUtil.isNull(entity)) {
return;
}
entity.setLastModifyUserId(userProvider.get().getUserId());
entity.setLastModifyTime(DateUtil.getNowDate());
entity.setState(status);
this.updateById(entity);
}
}

@ -1,11 +1,14 @@
package jnpf.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jnpf.entity.*;
import jnpf.mapper.SpacecontractMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.contract.*;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.util.GeneraterSwapUtil;
@ -13,8 +16,11 @@ import jnpf.database.model.superQuery.SuperQueryJsonModel;
import jnpf.database.model.superQuery.ConditionJsonModel;
import jnpf.database.model.superQuery.SuperQueryConditionModel;
import jnpf.model.QueryModel;
import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jnpf.database.model.superQuery.SuperJsonModel;
@ -22,13 +28,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
import jnpf.base.UserInfo;
import jnpf.permission.entity.UserEntity;
/**
*
* Contract
* V3.5
* https://www.jnpfsoft.com
@ -36,23 +46,35 @@ import jnpf.permission.entity.UserEntity;
* 2024-07-16
*/
@Service
public class SpacecontractServiceImpl extends ServiceImpl<SpacecontractMapper, SpacecontractEntity> implements SpacecontractService{
public class SpacecontractServiceImpl extends ServiceImpl<SpacecontractMapper, SpacecontractEntity> implements SpacecontractService {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Override
public List<String> findByNums(String contractNumber) {
LambdaQueryWrapper<SpacecontractEntity> wrapper = new LambdaQueryWrapper<>(SpacecontractEntity.class)
.eq(SpacecontractEntity::getContractNumber, contractNumber)
.isNull(SpacecontractEntity::getCeleteTags);
List<SpacecontractEntity> list = this.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
return list.stream().map(SpacecontractEntity::getId).collect(Collectors.toList());
}
//子表过滤方法
@Override
public QueryWrapper<SpacecontractEntity> getChild(ContractPagination pagination, QueryWrapper<SpacecontractEntity> spacecontractQueryWrapper){
boolean pcPermission = false;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String ruleQueryJson = isPc?ContractConstant.getColumnData():ContractConstant.getAppColumnData();
ColumnDataModel dataModel = JsonUtil.getJsonToBean(ruleQueryJson,ColumnDataModel.class);
String ruleJson = isPc?JsonUtil.getObjectToString(dataModel.getRuleList()):JsonUtil.getObjectToString(dataModel.getRuleListApp());
if(isPc){
public QueryWrapper<SpacecontractEntity> getChild(ContractPagination pagination, QueryWrapper<SpacecontractEntity> spacecontractQueryWrapper) {
boolean pcPermission = false;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
String ruleQueryJson = isPc ? ContractConstant.getColumnData() : ContractConstant.getAppColumnData();
ColumnDataModel dataModel = JsonUtil.getJsonToBean(ruleQueryJson, ColumnDataModel.class);
String ruleJson = isPc ? JsonUtil.getObjectToString(dataModel.getRuleList()) : JsonUtil.getObjectToString(dataModel.getRuleListApp());
if (isPc) {
}
return spacecontractQueryWrapper;
}

@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import jnpf.model.QueryModel;
@ -65,6 +66,9 @@ public class VenueReservationRecordServiceImpl extends ServiceImpl<VenueReservat
@Resource
private EnterpriseMerchantsService enterpriseMerchantsService;
@Resource
private ParkService parkService;
@Override
public List<VenueReservationRecordEntity> getList(VenueReservationRecordPagination venueReservationRecordPagination) {
return getTypeList(venueReservationRecordPagination, venueReservationRecordPagination.getDataType());
@ -306,7 +310,11 @@ public class VenueReservationRecordServiceImpl extends ServiceImpl<VenueReservat
@Override
public void delete(VenueReservationRecordEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
boolean result = this.removeById(entity.getId());
if (result) {
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(entity.getSpaceId(), "10"));
}
}
}
@ -359,7 +367,8 @@ public class VenueReservationRecordServiceImpl extends ServiceImpl<VenueReservat
venueReservationRecordForm = JsonUtil.getJsonToBean(
generaterSwapUtil.swapDatetime(VenueReservationRecordConstant.getFormData(), venueReservationRecordForm), VenueReservationRecordForm.class);
VenueReservationRecordEntity entity = JsonUtil.getJsonToBean(venueReservationRecordForm, VenueReservationRecordEntity.class);
//todo 更新空间表
//园区名称
String spaceName = parkService.findNameById(venueReservationRecordForm.getSpaceId());
//商户名称
String merchantName = enterpriseMerchantsService.findNameById(venueReservationRecordForm.getMerchantId());
if (isSave) {
@ -374,8 +383,18 @@ public class VenueReservationRecordServiceImpl extends ServiceImpl<VenueReservat
} else {
entity.setCreationTime(DateUtil.getNowDate());
}
entity.setSpaceName(spaceName);
entity.setMerchantName(merchantName);
this.saveOrUpdate(entity);
boolean result = this.saveOrUpdate(entity);
if (result) {
String status;
if ("1".equals(venueReservationRecordForm.getUsageProgress())) {
status = "40";
} else {
status = "10";
}
//异步处理空间信息
CompletableFuture.runAsync(() -> parkService.updateStatus(entity.getSpaceId(), status));
}
}
}

@ -330,7 +330,7 @@ export default {
leaseTerm: undefined,
contacts: undefined,
contactsPhone: undefined,
contractStatus: "10",
contractStatus: "21",
creationTime: undefined,
contractExplain: undefined,
contractEnclosure: [],
@ -755,40 +755,12 @@ export default {
},
request() {
let _data = this.dataList()
_data.contractStatus = "21";
if (this.dataFormSubmitType == 2) {
this.continueBtnLoading = true
} else {
this.btnLoading = true
}
if (!this.dataForm.id) {
request({
url: '/api/example/Contract',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
if (this.dataFormSubmitType == 2) {
this.$nextTick(() => {
this.clearData()
this.initDefaultData()
})
this.continueBtnLoading = false
return
}
this.visible = false
this.btnLoading = false
this.$emit('refresh', true)
}
})
}).catch(() => {
this.btnLoading = false
this.continueBtnLoading = false
})
} else {
request({
url: '/api/example/Contract/' + this.dataForm.id,
method: 'PUT',
@ -809,7 +781,6 @@ export default {
this.btnLoading = false
this.continueBtnLoading = false
})
}
},
addspacecontractList() {
let item = {

@ -475,7 +475,7 @@ export default {
returnDepositProps: { "label": "fullName", "value": "id" },
contractStatusOptions: [{ "fullName": "待确认", "id": "10" }, { "fullName": "已确认", "id": "20" }, { "fullName": "已结案", "id": "30" }, { "fullName": "待确认", "id": "21" }],
contractStatusProps: { "label": "fullName", "value": "id" },
spacecontractspaceNamecolumnOptions: [{ "label": "园区编码", "value": "code" }, { "label": "园区名称", "value": "name" },],
spacecontractspaceNamecolumnOptions: [{ "label": "空间编码", "value": "code" }, { "label": "空间名称", "value": "name" },],
childIndex: -1,
isEdit: false,
interfaceRes: {

@ -260,7 +260,7 @@ export default {
payDepositProps: { "label": "fullName", "value": "id" },
returnDepositOptions: [{ "fullName": "选项一", "id": "1" }, { "fullName": "选项二", "id": "2" }],
returnDepositProps: { "label": "fullName", "value": "id" },
contractStatusOptions: [{ "fullName": "待确认", "id": "10" }, { "fullName": "已确认", "id": "20" }, { "fullName": "已结案", "id": "30" }, { "fullName": "待确认", "id": "21" }],
contractStatusOptions: [{ "fullName": "待确认", "id": "10" }, { "fullName": "已确认", "id": "20" }, { "fullName": "已结案", "id": "30" }, { "fullName": "合同变更", "id": "21" }],
contractStatusProps: { "label": "fullName", "value": "id" },
tableField130_spaceNamecolumnOptions: [{ "label": "园区编码", "value": "code" }, { "label": "园区名称", "value": "name" },],
interfaceRes: {

@ -88,9 +88,9 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="150">
<template slot-scope="scope">
<el-button type="text" @click="addOrUpdateHandle(scope.row)">
<el-button type="text" v-show="scope.row.usageProgress === '预约中'" @click="addOrUpdateHandle(scope.row)">
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
<el-button type="text" v-show="scope.row.usageProgress === '预约中'" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
<el-button type="text" @click="goDetail(scope.row.id)">
</el-button>

Loading…
Cancel
Save