优化
This commit is contained in:
@ -1,14 +1,10 @@
|
|||||||
package com.ruoyi.web.controller.fbs;
|
package com.ruoyi.web.controller.fbs;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.enums.SubcontractingApplyStatus;
|
|
||||||
import com.ruoyi.common.utils.SecurityUtils;
|
|
||||||
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
|
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
|
||||||
import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService;
|
import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -34,7 +30,6 @@ public class AppFbsProjectSubcontractingApplyController extends BaseController {
|
|||||||
|
|
||||||
private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService;
|
private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增总包方项目分包申请
|
* 新增总包方项目分包申请
|
||||||
*/
|
*/
|
||||||
@ -55,10 +50,6 @@ public class AppFbsProjectSubcontractingApplyController extends BaseController {
|
|||||||
@PutMapping("/{subId}")
|
@PutMapping("/{subId}")
|
||||||
public AjaxResult<Boolean> cancel(@NotNull(message = "主键不能为空")
|
public AjaxResult<Boolean> cancel(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable("subId") Long subId) {
|
@PathVariable("subId") Long subId) {
|
||||||
LambdaUpdateWrapper<ZbfProjectSubcontractingApply> wrapper = Wrappers.<ZbfProjectSubcontractingApply>lambdaUpdate()
|
return AjaxResult.success(iZbfProjectSubcontractingApplyService.cancel(subId));
|
||||||
.eq(ZbfProjectSubcontractingApply::getSubId, subId)
|
|
||||||
.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())
|
|
||||||
.set(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.CANCEL.getCode());
|
|
||||||
return AjaxResult.success(iZbfProjectSubcontractingApplyService.update(wrapper));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,4 +54,17 @@ public class AppFbsProjectSubcontractingController extends BaseController {
|
|||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分包商消息-查询项目分包详细信息")
|
||||||
|
@GetMapping("/message/{applyId}")
|
||||||
|
public AjaxResult<FbsProjectSubcontractingDetailVO> getInfoByApplyId(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("applyId") Long applyId) {
|
||||||
|
ZbfProjectSubcontractingApply apply = iZbfProjectSubcontractingApplyService.getById(applyId);
|
||||||
|
ZbfProjectSubcontracting zbfProjectSubcontracting = iZbfProjectSubcontractingService.queryById(apply.getSubId());
|
||||||
|
FbsProjectSubcontractingDetailVO vo = BeanUtil.copyProperties(zbfProjectSubcontracting, FbsProjectSubcontractingDetailVO.class);
|
||||||
|
vo.setSectionName(zbfProjectSectionService.getById(vo.getSectionId()).getSectionName());
|
||||||
|
vo.setProjectImg(zbfProjectService.getById(vo.getProjectId()).getProjectImg());
|
||||||
|
vo.setApplyStatus(apply.getApplyStatus());
|
||||||
|
return AjaxResult.success(vo);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,10 +29,10 @@ public class ZbfMessageConstant {
|
|||||||
|
|
||||||
//任务审批
|
//任务审批
|
||||||
public static final String ZBF_SIGN_UP_APPLY_HEADLINE = "您申请的【%s】项目【%s】分包,已得到回复!";
|
public static final String ZBF_SIGN_UP_APPLY_HEADLINE = "您申请的【%s】项目【%s】分包,已得到回复!";
|
||||||
public static final String ZBF_SIGN_UP_APPLY_SUBHEADING = "您申请的【%s】任务【%s】分包,审核人【%s】已%s!";
|
public static final String ZBF_SIGN_UP_APPLY_SUBHEADING = "您申请的【%s】项目【%s】分包,审核人【%s】已%s!";
|
||||||
//工资审批
|
//工资审批
|
||||||
public static final String ZBF_PAY_APPLY_HEADLINE = "您【%s】任务【%s】分包工资申请已审批!";
|
public static final String ZBF_PAY_APPLY_HEADLINE = "您【%s】项目【%s】分包工资申请已审批!";
|
||||||
public static final String ZBF_PAY_APPLY_SUBHEADING = "您申请的【%s】任务【%s】分包工资,审核人【%s】已%s!";
|
public static final String ZBF_PAY_APPLY_SUBHEADING = "您申请的【%s】项目【%s】分包工资,审核人【%s】已%s!";
|
||||||
|
|
||||||
|
|
||||||
//分包商->包工头 消息类型
|
//分包商->包工头 消息类型
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.ruoyi.common.util;
|
package com.ruoyi.common.util;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
import cn.hutool.core.util.CreditCodeUtil;
|
||||||
|
import cn.hutool.core.util.IdcardUtil;
|
||||||
|
import cn.hutool.core.util.PhoneUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验工具类
|
* 校验工具类
|
||||||
@ -9,49 +11,79 @@ import java.util.regex.Pattern;
|
|||||||
*/
|
*/
|
||||||
public class ValidUtil {
|
public class ValidUtil {
|
||||||
|
|
||||||
|
//身份证校验
|
||||||
public static boolean isValidIdentityCard(String identityCard) {
|
public static boolean isValidIdentityCard(String identityCard) {
|
||||||
// 允许15位纯数字或者18位身份证,18位身份证最后一位可以是数字或字母X/x
|
return IdcardUtil.isValidCard(identityCard);
|
||||||
return identityCard != null && identityCard.matches("\\d{15}|\\d{17}[\\dXx]");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//银行卡号校验
|
||||||
public static boolean isValidBankCard(String bankCard) {
|
public static boolean isValidBankCard(String bankCard) {
|
||||||
// 简单的银行卡号校验逻辑,可以根据需要进行更复杂的校验
|
// 简单的银行卡号校验逻辑,可以根据需要进行更复杂的校验
|
||||||
return bankCard != null && bankCard.matches("\\d{16,19}");
|
return checkBankCard(bankCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义中国大陆手机号码的正则表达式
|
//手机校验
|
||||||
private static final String MOBILE_REGEX = "^1[3-9]\\d{9}$";
|
|
||||||
private static final Pattern MOBILE_PATTERN = Pattern.compile(MOBILE_REGEX);
|
|
||||||
|
|
||||||
public static boolean isValidChineseMobile(String phoneNumber) {
|
public static boolean isValidChineseMobile(String phoneNumber) {
|
||||||
if (phoneNumber == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 使用正则表达式进行匹配
|
// 使用正则表达式进行匹配
|
||||||
return MOBILE_PATTERN.matcher(phoneNumber).matches();
|
return PhoneUtil.isMobile(phoneNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String BASE_CODE_STRING = "0123456789ABCDEFGHJKLMNPQRTUWXY";
|
|
||||||
private static final char[] BASE_CODE_ARRAY = BASE_CODE_STRING.toCharArray();
|
|
||||||
private static final int[] WEIGHT = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};
|
|
||||||
|
|
||||||
//统一社会信用代码校验
|
//统一社会信用代码校验
|
||||||
public static boolean verifyCreditCode(String code) {
|
public static boolean verifyCreditCode(String code) {
|
||||||
if (code == null || code.length() != 18) {
|
return CreditCodeUtil.isCreditCode(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验银行卡号方法
|
||||||
|
* @param bankCard
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean checkBankCard(String bankCard) {
|
||||||
|
if(bankCard == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
char[] inputCodeArray = code.toCharArray();
|
if(bankCard.length() < 15 || bankCard.length() > 19) {
|
||||||
char checkCode = inputCodeArray[17];
|
return false;
|
||||||
int sum = 0;
|
|
||||||
for (int i = 0; i < 17; i++) {
|
|
||||||
int idx = BASE_CODE_STRING.indexOf(inputCodeArray[i]);
|
|
||||||
if (idx == -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
sum += idx * WEIGHT[i];
|
|
||||||
}
|
}
|
||||||
int modulus = sum % 31;
|
char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
|
||||||
int index = (31 - modulus) % 31;
|
if(bit == 'N'){
|
||||||
return checkCode == BASE_CODE_ARRAY[index];
|
return false;
|
||||||
|
}
|
||||||
|
return bankCard.charAt(bankCard.length() - 1) == bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
|
||||||
|
* @param nonCheckCodeBankCard
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static char getBankCardCheckCode(String nonCheckCodeBankCard){
|
||||||
|
if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0
|
||||||
|
|| !nonCheckCodeBankCard.matches("\\d+")) {
|
||||||
|
//如果传的不是数据返回N
|
||||||
|
return 'N';
|
||||||
|
}
|
||||||
|
char[] chs = nonCheckCodeBankCard.trim().toCharArray();
|
||||||
|
int luhmSum = 0;
|
||||||
|
for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
|
||||||
|
int k = chs[i] - '0';
|
||||||
|
if(j % 2 == 0) {
|
||||||
|
k *= 2;
|
||||||
|
k = k / 10 + k % 10;
|
||||||
|
}
|
||||||
|
luhmSum += k;
|
||||||
|
}
|
||||||
|
return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(isValidIdentityCard("511622198907061135"));
|
||||||
|
System.out.println(isValidBankCard("6217857000014152765"));
|
||||||
|
System.out.println(isValidChineseMobile("15086914548"));
|
||||||
|
System.out.println(verifyCreditCode("91441900678347132K"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectTaskProgress;
|
|
||||||
import com.ruoyi.common.core.domain.entity.ZbfUser;
|
import com.ruoyi.common.core.domain.entity.ZbfUser;
|
||||||
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
@ -215,7 +214,7 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic
|
|||||||
.setMessageLargeType(FBS_LARGE_SETTLEMENT)
|
.setMessageLargeType(FBS_LARGE_SETTLEMENT)
|
||||||
.setIsOperation(OPERATION_NO);
|
.setIsOperation(OPERATION_NO);
|
||||||
fbsMessageService.sendAMessage(fbsMessage);
|
fbsMessageService.sendAMessage(fbsMessage);
|
||||||
zbfMessageService.operation(USERTYPE_BGT, bo.getUserId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName());
|
zbfMessageService.operation(USERTYPE_FBS, bo.getUserId(), USERTYPE_ZBF, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(FbsWageApplication.class).getTableName());
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,14 +127,14 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> {
|
|||||||
*/
|
*/
|
||||||
FbsProjectTaskDetailWageVO fbsWage(Long projectId);
|
FbsProjectTaskDetailWageVO fbsWage(Long projectId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 总包方新增项目
|
* 总包方新增项目
|
||||||
*/
|
*/
|
||||||
Boolean add(ZbfProjectAddDTO dto);
|
Boolean add(ZbfProjectAddDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总包方编辑项目
|
||||||
|
*/
|
||||||
Boolean edit(ZbfProjectAddDTO dto);
|
Boolean edit(ZbfProjectAddDTO dto);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,4 +74,9 @@ public interface IZbfProjectSubcontractingApplyService extends IServicePlus<ZbfP
|
|||||||
* 根据项目Id查询申请
|
* 根据项目Id查询申请
|
||||||
*/
|
*/
|
||||||
List<ZbfProjectSubcontractingApply> queryByProjectId(Long projectId);
|
List<ZbfProjectSubcontractingApply> queryByProjectId(Long projectId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分包商取消项目分包申请
|
||||||
|
*/
|
||||||
|
Boolean cancel(Long subId);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
||||||
@ -268,4 +269,24 @@ public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<Zb
|
|||||||
wrapper.eq(ZbfProjectSubcontractingApply::getProjectId, projectId);
|
wrapper.eq(ZbfProjectSubcontractingApply::getProjectId, projectId);
|
||||||
return baseMapper.selectList(wrapper);
|
return baseMapper.selectList(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean cancel(Long subId) {
|
||||||
|
LambdaUpdateWrapper<ZbfProjectSubcontractingApply> wrapper = Wrappers.<ZbfProjectSubcontractingApply>lambdaUpdate()
|
||||||
|
.eq(ZbfProjectSubcontractingApply::getSubId, subId)
|
||||||
|
.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())
|
||||||
|
.eq(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.APPLY.getCode());
|
||||||
|
|
||||||
|
List<ZbfProjectSubcontractingApply> list = list(wrapper);
|
||||||
|
if(CollectionUtil.isEmpty(list)){
|
||||||
|
throw new BaseException("您还未申请过该分包");
|
||||||
|
}
|
||||||
|
ZbfProjectSubcontractingApply zbfProjectSubcontractingApply = list.get(0);
|
||||||
|
zbfProjectSubcontractingApply.setApplyStatus(SubcontractingApplyStatus.CANCEL.getCode());
|
||||||
|
ZbfProject project = projectService.getById(zbfProjectSubcontractingApply.getProjectId());
|
||||||
|
|
||||||
|
zbfMessageService.operation(USERTYPE_FBS, SecurityUtils.getAppUserId(), USERTYPE_ZBF, project.getUserId(), zbfProjectSubcontractingApply.getId(),SqlHelper.table(ZbfProjectSubcontractingApply.class).getTableName());
|
||||||
|
return updateById(zbfProjectSubcontractingApply);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user