You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

445 lines
19 KiB

package com.sifang.modules.changes.controller;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.jfinal.plugin.activerecord.Record;
import com.sifang.modules.changes.entity.CustomerEntryCompletionChangeRecord;
import com.sifang.modules.changes.entity.CustomerEntryCompletionChangeRecordDetail;
import com.sifang.modules.changes.service.CrmCompletionInfoChangeService;
import com.sifang.modules.changes.dao.CrmCompletionInfoChangeDao;
import com.sifang.modules.changes.vo.CrmCompletionInfoChangeDTO;
import com.sifang.modules.changes.vo.SurveyAuditVo;
import com.sifang.modules.customer.Service.CustomerEntryService;
import com.sifang.modules.customer.Service.CustomerEntrySurveyRecordService;
import com.sifang.modules.customer.constant.PartnerConstants;
import com.sifang.modules.customer.constant.UserConstants;
import com.sifang.modules.customer.dao.CrmAcceptingReportDetailDao;
import com.sifang.modules.customer.dao.CrmCustomerIncomingApplicationInsuranceDao;
import com.sifang.modules.customer.entity.CrmAcceptingReport;
import com.sifang.modules.customer.entity.CrmAcceptingReportDetail;
import com.sifang.modules.customer.entity.CustomerEntry;
import com.sifang.modules.customer.entity.CustomerEntrySurveyRecord;
import com.sifang.modules.customer.form.AddReportReq;
import com.sifang.modules.platform.utils.AddressUtils;
import com.sifang.modules.sunshine.SystemSetting.dao.TraderDao;
import com.sifang.modules.sunshine.SystemSetting.entity.CrmProjectSetting;
import com.sifang.modules.sunshine.SystemSetting.entity.CrmTraderEmploye;
import com.sifang.modules.sunshine.SystemSetting.service.FormSetService;
import com.sifang.modules.sunshine.SystemSetting.service.ProjectInfoSettingService;
import com.sifang.modules.sunshine.SystemSetting.service.TraderEmployeService;
import com.sifang.modules.sunshine.SystemSetting.utils.Result;
import com.sifang.modules.sunshine.SystemSetting.utils.StringUtil;
import com.sifang.modules.sunshine.partnerManagement.entity.CrmPartner;
import com.sifang.modules.sunshine.partnerManagement.service.PartnerService;
import com.sifang.modules.sys.common.UserUtils;
import com.sifang.modules.sys.common.entity.User;
import com.sifang.modules.sys.entity.Operator;
import com.sifang.modules.sys.util.CrmUtils;
import com.sifang.modules.sys.util.FormSetUtils;
import com.sifang.modules.sys.util.LayuiPage;
import com.sifang.modules.sys.web.BaseExceptionController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Controller
@RequestMapping(value = "${adminPath}/completion/change")
public class CrmCompletionInfoChangeController extends BaseExceptionController {
@Autowired
CrmCompletionInfoChangeService changeService;
@Autowired
CrmCompletionInfoChangeDao changeDao;
@Autowired
private PartnerService partnerService;
@Autowired
TraderEmployeService traderEmployeService;
@Autowired
CustomerEntryService entryService;
@Autowired
ProjectInfoSettingService projectService;
@Autowired
CustomerEntrySurveyRecordService surveyRecordService;
@Autowired
CustomerEntryService customerEntryService;
@Autowired
TraderDao traderDao;
@Autowired
private CrmCustomerIncomingApplicationInsuranceDao insuranceDao;
@Autowired
private FormSetService formSetService;
@Autowired
private CrmAcceptingReportDetailDao crmAcceptingReportDetailDao;
@RequestMapping(value = "findCompletionChangeList")
public String customerContractList(HttpServletRequest request, Model model) {
User user = UserUtils.getUser();
model.addAttribute("user", user);
return "modules/yangguang/changes/complete/completionInfoChange";
}
@ResponseBody
@RequestMapping(value = "completionChangeList")
public Object bankCardListDate(HttpServletRequest request) {
LayuiPage<Record> page = new LayuiPage<>(request);
Map<String, String> params = getParams(request);
User user = UserUtils.getUser();
if (User.USER_TYPE_HZS.equals(user.getUserType())) {
String parId = CrmUtils.getPartnerId(user.getId());
CrmPartner partner = partnerService.getById(parId);
params.put("authorizedId", partner.getAuthorizedId());
} else if (User.USER_TYPE_PARTNER.equals(user.getUserType())) {
CrmPartner partner = partnerService.findByUserId(user.getId());
params.put("authorizedId", partner.getAuthorizedId());
} else if (User.USER_TYPE_ADVISOR.equals(user.getUserType())) {
CrmTraderEmploye employe = traderEmployeService.findByUserId(user.getId());
params.put("engineerId", employe.getId());
}
Operator operator = Operator.of(user.getId(), CrmUtils.getUserXM(user),user.getUserType());
changeService.listData(page, params, "0", operator);
return page.renderJson();
}
@RequestMapping("changeRecord")
public String record(){
return "modules/yangguang/changes/complete/completionInfoChangeRecord";
}
/**
* 变更记录列表数据
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value = "recordData")
public Object recordData(HttpServletRequest request) {
LayuiPage<Record> page = new LayuiPage<>(request);
Map<String, String> params = getParams(request);
User user = UserUtils.getUser();
if(User.USER_TYPE_HZS.equals(user.getUserType())){
String parId = CrmUtils.getPartnerId(user.getId());
CrmPartner partner = partnerService.getById(parId);
params.put("authorizedId", partner.getAuthorizedId());
}else if(User.USER_TYPE_PARTNER.equals(user.getUserType())){
CrmPartner partner = partnerService.findByUserId(user.getId());
params.put("authorizedId", partner.getAuthorizedId());
} else if (User.USER_TYPE_ADVISOR.equals(user.getUserType())) {
CrmTraderEmploye employe = traderEmployeService.findByUserId(user.getId());
params.put("engineerId", employe.getId());
}
Operator operator = Operator.of(user.getId(), CrmUtils.getUserXM(user),user.getUserType());
changeService.listData(page, params, "1", operator);
return page.renderJson();
}
@RequestMapping("/toAddPage")
public String toAddPage(HttpServletRequest request,Model model) {
String partnerId = request.getParameter("partnerId");
model.addAttribute("partnerId", partnerId);
if (PartnerConstants.PARTNER_ID_HR.equals(partnerId)){
return "modules/yangguang/changes/complete/addCompletionChangeHR";
}
return "modules/yangguang/changes/complete/addComplete";
}
/**
* 根据电站编号获取电站信息
* @param stationCode
* @return
*/
@ResponseBody
@RequestMapping("selectNumber/{stationCode}")
public Result selectNumber(@PathVariable("stationCode") String stationCode) {
Result ret = Result.ok();
Map<String, Object> resMap = Maps.newHashMap();
CustomerEntry customerEntry = entryService.findCustomerEntryById(stationCode);
if (customerEntry == null) {
ret = Result.fail("未找到电站信息");
return ret;
}
//判断电站与角色是否相符
User user = UserUtils.getUser();
Operator operator = Operator.of(user.getId(), CrmUtils.getUserXM(user),user.getUserType());
if(StringUtil.equalsAny(operator.getUserType(), UserConstants.TYPE_TRADER, User.USER_TYPE_ADVISOR)){
Record record= CrmUtils.getUserTrader(operator.getUserType(),operator.getUserId());
String traderId =record.getStr("id");
if(UserConstants.TYPE_TRADER.equals(operator.getUserType())){ //代理商
if ("1".equals(record.getStr("type"))){ // 1.一级代理商 2.二级代理商
if (!customerEntry.getDistributorId().equals(traderId)) {
ret = Result.fail("未找到电站信息");
return ret;
}
}else{ //二级代理商
if (UserConstants.TYPE_TRADER.equals(operator.getUserType())) {
//代理商只能查看自己的
if (!traderId.equals(customerEntry.getCreateTraderId())) {
ret = Result.fail("未找到电站信息");
return ret;
}
}
}
}else { //代理商人员
if (!traderId.equals(customerEntry.getCreateTraderId())) {
ret = Result.fail("未找到电站信息");
return ret;
}
}
}
/* if (!StringUtil.equalsAny(customerEntry.getStatus(), CustomerEntryConstants.ENTRY_STATUS_DBW, CustomerEntryConstants.ENTRY_STATUS_YSBH
, CustomerEntryConstants.ENTRY_STATUS_DYS)) {
ret = Result.fail("电站状态不可进行该操作");
return ret;
}*/
// 验收报告
CrmAcceptingReport report = new CrmAcceptingReport();
if (StringUtil.isNotBlank(customerEntry.getReceivingReportId())) {
report = customerEntryService.getReportById(customerEntry.getReceivingReportId());
}
resMap.put("report", report);
CustomerEntrySurveyRecord surveyRecord = surveyRecordService.findByEntryId(customerEntry.getId());
resMap.put("customerEntry", customerEntry);
resMap.put("surveyRecord", surveyRecord);
resMap.put("project", projectService.getById(customerEntry.getProjectId()));
resMap.put("formSet", FormSetUtils.getFormPartSetByStep(null, "", "09", customerEntry.getPartnerId(), false));
resMap.put("formSetMerge", FormSetUtils.getFormPartSetByStep(null, "", "10", customerEntry.getPartnerId(), false));
List<String> needUploadImg=formSetService.getMustFillFlag("10",customerEntry.getPartnerId());
resMap.put("mergeInfoSet",needUploadImg);
resMap.put("insurances", insuranceDao.getByEntryIds(customerEntry.getId()));
//获取电力公司
String powerCompany=AddressUtils.findProCodeNameByCode(customerEntry.getProvinceCode());
resMap.put("powerCompany",powerCompany);
if (PartnerConstants.PARTNER_ID_HR.equals(customerEntry.getPartnerId())){
List<Record> projectList = projectService.getEntryProjectByEntryId(customerEntry.getId());
//华融多产品
for(Record record : projectList){
CrmAcceptingReportDetail acceptReport = crmAcceptingReportDetailDao.findByEntryIdAndProjectId(customerEntry.getId(),record.getStr("projectId"));
record.set("acceptReport", acceptReport);
}
resMap.put("projectList",projectList);
}
ret.setData(resMap);
return ret;
}
/**
* 去选择电站页面
*/
@RequestMapping("/toSelectEntry")
public String toSelectEntry(HttpServletRequest request ,Model model) {
User user = UserUtils.getUser();
//地址信息
List<Record> pros = AddressUtils.findProvinceListByTraderId(CrmUtils.getCurrentTraderId(user.getId()), null);
model.addAttribute("province", pros);
model.addAttribute("partnerId", request.getParameter("partnerId"));
return "modules/yangguang/changes/complete/selectEntry";
}
/**
* 添加变更记录/暂存变更记录/修改变更记录
* @param recordVo
* @return
*/
@ResponseBody
@RequestMapping("addChangeRecord")
public Result addChangeRecord(CrmCompletionInfoChangeDTO recordVo) {
return changeService.addChangeRecord(recordVo);
}
/**
* 添加变更记录--华融
* @return
*/
@ResponseBody
@RequestMapping("addHRChangeRecord")
public Result addHRChangeRecord(@RequestBody AddReportReq req) {
return changeService.addHRChangeRecord(req);
}
/**
* 审核页面
*
* @return
*/
@RequestMapping("audit/{id}")
public String toAuditPage(@PathVariable("id") String id, Model model) {
CustomerEntryCompletionChangeRecord record = changeService.selectById(id);
CustomerEntryCompletionChangeRecord oldRecord = changeService.selectPre(record.getEntryId(), record.getNum());
CustomerEntry customerEntry = entryService.getById(record.getEntryId());
CrmProjectSetting projectSetting = projectService.getById(customerEntry.getProjectId());
model.addAttribute("customerEntry", customerEntry);
model.addAttribute("project", projectSetting);
model.addAttribute("change", record);
model.addAttribute("oldChange", oldRecord);
model.addAttribute("formSet", JSONObject.toJSONString(FormSetUtils.getFormPartSetByStep(null, "", "09", customerEntry.getPartnerId(), false)));
if (PartnerConstants.PARTNER_ID_HR.equals(customerEntry.getPartnerId())){
model.addAttribute("info2",formSetService.getListByCondition("09", customerEntry.getPartnerId()) );
List<Record> projectList = projectService.getEntryProjectByEntryId(customerEntry.getId());
model.addAttribute("projectDetailList",projectList);
//华融多产品--获取更新的记录
List<CustomerEntryCompletionChangeRecordDetail> newList=changeService.getByRecordId(record.getId());
model.addAttribute("newList",newList);
Map<String, CustomerEntryCompletionChangeRecordDetail> newEntryChangeMap = newList.stream().collect(Collectors.toMap(e -> e.getProjectId(), e -> e, (a, b) -> a));
model.addAttribute("newListMap",newEntryChangeMap);
List<CustomerEntryCompletionChangeRecordDetail> oldList=changeService.getByRecordId(oldRecord.getId());
model.addAttribute("oldList",oldList);
Map<String, CustomerEntryCompletionChangeRecordDetail> oldEntryChangeMap = oldList.stream().collect(Collectors.toMap(e -> e.getProjectId(), e -> e, (a, b) -> a));
model.addAttribute("oldListMap",oldEntryChangeMap);
model.addAttribute("from","audit");
model.addAttribute("completionChange", record);
model.addAttribute("remarks",record.getRemarks());
return "modules/yangguang/changes/complete/completeChangeDetailHR";
}
return "modules/yangguang/changes/complete/completeChangeAudit";
}
/**
* 审核通过
*
* @return
*/
@ResponseBody
@RequestMapping("pass")
public Result pass(SurveyAuditVo auditVo) {
Result ret = null;
try {
ret = changeService.pass(auditVo);
} catch (IllegalArgumentException e) {
ret = Result.fail(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
ret = Result.fail("操作失败");
}
return ret;
}
/**
* 备注暂存
*
* @return
*/
@ResponseBody
@RequestMapping("tempRemark")
public Result tempRemark(SurveyAuditVo auditVo) {
Result ret = null;
try {
ret = changeService.tempRemark(auditVo);
} catch (IllegalArgumentException e) {
ret = Result.fail(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
ret = Result.fail("操作失败");
}
return ret;
}
/**
* 审核通过
*
* @return
*/
@ResponseBody
@RequestMapping("passHR")
public Result passHR(SurveyAuditVo auditVo) {
Result ret = null;
try {
ret = changeService.passHR(auditVo);
} catch (IllegalArgumentException e) {
ret = Result.fail(e.getMessage());
} catch (Exception e) {
e.printStackTrace();
ret = Result.fail("操作失败");
}
return ret;
}
/**
* 审核不通过
* @return
*/
@ResponseBody
@RequestMapping("refuse")
public Result refuse(SurveyAuditVo auditVo) {
return changeService.refuse(auditVo);
}
/**
* 变更详情
* @param id
* @param model
* @return
*/
@RequestMapping("/toComDetail/{id}")
public String toComDetail(@PathVariable("id") String id, Model model) {
CustomerEntryCompletionChangeRecord record = changeService.selectById(id);
CustomerEntryCompletionChangeRecord oldRecord = changeService.selectPre(record.getEntryId(), record.getNum());
CustomerEntry customerEntry = entryService.getById(record.getEntryId());
CrmProjectSetting projectSetting = projectService.getById(customerEntry.getProjectId());
model.addAttribute("customerEntry", customerEntry);
model.addAttribute("project", projectSetting);
model.addAttribute("change", record);
model.addAttribute("oldChange", oldRecord);
model.addAttribute("formSet", JSONObject.toJSONString(FormSetUtils.getFormPartSetByStep(null, "", "09", customerEntry.getPartnerId(), false)));
if (PartnerConstants.PARTNER_ID_HR.equals(customerEntry.getPartnerId())){
model.addAttribute("info2",formSetService.getListByCondition("09", customerEntry.getPartnerId()) );
List<Record> projectList = projectService.getEntryProjectByEntryId(customerEntry.getId());
model.addAttribute("projectDetailList",projectList);
//华融多产品--获取更新的记录
List<CustomerEntryCompletionChangeRecordDetail> newList=changeService.getByRecordId(record.getId());
model.addAttribute("newList",newList);
Map<String, CustomerEntryCompletionChangeRecordDetail> newEntryChangeMap = newList.stream().collect(Collectors.toMap(e -> e.getProjectId(), e -> e, (a, b) -> a));
model.addAttribute("newListMap",newEntryChangeMap);
List<CustomerEntryCompletionChangeRecordDetail> oldList=changeService.getByRecordId(oldRecord.getId());
model.addAttribute("oldList",oldList);
Map<String, CustomerEntryCompletionChangeRecordDetail> oldEntryChangeMap = oldList.stream().collect(Collectors.toMap(e -> e.getProjectId(), e -> e, (a, b) -> a));
model.addAttribute("oldListMap",oldEntryChangeMap);
model.addAttribute("from","detail");
return "modules/yangguang/changes/complete/completeChangeDetailHR";
}
return "modules/yangguang/changes/complete/complateChangeDetail";
}
/**
* 撤回
* @return
*/
@ResponseBody
@RequestMapping("cancel/{id}")
public Result cancel(@PathVariable("id") String id) {
return changeService.back(id);
}
}