This commit is contained in:
haozq 2025-04-18 14:52:18 +08:00
commit 0e662b426b
16 changed files with 907 additions and 249 deletions

View File

@ -38,9 +38,10 @@ public class BmProjectController extends BaseController {
/**
* 查询工程项目管理列表
*/
@ApiOperation(value = "查询工程项目管理列表")
@RequiresPermissions("basic:project:list")
@ApiOperation(value = "查询项目列表")
// @RequiresPermissions("basic:project:list")
@GetMapping("/list")
@SysLog(title = "项目管理", businessType = OperaType.EXPORT, logType = 1,module = "项目管理->查询项目列表")
public TableDataInfo list(BmProject bmProject) {
startPage();
List<BmProject> list = bmProjectService.selectBmProjectList(bmProject);
@ -50,11 +51,11 @@ public class BmProjectController extends BaseController {
/**
* 导出工程项目管理列表
*/
@ApiOperation(value = "导出工程项目管理列表")
@ApiOperation(value = "导出项目列表")
@PreventRepeatSubmit
@RequiresPermissions("basic:project:export")
@SysLog(title = "工程项目管理", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出工程项目管理")
@PostMapping("/export")
// @RequiresPermissions("basic:project:export")
@SysLog(title = "项目管理", businessType = OperaType.EXPORT, logType = 1,module = "项目管理->导出项目列表")
@GetMapping("/export")
public void export(HttpServletResponse response, BmProject bmProject) {
List<BmProject> list = bmProjectService.selectBmProjectList(bmProject);
ExcelUtil<BmProject> util = new ExcelUtil<BmProject>(BmProject.class);
@ -65,54 +66,46 @@ public class BmProjectController extends BaseController {
* 获取工程项目管理详细信息
*/
@ApiOperation(value = "获取工程项目管理详细信息")
@RequiresPermissions("basic:project:query")
@GetMapping(value = "/{projectId}")
public AjaxResult getInfo(@PathVariable("projectId") Long projectId) {
return success(bmProjectService.selectBmProjectByProjectId(projectId));
// @RequiresPermissions("basic:project:query")
@GetMapping(value = "getDetailById")
public AjaxResult getDetailById(BmProject bmProject) {
return bmProjectService.selectBmProjectByProjectId(bmProject);
}
/**
* 新增工程项目管理
*/
@ApiOperation(value = "新增工程项目管理")
@PreventRepeatSubmit
@RequiresPermissions("basic:project:add")
@SysLog(title = "工程项目管理", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增工程项目管理")
@PostMapping
@ApiOperation(value = "新增项目管理")
// @PreventRepeatSubmit
// @RequiresPermissions("basic:project:add")
@SysLog(title = "项目管理", businessType = OperaType.INSERT, logType = 1,module = "项目管理->新增项目")
@PostMapping("addProject")
public AjaxResult add(@RequestBody BmProject bmProject) {
try {
return toAjax(bmProjectService.insertBmProject(bmProject));
} catch (Exception e) {
return error("系统错误, " + e.getMessage());
}
return bmProjectService.insertBmProject(bmProject);
}
/**
* 修改工程项目管理
*/
@ApiOperation(value = "修改工程项目管理")
@PreventRepeatSubmit
@RequiresPermissions("basic:project:edit")
@SysLog(title = "工程项目管理", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改工程项目管理")
@PostMapping("/edit")
@ApiOperation(value = "修改项目")
// @PreventRepeatSubmit
// @RequiresPermissions("basic:project:edit")
@SysLog(title = "项目管理", businessType = OperaType.UPDATE, logType = 1,module = "项目管理->修改项目")
@PostMapping("/editProject")
public AjaxResult edit(@RequestBody BmProject bmProject) {
try {
return toAjax(bmProjectService.updateBmProject(bmProject));
} catch (Exception e) {
return error("系统错误, " + e.getMessage());
}
return bmProjectService.updateBmProject(bmProject);
}
/**
* 删除工程项目管理
*/
@ApiOperation(value = "删除工程项目管理")
@PreventRepeatSubmit
@RequiresPermissions("basic:project:remove")
@SysLog(title = "工程项目管理", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除工程项目管理")
@PostMapping("/del/{projectIds}")
public AjaxResult remove(@PathVariable Long[] projectIds) {
return toAjax(bmProjectService.deleteBmProjectByProjectIds(projectIds));
@ApiOperation(value = "删除项目")
// @PreventRepeatSubmit
// @RequiresPermissions("basic:project:remove")
@SysLog(title = "项目管理", businessType = OperaType.DELETE, logType = 1,module = "项目管理->删除项目")
@PostMapping("/delProject")
public AjaxResult remove(@RequestBody BmProject bmProject) {
return bmProjectService.deleteBmProjectByProjectIds(bmProject);
}
/**

View File

@ -8,10 +8,16 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import com.bonus.common.core.web.domain.BaseEntity;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
/**
* 工程项目管理对象 bm_project
*
*
* @author xsheng
* @date 2025-01-09
*/
@ -22,61 +28,128 @@ import com.bonus.common.core.web.domain.BaseEntity;
public class BmProject extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键,工程ID */
/**关键字*/
private String keyWord;
/**
* 主键,工程ID
*/
@NotNull(message = "id不能为空", groups = {Edit.class, Del.class})
private Long projectId;
/** 工程项目名称 */
@Excel(name = "工程项目名称")
@ApiModelProperty(value = "工程项目名称")
@ApiModelProperty(value = "分公司名称")
private String companyName;
/**
* 项目名称
*/
@Excel(name = "项目名称")
@ApiModelProperty(value = "项目名称")
@NotBlank(message = "项目名称不能为空", groups = {Add.class, Edit.class})
@Length(max = 255, message = "项目名称字符长度不能超过255", groups = {Add.class, Edit.class})
private String projectName;
/** 计划开工日期 */
@ApiModelProperty(value = "计划开工日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划开工日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date planStartTime;
/** 计划竣工日期 */
@ApiModelProperty(value = "计划竣工日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划竣工日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date planEndTime;
/** 项目金额(万元) */
@Excel(name = "项目金额", readConverterExp = "万=元")
private BigDecimal projectAmount;
/** 所属公司ID */
@Excel(name = " 所属公司ID")
@ApiModelProperty(value = " 所属公司ID")
private Long companyId;
/** 业主单位 */
@Excel(name = "业主单位")
@ApiModelProperty(value = "业主单位")
private String ownerUnit;
/** 项目状态0筹建 1在建 2部分投运 3投运 4停工 */
@Excel(name = "项目状态", readConverterExp = "0=筹建,1=在建,2=部分投运,3=投运,4=停工")
private String projectStatus;
/** 项目规模 */
@Excel(name = "项目规模")
@ApiModelProperty(value = "项目规模")
private String projectScale;
/** 项目负责人 */
@Excel(name = "项目负责人")
@ApiModelProperty(value = "项目负责人")
private String projectManager;
/** 地址 */
@Excel(name = "地址")
@ApiModelProperty(value = "地址")
/**
* 地址
*/
@Excel(name = "项目地址")
@ApiModelProperty(value = "项目地址")
@Length(max = 255, message = "项目地址字符长度不能超过100", groups = {Add.class, Edit.class})
private String address;
/** 删除标志0代表存在 2代表删除 */
/**
* 计划开工日期
*/
@ApiModelProperty(value = "计划开工日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@Excel(name = "计划开工日期", width = 30, dateFormat = "yyyy-MM-dd")
@NotNull(message = "计划开工日期", groups = {Add.class, Edit.class})
private Date planStartTime;
/**
* 计划竣工日期
*/
@ApiModelProperty(value = "计划竣工日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划竣工日期", width = 30, dateFormat = "yyyy-MM-dd")
@NotNull(message = "计划竣工日期", groups = {Add.class, Edit.class})
private Date planEndTime;
/**
* 业主单位
*/
@Excel(name = "业主单位")
@ApiModelProperty(value = "业主单位")
@NotBlank(message = "业主单位不能为空", groups = {Add.class, Edit.class})
@Length(max = 255, message = "业主单位字符长度不能超过255", groups = {Add.class, Edit.class})
private String ownerUnit;
/**
* 项目状态0筹建 1在建 2部分投运 3投运 4停工
*/
@Excel(name = "项目状态")
@NotBlank(message = "项目状态不能为空", groups = {Add.class, Edit.class})
private String projectStatus;
/**
* 标段数量
*/
@Excel(name = "标段工程数量")
private int bidNum;
/**
* 项目金额万元
*/
private BigDecimal projectAmount;
/**
* 所属公司ID
*/
@ApiModelProperty(value = " 所属公司ID")
@NotNull(message = "所属公司ID不能为空", groups = {Add.class, Edit.class})
private Long companyId;
/**
* 项目规模
*/
@ApiModelProperty(value = "项目规模")
@Length(max = 255, message = "项目规模字符长度不能超过255", groups = {Add.class, Edit.class})
private String projectScale;
/**
* 项目负责人
*/
@ApiModelProperty(value = "项目负责人")
@Length(max = 100, message = "项目负责人字符长度不能超过100", groups = {Add.class, Edit.class})
private String projectManager;
/**
* 删除标志0代表存在 2代表删除
*/
private String delFlag;
/**
* 新增条件限制
*/
public interface Add {
}
/**
* 修改条件限制
*/
public interface Edit {
}
/**
* 删除条件限制
*/
public interface Del {
}
}

View File

@ -1,60 +1,52 @@
package com.bonus.base.basic.mapper;
import java.util.List;
import com.bonus.base.basic.domain.BmProject;
import org.apache.ibatis.annotations.Param;
/**
* 工程项目管理Mapper接口
*
*
* @author xsheng
* @date 2025-01-09
*/
public interface BmProjectMapper {
/**
* 查询工程项目管理
*
* @param projectId 工程项目管理主键
*
* @param bmProject 工程项目管理主键
* @return 工程项目管理
*/
public BmProject selectBmProjectByProjectId(Long projectId);
public BmProject selectBmProjectByProjectId(BmProject bmProject);
/**
* 查询工程项目管理列表
*
*
* @param bmProject 工程项目管理
* @return 工程项目管理集合
*/
public List<BmProject> selectBmProjectList(BmProject bmProject);
/**
* 新增工程项目管理
*
* @param bmProject 工程项目管理
* @return 结果
* 校验数据是否重复
*
* @param vo
* @param projectName
* @param columnName
* @return int
* @author cwchen
* @date 2025/4/17 16:34
*/
public int insertBmProject(BmProject bmProject);
int queryValueIsExist(@Param("params") BmProject vo,@Param("value") String projectName,@Param("columnName") String columnName);
/**
* 修改工程项目管理
*
* @param bmProject 工程项目管理
* @return 结果
* 新增/修改/删除项目
* @param vo
* @param type
* @return void
* @author cwchen
* @date 2025/4/17 16:35
*/
public int updateBmProject(BmProject bmProject);
/**
* 删除工程项目管理
*
* @param projectId 工程项目管理主键
* @return 结果
*/
public int deleteBmProjectByProjectId(Long projectId);
/**
* 批量删除工程项目管理
*
* @param projectIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteBmProjectByProjectIds(Long[] projectIds);
void addOrUpdateProject(@Param("params") BmProject vo, @Param("type") int type);
}

View File

@ -2,6 +2,7 @@ package com.bonus.base.basic.service;
import java.util.List;
import com.bonus.base.basic.domain.BmProject;
import com.bonus.common.core.web.domain.AjaxResult;
/**
* 工程项目管理Service接口
@ -13,10 +14,10 @@ public interface IBmProjectService {
/**
* 查询工程项目管理
*
* @param projectId 工程项目管理主键
* @param bmProject 工程项目管理主键
* @return 工程项目管理
*/
public BmProject selectBmProjectByProjectId(Long projectId);
public AjaxResult selectBmProjectByProjectId(BmProject bmProject);
/**
* 查询工程项目管理列表
@ -32,7 +33,7 @@ public interface IBmProjectService {
* @param bmProject 工程项目管理
* @return 结果
*/
public int insertBmProject(BmProject bmProject);
public AjaxResult insertBmProject(BmProject bmProject);
/**
* 修改工程项目管理
@ -40,21 +41,14 @@ public interface IBmProjectService {
* @param bmProject 工程项目管理
* @return 结果
*/
public int updateBmProject(BmProject bmProject);
public AjaxResult updateBmProject(BmProject bmProject);
/**
* 批量删除工程项目管理
*
* @param projectIds 需要删除的工程项目管理主键集合
* @param bmProject 需要删除的工程项目管理主键集合
* @return 结果
*/
public int deleteBmProjectByProjectIds(Long[] projectIds);
public AjaxResult deleteBmProjectByProjectIds(BmProject bmProject);
/**
* 删除工程项目管理信息
*
* @param projectId 工程项目管理主键
* @return 结果
*/
public int deleteBmProjectByProjectId(Long projectId);
}

View File

@ -1,14 +1,26 @@
package com.bonus.base.basic.service.impl;
import java.util.List;
import java.util.Optional;
import com.bonus.base.basic.domain.vo.ProDepartVo;
import com.bonus.base.basic.domain.vo.UnitVo;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.common.security.utils.ValidatorsUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bonus.base.basic.mapper.BmProjectMapper;
import com.bonus.base.basic.domain.BmProject;
import com.bonus.base.basic.service.IBmProjectService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
/**
* 工程项目管理Service业务层处理
@ -17,10 +29,15 @@ import com.bonus.base.basic.service.IBmProjectService;
* @date 2025-01-09
*/
@Service
@Slf4j
public class BmProjectServiceImpl implements IBmProjectService {
@Autowired
private BmProjectMapper bmProjectMapper;
@Resource(name = "ValidatorsUtils")
private ValidatorsUtils validatorsUtils;
/**
* 查询工程项目管理
*
@ -28,8 +45,14 @@ public class BmProjectServiceImpl implements IBmProjectService {
* @return 工程项目管理
*/
@Override
public BmProject selectBmProjectByProjectId(Long projectId) {
return bmProjectMapper.selectBmProjectByProjectId(projectId);
public AjaxResult selectBmProjectByProjectId(BmProject bmProject) {
try {
BmProject vo = Optional.ofNullable(bmProjectMapper.selectBmProjectByProjectId(bmProject)).orElseGet(BmProject::new);
return AjaxResult.success(vo);
} catch (Exception e) {
log.error(e.toString(),e);
return AjaxResult.error();
}
}
/**
@ -40,62 +63,90 @@ public class BmProjectServiceImpl implements IBmProjectService {
*/
@Override
public List<BmProject> selectBmProjectList(BmProject bmProject) {
bmProject.setCompanyId(SecurityUtils.getLoginUser().getSysUser().getCompanyId());
return bmProjectMapper.selectBmProjectList(bmProject);
}
/**
* 新增工程项目管理
*
* @param bmProject 工程项目管理
* @param vo 工程项目管理
* @return 结果
*/
@Override
public int insertBmProject(BmProject bmProject) {
bmProject.setCreateTime(DateUtils.getNowDate());
bmProject.setCompanyId(SecurityUtils.getLoginUser().getSysUser().getCompanyId());
@Transactional(rollbackFor = Exception.class)
public AjaxResult insertBmProject(BmProject vo) {
try {
return bmProjectMapper.insertBmProject(bmProject);
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BmProject.Add.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
// 校验项目名称是否重复
int flag = bmProjectMapper.queryValueIsExist(vo,vo.getProjectName(),"project_name");
if (flag > 0) return AjaxResult.error("公司名称已存在");
vo.setCreateTime(DateUtils.getNowDate());
vo.setUpdateTime(DateUtils.getNowDate());
vo.setCreateBy(SecurityUtils.getUsername());
vo.setUpdateBy(SecurityUtils.getUsername());
bmProjectMapper.addOrUpdateProject(vo,1);
return AjaxResult.success();
} catch (Exception e) {
throw new ServiceException("错误信息描述");
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
/**
* 修改工程项目管理
*
* @param bmProject 工程项目管理
* @param vo 工程项目管理
* @return 结果
*/
@Override
public int updateBmProject(BmProject bmProject) {
bmProject.setUpdateTime(DateUtils.getNowDate());
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateBmProject(BmProject vo) {
try {
return bmProjectMapper.updateBmProject(bmProject);
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BmProject.Edit.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
// 校验项目名称是否重复
int flag = bmProjectMapper.queryValueIsExist(vo,vo.getProjectName(),"project_name");
if (flag > 0) return AjaxResult.error("项目名称已存在");
vo.setUpdateTime(DateUtils.getNowDate());
vo.setUpdateBy(SecurityUtils.getUsername());
bmProjectMapper.addOrUpdateProject(vo,2);
return AjaxResult.success();
} catch (Exception e) {
throw new ServiceException("错误信息描述");
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
/**
* 批量删除工程项目管理
*
* @param projectIds 需要删除的工程项目管理主键
* @param vo 需要删除的工程项目管理主键
* @return 结果
*/
@Override
public int deleteBmProjectByProjectIds(Long[] projectIds) {
return bmProjectMapper.deleteBmProjectByProjectIds(projectIds);
}
/**
* 删除工程项目管理信息
*
* @param projectId 工程项目管理主键
* @return 结果
*/
@Override
public int deleteBmProjectByProjectId(Long projectId) {
return bmProjectMapper.deleteBmProjectByProjectId(projectId);
@Transactional(rollbackFor = Exception.class)
public AjaxResult deleteBmProjectByProjectIds(BmProject vo) {
try {
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BmProject.Del.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
bmProjectMapper.addOrUpdateProject(vo,3);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
}

View File

@ -42,7 +42,7 @@ public class ProDepartServiceImpl implements ProDepartService {
}
// 校验项目部名称是否重复
int flag = mapper.queryValueIsExist(vo,vo.getDepartName(),vo.getBranchCompanyId(),"depart_name");
if (flag > 0) return AjaxResult.error("公司名称已存在");
if (flag > 0) return AjaxResult.error("项目部名称已存在");
mapper.addOrUpdateDepart(vo,1);
return AjaxResult.success();
} catch (Exception e) {

View File

@ -0,0 +1,159 @@
package com.bonus.base.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.List;
public interface JsonHelper {
public String jsonSerialize(Object value);
public <T> T jsonDeserialize(String value, Class<?> tClass);
/**
* 将任意bean转换成json字符串
* fast json
* @param bean
* @param <T>
* @return
*/
public static <T> String beanToJsonStr(T bean) {
String jsonStr = JSON.toJSONString(bean);
return jsonStr;
}
/**
* 把一个json字符串转换成bean对象
* fast json
* @param str
* @param <T>
* @return
*/
public static <T> T jsonStrToBean(String str, Class<T> clazz) {
T bean = JSON.parseObject(str, clazz);
return bean;
}
/**
* 把一个jsonObj转换成bean对象
* fast json
* @param jsonObj
* @param <T>
* @return
*/
public static <T> T jsonObjToBean(JSONObject jsonObj, Class<T> clazz) {
String s = jsonObj.toJSONString();
T bean = JSON.parseObject(s, clazz);
return bean;
}
/**
* 把一个bean对象转换成jsonObj
* fast json
* @param bean
* @param <T>
* @return
*/
public static <T> JSONObject beanToJsonObj(T bean) {
Object o = JSON.toJSON(bean);
return (JSONObject) o;
}
/**
* 把一个jsonStr转换成jsonObj
* fast json
* @param str
* @return
*/
public static JSONObject jsonStrToJsonObj(String str) {
Object o = JSON.parseObject(str);
return (JSONObject) o;
}
/**
* 把一个jsonObj转换成jsonStr
* fast json
* @param jsonObj
* @return
*/
public static String jsonObjToJsonStr(JSONObject jsonObj) {
String s = jsonObj.toJSONString();
return s;
}
/**
* 把一个beanList对象转换成jsonArrStr
* fast json
* @param beanList
* @param <T>
* @return
*/
public static <T> JSONArray beanListToJsonArrStr(List<T> beanList) {
Object o = JSON.toJSON(beanList);
return (JSONArray) o;
}
/**
* 把一个jsonArrStr转换成beanList对象
* fast json
* @param jsonArrStr
* @param <T>
* @return
*/
public static <T> List<T> jsonArrStrToBeanList(String jsonArrStr,Class<T> clazz) {
List<T> ts = JSON.parseArray(jsonArrStr, clazz);
return ts;
}
/**
* 把一个JsonArr转换成JsonArrStr
* fast json
* @param jsonArr
* @return
*/
public static String jsonArrToJsonArrStr(JSONArray jsonArr) {
String s = JSON.toJSONString(jsonArr);
return s;
}
/**
* 把一个JsonArrStr文本转换成JsonArr
* fast json
* @param jsonArrStr
* @return
*/
public static JSONArray jsonArrStrToJsonArr(String jsonArrStr) {
Object o = JSON.parse(jsonArrStr);
return (JSONArray) o;
}
/**
* 把一个JsonArr转换成beanList
* fast json
* @param jsonArr
* @return
*/
public static <T> List<T> jsonArrToBeanList(JSONArray jsonArr,Class<T> clazz) {
String s = JSON.toJSONString(jsonArr);
List<T> ts = JSON.parseArray(s, clazz);
return ts;
}
/**
* 把一个beanList文本转换成JsonArr
* fast json
* @param beanList
* @return
*/
public static <T> JSONArray beanListToJsonArr(List<T> beanList) {
Object o = JSON.toJSON(beanList);
return (JSONArray) o;
}
}

View File

@ -22,5 +22,10 @@ public class TypeCodeUtils {
*/
public final static String SJK_CODE="9000300";
/**
* 塔吊设备
*/
public final static String TC_CODE="9000400";
}

View File

@ -0,0 +1,85 @@
package com.bonus.base.screen.controller;
import com.bonus.base.basic.domain.CollectDevVo;
import com.bonus.base.basic.domain.ConstInfoVo;
import com.bonus.base.common.utils.TypeCodeUtils;
import com.bonus.base.screen.domain.DeviceAlarmVo;
import com.bonus.base.screen.domain.ProjectOverviewVo;
import com.bonus.base.screen.domain.TowerCraneInfoVo;
import com.bonus.base.screen.service.ExcavationDetectionService;
import com.bonus.base.screen.service.TowerCraneDetectionService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* 塔吊监测
* @author fl
* @date 2025/4/18
*/
@Slf4j
@RestController
@RequestMapping("/towerCraneDetection")
public class TowerCraneDetectionController extends BaseController {
@Resource
private TowerCraneDetectionService service;
@ApiOperation(value = "塔吊设备列表")
@PostMapping("/getConstDeviceList")
public AjaxResult getCollectDeviceList(@RequestBody ConstInfoVo constInfoVo) {
try {
List<ConstInfoVo> collectDevVoList = service.getConstDeviceList(constInfoVo);
return success(collectDevVoList);
}catch (Exception e){
log.error("查询塔吊设备列表失败",e.getMessage());
return error("查询塔吊设备列表失败");
}
}
@ApiOperation(value = "塔吊设备信息")
@PostMapping("/getConstDeviceMsgById")
public AjaxResult getConstDeviceMsgById(@RequestBody ConstInfoVo constInfoVo) {
try {
TowerCraneInfoVo vo = service.getConstDeviceMsgById(constInfoVo);
return success(vo);
}catch (Exception e){
log.error("查询塔吊设备信息失败",e.getMessage());
return error("查询塔吊设备信息失败");
}
}
@ApiOperation(value = "塔吊实时运行信息")
@PostMapping("/getTowerCraneRunMsgById")
public AjaxResult getTowerCraneRunMsgById(@RequestBody ConstInfoVo constInfoVo) {
try {
return service.getTowerCraneRunMsgById(constInfoVo);
}catch (Exception e){
log.error("获取塔吊实时运行信息失败",e.getMessage());
return error("塔吊实时运行信息失败");
}
}
@ApiOperation(value = "塔吊报警信息")
@PostMapping("/getTowerCraneAlarmList")
public AjaxResult getTowerCraneAlarmList(@RequestBody ConstInfoVo constInfoVo) {
try {
List<DeviceAlarmVo> deviceAlarmVoList = service.getTowerCraneAlarmList(constInfoVo);
return success(deviceAlarmVoList);
}catch (Exception e){
log.error("查询塔吊报警信息失败",e.getMessage());
return error("查询塔吊报警信息失败");
}
}
}

View File

@ -0,0 +1,58 @@
package com.bonus.base.screen.domain;
import lombok.Data;
/**
* @author fly
* 塔吊设备信息
*/
@Data
public class TowerCraneInfoVo {
/**
* 设备名称
*/
private String name;
/**
* 设备编号
*/
private String num;
/**
* 设备厂家
*/
private String manufacturer;
/**
* 型号规格
*/
private String model;
/**
* 所在班组
*/
private String team;
/**
* 安装单位
*/
private String installationUnit;
/**
* 安装时间
*/
private String installDate;
/**
* 塔高
*/
private Double towerHeight;
/**
* 臂长
*/
private Integer boomLength;
private String faceMachineNum;
}

View File

@ -0,0 +1,38 @@
package com.bonus.base.screen.mapper;
import com.bonus.base.basic.domain.CollectDevVo;
import com.bonus.base.basic.domain.ConstInfoVo;
import com.bonus.base.screen.domain.DeviceAlarmVo;
import com.bonus.base.screen.domain.MapValueVo;
import java.util.List;
public interface TowerCraneDetectionMapper {
/**
* 查询塔吊设备列表
* @param constInfoVo
* @return
*/
List<ConstInfoVo> getConstDeviceList(ConstInfoVo constInfoVo);
/**
* 塔吊报警信息
* @param constInfoVo
* @return
*/
List<DeviceAlarmVo> getTowerCraneAlarmList(ConstInfoVo constInfoVo);
/**
* 根据id查询具体塔吊设备信息
* @param constInfoVo
* @return
*/
ConstInfoVo getConstDeviceMsgById(ConstInfoVo constInfoVo);
/**
* 根据id查询具体实时运行信息
* @param constInfoVo
* @return
*/
List<MapValueVo> getTowerCraneRunMsgById(ConstInfoVo constInfoVo);
}

View File

@ -0,0 +1,39 @@
package com.bonus.base.screen.service;
import com.bonus.base.basic.domain.CollectDevVo;
import com.bonus.base.basic.domain.ConstInfoVo;
import com.bonus.base.screen.domain.DeviceAlarmVo;
import com.bonus.base.screen.domain.ProjectOverviewVo;
import com.bonus.base.screen.domain.TowerCraneInfoVo;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
public interface TowerCraneDetectionService {
/**
* 查询塔吊设备列表
* @param constInfoVo
* @return
*/
List<ConstInfoVo> getConstDeviceList(ConstInfoVo constInfoVo);
/**
* 塔吊报警信息
* @param constInfoVo
* @return
*/
List<DeviceAlarmVo> getTowerCraneAlarmList(ConstInfoVo constInfoVo);
/**
* 根据id查询具体塔吊设备信息
* @param constInfoVo
* @return
*/
TowerCraneInfoVo getConstDeviceMsgById(ConstInfoVo constInfoVo);
/**
* 根据id查询具体实时运行信息
* @param constInfoVo
* @return
*/
AjaxResult getTowerCraneRunMsgById(ConstInfoVo constInfoVo);
}

View File

@ -0,0 +1,81 @@
package com.bonus.base.screen.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.bonus.base.basic.domain.ConstInfoVo;
import com.bonus.base.common.utils.JsonHelper;
import com.bonus.base.common.utils.TypeCodeUtils;
import com.bonus.base.screen.domain.DeviceAlarmVo;
import com.bonus.base.screen.domain.MapValueVo;
import com.bonus.base.screen.domain.TowerCraneInfoVo;
import com.bonus.base.screen.mapper.TowerCraneDetectionMapper;
import com.bonus.base.screen.service.TowerCraneDetectionService;
import com.bonus.common.core.web.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author fl
* @date 2025/4/18
*/
@Slf4j
@Service
public class TowerCraneDetectionServiceImpl implements TowerCraneDetectionService {
@Resource
private TowerCraneDetectionMapper mapper;
/**
* 查询塔吊设备列表
* @param constInfoVo
* @return
*/
@Override
public List<ConstInfoVo> getConstDeviceList(ConstInfoVo constInfoVo) {
//设置查询类型
constInfoVo.setTypeCode(TypeCodeUtils.TC_CODE);
List<ConstInfoVo> collectDevVoList = mapper.getConstDeviceList(constInfoVo);
return collectDevVoList;
}
/**
* 塔吊报警信息
* @param constInfoVo
* @return
*/
@Override
public List<DeviceAlarmVo> getTowerCraneAlarmList(ConstInfoVo constInfoVo) {
List<DeviceAlarmVo> deviceAlarmVoList = mapper.getTowerCraneAlarmList(constInfoVo);
return deviceAlarmVoList;
}
/**
* 根据id查询具体塔吊设备信息
* @param constInfoVo
* @return
*/
@Override
public TowerCraneInfoVo getConstDeviceMsgById(ConstInfoVo constInfoVo) {
ConstInfoVo c = mapper.getConstDeviceMsgById(constInfoVo);
TowerCraneInfoVo deviceDetail = new TowerCraneInfoVo();
if(c != null && c.getConfigData() != null){
JSONObject jsonObject = JsonHelper.jsonStrToJsonObj(c.getConfigData());
deviceDetail = JsonHelper.jsonObjToBean(jsonObject.getJSONObject("deviceDetail"), TowerCraneInfoVo.class);
}
return deviceDetail;
}
/**
* 根据id查询具体实时运行信息
* @param constInfoVo
* @return
*/
@Override
public AjaxResult getTowerCraneRunMsgById(ConstInfoVo constInfoVo) {
List<MapValueVo> list = mapper.getTowerCraneRunMsgById(constInfoVo);
return AjaxResult.success(list);
}
}

View File

@ -27,98 +27,135 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select project_id, project_name, plan_start_time, plan_end_time, project_amount, company_id, owner_unit, project_status, project_scale, project_manager, address, del_flag, create_by, create_time, update_by, update_time, remark from bm_project
</sql>
<select id="selectBmProjectList" parameterType="com.bonus.base.basic.domain.BmProject" resultMap="BmProjectResult">
<include refid="selectBmProjectVo"/>
<where>
<if test="projectName != null and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
<if test="planStartTime != null "> and plan_start_time = #{planStartTime}</if>
<if test="planEndTime != null "> and plan_end_time = #{planEndTime}</if>
<if test="projectAmount != null "> and project_amount = #{projectAmount}</if>
<if test="companyId != null "> and company_id = #{companyId}</if>
<if test="ownerUnit != null and ownerUnit != ''"> and owner_unit = #{ownerUnit}</if>
<if test="projectStatus != null and projectStatus != ''"> and project_status = #{projectStatus}</if>
<if test="projectScale != null and projectScale != ''"> and project_scale = #{projectScale}</if>
<if test="projectManager != null and projectManager != ''"> and project_manager = #{projectManager}</if>
<if test="address != null and address != ''"> and address = #{address}</if>
<select id="selectBmProjectList" parameterType="com.bonus.base.basic.domain.BmProject" resultType="com.bonus.base.basic.domain.BmProject">
SELECT bp.project_name AS projectName,
bp.address,
bp.plan_start_time AS planStartTime,
bp.plan_end_time AS planEndTime,
bp.owner_unit AS ownerUnit,
bp.project_id AS projectId,
sdd.dict_label AS projectStatus,
IFNULL(A.num,0) AS bidNum,
tbc.company_name AS companyName
FROM bm_project bp
LEFT JOIN sys_dict_data sdd ON bp.project_status = sdd.dict_value AND sdd.dict_type = 'pro_status'
LEFT JOIN tb_branch_company tbc ON bp.company_id = tbc.id
LEFT JOIN (
SELECT project_id,COUNT(*) AS num
FROM bm_project_lot
WHERE del_flag = '0'
GROUP BY project_id
) A ON A.project_id = bp.project_id
<where>
<if test="companyId!=null">
AND bp.company_id = #{companyId}
</if>
<if test="keyWord!=null and keyWord!=''">
AND (
INSTR(bp.project_name,#{keyWord}) > 0 OR
INSTR(bp.owner_unit,#{keyWord}) > 0 OR
INSTR(bp.address,#{keyWord}) > 0
)
</if>
<if test="projectStatus!=null and projectStatus!=''">
AND bp.project_status = #{projectStatus}
</if>
AND bp.del_flag = '0'
ORDER BY bp.create_time DESC
</where>
</select>
<select id="selectBmProjectByProjectId" parameterType="Long" resultMap="BmProjectResult">
<include refid="selectBmProjectVo"/>
where project_id = #{projectId}
<select id="selectBmProjectByProjectId" parameterType="com.bonus.base.basic.domain.BmProject" resultType="com.bonus.base.basic.domain.BmProject">
SELECT project_id AS projectId,
project_name AS projectName,
plan_start_time AS planStartTime,
plan_end_time AS planEndTime,
project_amount AS projectAmount,
company_id AS companyId,
owner_unit AS ownerUnit,
project_status AS projectStatus,
project_scale AS projectScale,
project_manager AS projectManager,
address,
remark
FROM bm_project
WHERE project_id = #{projectId}
</select>
<insert id="insertBmProject" parameterType="com.bonus.base.basic.domain.BmProject" useGeneratedKeys="true" keyProperty="projectId">
insert into bm_project
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectName != null and projectName != ''">project_name,</if>
<if test="planStartTime != null">plan_start_time,</if>
<if test="planEndTime != null">plan_end_time,</if>
<if test="projectAmount != null">project_amount,</if>
<if test="companyId != null">company_id,</if>
<if test="ownerUnit != null and ownerUnit != ''">owner_unit,</if>
<if test="projectStatus != null">project_status,</if>
<if test="projectScale != null">project_scale,</if>
<if test="projectManager != null">project_manager,</if>
<if test="address != null">address,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectName != null and projectName != ''">#{projectName},</if>
<if test="planStartTime != null">#{planStartTime},</if>
<if test="planEndTime != null">#{planEndTime},</if>
<if test="projectAmount != null">#{projectAmount},</if>
<if test="companyId != null">#{companyId},</if>
<if test="ownerUnit != null and ownerUnit != ''">#{ownerUnit},</if>
<if test="projectStatus != null">#{projectStatus},</if>
<if test="projectScale != null">#{projectScale},</if>
<if test="projectManager != null">#{projectManager},</if>
<if test="address != null">#{address},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
<!--校验数据是否重复-->
<select id="queryValueIsExist" resultType="java.lang.Integer">
<if test="params.projectId==null">
SELECT COUNT(1)
FROM bm_project
WHERE ${columnName} = #{value} AND del_flag = '0'
</if>
<if test="params.projectId!=null ">
SELECT COUNT(1)
FROM bm_project
WHERE ${columnName} = #{value} AND project_id != #{params.projectId} AND del_flag = '0'
</if>
</select>
<!--新增/修改/删除项目-->
<insert id="addOrUpdateProject">
<if test="type == 1">
insert into bm_project
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="params.projectName != null and params.projectName!=''">project_name,</if>
<if test="params.planStartTime != null">plan_start_time,</if>
<if test="params.planEndTime != null">plan_end_time,</if>
<if test="params.projectAmount != null">project_amount,</if>
<if test="params.companyId != null">company_id,</if>
<if test="params.ownerUnit != null and params.ownerUnit!=''">owner_unit,</if>
<if test="params.projectStatus != null and params.projectStatus!=''">project_status,</if>
<if test="params.projectScale != null and params.projectScale!=''">project_scale,</if>
<if test="params.projectManager != null and params.projectManager!=''">project_manager,</if>
<if test="params.address != null and params.address!=''">address,</if>
<if test="params.createBy != null and params.createBy!=''">create_by,</if>
<if test="params.createTime != null">create_time,</if>
<if test="params.updateBy != null and params.updateBy!=''">update_by,</if>
<if test="params.updateTime != null">update_time,</if>
<if test="params.remark != null and params.remark!=''">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="params.projectName != null and params.projectName!=''">#{params.projectName},</if>
<if test="params.planStartTime != null">#{params.planStartTime},</if>
<if test="params.planEndTime != null">#{params.planEndTime},</if>
<if test="params.projectAmount != null">#{params.projectAmount},</if>
<if test="params.companyId != null">#{params.companyId},</if>
<if test="params.ownerUnit != null and params.ownerUnit!=''">#{params.ownerUnit},</if>
<if test="params.projectStatus != null and params.projectStatus!=''">#{params.projectStatus},</if>
<if test="params.projectScale != null and params.projectScale!=''">#{params.projectScale},</if>
<if test="params.projectManager != null and params.projectManager!=''">#{params.projectManager},</if>
<if test="params.address != null and params.address!=''">#{params.address},</if>
<if test="params.createBy != null and params.createBy!=''">#{params.createBy},</if>
<if test="params.createTime != null">#{params.createTime},</if>
<if test="params.updateBy != null and params.updateBy!=''">#{params.updateBy},</if>
<if test="params.updateTime != null">#{params.updateTime},</if>
<if test="params.remark != null and params.remark!=''">#{params.remark},</if>
</trim>
</if>
<if test="type == 2">
UPDATE bm_project
<trim prefix="SET " suffixOverrides=",">
project_name = #{params.projectName},
plan_start_time = #{params.planStartTime},
plan_end_time = #{params.planEndTime},
project_amount = #{params.projectAmount},
company_id = #{params.companyId},
owner_unit = #{params.ownerUnit},
project_status = #{params.projectStatus},
project_scale = #{params.projectScale},
address = #{params.address},
update_by = #{params.updateBy},
update_time = #{params.updateTime},
remark = #{params.remark},
</trim>
WHERE project_id = #{params.projectId}
</if>
<if test="type == 3">
UPDATE bm_project SET del_flag = '1' WHERE project_id = #{params.projectId}
</if>
</insert>
<update id="updateBmProject" parameterType="com.bonus.base.basic.domain.BmProject">
update bm_project
<trim prefix="SET" suffixOverrides=",">
<if test="projectName != null and projectName != ''">project_name = #{projectName},</if>
<if test="planStartTime != null">plan_start_time = #{planStartTime},</if>
<if test="planEndTime != null">plan_end_time = #{planEndTime},</if>
<if test="projectAmount != null">project_amount = #{projectAmount},</if>
<if test="companyId != null">company_id = #{companyId},</if>
<if test="ownerUnit != null and ownerUnit != ''">owner_unit = #{ownerUnit},</if>
<if test="projectStatus != null">project_status = #{projectStatus},</if>
<if test="projectScale != null">project_scale = #{projectScale},</if>
<if test="projectManager != null">project_manager = #{projectManager},</if>
<if test="address != null">address = #{address},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where project_id = #{projectId}
</update>
<delete id="deleteBmProjectByProjectId" parameterType="Long">
delete from bm_project where project_id = #{projectId}
</delete>
<delete id="deleteBmProjectByProjectIds" parameterType="String">
delete from bm_project where project_id in
<foreach item="projectId" collection="array" open="(" separator="," close=")">
#{projectId}
</foreach>
</delete>
</mapper>

View File

@ -0,0 +1,53 @@
<?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="com.bonus.base.screen.mapper.TowerCraneDetectionMapper">
<select id="getConstDeviceList" resultType="com.bonus.base.basic.domain.ConstInfoVo">
SELECT
tci.id,
tci.`name`,
tci.`code`,
tcd.is_online,
tcd.dev_location
FROM
tb_const_info tci
LEFT JOIN tb_collect_device tcd ON tci.id = tcd.const_id
WHERE
tci.type_code = #{typeCode}
</select>
<select id="getConstDeviceMsgById" resultType="com.bonus.base.basic.domain.ConstInfoVo">
SELECT
tci.config_data
FROM
tb_const_info tci
WHERE
tci.id = #{id}
</select>
<select id="getTowerCraneRunMsgById" resultType="com.bonus.base.screen.domain.MapValueVo">
SELECT
tcda.attr_name as `name`,
tcda.attr_val as `value`
FROM
tb_const_info tci
LEFT JOIN tb_collect_device tcd ON tci.id = tcd.const_id
LEFT JOIN tb_collect_device_attr tcda ON tcda.dev_id = tcd.id
WHERE
tci.id = #{id}
</select>
<select id="getTowerCraneAlarmList" resultType="com.bonus.base.screen.domain.DeviceAlarmVo">
SELECT
tcdh.create_time AS createTime,
tcdh.remark AS remark,
tcd.dev_name AS devName
FROM
tb_const_info tci
LEFT JOIN tb_collect_device tcd ON tci.id = tcd.const_id
LEFT JOIN tb_collect_device_his tcdh ON tcdh.dev_id = tcd.id
WHERE
tci.type_code = #{typeCode}
</select>
</mapper>

View File

@ -41,12 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</insert>
<!--校验数据是否重复-->
<select id="queryValueIsExist" resultType="java.lang.Integer">
<if test="params.id==null or params.id==''">
<if test="params.id==null">
SELECT COUNT(1)
FROM tb_pro_depart
WHERE ${columnName} = #{value} AND branch_company_id = #{branchCompanyId} AND is_active = '1'
</if>
<if test="params.id!=null and params.id!=''">
<if test="params.id!=null">
SELECT COUNT(1)
FROM tb_pro_depart
WHERE ${columnName} = #{value} AND branch_company_id = #{branchCompanyId} AND id != #{params.id} AND is_active = '1'