diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/BmProjectController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/BmProjectController.java index 2195545..d80fea9 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/BmProjectController.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/controller/BmProjectController.java @@ -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 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 list = bmProjectService.selectBmProjectList(bmProject); ExcelUtil util = new ExcelUtil(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); } /** diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/BmProject.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/BmProject.java index b23c82a..b91e36e 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/BmProject.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/domain/BmProject.java @@ -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 { + } + } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/BmProjectMapper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/BmProjectMapper.java index 8e1d3e2..28da129 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/BmProjectMapper.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/mapper/BmProjectMapper.java @@ -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 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); } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IBmProjectService.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IBmProjectService.java index 368eca2..4ea81f3 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IBmProjectService.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/IBmProjectService.java @@ -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); } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/BmProjectServiceImpl.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/BmProjectServiceImpl.java index 1504bd4..d1c1685 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/BmProjectServiceImpl.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/BmProjectServiceImpl.java @@ -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 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(); + } } } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/ProDepartServiceImpl.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/ProDepartServiceImpl.java index 4cf4bcc..fd4e05e 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/ProDepartServiceImpl.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/basic/service/impl/ProDepartServiceImpl.java @@ -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) { diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/JsonHelper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/JsonHelper.java new file mode 100644 index 0000000..5026dfe --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/JsonHelper.java @@ -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 jsonDeserialize(String value, Class tClass); + + /** + * 将任意bean转换成json字符串 + * fast json + * @param bean + * @param + * @return + */ + public static String beanToJsonStr(T bean) { + String jsonStr = JSON.toJSONString(bean); + return jsonStr; + } + + /** + * 把一个json字符串转换成bean对象 + * fast json + * @param str + * @param + * @return + */ + public static T jsonStrToBean(String str, Class clazz) { + T bean = JSON.parseObject(str, clazz); + return bean; + } + + /** + * 把一个jsonObj转换成bean对象 + * fast json + * @param jsonObj + * @param + * @return + */ + public static T jsonObjToBean(JSONObject jsonObj, Class clazz) { + String s = jsonObj.toJSONString(); + T bean = JSON.parseObject(s, clazz); + return bean; + } + + /** + * 把一个bean对象转换成jsonObj + * fast json + * @param bean + * @param + * @return + */ + public static 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 + * @return + */ + public static JSONArray beanListToJsonArrStr(List beanList) { + Object o = JSON.toJSON(beanList); + return (JSONArray) o; + } + + /** + * 把一个jsonArrStr转换成beanList对象 + * fast json + * @param jsonArrStr + * @param + * @return + */ + public static List jsonArrStrToBeanList(String jsonArrStr,Class clazz) { + List 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 List jsonArrToBeanList(JSONArray jsonArr,Class clazz) { + String s = JSON.toJSONString(jsonArr); + List ts = JSON.parseArray(s, clazz); + return ts; + } + + + /** + * 把一个beanList文本转换成JsonArr + * fast json + * @param beanList + * @return + */ + public static JSONArray beanListToJsonArr(List beanList) { + Object o = JSON.toJSON(beanList); + return (JSONArray) o; + } +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/TypeCodeUtils.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/TypeCodeUtils.java index a52923e..3b790ad 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/TypeCodeUtils.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/common/utils/TypeCodeUtils.java @@ -22,5 +22,10 @@ public class TypeCodeUtils { */ public final static String SJK_CODE="9000300"; + /** + * 塔吊设备 + */ + public final static String TC_CODE="9000400"; + } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/controller/TowerCraneDetectionController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/controller/TowerCraneDetectionController.java new file mode 100644 index 0000000..78f091d --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/controller/TowerCraneDetectionController.java @@ -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 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 deviceAlarmVoList = service.getTowerCraneAlarmList(constInfoVo); + return success(deviceAlarmVoList); + }catch (Exception e){ + log.error("查询塔吊报警信息失败",e.getMessage()); + return error("查询塔吊报警信息失败"); + } + } + +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/domain/TowerCraneInfoVo.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/domain/TowerCraneInfoVo.java new file mode 100644 index 0000000..59f5101 --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/domain/TowerCraneInfoVo.java @@ -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; + + +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/mapper/TowerCraneDetectionMapper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/mapper/TowerCraneDetectionMapper.java new file mode 100644 index 0000000..a60e7d8 --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/mapper/TowerCraneDetectionMapper.java @@ -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 getConstDeviceList(ConstInfoVo constInfoVo); + + /** + * 塔吊报警信息 + * @param constInfoVo + * @return + */ + List getTowerCraneAlarmList(ConstInfoVo constInfoVo); + + /** + * 根据id查询具体塔吊设备信息 + * @param constInfoVo + * @return + */ + ConstInfoVo getConstDeviceMsgById(ConstInfoVo constInfoVo); + + /** + * 根据id查询具体实时运行信息 + * @param constInfoVo + * @return + */ + List getTowerCraneRunMsgById(ConstInfoVo constInfoVo); +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/TowerCraneDetectionService.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/TowerCraneDetectionService.java new file mode 100644 index 0000000..0ace4cd --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/TowerCraneDetectionService.java @@ -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 getConstDeviceList(ConstInfoVo constInfoVo); + + /** + * 塔吊报警信息 + * @param constInfoVo + * @return + */ + List getTowerCraneAlarmList(ConstInfoVo constInfoVo); + + /** + * 根据id查询具体塔吊设备信息 + * @param constInfoVo + * @return + */ + TowerCraneInfoVo getConstDeviceMsgById(ConstInfoVo constInfoVo); + /** + * 根据id查询具体实时运行信息 + * @param constInfoVo + * @return + */ + AjaxResult getTowerCraneRunMsgById(ConstInfoVo constInfoVo); +} diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/impl/TowerCraneDetectionServiceImpl.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/impl/TowerCraneDetectionServiceImpl.java new file mode 100644 index 0000000..b43f41d --- /dev/null +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/screen/service/impl/TowerCraneDetectionServiceImpl.java @@ -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 getConstDeviceList(ConstInfoVo constInfoVo) { + //设置查询类型 + constInfoVo.setTypeCode(TypeCodeUtils.TC_CODE); + List collectDevVoList = mapper.getConstDeviceList(constInfoVo); + return collectDevVoList; + } + + /** + * 塔吊报警信息 + * @param constInfoVo + * @return + */ + @Override + public List getTowerCraneAlarmList(ConstInfoVo constInfoVo) { + List 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 list = mapper.getTowerCraneRunMsgById(constInfoVo); + return AjaxResult.success(list); + } + +} diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/base/basic/BmProjectMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/base/basic/BmProjectMapper.xml index 70076d1..3125c25 100644 --- a/bonus-modules/bonus-base/src/main/resources/mapper/base/basic/BmProjectMapper.xml +++ b/bonus-modules/bonus-base/src/main/resources/mapper/base/basic/BmProjectMapper.xml @@ -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 - + 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 + + + AND bp.company_id = #{companyId} + + + AND ( + INSTR(bp.project_name,#{keyWord}) > 0 OR + INSTR(bp.owner_unit,#{keyWord}) > 0 OR + INSTR(bp.address,#{keyWord}) > 0 + ) + + + AND bp.project_status = #{projectStatus} + + AND bp.del_flag = '0' + ORDER BY bp.create_time DESC - + 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} - - - insert into bm_project - - 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, - - - #{projectName}, - #{planStartTime}, - #{planEndTime}, - #{projectAmount}, - #{companyId}, - #{ownerUnit}, - #{projectStatus}, - #{projectScale}, - #{projectManager}, - #{address}, - #{delFlag}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{remark}, - + + + + + + + + insert into bm_project + + project_name, + plan_start_time, + plan_end_time, + project_amount, + company_id, + owner_unit, + project_status, + project_scale, + project_manager, + address, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{params.projectName}, + #{params.planStartTime}, + #{params.planEndTime}, + #{params.projectAmount}, + #{params.companyId}, + #{params.ownerUnit}, + #{params.projectStatus}, + #{params.projectScale}, + #{params.projectManager}, + #{params.address}, + #{params.createBy}, + #{params.createTime}, + #{params.updateBy}, + #{params.updateTime}, + #{params.remark}, + + + + UPDATE bm_project + + 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}, + + WHERE project_id = #{params.projectId} + + + UPDATE bm_project SET del_flag = '1' WHERE project_id = #{params.projectId} + - - update bm_project - - project_name = #{projectName}, - plan_start_time = #{planStartTime}, - plan_end_time = #{planEndTime}, - project_amount = #{projectAmount}, - company_id = #{companyId}, - owner_unit = #{ownerUnit}, - project_status = #{projectStatus}, - project_scale = #{projectScale}, - project_manager = #{projectManager}, - address = #{address}, - del_flag = #{delFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - remark = #{remark}, - - where project_id = #{projectId} - - - - delete from bm_project where project_id = #{projectId} - - - - delete from bm_project where project_id in - - #{projectId} - - \ No newline at end of file diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/screen.basic/TowerCraneDetectionMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/screen.basic/TowerCraneDetectionMapper.xml new file mode 100644 index 0000000..44c6194 --- /dev/null +++ b/bonus-modules/bonus-base/src/main/resources/mapper/screen.basic/TowerCraneDetectionMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/ProDepartMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/ProDepartMapper.xml index bc88de2..17c93c0 100644 --- a/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/ProDepartMapper.xml +++ b/bonus-modules/bonus-base/src/main/resources/mapper/smartsite/basic/ProDepartMapper.xml @@ -41,12 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"