Browse Source

拜访模板

contract
Yen 2 years ago
parent
commit
09dccac8d0
  1. 10
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java
  2. 11
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java
  3. 126
      src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceFlowController.java
  4. 12
      src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java
  5. 11
      src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java
  6. 4
      src/main/java/com/qs/serve/modules/baz/entity/bo/BazVisitInstanceFlowBo.java
  7. 2
      src/main/java/com/qs/serve/modules/baz/service/BazVisitInstanceService.java
  8. 71
      src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java
  9. 19
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  10. 23
      src/main/java/com/qs/serve/modules/bms/entity/so/BmsPointVisitSo.java
  11. 29
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java
  12. 5
      src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java
  13. 1
      src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java
  14. 5
      src/main/resources/mapper/bms/BmsChannelPointMapper.xml

10
src/main/java/com/qs/serve/modules/baz/controller/BazVisitController.java

@ -11,6 +11,8 @@ import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.baz.entity.BazVisitFlow;
import com.qs.serve.modules.baz.service.BazVisitFlowService;
import com.qs.serve.modules.bms.entity.BmsSupplierVisitForm;
import com.qs.serve.modules.bms.service.BmsSupplierVisitFormService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -37,6 +39,8 @@ public class BazVisitController {
private BazVisitFlowService bazVisitFlowService;
private BmsSupplierVisitFormService bmsSupplierVisitFormService;
/**
* 列表
* @param param
@ -61,6 +65,12 @@ public class BazVisitController {
lqw.eq(BazVisitFlow::getFlowSort,1);
lqw.eq(BazVisitFlow::getVisitId,visitId);
BazVisitFlow bazVisitFlow = bazVisitFlowService.getOne(lqw,false);
if(bazVisitFlow.getFormId()!=null&&!bazVisitFlow.getFormId().equals(0L)){
BmsSupplierVisitForm visitForm = bmsSupplierVisitFormService.getById(bazVisitFlow.getFormId());
bazVisitFlow.setFormInfo(visitForm);
}else {
bazVisitFlow.setFormId(null);
}
return R.ok(bazVisitFlow);
}

11
src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceController.java

@ -68,6 +68,17 @@ public class BazVisitInstanceController {
return R.ok(bazVisitInstance);
}
/**
* ID查询流程项
* @param id
* @return
*/
@GetMapping("/getByFlowId/{id}")
public R<BazVisitInstanceFlow> getByFlowId(@PathVariable("id") String id){
BazVisitInstanceFlow instanceFlow = bazVisitInstanceFlowService.getById(id);
return R.ok(instanceFlow);
}
/**
* 更新

126
src/main/java/com/qs/serve/modules/baz/controller/BazVisitInstanceFlowController.java

@ -1,126 +0,0 @@
package com.qs.serve.modules.baz.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.baz.entity.so.BazVisitInstanceFlowSo;
import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo;
import com.qs.serve.modules.baz.entity.BazVisitInstanceFlow;
import com.qs.serve.modules.baz.service.BazVisitInstanceFlowService;
import javax.validation.Valid;
import java.util.List;
/**
* 拜访模块 拜访实例流程
* @author YenHex
* @since 2023-04-07
*/
@Slf4j
@AllArgsConstructor
//@RestController
//@RequestMapping("baz/visitInstanceFlow")
public class BazVisitInstanceFlowController {
private BazVisitInstanceFlowService bazVisitInstanceFlowService;
/**
* 列表
* @param param
* @return
*/
//@GetMapping("/list")
@PreAuthorize("hasRole('baz:visitInstanceFlow:query')")
public R<List<BazVisitInstanceFlow>> getList(BazVisitInstanceFlowSo param){
BazVisitInstanceFlow entity = CopierUtil.copy(param,new BazVisitInstanceFlow());
LambdaQueryWrapper<BazVisitInstanceFlow> lqw = new LambdaQueryWrapper<>(entity);
PageUtil.startPage();
List<BazVisitInstanceFlow> list = bazVisitInstanceFlowService.list(lqw);
return R.ok(list);
}
/**
* 翻页
* @param param
* @return
*/
//@GetMapping("/page")
@PreAuthorize("hasRole('baz:visitInstanceFlow:query')")
public R<PageVo<BazVisitInstanceFlow>> getPage(BazVisitInstanceFlowSo param){
BazVisitInstanceFlow entity = CopierUtil.copy(param,new BazVisitInstanceFlow());
LambdaQueryWrapper<BazVisitInstanceFlow> lqw = new LambdaQueryWrapper<>(entity);
PageUtil.startPage();
List<BazVisitInstanceFlow> list = bazVisitInstanceFlowService.list(lqw);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
//@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BAZ, title = "拜访实例流程", biz = BizType.QUERY)
@PreAuthorize("hasRole('baz:visitInstanceFlow:query')")
public R<BazVisitInstanceFlow> getById(@PathVariable("id") String id){
BazVisitInstanceFlow bazVisitInstanceFlow = bazVisitInstanceFlowService.getById(id);
return R.ok(bazVisitInstanceFlow);
}
/**
* 更新
* @param param
* @return
*/
//@PostMapping("/updateById")
@SysLog(module = SystemModule.BAZ, title = "拜访实例流程", biz = BizType.UPDATE)
@PreAuthorize("hasRole('baz:visitInstanceFlow:update')")
public R<?> updateById(@RequestBody @Valid BazVisitInstanceFlowBo param){
BazVisitInstanceFlow entity = CopierUtil.copy(param,new BazVisitInstanceFlow());
boolean result = bazVisitInstanceFlowService.updateById(entity);
return R.isTrue(result);
}
/**
* 新增
* @param param
* @return
*/
//@PostMapping("/save")
@SysLog(module = SystemModule.BAZ, title = "拜访实例流程", biz = BizType.INSERT)
@PreAuthorize("hasRole('baz:visitInstanceFlow:insert')")
public R<?> save(@RequestBody @Valid BazVisitInstanceFlowBo param){
BazVisitInstanceFlow entity = CopierUtil.copy(param,new BazVisitInstanceFlow());
boolean result = bazVisitInstanceFlowService.save(entity);
return R.isTrue(result);
}
/**
* 删除
* @param ids
* @return
*/
@DeleteMapping("/deleteById/{ids}")
@SysLog(module = SystemModule.BAZ, title = "拜访实例流程", biz = BizType.DELETE)
@PreAuthorize("hasRole('baz:visitInstanceFlow:delete')")
public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids);
boolean result = bazVisitInstanceFlowService.removeByIds(idsLong);
return R.isTrue(result);
}
}

12
src/main/java/com/qs/serve/modules/baz/controller/my/BazMyVisitInstanceController.java

@ -75,6 +75,18 @@ public class BazMyVisitInstanceController {
return R.ok();
}
/**
* 完成流程
* @param id
* @return
*/
@PostMapping("/finished/{instanceId}")
@SysLog(module = SystemModule.BAZ, title = "拜访实例", biz = BizType.INSERT)
public R<BazVisitInstance> finished(@PathVariable("instanceId")Long id){
bazVisitInstanceService.finished(id);
return R.ok();
}
/**
* 删除
* @param ids

11
src/main/java/com/qs/serve/modules/baz/entity/BazVisitInstanceFlow.java

@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.common.model.dto.TargetDTO;
import com.qs.serve.modules.baz.entity.bo.BazVisitInstanceFlowBo;
import com.qs.serve.modules.sys.entity.SysUser;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -25,7 +27,7 @@ import javax.validation.constraints.NotBlank;
* @since 2023-04-07
*/
@Data
@TableName("baz_visit_instance_flow")
@TableName(value = "baz_visit_instance_flow",autoResultMap = true)
public class BazVisitInstanceFlow implements Serializable {
private static final long serialVersionUID = 1L;
@ -73,6 +75,9 @@ public class BazVisitInstanceFlow implements Serializable {
/** 排序 */
private Integer flowSort;
/** 状态:0-进行中;1-完成;2-跳过 */
private Integer flowState;
/** 是否可忽略当前流程 */
private Integer ignoreFlag;
@ -105,8 +110,8 @@ public class BazVisitInstanceFlow implements Serializable {
private String valLocalY;
/** 拍照图片地址 */
@Length(max = 4000,message = "拍照图片地址长度不能超过4000字")
private String valPhotoUrls;
@TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] valPhotoUrls;
/** 表单填写json */
@Length(max = 0,message = "表单填写json长度不能超过0字")

4
src/main/java/com/qs/serve/modules/baz/entity/bo/BazVisitInstanceFlowBo.java

@ -48,11 +48,9 @@ public class BazVisitInstanceFlowBo implements Serializable {
private String valLocalY;
/** 拍照图片地址 */
@Length(max = 4000,message = "拍照图片地址长度不能超过4000字")
private String valPhotoUrls;
private String[] valPhotoUrls;
/** 表单填写json */
@Length(max = 0,message = "表单填写json长度不能超过0字")
private String valFormValue;
/** 备注 */

2
src/main/java/com/qs/serve/modules/baz/service/BazVisitInstanceService.java

@ -16,5 +16,7 @@ public interface BazVisitInstanceService extends IService<BazVisitInstance> {
void submit(BazVisitInstanceFlowBo param);
void finished(Long id);
}

71
src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.TargetDTO;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.baz.common.BazTargetTypeConsts;
import com.qs.serve.modules.baz.entity.BazVisit;
import com.qs.serve.modules.baz.entity.BazVisitFlow;
@ -73,9 +74,8 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
}
//构建实例
BazVisitInstance visitInstance = BazVisitInstance.toNewObject(bazVisit,targetDTO,sysUser);
visitInstance.setTitle("");
visitInstance.setTitle(sysUser.getName()+"["+bazVisit.getVisitName()+"]"+targetDTO.getTargetName());
//构建流程
List<BazVisitInstanceFlow> instanceFlowList = new ArrayList<>();
for (BazVisitFlow visitFlow : visitFlowList) {
BazVisitInstanceFlow instanceFlow = BazVisitInstanceFlow.toNewObject(visitFlow,targetDTO,sysUser);
@ -87,7 +87,20 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
}
if(instanceFlow.getFlowSort().equals(1)){
instanceFlow.initInputValues(flowBo);
instanceFlow.setPhotoState(1);
instanceFlow.setFlowState(1);
if(instanceFlow.getPositionState().equals(2)
&&(StringUtils.hasEmpty(flowBo.getValLocalX())
||StringUtils.hasEmpty(flowBo.getMapAddress())
||StringUtils.hasEmpty(flowBo.getValLocalY()))){
Assert.throwEx("定位信息缺失");
}
if(instanceFlow.getPhotoState().equals(2)
&&(flowBo.getValPhotoUrls()==null||flowBo.getValPhotoUrls().length<1)){
Assert.throwEx("拍照信息缺失");
}
}
instanceFlowList.add(instanceFlow);
}
@ -103,12 +116,62 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl<BazVisitInstanceMap
@Override
public void submit(BazVisitInstanceFlowBo param) {
BazVisitInstanceFlow instanceFlowDb = instanceFlowService.getById(param.getInstanceFlowId());
if(instanceFlowDb.getFlowState().equals(1)){
Assert.throwEx("请勿重复提交");
}
if(instanceFlowDb.getPositionState().equals(2)
&&(StringUtils.hasEmpty(param.getValLocalX())
||StringUtils.hasEmpty(param.getValLocalY()))
||StringUtils.hasEmpty(param.getMapAddress())){
Assert.throwEx("定位信息缺失");
}
if(instanceFlowDb.getPhotoState().equals(2)
&&(param.getValPhotoUrls()==null||param.getValPhotoUrls().length<1)){
Assert.throwEx("拍照信息缺失");
}
BazVisitInstanceFlow instanceFlow = new BazVisitInstanceFlow();
instanceFlow.setId(param.getInstanceFlowId());
instanceFlow.initInputValues(param);
instanceFlow.setPhotoState(1);
instanceFlow.setFlowState(1);
instanceFlowService.updateById(instanceFlow);
//完成自动更新
LambdaQueryWrapper<BazVisitInstanceFlow> countLqw = new LambdaQueryWrapper<>();
countLqw.eq(BazVisitInstanceFlow::getVisitInstanceId,instanceFlowDb.getVisitInstanceId());
countLqw.eq(BazVisitInstanceFlow::getFlowState,0);
long count = instanceFlowService.count(countLqw);
if(count<1){
BazVisitInstance visitInstance = new BazVisitInstance();
visitInstance.setVisitState(1);
visitInstance.setId(instanceFlowDb.getVisitInstanceId());
this.updateById(visitInstance);
}
}
@Override
public void finished(Long instanceId) {
BazVisitInstance instanceDb = this.getById(instanceId);
if(instanceDb.getVisitState().equals(0)){
LambdaQueryWrapper<BazVisitInstanceFlow> countLqw = new LambdaQueryWrapper<>();
countLqw.select(
BazVisitInstanceFlow::getId,
BazVisitInstanceFlow::getFlowTitle,
BazVisitInstanceFlow::getIgnoreFlag);
countLqw.eq(BazVisitInstanceFlow::getVisitInstanceId,instanceId);
countLqw.eq(BazVisitInstanceFlow::getFlowState,0);
List<BazVisitInstanceFlow> instanceFlowList = instanceFlowService.list(countLqw);
for (BazVisitInstanceFlow instanceFlow : instanceFlowList) {
if(instanceFlow.getIgnoreFlag().equals(0)){
Assert.throwEx("["+instanceFlow.getFlowTitle()+"]未完成");
}
instanceFlow.setFlowState(2);
}
instanceFlowService.updateBatchById(instanceFlowList);
BazVisitInstance visitInstance = new BazVisitInstance();
visitInstance.setVisitState(1);
visitInstance.setId(instanceId);
this.updateById(visitInstance);
}
}
}

19
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java

@ -6,6 +6,7 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils;
@ -14,6 +15,9 @@ import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.bo.BmsChannelPointBo;
import com.qs.serve.modules.bms.entity.bo.BmsChannelPointMapInfoBo;
import com.qs.serve.modules.bms.entity.so.BmsPointVisitSo;
import com.qs.serve.modules.bms.entity.vo.BmsUserPoint4VisitVo;
import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper;
import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRegionService;
@ -46,6 +50,21 @@ public class BmsChannelPointController {
private BmsRegionService bmsRegionService;
private BmsRegion2Service bmsRegion2Service;
private TbsActivityChannelPointService activityChannelPointService;
private BmsChannelPointMapper channelPointMapper;
/**
* 获取我负责的网点
* @param param
* @return
*/
@GetMapping("/page4Visit")
public R<PageVo<BmsUserPoint4VisitVo>> getPage4Visit(BmsPointVisitSo param){
String sysUserId = AuthContextUtils.getSysUserId();
param.setUserId(sysUserId);
PageUtil.startPage();
List<BmsUserPoint4VisitVo> list = channelPointMapper.selectUserPointList4Visit(param);
return R.byPageHelperList(list);
}
/**
* 翻页

23
src/main/java/com/qs/serve/modules/bms/entity/so/BmsPointVisitSo.java

@ -0,0 +1,23 @@
package com.qs.serve.modules.bms.entity.so;
import lombok.Data;
/**
* @author YenHex
* @since 2023/4/7
*/
@Data
public class BmsPointVisitSo {
String pointCode;
String pointName;
Double localY;
Double localX;
/** 忽略这个参数,后端设值 */
String userId;
}

29
src/main/java/com/qs/serve/modules/bms/entity/vo/BmsUserPoint4VisitVo.java

@ -0,0 +1,29 @@
package com.qs.serve.modules.bms.entity.vo;
import com.qs.serve.modules.bms.entity.BmsMasterUser;
import lombok.Data;
/**
* @author YenHex
* @since 2022/11/11
*/
@Data
public class BmsUserPoint4VisitVo {
/** 网点id */
String pointId;
/** 网点编码 */
String pointCode;
/** 网点名称 */
String pointName;
/** 地址*/
String address;
/** 距离 */
Double distance;
}

5
src/main/java/com/qs/serve/modules/bms/mapper/BmsChannelPointMapper.java

@ -5,6 +5,8 @@ import java.util.List;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsChannelPoint;
import com.qs.serve.modules.bms.entity.so.BmsPointVisitSo;
import com.qs.serve.modules.bms.entity.vo.BmsUserPoint4VisitVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
@ -25,5 +27,8 @@ public interface BmsChannelPointMapper extends BaseMapper<BmsChannelPoint> {
List<BmsChannelPoint> selectChannelPointList(@Param("query") BmsChannelPoint channelPoint);
List<BmsUserPoint4VisitVo> selectUserPointList4Visit(@Param("query") BmsPointVisitSo param);
}

1
src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java

@ -23,6 +23,7 @@ public interface BmsMasterUserMapper extends BaseMapper<BmsMasterUser> {
*/
List<BmsMasterUserChannelVo> selectChannelMasterUserList(@Param("query") BmsMasterUserChannelVo userChannel);
/**
* 查询站点负责人
* @param userChannel

5
src/main/resources/mapper/bms/BmsChannelPointMapper.xml

@ -93,4 +93,9 @@
ORDER BY `bms_channel_point`.`create_time` DESC
</select>
<select id="selectUserPointList4Visit" resultType="com.qs.serve.modules.bms.entity.vo.BmsUserPoint4VisitVo">
</select>
</mapper>

Loading…
Cancel
Save