package com.ruoyi.system.service.impl; import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.DataSourceType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.vo.ImgVo; import com.ruoyi.system.domain.vo.ItemsVo; import com.ruoyi.system.domain.vo.OrderBillsPlansVo; import com.ruoyi.system.domain.vo.TmsAttachMngsVo; import com.ruoyi.system.mapper.EmplsMapper; import com.ruoyi.system.mapper.OrderBillsPlansMapper; import com.ruoyi.system.service.IOrderBillsPlansService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.beans.Transient; import java.text.SimpleDateFormat; import java.util.*; import static com.alibaba.fastjson.JSONPatch.OperationType.replace; /** * 火烈鸟数据库 */ @Service @DataSource(value = DataSourceType.SLAVE) public class OrderBillsPlansServiceImpl implements IOrderBillsPlansService { /** * 业务表 */ @Autowired private OrderBillsPlansMapper orderBillsPlansMapper; /** * Empls表 */ @Autowired private EmplsMapper emplsMapper; @Autowired private RedisCache redisCache; /** * 查询业务表数据List * * @param dataStart 日期起 * @param dataEnd 日期止 * @param pageNum * @param pageSize * @return */ @Override public List getOrderBillsPlansList(String dataStart, String dataEnd, OrderBillsPlansVo orderBillsPlansVo) { String orderNo = orderBillsPlansVo.getOrderNo(); Integer head = orderBillsPlansVo.getHead(); Integer tail = orderBillsPlansVo.getTail(); String type = orderBillsPlansVo.getType(); String flowType = orderBillsPlansVo.getFlowType(); // 根据登录名去匹配EMPLS 里面的EMPL 找到 EMPLID SysUser user = SecurityUtils.getLoginUser().getUser(); // Long emplId = 0L; Map map = new HashMap<>(); if (dataEnd != null && !"".equals(dataEnd)) { dataStart += " 00:00:00"; dataEnd += " 23:59:59"; } if (orderNo != null && !"".equals(orderNo)) { orderNo = "%" + orderNo + "%"; } Object actId = redisCache.getCacheObject("sys_config:risk.actId"); map.put("dataStart", dataStart); map.put("dataEnd", dataEnd); map.put("orderNo", orderNo); map.put("actId", actId.toString()); map.put("head", head); map.put("tail", tail); map.put("type", type); map.put("flowType", flowType); // 获取角色区分队长与驾驶员 for (SysRole role : user.getRoles()) { if ("JSY".equals(role.getRoleKey())) { Long emplId = emplsMapper.getByEmpl(user.getUserName()); map.put("emplId", emplId); map.put("role", "1"); } else if ("DZ".equals(role.getRoleKey())) { Long emplId = emplsMapper.getByEmplDZ(user.getUserName()); map.put("emplId", emplId); map.put("role", "0"); } } List orderBillsPlansList; orderBillsPlansList = orderBillsPlansMapper.getOrderBillsPlansLsit(map); for (WfTaskList wfTaskList : orderBillsPlansList) { if ("BD".equals(type)) { if ("F".equals(wfTaskList.getIfLoaded()) && "F".equals(wfTaskList.getIfUnLoaded()) && "F".equals(wfTaskList.getIfOrder2ed())) { wfTaskList.setBillStatusName("未装车"); } else if ("T".equals(wfTaskList.getIfLoaded()) && "F".equals(wfTaskList.getIfUnLoaded()) && "F".equals(wfTaskList.getIfOrder2ed())) { wfTaskList.setBillStatusName("未卸车"); } else if ("T".equals(wfTaskList.getIfLoaded()) && "T".equals(wfTaskList.getIfUnLoaded()) && "F".equals(wfTaskList.getIfOrder2ed())) { wfTaskList.setBillStatusName("已卸车"); } else if ("T".equals(wfTaskList.getIfLoaded()) && "T".equals(wfTaskList.getIfUnLoaded()) && "S".equals(wfTaskList.getIfOrder2ed())) { wfTaskList.setBillStatusName("已提交"); } else if ("T".equals(wfTaskList.getIfLoaded()) && "T".equals(wfTaskList.getIfUnLoaded()) && "O".equals(wfTaskList.getIfOrder2ed())) { wfTaskList.setBillStatusName("已审核"); } } else if ("BX".equals(type)) { if ("S".equals(wfTaskList.getIfStarted())) { wfTaskList.setBillStatusName("已提交"); } else if ("A".equals(wfTaskList.getIfStarted())) { wfTaskList.setBillStatusName("已通过"); } else if ("B".equals(wfTaskList.getIfStarted())) { wfTaskList.setBillStatusName("已退回"); } else if ("F".equals(wfTaskList.getIfStarted())) { wfTaskList.setBillStatusName("未提交"); } } } return orderBillsPlansList; } /** * 根据orderNo查询 * * @param orderNo orderNo * @return 详情 */ @Override public OrderBillsPlansVo getOrderBillsPlansByid(Long orderNo, HttpServletRequest request) { OrderBillsPlans orderBillsPlans = orderBillsPlansMapper.getOrderBillsPlansByid(orderNo); OrderBillsPlansVo vo = new OrderBillsPlansVo(); BeanUtils.copyProperties(orderBillsPlans, vo); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date loadDate = orderBillsPlans.getLoadDate(); if (loadDate != null) { vo.setLoadDateString(ft.format(loadDate)); } Date unLoadDate = orderBillsPlans.getUnLoadDate(); if (unLoadDate != null) { vo.setUnLoadDateString(ft.format(unLoadDate)); } Object actId = redisCache.getCacheObject("sys_config:risk.actId"); orderBillsPlans.setActId(Long.valueOf(actId.toString())); // 查找照片List List attachIdList = orderBillsPlansMapper.getAttachMngsAttachIdBySysIdAndEntityIdAndActId(orderBillsPlans); List fileList1 = new ArrayList<>(); for (Long attachId : attachIdList) { ImgVo imgVo = new ImgVo(); String serverName = request.getServerName(); int serverPort = request.getServerPort(); String url = "http://" + serverName + ":" + serverPort + "/attachmngs/img/" + attachId; imgVo.setUrl(url); fileList1.add(imgVo); } // 角色信息 SysUser user = SecurityUtils.getLoginUser().getUser(); List roleList = new ArrayList<>(); for (SysRole role : user.getRoles()) { roleList.add(role.getRoleKey()); } vo.setRoleList(roleList); vo.setFileList1(fileList1); return vo; } /** * 保存保单信息 * * @param orderBillsPlansVo * @return */ @Override public AjaxResult putOrderBillsPlansByid(OrderBillsPlansVo orderBillsPlansVo) { OrderBillsPlans orderBillsPlans = new OrderBillsPlans(); BeanUtils.copyProperties(orderBillsPlansVo, orderBillsPlans); // 日期转换 SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { String loadDateString = orderBillsPlansVo.getLoadDateString(); String unLoadDateString = orderBillsPlansVo.getUnLoadDateString(); if (loadDateString != null && !"".equals(loadDateString)) { orderBillsPlans.setLoadDate(ft.parse(loadDateString)); } else { orderBillsPlans.setLoadDate(null); } if (unLoadDateString != null && !"".equals(unLoadDateString)) { orderBillsPlans.setUnLoadDate(ft.parse(unLoadDateString)); } else { orderBillsPlans.setUnLoadDate(null); } } catch (Exception e) { System.out.println(e.getMessage()); } Integer i = orderBillsPlansMapper.updateOrderBillsPlansByid(orderBillsPlans); if (i == 1) { return AjaxResult.success(); } else { return AjaxResult.error(); } } /** * 获取报销费用list * * @return */ @Override public List getItemsList() { return orderBillsPlansMapper.getItemsList(); } /** * 报销 * * @param orderBillsPlansVo * @return 操作结果 */ @Transient @Override public AjaxResult insertLoadFeeItems(OrderBillsPlansVo orderBillsPlansVo) { // 更新业务表 Integer i = orderBillsPlansMapper.updateOrderBillsPlansByOrderNo(orderBillsPlansVo); // 更新LoadBills Integer y = orderBillsPlansMapper.updateLoadBillsByEntityID(orderBillsPlansVo); for (LoadFeeItems loadFeeItems : orderBillsPlansVo.getLoadFeeItemsList()) { orderBillsPlansMapper.updateOrderBillsPlansBySysidEntityidLineno(loadFeeItems); } return AjaxResult.success(); } /** * 查询报销费用报销金额下拉选 * * @return */ @Override public AjaxResult getGasStations() { return AjaxResult.success(orderBillsPlansMapper.getGasStations()); } /** * 查询报销信息 * * @param * @return 数据 */ @Override public OrderBillsPlansVo getLoadFeeItems(Long orderNo, HttpServletRequest request) { OrderBillsPlansVo data = orderBillsPlansMapper.getOrderBillsPlansByOrder(orderNo); // 图片 Object actId = redisCache.getCacheObject("sys_config:risk.actId"); data.setActId(Long.valueOf(actId.toString())); // 查找照片List List attachIdList = orderBillsPlansMapper.getAttachMngsAttachIdBySysIdAndEntityIdAndActId(data); List fileList1 = new ArrayList<>(); for (Long attachId : attachIdList) { ImgVo imgVo = new ImgVo(); String serverName = request.getServerName(); int serverPort = request.getServerPort(); String url = "http://" + serverName + ":" + serverPort + "/attachmngs/img/" + attachId; imgVo.setUrl(url); fileList1.add(imgVo); } data.setFileList1(fileList1); List loadFeeItemsList = orderBillsPlansMapper.getLoadFeeItemsByEntityId(data.getLoadBillsEntityId()); data.setLoadFeeItemsList(loadFeeItemsList); // 角色信息 SysUser user = SecurityUtils.getLoginUser().getUser(); List roleList = new ArrayList<>(); for (SysRole role : user.getRoles()) { roleList.add(role.getRoleKey()); } data.setRoleList(roleList); return data; } /** * 插入主库图片数据 * * @param tmsAttachMngsVo * @return */ @Override public AjaxResult insertAttachMngs(TmsAttachMngsVo tmsAttachMngsVo) { // 查询最大的lineNo进行+1赋值 Long lineNo = orderBillsPlansMapper.getAttachMngsBySysIdEntityId(tmsAttachMngsVo); lineNo = lineNo == null ? 1L : lineNo + 1; String username = SecurityUtils.getLoginUser().getUsername(); Object actId = redisCache.getCacheObject("sys_config:risk.actId"); tmsAttachMngsVo.setActId(Long.valueOf(actId.toString())); String orderNo = tmsAttachMngsVo.getOrderNo(); String date = tmsAttachMngsVo.getDate(); tmsAttachMngsVo.setAttachName(orderNo + "-" + date + "-" + lineNo + ".jpg"); tmsAttachMngsVo.setLineNo(lineNo); tmsAttachMngsVo.setUserName(username); // 插入照片表 Integer i = orderBillsPlansMapper.insertAttachMngs(tmsAttachMngsVo); // 查询AttachtypeId返回前端在照片库中插入 Long attachId = orderBillsPlansMapper.getAttachMngsAttachtypeIdBySysIdAndEntityIdAndLineNo(tmsAttachMngsVo); return AjaxResult.success(attachId); } /** * 根据attachId在Tms库的AttachMngs表删除数据 * * @param attachId * @return */ @Override public AjaxResult deleteTmsAttachMngs(Long attachId) { Integer i = orderBillsPlansMapper.deleteTmsAttachMngsByAttachId(attachId); if (i == 1) { return AjaxResult.success(); } return AjaxResult.error(); } @Override public AjaxResult isMileage(Long orderNo) { // 查询这条数据是否有为提交里程 List isMileage = orderBillsPlansMapper.getIsMileageOrderBillsPlansByOrder(orderNo); if (!isMileage.isEmpty()) { return AjaxResult.success("410", null); } else { return AjaxResult.success("200", null); } } /** * 驾驶员提交审核 * * @param orderBillsPlansVo * @return */ @Override @Transient public AjaxResult submitAudit(OrderBillsPlansVo orderBillsPlansVo) { Integer i = 0; // 保存数据 insertLoadFeeItems(orderBillsPlansVo); // 提交审核 i = orderBillsPlansMapper.submitAudit(orderBillsPlansVo.getOrderNo()); if (i == 1) { return AjaxResult.success("ok"); } else { return AjaxResult.success("no"); } } /** * 队长审核 * * @param type T-通过 F-驳回 * @return */ @Override @Transient public AjaxResult audit(OrderBillsPlansVo orderBillsPlansVo) { Integer i = 0; Object actId = redisCache.getCacheObject("sys_config:risk.actId"); if ("T".equals(orderBillsPlansVo.getAuditType())) { i = orderBillsPlansMapper.approved(orderBillsPlansVo.getOrderNo()); orderBillsPlansMapper.approvedTaskList(actId.toString(), orderBillsPlansVo.getEntityId().toString()); } else if ("F".equals(orderBillsPlansVo.getAuditType())) { i = orderBillsPlansMapper.theAuditFailed(orderBillsPlansVo.getOrderNo()); orderBillsPlansMapper.theAuditFailedTaskList(actId.toString(), orderBillsPlansVo.getEntityId()); } // 审核意见 orderBillsPlansMapper.addAReviewComment(orderBillsPlansVo.getEntityId(), orderBillsPlansVo.getAudit2Desc(), orderBillsPlansVo.getLineNo()); if (i == 1) { return AjaxResult.success("ok"); } else { return AjaxResult.success("no"); } } /** * 提交报账单 * @param orderNo * @return */ @Override public AjaxResult upReceipts(Long orderNo) { int i = orderBillsPlansMapper.upReceipts(orderNo); if (i == 1) { return AjaxResult.success("ok"); } else { return AjaxResult.success("no"); } } }