diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemHandleSubmitFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemHandleSubmitFormDTO.java new file mode 100644 index 000000000..111845405 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemHandleSubmitFormDTO.java @@ -0,0 +1,42 @@ +package com.elink.esua.epdc.dto.item.form; + +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 项目处理提交Form DTO + * @Author LC + * @Date 2019/9/16 19:01 + */ +@Data +public class ItemHandleSubmitFormDTO implements Serializable { + private static final long serialVersionUID = -5395350316792859552L; + + /** + * 项目ID + */ + private String itemId; + + /** + * 处理意见(内部) + */ + private String handleAdvice; + + /** + * 处理意见(外部) + */ + private String outHandleAdvice; + + /** + * 处理方式:0 处理,1 流转协助,5 关闭,10 结案 + */ + private int handleCategory; + + /** + * 流转协助部门 + */ + private List deptResultDTOS; +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleResultDTO.java index c822ca3ae..1e68b4b3a 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleResultDTO.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleResultDTO.java @@ -14,7 +14,7 @@ public class ItemHandleResultDTO implements Serializable { private static final long serialVersionUID = 3063932519189475757L; /** - * 处理结果 0:流转协助,1:我来处理,5:关闭,10:结案 + * 处理结果 0:处理,1:流转协助,5:关闭,10:结案 */ private int processResult; /** diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java index d69c9151b..5a28864ac 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java @@ -12,8 +12,8 @@ import java.util.List; */ public enum ItemHandleCategoryEnum { - HANDLE_CIRCULATION_ASSISTANCE(0, "流转协助"), - HANDLE_I_HANDLE(1, "处理"), + HANDLE_CIRCULATION_ASSISTANCE(0, "处理"), + HANDLE_I_HANDLE(1, "流转协助"), HANDLE_CLOSE(5, "关闭"), HANDLE_CLOSING_CASE(10, "结案"); diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java index ee6ec6c74..0e2375b28 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemController.java @@ -27,6 +27,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.dto.item.ItemDTO; import com.elink.esua.epdc.dto.item.ItemPendingHandleDTO; +import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; import com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO; import com.elink.esua.epdc.modules.item.excel.ItemExcel; import com.elink.esua.epdc.modules.item.service.ItemService; @@ -107,4 +108,16 @@ public class ItemController { ExcelUtils.exportExcelToTarget(response, null, list, ItemExcel.class); } + /** + * 项目处理提交 + * @Params: [dto] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: liuchuang + * @Date: 2019/9/16 19:09 + */ + @PostMapping("itemHandleSubmit") + public Result itemHandleSubmit(@RequestBody ItemHandleSubmitFormDTO dto) { + return itemService.modifyHandleResult(dto); + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java index 59497c66f..82fca9412 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java @@ -96,11 +96,11 @@ public interface ItemDao extends BaseDao { /** * 项目处理进度 - * @Params: [issueId, itemId] + * @Params: [issueId, itemId, outOrInside(0:内部数据, 1:外部数据)] * @Return: com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO * @Author: liuchuang * @Date: 2019/9/16 18:37 */ - List selectListOfItemHandleProgress(String issueId, String itemId); + List selectListOfItemHandleProgress(String issueId, String itemId, int outOrInside); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java index d580c10d3..cb30083cc 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java @@ -40,4 +40,13 @@ public interface ItemDeptDao extends BaseDao { * @Date: 2019/9/16 11:05 */ List getItemDept(String itemId, Long handerDeptId); + + /** + * 删除已流转协助部门 + * @Params: [createdDeptId] + * @Return: void + * @Author: liuchuang + * @Date: 2019/9/16 20:20 + */ + void updateItemDepts(Long createdDeptId, String itemId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemHandleProcessEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemHandleProcessEntity.java index c0fb0bdf8..0ef33600c 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemHandleProcessEntity.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemHandleProcessEntity.java @@ -51,6 +51,11 @@ public class ItemHandleProcessEntity extends BaseEpdcEntity { */ private String handleAdvice; + /** + * 处理意见(外部) + */ + private String outHandleAdvice; + /** * 操作人部门ID */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java index a21d93990..fc834f765 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java @@ -19,6 +19,8 @@ package com.elink.esua.epdc.modules.item.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.dto.item.ItemDeptDTO; +import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; import com.elink.esua.epdc.modules.item.entity.ItemDeptEntity; import java.util.List; @@ -49,4 +51,22 @@ public interface ItemDeptService extends BaseService { * @Date: 2019/9/16 11:03 */ List listOfItemDept(String itemId, Long createdDeptId); + + /** + * 删除已流转协助部门 + * @Params: [createdDeptId] + * @Return: void + * @Author: liuchuang + * @Date: 2019/9/16 20:08 + */ + void modifyItemDepts(Long createdDeptId, String itemId); + + /** + * 新增流转协助部门 + * @Params: [createdDeptId, deptResultDTOS] + * @Return: void + * @Author: liuchuang + * @Date: 2019/9/16 20:08 + */ + void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java index 4720bb034..aff54ddc5 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java @@ -22,10 +22,7 @@ import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.item.ItemDTO; import com.elink.esua.epdc.dto.item.ItemPendingHandleDTO; -import com.elink.esua.epdc.dto.item.form.ItemCategoryStatisticsFormDTO; -import com.elink.esua.epdc.dto.item.form.EvaluationFormDTO; -import com.elink.esua.epdc.dto.item.form.ItemDetailFormDTO; -import com.elink.esua.epdc.dto.item.form.ItemFormDTO; +import com.elink.esua.epdc.dto.item.form.*; import com.elink.esua.epdc.dto.item.result.*; import com.elink.esua.epdc.modules.item.entity.ItemEntity; @@ -159,10 +156,19 @@ public interface ItemService extends BaseService { /** * 项目处理进度 - * @Params: [itemId] + * @Params: [itemId, outOrInside(0:内部数据, 1:外部数据)] * @Return: java.util.List * @Author: liuchuang * @Date: 2019/9/16 17:48 */ - List listOfItemHandleProgress(String itemId); + List listOfItemHandleProgress(String itemId, int outOrInside); + + /** + * 项目处理提交 + * @Params: [dto] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: liuchuang + * @Date: 2019/9/16 19:10 + */ + Result modifyHandleResult(ItemHandleSubmitFormDTO dto); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java index 5a3961041..913c81ecc 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java @@ -19,12 +19,15 @@ package com.elink.esua.epdc.modules.item.service.impl; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.dto.item.ItemDeptDTO; +import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; +import com.elink.esua.epdc.dto.item.result.ItemCirculationDeptResultDTO; import com.elink.esua.epdc.modules.item.dao.ItemDeptDao; import com.elink.esua.epdc.modules.item.entity.ItemDeptEntity; import com.elink.esua.epdc.modules.item.service.ItemDeptService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -49,4 +52,25 @@ public class ItemDeptServiceImpl extends BaseServiceImpl deptEntities = new ArrayList<>(); + for (ItemCirculationDeptResultDTO dto: + formDTO.getDeptResultDTOS()) { + ItemDeptEntity entity = new ItemDeptEntity(); + entity.setItemId(formDTO.getItemId()); + entity.setDeptId(dto.getDeptId()); + entity.setCreatedDeptId(createdDeptId); + deptEntities.add(entity); + } + this.insertBatch(deptEntities); + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java index 2465b3648..5d3769522 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java @@ -30,22 +30,22 @@ import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.DateUtils; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.constant.EventIssueItemState; import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.dto.item.ItemDTO; import com.elink.esua.epdc.dto.item.ItemDeptDTO; import com.elink.esua.epdc.dto.item.ItemPendingHandleDTO; -import com.elink.esua.epdc.dto.item.form.ItemCategoryStatisticsFormDTO; -import com.elink.esua.epdc.dto.item.form.EvaluationFormDTO; -import com.elink.esua.epdc.dto.item.form.ItemDetailFormDTO; -import com.elink.esua.epdc.dto.item.form.ItemFormDTO; +import com.elink.esua.epdc.dto.item.form.*; import com.elink.esua.epdc.dto.item.result.*; import com.elink.esua.epdc.enums.ItemHandleCategoryEnum; import com.elink.esua.epdc.modules.events.service.EpdcEventsService; import com.elink.esua.epdc.modules.feign.AdminFeignClient; import com.elink.esua.epdc.modules.item.dao.ItemDao; import com.elink.esua.epdc.modules.item.entity.ItemEntity; +import com.elink.esua.epdc.modules.item.entity.ItemHandleProcessEntity; import com.elink.esua.epdc.modules.item.service.ItemDeptService; +import com.elink.esua.epdc.modules.item.service.ItemHandleProcessService; import com.elink.esua.epdc.modules.item.service.ItemService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -72,6 +72,9 @@ public class ItemServiceImpl extends BaseServiceImpl implem @Autowired private AdminFeignClient adminFeignClient; + @Autowired + private ItemHandleProcessService itemHandleProcessService; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -201,7 +204,7 @@ public class ItemServiceImpl extends BaseServiceImpl implem resultDTO = this.getHandleCategoryAndCirculationDeptOfStreet(resultDTO, itemDeptDTOS); } // 获取项目处理进度 - List dtoList = this.listOfItemHandleProgress(id); + List dtoList = this.listOfItemHandleProgress(id, 0); resultDTO.setHandleProgressResultDTOS(dtoList); return resultDTO; @@ -343,8 +346,84 @@ public class ItemServiceImpl extends BaseServiceImpl implem } @Override - public List listOfItemHandleProgress(String itemId) { + public List listOfItemHandleProgress(String itemId, int outOrInside) { ItemEntity entity = this.selectById(itemId); - return baseDao.selectListOfItemHandleProgress(entity.getIssueId(), itemId); + return baseDao.selectListOfItemHandleProgress(entity.getIssueId(), itemId, outOrInside); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result modifyHandleResult(ItemHandleSubmitFormDTO dto) { + try { + ItemHandleProcessEntity handleProcessEntity = new ItemHandleProcessEntity(); + if (ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue() == dto.getHandleCategory()) { + // 项目流转校验 + Result checkResult = this.checkItemCirculation(dto); + if (!checkResult.success()) { + return checkResult; + } + handleProcessEntity.setState(EventIssueItemState.ITEM_HANDLING); + + // 删除已流转协助部门 + itemDeptService.modifyItemDepts(SecurityUser.getDeptId(), dto.getItemId()); + // 新增流转协助部门 + itemDeptService.saveItemDepts(SecurityUser.getDeptId(), dto); + } else { + handleProcessEntity.setState(dto.getHandleCategory()); + // 更新项目状态 + if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory() || + ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()) { + ItemEntity itemEntity = new ItemEntity(); + itemEntity.setId(dto.getItemId()); + itemEntity.setItemState(dto.getHandleCategory()); + this.insert(itemEntity); + } + } + // 记录处理记录 + handleProcessEntity.setItemId(dto.getItemId()); + handleProcessEntity.setHandleAdvice(dto.getHandleAdvice()); + handleProcessEntity.setOutHandleAdvice(dto.getOutHandleAdvice()); + handleProcessEntity.setHandlerDeptId(SecurityUser.getDeptId()); + itemHandleProcessService.insert(handleProcessEntity); + } catch (Exception e) { + e.printStackTrace(); + } + + return new Result(); + } + + /** + * 项目流转校验 + * @Params: [dto] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: liuchuang + * @Date: 2019/9/16 19:42 + */ + private Result checkItemCirculation(ItemHandleSubmitFormDTO dto) { + // 校验是否跨级流转 + String typeKey = ""; + for (ItemCirculationDeptResultDTO circulationDeptResultDTO: + dto.getDeptResultDTOS()) { + if (typeKey.equals(circulationDeptResultDTO.getTypeKey())) { + return new Result().error("不可跨部门流转协助,请重新选择流转协助部门"); + } + typeKey = circulationDeptResultDTO.getTypeKey(); + } + + // 如果当前流转协助是网格发起,判断其街道党工委是否已将该项目流转协助 + UserDetail user = SecurityUser.getUser(); + if (OrganizationTypeConstant.ORG_TYPE_GRID_PARTY.equals(user.getTypeKey())) { + Result completeDept = adminFeignClient.getCompleteDept(SecurityUser.getDeptId()); + if (!completeDept.success()) { + return new Result().error("获取机构信息失败,请稍后重试"); + } + // 获取街道党工委已流转协助部门 + List itemDeptDTOS = itemDeptService.listOfItemDept(dto.getItemId(), completeDept.getData().getStreetId()); + if (null != itemDeptDTOS && itemDeptDTOS.size() > 0) { + return new Result().error(completeDept.getData().getStreet()+"已将该项目流转协助到其他部门,不能重新流转协助"); + } + } + + return new Result(); } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml index c9412fa24..7c27331a5 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml @@ -288,7 +288,12 @@ AND ISSUE_ID = #{issueId} UNION ALL SELECT CREATED_TIME AS createdTime, - HANDLE_ADVICE AS advice, + + HANDLE_ADVICE AS advice, + + + OUT_HANDLE_ADVICE AS advice, + ( CASE WHEN STATE = 0 THEN '处理中' WHEN STATE = 5 THEN '已关闭' WHEN STATE = 10 THEN '已结案' ELSE '' END ) AS stateName FROM epdc_item_handle_process diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml index 93f4e4818..d3a261c62 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml @@ -7,4 +7,7 @@ SELECT * FROM epdc_item_dept WHERE DEL_FLAG = '0' AND ITEM_ID = #{itemId} AND CREATED_DEPT_ID = #{createdDeptId} AND DEPT_ID != #{createdDeptId} + + UPDATE epdc_item_dept SET DEL_FLAG = '1' WHERE CREATED_DEPT_ID = #{createdDeptId} AND ITEM_ID = #{itemId} +